সিএমএসআইএস বনাম এইচএএল বনাম স্ট্যান্ডার্ড পেরিফেরালস লাইব্রেরি


29

সুতরাং আমি পিআইসিগুলি থেকে এআরএম এ স্যুইচ করছি এবং আমি একটি এসটিএম 32 এফ 4 আবিষ্কার বোর্ড কিনেছি। এখন পর্যন্ত আমি বুঝতে পেরেছি যে এটি প্রোগ্রাম করার জন্য আপনি হয় সমস্ত রেজিস্টারগুলিকে সরাসরি মেমরিতে (স্পষ্ট পদ্ধতিতে) অ্যাক্সেস করতে পারেন এবং আপনার জীবনকে সহজ করার জন্য 3 টি প্রধান গ্রন্থাগার রয়েছে যা আপনি ব্যবহার করতে পারেন। এখন আমার প্রশ্নটি হল, এই 3 টির মধ্যে কোনটি (সিএমএসআইএস, এইচএল, স্ট্যান্ড পেরিফেরালস লিবি) সবচেয়ে নিম্ন স্তরের? অর্থাত। কম ওভারহেড সঙ্গে এক। আমার লক্ষ্য হ'ল নিয়ামকের অভ্যন্তরীণ কাজগুলি শিখি এবং আমার জীবনকে সহজতর করা না (কেবলমাত্র কিছুটা), সুতরাং আমি জানতে চাই যে এগুলির মধ্যে কোনটি সমাবেশটি ব্যবহার না করেই মূলটির আরও কাছাকাছি core


10
[এসটিএম 32 এর পক্ষের] সিএমএসআইএস মূলত কেবল সংজ্ঞাগুলি নিবন্ধকরণ এবং কোনও কোড নেই, তাই সিএমএসআইএস == প্রত্যক্ষ নিবন্ধের অ্যাক্সেস। আফাইক এসটি-র কেবলমাত্র সিএমএসআইএসের জন্য আলাদা আলাদা ডাউনলোড নেই, তবে আপনি যখন স্টডিপিরিফ লিব বা এসটিএম 32 কিউব ডাউনলোড করেন, আপনি কেবলমাত্র সিএমএসআইএস অংশটিই বেছে নিতে পারেন। এসটিএম 32 নিবন্ধের সংজ্ঞাগুলি যথাক্রমে Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.hবা Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.hযথাক্রমে পাওয়া যায় ।
আলেক্সি তোড়হামো

উত্তর:


27

অবশ্যই সিএমএসআইএস। এটি ঠিক একটি লাইব্রেরি নয়, এটি বেশিরভাগ ক্ষেত্রে বিভিন্ন নিবন্ধকের সংজ্ঞা রয়েছে।

মাইক্রোকন্ট্রোলারের রেজিস্টারগুলিতে সহজেই অ্যাক্সেস করা প্রয়োজন, যাতে তার নিজের এইচএল প্রয়োগ করতে পারে implement এটির কোনও ওভারহেড নেই, যেহেতু আপনি কেবল নিবন্ধগুলি অ্যাক্সেস করেন।

মনে রাখবেন যে, সিএমএসআইএস, অন্য দুটি থেকে পৃথক, এটিআরএম দ্বারা সংজ্ঞায়িত করা হয়েছে, এসটি নয়। এর অর্থ হ'ল বিভিন্ন মাইক্রোকন্ট্রোলারদের জন্য বিভিন্ন সিএমএসআইএস লাইব্রেরিগুলি একই রকম, যা বহনযোগ্যতার জন্য ব্যাপকভাবে সহায়তা করে।

তদ্ব্যতীত, সিএমএসআইএস সহজতর তাই এটি (আইএমও) সবচেয়ে বহুমুখী এবং সবচেয়ে নির্ভরযোগ্য, সম্ভবত কম কম (বা না) বাগ রয়েছে। আমি যে বিভিন্ন এমসিইউ ব্যবহার করেছি তার জন্য কিছু হল গ্রন্থাগারগুলি তাদের বাগগুলির জন্য বেশ কুখ্যাত।

অন্যদিকে, সিএমএসআইএসের আপনার কাছ থেকে আরও বেশি কাজ দরকার। তবে এটি আমার ব্যক্তিগত পছন্দ, যেহেতু আমি মানসম্পন্ন গ্রন্থাগার তৈরি করতে আমার সময়কে বিনিয়োগ করতে পছন্দ করি, এটি আমার প্রয়োজন অনুসারে, এবং চিপ কীভাবে কাজ করে তা বোঝার জন্য, কেবল একটি নতুন লাইব্রেরি শেখার জন্য সময় ব্যয় করা।


