একটি মাইক্রোকন্ট্রোলার এবং একটি মাইক্রোপ্রসেসরের মধ্যে প্রোগ্রামিং পার্থক্য?


9

সুতরাং আমি প্রায়শই বই / টিউটোরিয়াল এবং রেফারেন্সগুলি মাইক্রোপ্রসেসরের সাথে সমাবেশে প্রোগ্রাম করার সময় দেখি ..... তখন আমি কিছুটিকে এটি একটি মাইক্রোকন্ট্রোলার হিসাবে উল্লেখ করতে দেখি।

উদাহরণস্বরূপ এটমেল এটিটিনি 2313 .... আমি কিছু টিউটোরিয়াল দেখেছি, কেউ একে মাইক্রোপ্রসেসর বলে, কেউ একে একে মাইক্রোকন্ট্রোলার বলে?

ইহা কোনটা? এবং তাদের প্রোগ্রামিং (মূলত) একই? (সমাবেশে)



1
@ কেলেনজবি: প্রোগ্রামিংয়ের পার্থক্য সম্পর্কে যদি এটি না জিজ্ঞাসা করা হত তবে তা হবে। আমি মনে করি এটি বন্ধ না করার পক্ষে যথেষ্ট আলাদা।
বিজি 100

1
@ বিজি 100 গৃহীত উত্তরগুলি কেবল সত্যই পার্থক্যটি ব্যাখ্যা করেছিল, কোনও প্রোগ্রামিং পার্থক্য নয়।
কর্টুক

উত্তর:


14

এটি একটিতে দুটি প্রশ্ন ...

প্রথমত, একটি মাইক্রোকন্ট্রোলার এবং একটি মাইক্রোপ্রসেসরের মধ্যে পার্থক্য কী?

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

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

দ্বিতীয়ত, একটি মাইক্রোকন্ট্রোলার এবং মাইক্রোপ্রসেসর প্রোগ্রামিং কি একই রকম?

কিছু উপায়ে হ্যাঁ, এবং কোনও উপায়ে না।

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

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

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


হ্যাঁ, আমার অর্থ হ'ল এএসএম প্রত্যেকের জন্য আলাদা হবে ..... তবে কমান্ডগুলি / ইত্যাদি সাধারণত এমসি এবং এমপির মধ্যে একই (বা একইভাবে করা হয়) ... মানে এমসির এমপি থাকে তাই আমি ধরে

@ সাওরন: না, সত্যিই নয় .. কিছু কমান্ড ডিভাইসের মধ্যে যেমন একই রকম হতে পারে, যেমন অ্যাড, মুভ, সাব, ইত্যাদি, সেগুলি সম্ভবত ভিন্নভাবে প্রয়োগ করা হবে এবং ডিভাইসগুলির মধ্যে পোর্ট হবে না।
বিজি 100

1
দুর্দান্ত উত্তর, এবং আমি যখন আমার মাইক্রোপ্রসেসর ক্লাস শুরু করছিলাম তখন সম্ভবত এটি আমাকে সাহায্য করতে পারে one
পিফিয়ান 19

ভাল আমি বলতে চাইছিলাম ...... যেমন একটি মাইক্রোকন্ট্রোলারের ভিতরে একটি সিপিইউ থাকে ... বিধানসভার নির্দেশাবলী তার চারপাশের উপাদানগুলির চেয়ে প্রকৃত সিপিইউকেই বেশি লক্ষ্য করে।

@ সওরন: হ্যাঁ, এটা ঠিক।
বিজি 100

10

পার্থক্যটি হ'ল মাইক্রোকন্ট্রোলারটিতে ফ্ল্যাশ EEPROM এবং র্যামের মতো অন-চিপ মেমরি এবং সমান্তরাল এবং সিরিয়াল I / O এর মতো পেরিফেরিয়াল অন্তর্ভুক্ত রয়েছে। প্রথম মাইক্রোপ্রসেসরগুলির সাথে সেগুলি সমস্ত বাহ্যিক ডিভাইস ছিল। আই / ও এর মাইক্রোপ্রসেসরের পরিবর্তে তাদের পিনগুলিতে একটি ঠিকানা এবং ডেটা বাস নিয়ে এসেছিল।
আপনি উভয়ের জন্য কোড লেখার পদ্ধতিটি একই the

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


ওহ ঠিক আছে যে আরও বোধগম্য হয়, কিন্তু প্রত্যেকের জন্য ASM মূলত একই?

আপনার মানে আমি যদি কর্টেক্স এম সিরিজের কোডটি শিখি তবে আমি কর্টেক্স এ সিরিজের জন্যও কোড করতে পারি ??
0xakil

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

8

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

হার্ভার্ড আর্কিটেকচার ব্যবহার করে মাইক্রন্ট্রোলার পরিবারগুলির উদাহরণগুলির মধ্যে রয়েছে: এভিআর, ইন্টেল 8051, পিআইসি (পিআইসি 32 বাদে নীচে দেখুন), এবং এআরএম কর্টেক্স-এম 3। একটি উল্লেখযোগ্য ব্যতিক্রম হ'ল HCS08 এর মতো ফ্রেসলে প্রসেসর, যা প্যানালাক্স প্রপেলার হিসাবে ভন নিউম্যান আর্কিটেকচার ব্যবহার করে।

এটি প্রোগ্রামিংকে বিভিন্ন উপায়ে প্রভাবিত করে (নীচে সি ব্যবহারের উদাহরণ দেখানো হয়েছে):

