এম্বেড থাকা সিস্টেম প্রোগ্রামিং (যা আমি প্রায় 30+ বছর ধরে নিযুক্ত ছিলাম) অন্য যে কোনও ধরণের সফ্টওয়্যার বিকাশের চেয়ে বেশ আলাদা মানসিকতার প্রয়োজন। কম্পিউটিং পাওয়ারের পরিসরটি 8 বিট মাইক্রোকন্ট্রোলার থেকে শুরু করে লিনাক্স বা কিছু অন্যান্য সাধারণ ওএস চলমান 32-বিট মাইক্রোপ্রসেসরের মধ্যে 30 সেন্টের জন্য ব্যয় করে ব্যাপকভাবে পরিবর্তিত হয়। আমি বর্তমানে এই স্কেলের উভয় প্রান্তে প্রকল্পগুলি করছি। ক্ষুদ্রতম মাইক্রোগুলিতে কোড মেমরিটি কেবল কয়েক কেবি হতে পারে, মাত্র কয়েকশ বাইট র্যামের সাথে। একটি মিড-রেঞ্জের 16 বিট মাইক্রো দামের 3 ডলার হতে পারে 256KB প্রোগ্রাম স্টোরেজ এবং র্যামের 16KB থাকতে পারে।
সীমাবদ্ধ মেমোরি রিসোর্সগুলির পাশাপাশি, এম্বেড প্রোগ্রামিংয়ের একটি দিক যা সফ্টওয়্যার বিকাশের অন্যান্য ক্ষেত্রগুলির থেকে আলাদা তা হ'ল প্রোগ্রামার প্রায়শই রেজিস্ট্রার স্তরে হার্ডওয়্যারের সাথে সরাসরি ডিল করে - হয় মাইক্রো নিজে থেকেই, বা পেরিফেরিয়াল সংযুক্ত থাকে ইউআরটি, এসপিআই বা আই 2 সি এর মতো সিরিয়াল বাসগুলির মাধ্যমে মাইক্রো। এই কারণে, লো-এন্ড এমবেডেড মাইক্রোগুলি সাধারণত সি বা সমাবেশ ভাষায় প্রোগ্রাম হয়।
এম্বেড থাকা সিস্টেমগুলি প্রায়শই রিয়েল-টাইম ইভেন্টগুলি নিয়ে কাজ করে, তাই এম্বেড করা ফার্মওয়্যার প্রোগ্রামে সাধারণত অনেকগুলি বাধা রুটিন থাকে এবং সম্ভব হয় একটি ছোট আরটিওএস (রিয়েল-টাইম ওএস)। এই জাতীয় সিস্টেমে ডিবাগ করার জন্য প্রায়শই মাইক্রোতে কয়েকটি উত্সর্গীকৃত লাইন ব্যবহার করে হার্ডওয়্যার সহায়তার প্রয়োজন হয় যাতে পিসি থেকে দূরবর্তী অবস্থানগুলি সেট করা যায়। যুক্তি বিশ্লেষক, বাস বিশ্লেষক এবং অসিলোস্কোপগুলি এই সিস্টেমগুলি ডিবাগ করার জন্য ব্যবহৃত অতিরিক্ত সরঞ্জাম।
এম্বেড উন্নয়নের হার্ডওয়্যার দিকগুলির কারণে, বিকাশকারীদের প্রায়শই কিছু ইলেকট্রনিক্স ব্যাকগ্রাউন্ড থাকে। (EE এবং CS উভয় ক্ষেত্রেই আমার ডিগ্রি রয়েছে)।