আমি নিশ্চিত নই যে এসটি এখনও সিএমএসআইএস লাইব্রেরি সমর্থন করে
স্কট সিডম্যান

1
ভাল ... এরকম কিছু। সরাসরি লিঙ্ক নেই, তারা এটিকে নিরুৎসাহিত করে (মনে হয় তারা ব্যবহারকারীদের যতটা সম্ভব তাদের কোডের সাথে আবদ্ধ করতে চায়, তাদেরকে অন্য কোনও ব্র্যান্ডের জন্য রেখে নিরুৎসাহিত করে) তবে এটি তাদের অন্যান্য লাইব্রেরিতে ব্যবহৃত হয়। আপনি সেখান থেকে এটি নিষ্কাশন করতে পারেন। এটি বেশ সহজ, কোনও কোডের বেশিরভাগ অংশ অন্তর্ভুক্ত করে না এবং পরিপক্ক বলে মনে হয়। এটিকে উত্পাদন ব্যবহারের জন্য নিরাপদ বলে মনে হচ্ছে, তারা এটিকে সমর্থিত হিসাবে বাজারজাত করেন বা না কেন।
ফোটিস পানাজিওপোলোস

হ্যাঁ, এগুলি এমন এক গণ্ডগোল that যে তারা সেই দিকে বিকাশ বন্ধ করে দিয়েছে। সিএমএসআইএস সম্মতি ছিল এমন একটি জিনিস যা আমাকে প্রথমে এসটি-তে আকৃষ্ট করেছিল। আমি এখনও এটি ব্যবহার করি তবে আমার অনুভূতি আছে যে দিনটি আসবে যখন এটি সুবিধাজনক হবে না।
স্কট সিডম্যান

3
@ স্কটসিডম্যান, আমি মনে করি আপনি সিএমএসআইএসকে স্টেডিপিরিফের সাথে বিভ্রান্ত করেছেন। সিএমএসআইএস ভালভাবে সমর্থিত এবং অনির্দিষ্টকালের জন্য সমর্থিত হবে। এর স্টডিপিরিফ যা মূলত এখন অবহেলিত, তবে সিএমএসআইএস 10 বছর আগের মতোই জীবিত।
বিজ্ঞান সামোভার

14

এটি কীভাবে কাজ করে তা শিখতে আপনি উপরের কোনওটি ব্যবহার করতে চান না। সম্পন্ন হয়ে একটি আর্ম ক্রস সংকলক এবং ডকুমেন্টেশন পান। কোডিং শুরু করুন। এই চিপগুলি সাধারণত প্রোগ্রাম করা সহজ। ডকুমেন্টেশন আপনাকে জানায় যে রেজিস্ট্রিগুলিতে কি বিট হয়।

এই / সমস্ত লাইব্রেরির উদ্দেশ্য আপনার কাছ থেকে সেই বোঝাপড়া / বোঝা / কাজ অপসারণ এবং এটিকে অ্যাপ্লিকেশন প্রোগ্রামিং অভিজ্ঞতার মতো একটি এপিকে কল করার মতো বোধ করা। যা ভাবেন অনেক লোক। আপনি এই লাইব্রেরিগুলি বোঝার জন্য সমস্ত উত্স ব্যবহার করতে পারেন, তবে এটির উন্নতি হওয়ার সাথে সাথে আপনি গ্রন্থাগারগুলিতে গর্ত এবং সমস্যাগুলি খুঁজে পান, কখনও কখনও খুব ভীতিকর কোড। কোড একসাথে টসড, সাধারণভাবে লেখা এবং মোটামুটি এক চিপ থেকে অন্য চিপে পোর্ট করা, সম্ভবত আপনার চিপগুলির বৈশিষ্ট্যগুলি সমর্থন করে ইত্যাদি supporting এবং তাদের সকলের ওভারহেডের অতিরিক্ত পরিমাণ রয়েছে। কাজের জন্য 10 থেকে 100 গুণ বেশি কোড, নিশ্চিত যে এটির প্রচুর পরিমাণ অপ্টিমাইজ হতে পারে তবে কেন এটি সেখানে প্রথম স্থানে রয়েছে?

