মাইক্রোকন্ট্রোলার প্রোগ্রামিং বনাম অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং


11

আমি সি ++ (বি-ট্রি তৈরি, হ্যাশিং অ্যালগরিদমস, ডাবল লিঙ্কযুক্ত তালিকা) দিয়ে কিছু বেসিক অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং করেছি এবং আমি সিতে একটি ছোট প্রকল্প করেছি (যেমন একটি বৈজ্ঞানিক ক্যালকুলেটর তৈরি করা ইত্যাদি)

প্রোগ্রামারটির থাকা মানসিকতা এবং "চিন্তাভাবনার" দিক থেকে সফ্টওয়্যার / অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং থেকে হার্ডওয়্যার প্রোগ্রামিং (বিশেষত মাইক্রো কন্ট্রোলারদের জন্য) কতটা আলাদা?

একজনকে সাধারণত আমার বেশিরভাগ লোকের চেয়ে শক্ত বলে বিবেচনা করা হয়?

আমার ব্যাকগ্রাউন্ডের সাথে (উপরে বর্ণিত হিসাবে) হার্ডওয়ার প্রোগ্রামিংয়ে যাওয়ার জন্য আমার কি প্রচুর প্রস্তুতির দরকার হবে বা আমি খুব বেশি প্রস্তুতি ছাড়াই সরাসরি ডুব দিতে পারি?


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

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

@ জন আমি শুরু করার জন্য একটি আরডুইনো বোর্ড ব্যবহার করার পরিকল্পনা করছি। এটি কি সি ভাষার মতো নয়? আমি ভেবেছিলাম এটা একই মৌলিক বিষয় জড়িত ....
rrazd

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

1
@ রজ্জাদ - আমি শিরোনাম পরিবর্তন করেছি; "হার্ডওয়্যার প্রোগ্রামিং" খুব বেশি এইচডিএল (হার্ডওয়্যার ডেসক্রিপশন ল্যাঙ্গুয়েজ) এর মতো শোনা যায়, যেমন ভিএইচডিএল এবং ভারিলোগ, যা এফপিজিএ এবং সিপিএলডি প্রোগ্রাম করার জন্য ব্যবহৃত হয়।
স্টিভেনভ

উত্তর:


10

বেশিরভাগ মাইক্রোকন্ট্রোলারদের সাথে ডিল করার সময় আপনাকে অবজেক্ট-ভিত্তিক দৃষ্টান্তটি পুরোপুরি ত্যাগ করতে হবে।

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

আপনাকে কোনও অ্যাসেম্বলি-ভাষা মানসিকতায় প্রবেশ করতে হবে এবং পদ্ধতিগতভাবে লিখতে হবে।

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

আপনাকে শিখতে হবে কীভাবে বিঘ্নিত পরিষেবা রুটিনগুলি লিখতে হয় যা দক্ষ (সাধারণত সমাবেশ ভাষায়)।

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

আপনাকে গাণিতিক কোড লিখতে হবে যা শব্দের আকার এবং বেশিরভাগ মাইক্রোকন্ট্রোলারগুলির FPU সক্ষমতার অভাবকে বিবেচনা করে (অর্থাত্ 8 বিট মাইক্রো = অশুভের উপর 32-বিট গুণ করা) account

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


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

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

1
আমি প্রথম বাক্যটির সাথে দৃ strongly়ভাবে একমত নই, আমার সমস্ত মাইক্রোকন্ট্রোলার প্রকল্পগুলি সি ++ এবং একটি অবজেক্ট ওরিয়েন্টেড পদ্ধতির সাহায্যে নির্মিত হয়েছিল, এবং আমরা যে মাইক্রোগুলি ব্যবহার করেছি খুব বড় ছিল না (রম এর 32kB), একই বস্তুটি ভিত্তিক বুটলোডার 2kB এরও কম ছিল, I সত্যিই সীমাবদ্ধতা দেখতে পাবেন না। আপনি ক্রেজি স্টাফ করতে পারবেন না তবে নকশাটি কোনও সমস্যা নয় object
আর্সেনাল

@ আর্সেনাল নোট আমি 'সর্বাধিক' বলেছি এবং নোট করুন যে আপনি চার বছরের পুরানো থ্রেডে মন্তব্য করছেন। :)
অ্যাডাম লরেন্স

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

