প্রতিটি মাইক্রোকন্ট্রোলার লাইনের নিজস্ব প্রোগ্রামিং ভাষা / বাক্য গঠন আছে?


10

আমি আরডুইনো প্রোগ্রাম করেছি এবং টেনেসির প্রোগ্রামিং শুরু করেছি। এগুলি সি এর মতো হলেও প্রোগ্রামিং ভাষায় কিছুটা স্নিগ্ধতা রয়েছে।

উদাহরণস্বরূপ, আরডুইনোর সি-তে আপনি একটি ফাংশন পিনমড (পিন #, আউটপুট / ইনপুট) কল করে আউটপুট সিগন্যালগুলিতে ডিজিটাল পিনকে মনোনীত করতে বা সংকেত গ্রহণ করতে পারেন। টেনেসির সি-তে আপনি "ডিডিআর" নিবন্ধটি চারটি বন্দরগুলির মধ্যে একটিতে সেট করেছেন (যার মধ্যে প্রতিটি পিনের সংগ্রহ উপস্থাপন করে) যা আপনি সম্মিলিতভাবে ইনপুট বা আউটপুট ( টেনেসি আইও সিনট্যাক্স ) হিসাবে মনোনীত করেন ।

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

কথোপকথনের একই ব্যর্থতায়: এমন কোনও মাইক্রোকন্ট্রোলার রয়েছে যা সফ্টওয়্যারটিতে প্রোগ্রাম করা হয় না বা সর্বদা ইউকন্ট্রোলার প্রোগ্রাম করার জন্য একটি সফ্টওয়্যার স্তর ব্যবহৃত হবে? যদি পরবর্তীকালে, তাদের জন্য ডকুমেন্টেশন কে লেখেন / সরবরাহ করেন?


2
Arduino জন্য প্রোগ্রামিং ভাষা সি ++ হয় অথবা সম্ভবত শুধু সি একটি উপসেট ++, (অথবা এমনকি - (না (শুধুমাত্র) সি) প্রসেসিং )। এটি সম্পূর্ণ পরিষ্কার নয়, তবে এটি অবশ্যই সি এর চেয়ে বেশি; উদাহরণস্বরূপ এটির ক্লাস এবং ব্যবহারকারী-নির্ধারক অপারেটর রয়েছে + =
পিটার মর্টেনসেন

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

1
ভাষা একই। এটি পৃথক পৃথক এপিআই। আপনি যদি মাইক্রোকন্ট্রোলারদের থেকে দূরে সরে যান এবং ডেস্কটপ অ্যাপ্লিকেশন লিখতে শুরু করেন তবে উইন্ডোজ, লিনাক্স এবং ম্যাকের জন্য সি প্রোগ্রাম লেখার সময় আপনি ঠিক একই সমস্যার মুখোমুখি হবেন। এমনকি যদি আপনি নিখুঁতভাবে পসিক্স এপিআই ব্যবহার করেন (যা সমস্ত 3 প্ল্যাটফর্ম সমর্থন করে) আপনি যখন ব্যবহারকারীর সেটিংস / পছন্দগুলি সংরক্ষণ করতে চান তখন আপনি প্ল্যাটফর্মের নির্দিষ্ট পার্থক্যগুলিকে আঘাত করতে পারেন।
slebetman

উত্তর:


3

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

তবে আর্কিটেকচারটি কেবল অর্ধেক ছবি। যেহেতু বোর্ড পেরিফেরিয়ালগুলি, মেমরি পরিচালনা এবং অন্যান্য প্রয়োগের বিশদটিতে আর্কিটেকচারটি সম্বোধন করে না এমন প্রচুর নির্দিষ্ট মেমরি ঠিকানা রয়েছে

কোনও প্রস্তুতকারক বা তৃতীয় পক্ষ সাধারণত উত্স ফাইলগুলির একটি সংকলন সরবরাহ করবে (একটি এইচডিকে ) যা সংজ্ঞা, পোর্ট ম্যাপিং এবং উদাহরণ কোড সরবরাহ করবে। সাধারণত এইচডি কে সি এবং সি ++ এর জন্য । সাধারণত এইচডিকে এর সাথে একটি বিক্ষোভ বোর্ড যুক্ত থাকে (মনে করুন $ 500 ডান আরডুইনো)। আপনার নকশা করা ডিভাইসে বিকাশ / নমুনা প্ল্যাটফর্ম সামঞ্জস্য করার জন্য প্রায়শই প্রচুর বিশদ কনফিগারেশন কাজ প্রয়োজন

আরডুইনো এভিআর আর্কিটেকচারের উপর ভিত্তি করে এবং এটি মূলত আতেল দ্বারা সমর্থিত। আরডুইনো আপনার প্ল্যাটফর্মটি সর্বনিম্ন প্রচেষ্টা সহ ব্যবহার করার জন্য একটি প্ল্যাটফর্ম বুটলোডার এবং সরলিকৃত সি ++ ফাংশন এবং অবজেক্টগুলির একটি গ্রন্থাগার তৈরি করেছে। আরডুইনো প্ল্যাটফর্ম এবং আইডিই ন্যূনতম সরঞ্জাম সহ শখের জন্য ডিজাইন করা হয়েছে। আরডুইনোর আগে পিআইসি ব্যবহারের সহজ এবং সস্তা বেসিক পরিবেশের সাথে একই ভূমিকা পালন করেছিল।

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


14

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

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

সুতরাং নীচের লাইনটি হ্যাঁ, আপনার কয়েকটি নতুন নিবন্ধকারীর নাম শিখতে হবে, তবে ভাষাটি এখনও সি ++ (বা সি, অ্যাসেম্বলি বা সম্ভবত আরও কিছু রহস্যজনক) is


4
আরডুইনো কেবলমাত্র সি নয় (আসলে, সি ++) - এটি একটি প্রিপ্রসেসর পেয়েছে যা সি সংকলককে এটি খাওয়ানোর আগে কয়েকটি পরিবর্তন করে।
নিক জনসন

আসলে, আরডুইনোর ক্ষেত্রে এটি সি এর চেয়ে বেশি more এটি সি ++ (বা সম্ভবত সি ++ এর একটি উপসেট)।
পিটার মর্টেনসেন

এটি কি আরডুইনো লাইব্রেরি সহ কেবল স্থানীয় সি ++, বা আরও কিছু?
kayleeFrye_onDeck

আরডুইনো আইডিই স্পষ্টতই অন্যথায় স্ট্যান্ডার্ড সি ++ এর শীর্ষে কিছুটা অতিরিক্ত প্রাক প্রসেসিং করে। বেশিরভাগ আইডিই এটি করেন না।
alex.forencich

এটি মূলত সি ++ তবে main()আপনার জন্য পূর্বনির্ধারিত। পরিবর্তে আপনি দুটি এন্ট্রি পয়েন্ট পাবেন: init()এবং loop()(আমি ভুল হলে আমাকে সংশোধন করি তবে আমি কেবল 20
ফুটের

5

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

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

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

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


1
এসেম্বলার জাম্প স্টেটমেন্টগুলির জন্য লেবেলগুলিও সমাধান করে, যা হাত দ্বারা করা হলে অত্যন্ত ত্রুটি-প্রবণ।
পিট বেকার

2

প্রোগ্রামিংয়ের ভাষা এখনও সি। তবে হার্ডওয়্যার অ্যাক্সেস করতে প্রস্তুতকারকের লাইব্রেরি পৃথক fers আমি যতদূর জানি কোনও মান নেই তাই প্রতিটি প্রস্তুতকারকের নিজস্ব এপিআই থাকে। আপনি যদি বিভিন্ন নির্মাতাদের মধ্যে পোর্টেবল হতে চান তবে আপনি নির্দিষ্ট বাস্তবায়ন সহ হার্ডওয়্যার অ্যাক্সেস করতে আপনার নিজস্ব বিমূর্ত API প্রবর্তন করতে চাইতে পারেন যা নির্মাতাকে নির্দিষ্ট পদ্ধতিতে আপনার এপিআই ম্যাপ করে।


আসলে এটি সি এর চেয়েও বেশি এটি সি ++ (অথবা সম্ভবত সি ++ এর একটি উপসেট)।
পিটার মর্টেনসেন

2

অন্যান্য উত্তরগুলি উচ্চ-স্তরের ভাষা (যেমন সি ++) এবং মেশিন কোডের মধ্যে পার্থক্য তৈরি করেছে, যদিও আমি বিশ্বাস করি না যে প্রতিটি মাইক্রোকন্ট্রোলারের একটি সম্পর্কিত 'ভাষা' রয়েছে তা আপনার বক্তব্যকে অকার্যকর করে দেয়।

ভাষা বাস্তবায়নের পার্থক্যগুলি আলাদা আলাদা ভাষা হিসাবে শ্রেণীবদ্ধ করার পক্ষে এতটা বড় নয়, যদিও আমি তাদের 'উপভাষাগুলি'র মধ্যে আলাদা করতে দ্বিধা করব না। পরিবর্তনের দুটি স্তর এখানে থাকতে পারে।

  1. উচ্চ-স্তরের মোড়কের লাইব্রেরিগুলি প্রস্তুতকারক বা কোনও তৃতীয় পক্ষের কাছ থেকে উপলব্ধ
  2. কিছু সংকলক স্ট্যান্ডার্ড-কমপ্লায়েন্ট কোড নির্গত করতে পারে না

আরডুইনো প্ল্যাটফর্ম পর্যবেক্ষণ করার সময় এই বিষয়গুলি গ্রহণ করা যাক।

  • আরডুইনো সম্প্রদায় AVR আর্কিটেকচার চিপগুলির জন্য প্রচুর বিমূর্ত সি ++ গ্রন্থাগার সরবরাহ করে। এই লাইব্রেরিগুলি সাধারণ সি ++ প্রোগ্রামের (যেমন প্রধান () লুকানো) থেকে কী প্রত্যাশা করে তার থেকে আলাদা নিয়ন্ত্রণ প্রবাহের পরামর্শ দেয়।
  • হুডের নীচে, আরডুইনো অ্যাওয়ার-জিসিসি ব্যবহার করে এর কোডটি সংকলন করে, যা সি / সি ++ কোড নির্গত করে। ব্যতিক্রমগুলি এভিআর চিপগুলিতে ভালভাবে সমর্থিত নয় এবং প্রায় সর্বদা অক্ষম থাকে। এত বড় একটি বৈশিষ্ট্য নিখোঁজ হওয়ার পরে, ফলস্বরূপ প্রোগ্রামটি 'নিয়মিত' সি ++ প্রোগ্রাম কীভাবে কাজ করবে তা পছন্দ করে না।

এটি জানার পরে, আপনি কীভাবে কোনও নির্বিচারে মাইক্রোকন্ট্রোলার প্রোগ্রাম করবেন তা স্থির করবেন? আপনার কাছে বেশ কয়েকটি বিকল্প রয়েছে:

  1. আপনার নির্দিষ্ট চিপের জন্য সম্প্রদায়-তৈরি লাইব্রেরি এবং আইডিইগুলি অনুসন্ধান করুন। এভিআর চিপগুলি মাঝে মধ্যে কেবল সি ব্যবহার করে তৈরি করা হয় তবে আড়ুইনো প্রকল্প শখের জন্য আরও ব্যবহারকারী-বান্ধব অভিজ্ঞতা সরবরাহ করে।
  2. আপনার নির্দিষ্ট চিপের জন্য সংকলন করতে সক্ষম এমন সংকলকগুলি সন্ধান করুন। সঠিক সংকলক, আপনার চিপের ডেটাশিট এবং কিছুটা ধৈর্য সহ আপনি কোডটি ধাতবটির খুব কাছাকাছি লিখতে সক্ষম হবেন।

রেফারেন্সের জন্য, এখানে জিসিসির সমর্থিত ব্যাকেন্ডের একটি তালিকা। আপনি লক্ষ্য করবেন যে এআরএম, এভিআর, এমআইপিএস এবং আরও কয়েকজনের সমর্থন রয়েছে।

চিপগুলি সম্পর্কে যা 'সফ্টওয়্যার' দিয়ে প্রোগ্রাম করা হয় না ...

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


1

আমি একটি পিসবোর্ডের দিকে তাকিয়ে কিছু পৃষ্ঠের মাউন্ট ডিভাইস, কিছু প্রতিরোধক এবং ক্যাপাসিটার এবং সীসা দেখি। তার মানে কি এই যে কোনও একটি বোর্ড একটি ভিডিও কার্ড, তাই প্রতিরোধক এবং ক্যাপাসিটার এবং একাধিক স্তর এবং ট্রেসযুক্ত সমস্ত বোর্ড সমস্ত ভিডিও কার্ড? নাঃ।

এখানে আরেকটি উদাহরণ দেওয়া হল, এই ওয়েব পৃষ্ঠায় ইংরেজি বর্ণমালা এবং ইংরেজি শব্দ ব্যবহার করা হয়েছে। সুতরাং নিউ ইয়র্ক বারের ওয়েবসাইটগুলি কি এই ওয়েবসাইটটিকে নতুন ইয়র্ক বার করে? না তারা কেবল একই বর্ণমালা এবং ভাষা ভাগ করে নেয় তবে অন্যথায় সম্পূর্ণ আলাদা।

সি একটি সাধারণ উদ্দেশ্যে প্রোগ্রামিং ভাষা যা এর নীচে সেট করা নির্দেশকে বিমূর্ত করে। খালি ধাতুর জন্য ব্যবহার করা যেতে পারে, একে অপরের অপারেটিং সিস্টেমগুলির সাথে ভিন্ন এবং বেমানান তৈরি করতে ব্যবহার করা যেতে পারে, ভিডিও গেমস তৈরি করতে ব্যবহার করা যায় ইত্যাদি etc. সমস্তই একই বেসিক সি ভাষা ব্যবহার করে, কিছু সাধারণ সি ফাংশন এবং নির্মাণ পাশাপাশি তারা তৈরি করেছে ফাংশন কলগুলি লক্ষ্য প্রয়োগের জন্য নির্দিষ্ট specific আপনি উল্লেখ করেছেন এমন প্ল্যাটফর্মগুলির জন্য বা অন্যদের জন্য কারও তৈরির জন্য বেছে নেওয়া ফাংশনগুলির একটি সেট থাকতে পারে। নিজেকে সহ এখনও পর্যন্ত মুষ্টিমেয় কিছু মানুষ আপনাকে একই উত্তর দিয়েছে তবে এটি অন্যভাবে লিখেছিল। ১০০ জন প্রোগ্রামার নিন এবং একে অপরের থেকে বিচ্ছিন্ন করুন এবং তাদের প্রোগ্রামিংয়ের স্বাধীনতাকে পুরোপুরি সীমাবদ্ধ না করে কোনও নির্দিষ্ট সমস্যা সমাধানের জন্য তাদের একটি প্রোগ্রামিং টাস্ক দিন, এবং আপনি 1 থেকে 100 বিভিন্ন থেকে অন্য কোথাও পাবেন, একে অপরের সমাধানের সাথে সামঞ্জস্যহীন, সম্ভবত 1 নয় বরং তাদের প্রশিক্ষণ এবং অভিজ্ঞতার উপর নির্ভর করে বেশ কয়েকটি সাধারণ থিম এবং তারপরে পরিবর্তনশীল নাম এবং ফাংশন নাম যা সেট হিসাবে প্রতিটি ব্যক্তির পক্ষে সম্ভবত অনন্য। আপনি ইতিমধ্যে যে বোর্ডগুলির বিষয়ে কথা বলছেন সেগুলি নিন এবং আপনি দেখতে পাবেন যে আমার কাছে অবশ্যই আমার নিজের সি কোড রয়েছে যা তাদের সাথে চালানোর জন্য বেমানান (আরডুইনো ফাংশনগুলির সাথে), অন্য অনেকের সাথে, পাশাপাশি অন্যান্য প্ল্যাটফর্মের সাথে বেমানান। এটি বেয়ার মেটাল এম্বেডেড প্রোগ্রামিংয়ের সৌন্দর্য, আপনি কোনওভাবেই বাধা নন, আপনাকে অপারেটিং সিস্টেমের স্ট্যান্ডার্ড লাইব্রেরি কল বা গুইস সীমিত নিয়মের গোপনীয়তা ইত্যাদির মধ্যে থাকতে হবে না, সম্পূর্ণ স্বাধীনতা। তাদের প্রশিক্ষণ এবং অভিজ্ঞতার উপর নির্ভর করে সম্ভবত 1 টি নয় তবে বেশ কয়েকটি সাধারণ থিম এবং তারপরে পরিবর্তনশীল নাম এবং ফাংশনের নামগুলি যা সেট হিসাবে প্রতিটি ব্যক্তির পক্ষে সম্ভবত অনন্য। আপনি ইতিমধ্যে যে বোর্ডগুলির বিষয়ে কথা বলছেন সেগুলি নিন এবং আপনি দেখতে পাবেন যে আমার কাছে অবশ্যই আমার নিজের সি কোড রয়েছে যা তাদের সাথে চালানোর জন্য বেমানান (আরডুইনো ফাংশনগুলির সাথে), অন্য অনেকের সাথে, পাশাপাশি অন্যান্য প্ল্যাটফর্মের সাথে বেমানান। এটি বেয়ার মেটাল এম্বেডেড প্রোগ্রামিংয়ের সৌন্দর্য, আপনি কোনওভাবেই বাধা নন, আপনাকে অপারেটিং সিস্টেমের স্ট্যান্ডার্ড লাইব্রেরি কল বা গুইস সীমিত নিয়মের গোপনীয়তা ইত্যাদির মধ্যে থাকতে হবে না, সম্পূর্ণ স্বাধীনতা। তাদের প্রশিক্ষণ এবং অভিজ্ঞতার উপর নির্ভর করে সম্ভবত 1 টি নয় তবে বেশ কয়েকটি সাধারণ থিম এবং তারপরে পরিবর্তনশীল নাম এবং ফাংশনের নামগুলি যা সেট হিসাবে প্রতিটি ব্যক্তির পক্ষে সম্ভবত অনন্য। আপনি ইতিমধ্যে যে বোর্ডগুলির বিষয়ে কথা বলছেন তা নিন এবং আপনি দেখতে পাবেন যে আমার কাছে অবশ্যই আমার নিজের সি কোড রয়েছে যা তাদের সাথে চালানোর জন্য বেমানান (আরডুইনো ফাংশনগুলির সাথে), অন্য অনেকের সাথে, পাশাপাশি অন্যান্য প্ল্যাটফর্মের সাথে বেমানান। এটি বেয়ার মেটাল এম্বেড প্রোগ্রামিংয়ের সৌন্দর্য, আপনি কোনওভাবেই বাধা নন, আপনাকে অপারেটিং সিস্টেমের স্ট্যান্ডার্ড লাইব্রেরি কল বা গুইস সীমিত নিয়মের গোপনীয়তা ইত্যাদির মধ্যে থাকতে হবে না, সম্পূর্ণ স্বাধীনতা। আপনি ইতিমধ্যে যে বোর্ডগুলির বিষয়ে কথা বলছেন তা নিন এবং আপনি দেখতে পাবেন যে আমার কাছে অবশ্যই আমার নিজের সি কোড রয়েছে যা তাদের সাথে চালানোর জন্য বেমানান (আরডুইনো ফাংশনগুলির সাথে), অন্য অনেকের সাথে, পাশাপাশি অন্যান্য প্ল্যাটফর্মের সাথে বেমানান। এটি বেয়ার মেটাল এম্বেড প্রোগ্রামিংয়ের সৌন্দর্য, আপনি কোনওভাবেই বাধা নন, আপনাকে অপারেটিং সিস্টেমের স্ট্যান্ডার্ড লাইব্রেরি কল বা গুইস সীমিত নিয়মের গোপনীয়তা ইত্যাদির মধ্যে থাকতে হবে না, সম্পূর্ণ স্বাধীনতা। আপনি ইতিমধ্যে যে বোর্ডগুলির বিষয়ে কথা বলছেন তা নিন এবং আপনি দেখতে পাবেন যে আমার কাছে অবশ্যই আমার নিজের সি কোড রয়েছে যা তাদের সাথে চালানোর জন্য বেমানান (আরডুইনো ফাংশনগুলির সাথে), অন্য অনেকের সাথে, পাশাপাশি অন্যান্য প্ল্যাটফর্মের সাথে বেমানান। এটি বেয়ার মেটাল এম্বেড প্রোগ্রামিংয়ের সৌন্দর্য, আপনি কোনওভাবেই বাধা নন, আপনাকে অপারেটিং সিস্টেমের স্ট্যান্ডার্ড লাইব্রেরি কল বা গুইস সীমিত নিয়মের গোপনীয়তা ইত্যাদির মধ্যে থাকতে হবে না, সম্পূর্ণ স্বাধীনতা।

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

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

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


আসলে, আরডুইনোর ক্ষেত্রে এটি সি এর চেয়ে বেশি more এটি সি ++ (বা সম্ভবত সি ++ এর একটি উপসেট)।
পিটার মর্টেনসেন

1

আপনার দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য, "মাইক্রোকন্ট্রোলার" শব্দটি বোঝায় যে চিপে বোর্ডে সিপিইউ এবং র‌্যাম (এবং সম্ভবত রম) রয়েছে। সমস্ত মাইক্রোকন্ট্রোলাররা সফ্টওয়্যার চালায় - এজন্য আমরা তাদের পছন্দ করি।

প্রথম প্রশ্নের গভীরতর দিকে গিয়ে লক্ষ করুন যে (প্রায়?) সমস্ত এমসিইউতে একটি সি সংকলক রয়েছে, তবে বেসিক সি ভাষা প্রতিটি প্রসেসরের প্রতিটি নির্দেশকে সমর্থন করে না। উদাহরণস্বরূপ, সিতে বাম / ডান অপারেটর রয়েছে, তবে বাম / ডান অপারেটরগুলি কোনও ঘোরাঘুরি করে না। সি এর পয়েন্টার সিস্টেমটি স্বাভাবিকভাবে পৃথক প্রোগ্রাম এবং ডেটা অ্যাড্রেস স্পেসগুলি সমর্থন করে না (কিছু হার্ভার্ড আর্কিটেকচারের মতো)। সি এর সরাসরি কোনও সিমডি সমর্থন নেই।

সংকলকগুলির এই বৈশিষ্ট্যগুলি মোকাবেলার জন্য কয়েকটি বিকল্প রয়েছে:

  1. মূল ভাষাটি প্রসারিত করুন, সাধারণত নতুন কীওয়ার্ড সহ (উদাহরণস্বরূপ পৃষ্ঠাযুক্ত স্মৃতিগুলির জন্য কাছাকাছি এবং দূরে)।

  2. অভ্যন্তরীণ ফাংশন (যেমন __ror () এবং __rol () ঘোরানোর জন্য) সরবরাহ করুন।

  3. সেগুলি অপটিমাইজারে কাজ করুন যাতে সি অপারেশনগুলির ক্রমগুলি একটি কার্যকর নির্দেশের মধ্যে সংকলিত হয় (উদাহরণস্বরূপ একটি গুণ / সংগ্রহ)।

  4. সেগুলি উপেক্ষা করুন এবং যদি তারা অ-সি-মানক বৈশিষ্ট্যগুলি চান তবে ব্যবহারকারীকে এসেম্বলি কোডটি লিখতে করুন।

পরের স্তরটি হ'ল প্রস্তুতকারক সরবরাহ করা শিরোনাম ফাইল যা মূলত আপনার জন্য নিবন্ধগুলির সমস্ত সংজ্ঞায়িত করে। আপনি এগুলি নিজেই তৈরি করতে পারেন তবে আপনি যদি এমসইউতে বিশেষজ্ঞ না হন তবে এটি একটি বড় ব্যথা।

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

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

আপনি যখন এক এমসিইউ লাইন থেকে অন্যটিতে যান, আপনাকে নতুন রেজিস্টার এবং নতুন সংকলক কিরক শিখতে হবে। আপনি যদি একই সংস্থার মধ্যে থাকেন তবে আপনি একই জাতীয় এপিআই পেতে পারেন। বিভিন্ন সংস্থা এপিআই ভাগ করে না; কেন আমরা আপনাকে আমাদের প্রতিযোগীদের স্যুইচ করতে সহায়তা করব? :-)


1

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

সি এবং ফোর্থ ইচ্ছাকৃতভাবে ডিজাইন করা হয়েছে বিভিন্ন মেশিন কোড সেট জুড়ে সহজেই পোর্টেবল।

সুতরাং আপনি যদি আরডিনোতে সি এবং টেনেসিতে সি ব্যবহার করেন তবে আপনি উভয় ক্ষেত্রে সি ব্যবহার করছেন।

আপনি যদি আরডুইনোতে ফোরথ এবং টেনেসি তে ফোর্থ ব্যবহার করেন তবে আপনি উভয় ক্ষেত্রেই ফোর্থ ব্যবহার করবেন।

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

এই লাইব্রেরিগুলিতে (সি তে) বা অভিধানগুলি (ফোর্থে) এগুলিতে কিছু হার্ডওয়্যার-নির্দিষ্ট ফাংশন বা শব্দ থাকতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.