আপনি নিজের হয়ে যান বা এই লাইব্রেরিগুলির মধ্যে যে কোনও একটি ব্যবহার করুন না কেন, আপনি যে লাইব্রেরিগুলি করছেন সেগুলি থেকে আপনি কী স্বাচ্ছন্দ্য বোধ করেন তা বোঝার জন্য আপনার এখনও উত্সের দিকে নজর দেওয়া উচিত, যদি তা বোঝা যায়, চিপের ডকুমেন্টেশন ইত্যাদির সাথে মেলে When ভুল হয়ে যায় সম্ভবত কারণ হিসাবে তাদের যতটা আপনার জিনিস খনন করতে হবে।

নোট করুন চিপ ডকগুলিও নিখুঁত নয়, এটি মজাদার একটি অংশ।

আমি কেন বুঝতে পারি না কেন বেয়ার মেটাল প্রোগ্রামিং সম্পর্কিত আলোচনায় সমাবেশ আসবে comes আপনি খুব সামান্য সমাবেশ দিয়ে যেতে পারেন। এই কর্টেক্স-এম চিপগুলির জন্য, প্রযুক্তিগতভাবে বুট করার জন্য আপনার কেবলমাত্র এএসএমের প্রয়োজন:

.globl _start
_start:
.word 0x20001000
.word main

আপনি ডেটা বা বিএস-এর উপর নির্ভর করতে পারবেন না এবং আপনি এএসএমের ন্যূনতম সাথে মূল থেকে ফিরে আসতে পারবেন না। তবে এটি হ'ল অসমটি আপনাকে খালি ধাতুর বেস্টের জন্য প্রয়োজন। এখন আপনি যদি বাধা দিতে চান আপনার ভেক্টর টেবিলটিতে আরও প্রবেশের প্রয়োজন। আরও। ওয়ার্ড লাইন। আমি আরও asm বাঞ্ছনীয়, তবে সম্ভবত 10 বা 20 লাইন বেশি।

এটি সাধারণত সমস্ত asm আমি ব্যবহার করি।

.cpu cortex-m0
.thumb
.thumb_func
.global _start
_start:
stacktop: .word 0x20001000
.word reset
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.thumb_func
reset:
    bl notmain
    b hang
.thumb_func
hang:   b .
.align
.thumb_func
.globl PUT16
PUT16:
    strh r1,[r0]
    bx lr
.thumb_func
.globl PUT32
PUT32:
    str r1,[r0]
    bx lr
.thumb_func
.globl GET32
GET32:
    ldr r0,[r0]
    bx lr
.thumb_func
.globl GET16
GET16:
    ldrh r0,[r0]
    bx lr
.thumb_func
.globl dummy
dummy:
    bx lr
.end

হ্যাঁ এটি কর্টেক্স-এম0 বলেছেন তবে এটি আমার এম 4 কোডের জন্য প্রকৃত বুটস্ট্র্যাপ। আমি এটি থাম্ব 2 না থাম্ব হতে পছন্দ করি। এবং আমি এই কোডটি কেবল একটি কর্টেক্স-এম থেকে অন্যটিতে পুনরায় ব্যবহার করেছি, স্ট্যাক পয়েন্টার ঠিকানা প্রয়োজন অনুসারে পরিবর্তন করেছি, সুতরাং এটি এম 0, এম 3 এবং এম 4 এর জন্য কাজ করে। আমার কাছে এখনও এম 7 নেই বা আমি এটি নিয়ে আরও গবেষণা করে নি।

নির্দিষ্ট নির্দেশাবলীর প্রয়োজন অনুসারে এফপিইউ সক্ষম করার জন্য আরও কিছু লাইন অ্যা্যাসেমের প্রয়োজন হতে পারে। তবে বিষয়টি হ'ল নিম্ন স্তরের প্রোগ্রামিং এবং asm গুলিয়ে ফেলবে না। সি আপনার কাছে চিপটি কনফিগার করার পাশাপাশি একটি অ্যাপ্লিকেশন লেখার দরকার রয়েছে। আপনি যে লাইব্রেরিগুলির কথা বলছেন সেগুলি সিএম এএসমে নয়, তাই স্পষ্টতই তাদের এএসএম ব্যবহার করার দরকার নেই।