বিভিন্ন ধরণের র‌্যাম থাকতে পারে, যার প্রত্যেকের নিজস্ব ঠিকানা স্থান রয়েছে। উদাহরণস্বরূপ, 8051 এর বাহ্যিক ডেটা (xdata) রয়েছে যা র‌্যামের প্রথম 256 বাইট থেকে পৃথক সম্বোধন করা হয়, যদিও উভয়ই একই চিপে প্রয়োগ করা হয়। সুতরাং একজনকে যেমন ভেরিয়েবলের ঘোষণায় কোয়ালিফায়ার ব্যবহার করতে হয়unsigned int xdata foo;

কোড মেমোরিতে যদি ধ্রুবকগুলি ঘোষিত হয় তবে অ্যাক্সেস করার আগে তাদের র‍্যামে অনুলিপি করা প্রয়োজন। অথবা কোড মেমোরি অ্যাক্সেস করার একটি উপায় থাকা দরকার যেমন এটি ডেটা ছিল - যেমন 8051s এর জন্য কোডের যোগ্যতা বা পিআইসির প্রোগ্রাম স্পেস ভিজিবিলিটি (পিএসভি) বৈশিষ্ট্য।

কোড এবং র‌্যাম অ্যাক্সেসের এই অ-মানক উপায়গুলি যখন একটি চিপ পরিবার থেকে অন্য চিপ থেকে সি কোড পোর্ট করে তখন বড় পার্থক্য (পেরিফেরালগুলি ছাড়াও) থাকে।

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


1

একটি মাইক্রোকন্ট্রোলার সাধারণত গণনা এবং পেরিফেরিয়াল ফাংশন সরবরাহ করার জন্য একটি একক-চিপ সমাধান।

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

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

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


1

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

কিছু মাইক্রোকন্ট্রোলার জনপ্রিয় মাইক্রোপ্রসেসর হিসাবে একই নির্দেশিকা সেট ব্যবহার করে। মূল কম্পিউটারে মূল ম্যাকিনটোস, অমিগা এবং আতারি এসটি লাইনগুলিতে ব্যবহৃত 68৮০০ টি নির্দেশনা সেট কিছু মাইক্রোকন্ট্রোলারে ব্যবহার করা হয়েছে। যদিও ম্যাকিনটোস এবং একটি 68HC340-ভিত্তিক নিয়ন্ত্রণ বোর্ড দ্বারা ব্যবহৃত নির্দেশাবলী একই, তবে দুটি প্ল্যাটফর্মের জন্য প্রোগ্রামিং খুব আলাদা হতে পারে। ম্যাকিনটোস-এ, কোনও ব্যবহারকারী দ্বারা সরবরাহিত প্রোগ্রাম শুরু হওয়ার সাথে সাথে সিস্টেমটির বেশিরভাগই ইতিমধ্যে "সেট আপ" হয়ে যাবে। কোড যা মেমোরির একটি ব্লক চায় প্রয়োজনীয় পরিমাণের সাথে একটি রেজিস্টারগুলি লোড করতে পারে এবং একটি "এ-ট্র্যাপ" নির্দেশনা কার্যকর করতে পারে। ম্যাকিনটোস ওএস এরপরে এমন কিছু মেমোরিতে একটি পয়েন্টার ফিরিয়ে দেবে যা এর আগে অন্য কোনও উদ্দেশ্যে বরাদ্দ করা হয়নি এবং স্মৃতিচারণের সেই অঞ্চলটি চিহ্নিত করবে যাতে এটি জিতেছে ' মূল প্রাপকের আর প্রয়োজন নেই এমন নির্দেশ না দেওয়া পর্যন্ত আবার বরাদ্দ করা হবে না। বিপরীতে, 68HC340 এবং 128K র‌্যামের বোর্ডে র‌্যামের জন্য "জিজ্ঞাসা করার" প্রয়োজন বা ক্ষমতা নেই। প্রোগ্রামটি শুরু হয়ে গেলে, 128 কে এটি "চায়" তবে এটি চাইলে ব্যবহার করতে পারে; অন্য কিছুই এটি ব্যবহার করবে না, তবে ফ্লিপ সাইডে ব্যবহারকারীর প্রোগ্রামটি কোন ক্ষেত্রগুলি কী উদ্দেশ্যে ব্যবহার করছে তা ট্র্যাক করে রাখতে হবে যেহেতু অন্য কিছুই এটি ট্র্যাক করবে না।

যদিও এখানে পার্থক্যটি একটি মাইক্রোকম্পিউটার বনাম মাইক্রোকন্ট্রোলারের মধ্যে রয়েছে এবং প্রশ্নটি মাইক্রোপ্রসেসর সম্পর্কিত, মাইক্রোপ্রসেসর প্রোগ্রামিংয়ের বেশিরভাগ আলোচনা এটিকে একটি সাধারণ-উদ্দেশ্যযুক্ত কম্পিউটারের প্রসঙ্গে আলোচনা করে।


0

মাইক্রোপ্রসেসর: একটি ডিজিটাল হার্ডওয়্যার মডিউল যা নির্দেশাবলী কার্যকর করে। মডিউলটি সম্পূর্ণ সংহত সার্কিট হতে পারে।

মাইক্রোকন্ট্রোলার: একটি সম্পূর্ণ মডিউল যা অন্য মডিউলগুলির পাশাপাশি অভ্যন্তরীণ মেমরির সাথে একটি মাইক্রোপ্রসেসর ধারণ করে।


EE.SE, মাইক আপনাকে স্বাগতম। অনুচ্ছেদের বিরতিতে <enter> x 2 ব্যবহার করুন। আমি আপনার জন্য এটি স্থির করেছি।
ট্রানজিস্টর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.