10

আপনাকে বেশ কয়েকটি বিষয় নিয়ে ভাবতে হবে:

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

অন্যান্য সীমাবদ্ধতা রয়েছে যা সীমিত গতি এবং মেমরির মতো খেলতে আসবে। সুতরাং একটি সাধারণ নির্দেশিকা হিসাবে, আমি এড়ানো:

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

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


3
"আপনি চাইলে ওও দৃষ্টান্ত ব্যবহার করতে পারেন" এর জন্য +1। আপনার দরজায় যা যা চেক করা দরকার তা ওও ডিজাইন নয়। OOD কেবলমাত্র একটি দর্শন যা সম্পর্কিত কোড এবং ডেটা একসাথে রাখতে আপনাকে উত্সাহ দেয়। আপনাকে যা ছাড়তে হবে তা হল এন্টারপ্রাইজেশন সিস্টেমে যেভাবে বাস্তবায়ন করা হয়, তা বিমূর্তকরণের একাধিক স্তর, নিয়ন্ত্রণের বিপরীতকরণ এবং সমস্ত জাজ। আপনার ফার্মওয়্যারের কাজ হল হার্ডওয়্যার চালানো, এটিই।
drxzcl

7

আমি উভয়ই করি, সুতরাং এখানে আমার মতামত।

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

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

অভিজ্ঞ এম্বেড থাকা লোকেরা ডিবাগিংকে মঞ্জুর করার ঝোঁক নেয় ... যারা এটি ভালভাবে করতে পারে না তাদের বেশিরভাগই দীর্ঘস্থায়ী হয় না (বা বড় সংস্থাগুলিতে কাজ করে যারা কেবল "ফার্মওয়্যার গ্রহণ করে কঠিন" তার উত্তর হিসাবে একটি নির্দিষ্ট বৈশিষ্ট্য কেন? বছর পেরিয়ে গেছে)

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

পিসির তুলনায় আপনার কী কী সংস্থান রয়েছে তা সম্পর্কে খুব সচেতন হওয়া আরও অনেক গুরুত্বপূর্ণ। সাবধানে ডেটাশিট পড়ুন। আপনি যা করার চেষ্টা করছেন তার রিসোর্স 'ব্যয়' বিবেচনা করুন। স্ট্যাকের ব্যবহার ট্র্যাক করার জন্য ম্যাজিক মান দিয়ে স্ট্যাক স্পেস পূরণ করার মতো রিসোর্স-ওরিয়েন্টেড ডিবাগিং ট্রিকস শিখুন।

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


5

আমি ধরে নিচ্ছি আপনার সি ++ অভিজ্ঞতা পিসি ভিত্তিক।

প্রোগ্রামাররা পিসি থেকে মাইক্রোকন্ট্রোলারে সরানো প্রায়শই একটি ত্রুটি হ'ল তারা বুঝতে পারে না যে কতটা সীমাবদ্ধ সংস্থান হতে পারে। আপনি যখন 100,000 এন্ট্রি সহ একটি টেবিল তৈরি করেন, বা মেশিন কোডটি 1MB তে সংকলিত একটি প্রোগ্রাম লিখেন তখন কোনও পিসিতে কোনও আপনাকে থামিয়ে দেয় না।
এমন মাইক্রোকন্ট্রোলার রয়েছে যাদের মেমরির সংস্থানগুলি রয়েছে, বিশেষত উচ্চ প্রান্তে, তবে আপনি কী ব্যবহার করবেন তা থেকে এটি এখনও অনেক দূরে cry শখের প্রকল্পের জন্য আপনি সম্ভবত সর্বদা সর্বাধিকের জন্য যেতে পারেন, তবে একটি পেশাদার প্রকল্পে আপনি প্রায়শই ছোট ডিভাইসটির সাথে কাজ করতে বাধ্য হন কারণ এটি সস্তা
একটি প্রকল্পে আমি একটি টিআই এমএসপি 430 এফ 10101 নিয়ে কাজ করছিলাম। 1KB প্রোগ্রাম মেমরি, 128 বাইট কনফিগারেশন ফ্ল্যাশ, 128 বাইট র‌্যাম। প্রোগ্রামটি 1K-তে ফিট ছিল না, তাই আমাকে কনফিগারেশন ফ্ল্যাশে একটি 23 বাইট ফাংশন লিখতে হয়েছিল। এই ছোট কন্ট্রোলারগুলির সাহায্যে আপনি বাইট দ্বারা গণনা করেন । অন্য একটি অনুষ্ঠানে প্রোগ্রামের স্মৃতি 4 বাইট খুব ছোট ছিল। বস আমাকে আরও মেমরির সাহায্যে কন্ট্রোলারটি ব্যবহার করতে দেয় না, তবে পরিবর্তে আমাকে অতিরিক্ত 4 টি বাইট ফিট করার জন্য একটি ইতিমধ্যে অপ্টিমাইজড মেশিন কোডটি (এটি ইতিমধ্যে এসেম্বলারে লেখা ছিল) অনুকূল করতে হয়েছিল You আপনি ছবিটি পান get

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