আপনি যদি অভ্যন্তরীণ কাজগুলি শিখতে চান তবে নিজের কোডটি লিখুন। রেফারেন্স হিসাবে এই লাইব্রেরি ব্যবহার করবেন না। কখনও কখনও তাদের কোডটি পড়ার চেষ্টা করার চেয়ে এটিকে হ্যাক করা সহজ। (কেবল এসটি নয়, সমস্ত বিক্রেতাদের মধ্যে। বিক্রেতাদের মধ্যে একটির কোডের একটি লাইন ছিল তাই উদ্বেগজনক আমি এটি একটি সাক্ষাত্কারের প্রশ্ন হিসাবে ব্যবহার করি, না, এটি এখানে পোস্ট করা যাচ্ছে না)।

এসটি স্পষ্টতই তবে অন্যান্য বিক্রেতাদের পাশাপাশি শক্তি সঞ্চয় করতে, চিপের কিছু অংশের জন্য ঘড়ি সক্ষম করে রাখে, তাই আপনি ভিতরে anুকে লিডকে ঝাপটানোর চেষ্টা করার আগে আপনাকে সেই জিপিও ব্লকের জন্য সক্ষম বিটটি খুঁজে বের করতে হবে এবং এটি বেরিয়ে আসে কিনা তা দেখতে হবে need পুনরায় সেট করার সক্ষম, যদি তা সক্ষম না হয় তবে জিপিও লজিকের সাথে একটি ঘড়ি সক্ষম না করে কথা বলা কেবল প্রসেসরটিকে স্তব্ধ করে দেয় কারণ এটি যুক্তি থেকে কোনও প্রতিক্রিয়া অপেক্ষা করছে যা কখনই সাড়া দেয় না। তারা এই সক্ষমগুলির সম্পর্কে আপনাকে সর্বদা জানায় না। একবার সক্ষম হয়ে গেলে তারা কখনও কখনও কোনও নির্দিষ্ট পেরিফেরিয়াল জন্য আপনাকে ডিআইএস দিয়ে যায়। এসটি ডকস বেশ ভাল। মাইক্রোচিপ থেকে আগত যা ডকুমেন্টেশনের জন্য বেশ খারাপ গ্রেড পেয়েছে, আপনার কোনও সমস্যা হওয়া উচিত নয়।


2
ওপি স্টার্ট-আপ পদ্ধতি, বা এর মতো কিছু সম্পর্কে জিজ্ঞাসা করেছিল না। তার ব্যবহারের জন্য কোন লাইব্রেরি সবচেয়ে উপযুক্ত।
ফোটিস পানাজিওপোলোস

asm উল্লেখ করা হয়েছিল এবং এইভাবে
asm-

2
এছাড়াও সিএমএসআইএসে কিছু ন্যূনতম জন্য পৃথক কোড থাকে না। এটিতে স্টার্ট-আপ কোড, লিঙ্কার স্ক্রিপ্ট বা এর মতো কিছু অন্তর্ভুক্ত নেই। এটিতে কেবল নিবন্ধকের সংজ্ঞা রয়েছে। সরাসরি নিবন্ধগুলিতে অ্যাক্সেস করার জন্য সুন্দর নাম ব্যবহার করার পরিবর্তে ক্রিপ্টিক কোড কেন লিখুন, বা চাকাটি পুনর্নবীকরণ করবেন?
ফোটিস পানাজিওপোলোস

2
@ জন আপনি সহজেই কোনও এএসএম, সমান দক্ষতার সাথে একটি এআরএম মাইক্রোকন্ট্রোলার শুরু করতে পারেন। আগ্রহীরা যদি নতুন প্রশ্ন জিজ্ঞাসা করে, এবং আপনাকে কয়েকটি উদাহরণ দেখানোর জন্য এখানে একটি লিঙ্কে মন্তব্য করুন।
ফোটিস পানাজিওপোলোস

1
@ user3634713 আমি আসলে খুব আগ্রহী। ধন্যবাদ ইলেক্ট্রনিক্স.সটাকেক্সচেঞ্জ
জন

2

আমি উভয় ব্যবহার করেছি, খালি ধাতব নিবন্ধ অ্যাক্সেস এবং স্ট্যান্ড পেরিফেরিয়াল লাইব্রেরি। আমি নিবন্ধগুলি মোকাবেলা করা সহজ মনে করি। এছাড়াও আপনি যদি কোনও ডিবাগার ব্যবহার করছেন তবে আপনি নিবন্ধগুলি দেখতে পারবেন এবং নিশ্চিত করতে পারেন যে সেগুলিতে আপনি কী প্রোগ্রাম করেছেন তা রয়েছে। আমি মনে করি আপনি সেইভাবে চিপের অপারেশন সম্পর্কে আরও শিখবেন।


