আমার 20+ বছরের এমবেডেড সিস্টেম রয়েছে, বেশিরভাগই 8 এবং 16 মাইক্রো থাকে। আপনার প্রশ্নের সংক্ষিপ্ত উত্তরটি অন্য কোনও সফ্টওয়্যার বিকাশের মতোই - আপনার যতক্ষণ না আপনার প্রয়োজন জানা না হওয়া অবধি অপ্টিমাইজ করবেন না এবং আপনার কী অপ্টিমাইজ করা দরকার তা অবধি অপ্টিমাইজ করবেন না। আপনাকে কোড লিখুন যাতে এটি নির্ভরযোগ্য, পঠনযোগ্য এবং রক্ষণাবেক্ষণযোগ্য। এমবেডেড সিস্টেমে অকাল অপটিমাইজেশন যতটা না বেশি বেশি হয়
আপনি যখন "কোনও সংস্থান নষ্ট না করে" প্রোগ্রাম করেন, আপনি কি আপনার সময়টিকে একটি সংস্থান হিসাবে বিবেচনা করবেন? যদি তা না হয় তবে কে আপনাকে আপনার সময়ের জন্য মূল্য দিচ্ছে এবং যদি কেউ না হয় তবে আপনার এটির সাথে আরও ভাল কিছু করতে হবে। যে কোনও এমবেডেড সিস্টেম ডিজাইনারের পছন্দটি একবার বেছে নিতে হবে ইঞ্জিনিয়ারিং সময়ের জন্য হার্ডওয়ারের দামের দাম। আপনি যদি 100 ইউনিট শিপিং করছেন, 100,000 ইউনিটে একটি বৃহত মাইক্রো ব্যবহার করুন, প্রতি ইউনিট প্রতি 1 ডলার সাফল্য 1 মিলিয়ন ইউনিটে সফটওয়্যার বিকাশের 1 ম্যান ইয়ার (বাজারে সময়, সুযোগ ব্যয় ইত্যাদি উপেক্ষা করে) এর সমান, আপনি শুরু করেন রিসোর্স ব্যবহার সম্পর্কে উদ্বিগ্ন হওয়ার জন্য আরওআই পাওয়া, তবে সাবধানতা অবলম্বন করুন কারণ অনেকগুলি এমবেডেড প্রকল্পই কখনই 1 মিলিয়ন চিহ্ন তৈরি করে না কারণ তারা 1 মিলিয়ন (স্বল্প উত্পাদন ব্যয় সহ উচ্চ প্রাথমিক বিনিয়োগ) বিক্রি করার নকশা করেছিল এবং তারা সেখানে পৌঁছানোর আগেই আবক্ষু হয়ে যায়।
এটি বলেছিল, আপনার (ছোট) এম্বেড থাকা সিস্টেমগুলির সাথে আপনার যে বিষয়গুলি বিবেচনা করা উচিত এবং সচেতন হওয়া প্রয়োজন, কারণ এগুলি এটি অপ্রত্যাশিত উপায়ে কেবল এটি ধীরে ধীরে চলবে না, তা কাজ করা বন্ধ করে দেবে।
ক) স্ট্যাক - আপনার সাধারণত একটি ছোট স্ট্যাক আকার এবং প্রায়শই সীমিত স্ট্যাক ফ্রেমের আকার থাকে। আপনার স্ট্যাকের ব্যবহারটি সর্বদা কী তা সম্পর্কে আপনাকে অবশ্যই সচেতন হতে হবে। সতর্কতা অবলম্বন করুন, স্ট্যাকের সমস্যাগুলি সবচেয়ে कपटी ত্রুটিগুলির কারণ ঘটায়।
খ) গাদা - আবার, ছোট ছোট গাদা আকারগুলি তাই অনিয়ন্ত্রিত মেমরির বরাদ্দ সম্পর্কে সতর্ক হন। খণ্ডন একটি ইস্যুতে পরিণত হয়। এই দুটি দিয়ে, আপনার রান আউট হওয়ার পরে আপনি কী করবেন তা জানতে হবে - এটি ওএস প্রদত্ত পেজিংয়ের কারণে কোনও বড় সিস্টেমে ঘটে না। অর্থাত্ যখন malloc NULL ফেরত দেয়, আপনি কি এটি পরীক্ষা করেন এবং কী করেন। প্রত্যেক ম্যালোর জন্য একটি চেক এবং হ্যান্ডলার, কোড ব্লাট দরকার ?. গাইড হিসাবে - কোনও বিকল্প থাকলে এটি ব্যবহার করবেন না। বেশিরভাগ ছোট সিস্টেমগুলি এই কারণে ডায়নামিক মেমরি ব্যবহার করে না।
গ) হার্ডওয়্যার বিঘ্ন - আপনাকে কীভাবে নিরাপদ এবং সময়োচিত পদ্ধতিতে পরিচালনা করতে হবে তা জানতে হবে। নিরাপদ পুনরায় প্রবেশকারী কোড কীভাবে বানাবেন তাও আপনার জানতে হবে। উদাহরণস্বরূপ, সি স্ট্যান্ডার্ড লিবগুলি সাধারণত পুনরায় প্রবেশ করা হয় না, তাই বাধা হ্যান্ডলারের অভ্যন্তরে ব্যবহার করা উচিত নয়।
d) সমাবেশ - প্রায় সর্বদা অকালীন অপটিমাইজেশন। সি কিছু করতে পারে না এমন কিছু অর্জনের জন্য সর্বাধিক অল্প পরিমাণে (ইনলাইনড) প্রয়োজন। অনুশীলন হিসাবে, হাতের তৈরি কারিগরীতে একটি ছোট পদ্ধতি লিখুন (স্ক্র্যাচ থেকে)। সি তে একই কাজ করুন কর্মক্ষমতা পরিমাপ করুন। আমি বাজি ধরছি সি দ্রুততর হবে, আমি জানি এটি আরও পাঠযোগ্য, রক্ষণাবেক্ষণযোগ্য এবং প্রসারিত হবে able এখন মহড়ার অংশ 2 এর জন্য - এসেম্বলি এবং সি-তে একটি কার্যকর প্রোগ্রাম লিখুন
, অন্য একটি অনুশীলন হিসাবে, লিনাক্স কার্নাল সম্পর্কে লিনাক্স কার্নাল কতটা এসেম্বলার, এটি পড়ুন, নীচের অনুচ্ছেদটি দেখুন।
এটি কীভাবে করবেন তা জেনে রাখা মূল্যবান, এটি এক বা দুটি সাধারণ মাইক্রোগুলির জন্য ভাষাগুলিতে দক্ষ হতেও পারে।
ঙ) "স্বাক্ষরবিহীন ইন্ট ভেরিয়েবল_নামটি নিবন্ধ করুন", "নিবন্ধক" হ'ল, এবং সর্বদা, সংকলকটির জন্য একটি ইঙ্গিত, নির্দেশ নয়, 70 এর দশকের প্রথম দিকে (40 বছর আগে), এটি অর্থবোধ করে। ২০১২ সালে, এটি কীস্ট্রোকগুলির অপচয় হওয়ায় সংকলকগুলি এত স্মার্ট এবং মাইক্রো নির্দেশাবলী এত জটিল sets
আপনার লিনাক্স মন্তব্যে ফিরে যান - আপনার এখানে সমস্যাটি হ'ল আমরা কেবল 1 মিলিয়ন ইউনিট নিয়ে কথা বলছি না, আমরা চিরকালীন জীবনকাল নিয়ে 100 মিলিয়ন এর সাথে কথা বলছি। প্রকৃতি হিসাবে এটি যতটা সম্ভব সম্ভব হিসাবে সর্বোত্তম পাওয়ার জন্য ইঞ্জিনিয়ারিং সময় এবং ব্যয় মূল্যবান। যদিও খুব ভাল ইঞ্জিনিয়ারিং অনুশীলনের একটি ভাল উদাহরণ, তবে বেশিরভাগ এম্বেড থাকা সিস্টেম বিকাশকারীদের লিনাক্স কার্নালের প্রয়োজনীয় পেডেন্টিক হওয়া বাণিজ্যিক আত্মহত্যা হবে be