μ

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


আমি আটারি 2600 এর জন্য গেমস লিখেছি, এটি একটি বরং সীমাবদ্ধ প্ল্যাটফর্ম; আমার প্রথম প্রকাশিত গেমটি মূলত 4K কোড ছিল (যেহেতু আমার কাছে 32K কার্ট ছিল, তাই আমি কিছু অতিরিক্ত গুডি যুক্ত করেছি, তবে 4K সংস্করণটি পুরোপুরি খেলার যোগ্য ছিল); র‌্যামটি 128 বাইট। আমি এটি গভীরভাবে বিবেচনা করে আকর্ষণীয় মনে করি যে বছরে আমি সেই গেমটি লিখেছিলাম (২০০৫), অন্যান্য গেমগুলি প্রকাশিত হয়েছিল যা আক্ষরিক অর্থে, এক মিলিয়নগুণ বড়।
সুপারক্যাট

@ সুপের্যাট - হ্যাঁ, তবে এটি প্রত্যাশা করা হয়েছিল, ২০০ in সালে আতারি 2600 ইতিমধ্যে 200 বছর বয়সী ছিল! আমি কখনই এফপিএস এর মতো অ্যাকশন গেমস খেলিনি, তবে যখন সেগুলি খেলতে হবে তখন আমি যখন দেখি তখন আপনার সিপিইউর চেয়ে অনেক বেশি শক্তিশালী একটি জিপিইউ, প্রোগ্রামিয়্যাটিক এবং বৈদ্যুতিন উভয়ই, আমি সাহায্য করতে পারি না তবে মাথা নাড়তে পারি না :-)। আমি 16k টিআরএস -80 আইআইআরসি-তে দাবা (সারগন) খেলেছি। আমার ভাইয়ের ফ্লাইট সিমুলেটরটির বেশি দরকার নেই।
স্টিভেনভ

বেশ 200 বছর বয়সী নয়। এটি ১৯ 1977 সালে আত্মপ্রকাশ করেছিল, তাই এটি ৩০ টিও ছিল না While যদিও আমি একমত যে প্রযুক্তিগত দিক থেকে এটি বহু আগে ছিল, আমি এখনও এই সত্য দ্বারা উড়ে এসেছি যে কেবলমাত্র একশো শতাংশ বৃদ্ধি বা এক হাজারগুণ বৃদ্ধি হয়নি not , তবে র‌্যাম এবং কোড উভয় আকারে মিলিয়ন-গুণ বৃদ্ধি। 2600 ছিল 1.19 মেগাহার্টজ এবং নতুন সিস্টেমগুলি কেবল নিম্ন গিগাহার্জ সীমার মধ্যে রয়েছে বলে গতিটি যথেষ্ট পরিমাণে উত্সাহ অর্জন করতে পারেনি। তারা 2600 এর চেয়ে চক্রের তুলনায় অনেক কিছু করতে পারে (যা - এবং প্রতিটি চক্রের 1/76 টি ভিডিও লাইন তৈরি করতে পারে) তবে আমি মনে করি না যে তারা 1000,000x হিসাবে দ্রুত।
সুপারক্যাট

3