2

8 বিট বিশ্ব থেকে শুরু করে আমি সর্বদা রেজিস্টারগুলির মাধ্যমে পেরিফেরিয়াল প্রোগ্রামিংয়ে অভ্যস্ত ছিলাম। মাইক্রোকন্ট্রোলার ডেটা শিটগুলি (যেমন এসটিএম 32 রেফারেন্স ম্যানুয়ালগুলি) নিবন্ধের স্বরলিপিগুলিতে পেরিফেরিয়ালগুলি বর্ণনা করে। যেহেতু প্রোগ্রামারটিকে পেরিফেরিয়াল ফান্ট এবং বৈশিষ্ট্যগুলি ব্যবহার করার আগে কোনও প্রচেষ্টা করার আগে তা জানতে এই একই ডকুমেন্টেশনটি অবশ্যই পড়তে হবে তবে নিবন্ধগুলি প্রোগ্রামিং শুরু করা আমার কাছে স্বাভাবিক মনে হয়। কার্ফুল কোড লেআউট এবং মন্তব্য সহ আমি খুঁজে পাই কোডটি কয়েক মাস পরে ফিরে আসার পরেও পড়তে এবং সংশোধন করার জন্য আনন্দদায়ক হতে পারে।


2

এখন অবধি আমি সিএমএসআইএস সংজ্ঞা ব্যবহার করেছি এবং সরাসরি রেজিস্টারগুলি ব্যবহার করে উপভোগ করেছি। ইতিমধ্যে আমি কয়েকটি প্রকল্পে এইচএল লাইব্রেরি ব্যবহার করেছি। কোড চলমান সময়ে এটির যথেষ্ট প্রভাব ছিল তাই আমি এটি ছেড়ে দিলাম। যদিও সিএমএসআইএস আমার আগ্রহের পরিচয় দেয়, আজকাল আমি লাইবোপেনসিএম 3 এর অনুরাগী হতে যাচ্ছি । এটি LLএসটি সরবরাহিত লাইব্রেরির মতো । তবে এটি এসটি পরিবারগুলিতে আরও মাইক্রো-কন্ট্রোলারগুলি কভার করে:

লাইবোপেনসিএম 3 প্রকল্প (পূর্বে লাইবোপেনস্টেম 32 নামে পরিচিত) এর লক্ষ্য ছিল এসটি এসটিএম 32, তোশিবা টিএক্স03, আটমেল এসএএম 3 ইউ, এনএক্সপি এলপিসি 1000 এবং অন্যান্য সহ বিভিন্ন এআরএম কর্টেক্স-এম 3 মাইক্রোকন্ট্রোলারদের জন্য একটি ফ্রি / লিব্রে / ওপেন-সোর্স ফার্মওয়্যার লাইব্রেরি তৈরি করা।

দয়া করে মনে রাখবেন:

নাম সত্ত্বেও, লাইবোপেনসিএম 3 উদাহরণস্বরূপ কর্টেক্স-এম0 বা কর্টেক্স-এম 4 / কর্টেক্স-এম 4 এফ সম্পর্কিত অন্যান্য এআরএম কর্টেক্স "সম্পর্কিত" মাইক্রোকন্ট্রোলারকে সমর্থন করে।

আপনি সমর্থিত মাইক্রো-কন্ট্রোলারের তালিকাটি এখানে পেতে পারেন


আসল সমস্যাটি হ'ল এইচএলকে কী করার কথা সে সম্পর্কে ভুল ধারণা রয়েছে ST একটি যথাযথ এইচএএল এর একটি কার্যকারিতা থাকবে adc_get_result()যা রিয়েল-টাইম দিকগুলি, বাধাগুলি সহ সম্পূর্ণ এডিসি পেরিফেরিয়াল ড্রাইভারকে write_to_scary_registerজড়িয়ে রাখে The মোটামুটিভাবে, এসটি কেবলমাত্র এ জাতীয় অতিরিক্ত ব্লাট সরবরাহকারী বিক্রেতাই নয়, আটমেল এএসএফ এবং অন্যরাও সমানভাবে খারাপ।
লন্ডিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.