"হার্ডওয়্যার প্রোগ্রামিং" বলতে অনেক কিছুই বোঝাতে পারে। খুব ছোট চিপ প্রোগ্রামিং করা (10F200, 512 নির্দেশাবলী, র‌্যামের কয়েকটি বাইট মনে করুন) প্রায় একটি বৈদ্যুতিন সার্কিট ডিজাইনের মতো হতে পারে। অন্যদিকে প্রোগ্রামিংয়ে একটি বড় কর্টেক্স মাইক্রোকন্ট্রোলার (1 এমবি ফ্ল্যাশ, 64 কেবি র‌্যাম) অনেক বড় পিসি / জিইউআই প্রোগ্রামিংয়ের মতো হতে পারে, একটি বড় জিইউআই টুলকিট ব্যবহার করে। আইএমএইচও একটি ভাল এমবেডেড / রিয়েল-টাইম প্রোগ্রামারকে সফ্টওয়্যার ইজিনিয়ারিং দিক এবং সার্কিট ডিজাইনের দিক থেকে উভয়ই দক্ষতা প্রয়োজন। বৃহত্তর ইউসি সি ++ এর জন্য একটি ভাল ভাষার পছন্দ, খুব ছোট্টদের জন্য সি একমাত্র পছন্দ হতে পারে। সমাবেশের জ্ঞান সহজ হতে পারে, তবে আমি পুরো সমাবেশে গুরুতর প্রকল্পগুলি করার পরামর্শ দেব না।

আমি উভয় পক্ষের (এসডাব্লুআই এবং ইই) ​​পক্ষের সাথে গুরুতর এম্বেডযুক্ত কাজ করেছি। আমি সাধারণত এসডাব্লুআইয়ের লোকদের পছন্দ করি, যদি তারা মাল্টু থ্রেডেড প্রোগ্রামিংয়ের সাথে কিছু অভিজ্ঞতা অর্জন করে।

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


1

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

রিসোর্ইনো পরিবেশ বা অন্যদের ক্ষেত্রে প্রযোজ্য সংস্থানযুক্ত ডিভাইসগুলির সাথে কাজ করার সময় থাম্বের কিছু নিয়ম:

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


0

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

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

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

নতুন হার্ডওয়্যার নিয়ে কাজ করার সময় প্রচুর পরিমাণে ডেটাশিট পড়তে প্রস্তুত থাকুন - আমার ধারণা এটি "মানসিকতা" প্রশ্নের অংশের সাথে সম্পর্কিত হতে পারে :) অবশ্যই কিছু EE এবং হার্ডওয়্যার জ্ঞানের প্রয়োজন হবে।

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


উদ্বেগের দিক থেকে, গতিশীল মেমরির (পুনরায়) বরাদ্দের চারপাশের লোকেরা সময়ের চেয়ে traditionalতিহ্যবাহী ওওর জন্য আরও বড় প্রতিবন্ধক হতে থাকে ।
ক্রিস স্ট্রাটন

হয়তো আপনিই ঠিক. কিন্তু এমন কিছু লোক আছেন যারা এমএসডোস রিয়েল মোড সফ্টওয়্যারটির জন্য ৮০-৯০ এর দশকে প্রোগ্রাম করেছিলেন, যার সাথে K৪ কে (ডেটা মেমরি বিভাগ) র‌্যাম স্পেস পাওয়া যায় এবং তাদের জন্য এটি ছিল "প্রাকৃতিক"। আজকের এসটিএম 32 এফ 4 এর চেয়ে এমএসডস পিসি বেশি "এমবেডড" পরিবেশ ছিল :)
ফ্ল্যাঙ্কার

এসটিএম 32 এফ 4 সাধারণত ফ্ল্যাশ আকারে আরও বেশি প্রোগ্রাম মেমোরি রাখে, তবে পিসি সাধারণত মিউটেটেবল রানটাইম অবজেক্টগুলি সঞ্চয় করতে আরও অনেক বেশি র‌্যাম মেমরি নিয়ে আসে। যদিও বিভাগে ঠিকানায় বাধ্য হয়ে পুরো দূরদর্শী জিনিসটি ব্যথা হচ্ছিল, উভয়েরই সত্যিকারের এমএমইউয়ের অভাব রয়েছে, এবং এটি কম র‌্যামের সাহায্যে সিস্টেমে আরও উদ্বেগের বিষয় হতে চলেছে, এটি এসটিএম 32 এফ 4। এছাড়াও পিসি আপটাইমগুলি কম হতে থাকে এবং গ্রহণযোগ্য ব্যর্থতার হার আরও বেশি higher
ক্রিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.