টেকনিক্যালি কথা বললে, Firmware হলো Software-এর একটি সাবসেট, কারণ 후ের টার্মে প্রতিটি ব্যবহারিক কোডের টুকরো অন্তর্ভুক্ত। কিন্তু প্র্যাক্টিসে, সফটওয়্যার টার্মটি একটি সম্পূর্ণ ভিন্ন ক্লাসের প্রোগ্রামকে বোঝায়।
সাধারণভাবে, ফার্মওয়্যার হলো লো-লেভেল কোডের নাম যা সরাসরি হার্ডওয়্যারের সাথে ইন্টারফেস করে। এই লেয়ারের উপরে কাজ করার প্রোগ্রামগুলো হলো সফটওয়্যার। বিভ্রান্ত? গভীরে যাই।
সফটওয়্যারের много প্রকার
সফটওয়্যার টার্মের সমস্যা হলো এটি খুব ব্রড। কম্পিউটার—অথবা যেকোনো ইলেকট্রনিক ডিভাইস—কন্ট্রোল করতে পারা ইনস্ট্রাকশনের যেকোনো সেট সফটওয়্যার বলা যেতে পারে।
কম্পিউটিং-এর sơ দিনগুলোয় এটা সমস্যা ছিল না যখন সকল প্রোগ্রাম অ্যাসেম্বলি-তে লেখা হতো এবং যেকোনো টাস্ক করার জন্য সরাসরি হার্ডওয়্যারের সাথে ইন্টারফেস করত। কিন্তু আজকাল একটি কম্পিউটিং ডিভাইস লেয়ার আপার লেয়ার কোডের ওপর চলে, যেখানে ইউজার শুধু শীর্ষের প্রোগ্রামগুলো দেখে।
একে Application Software বলা হয়, এই ক্যাটাগরির ইউজার-ফ্রেন্ডলি প্রোগ্রামগুলোর মধ্যে আপনার PC-এ ব্যবহার করা সকল অ্যাপ এবং ইউটিলিটি থাকে—যেমন ওয়েব ব্রাউজার বা ওয়ার্ড এডিটর। এর নিচে আছে Operating System, যা লো-লেভেল ডিটেইলস যেমন স্ক্রিনে ভিজ্যুয়াল রেন্ডার করা এবং ইনপুট হ্যান্ডলিং নিয়ে কাজ করে।
বেশির ভাগ লোক মনে করে এখানেই শেষ, কিন্তু অপারেটিং সিস্টেম híলে হার্ডওয়্যারের সাথে সরাসরি যোগাযোগ করে না। OS-এর নিচে আরেকটি লেয়ার আছে যা সিস্টেম সফটওয়্যারকে হার্ডওয়্যার ফাংশন অ্যাক্সেস করার সহজ পথ দেয়। এবং সেটিই হলো Firmware।
Firmware: সফটওয়্যারের ফাউন্ডেশন লেয়ার
বেশির হাই-লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজে, স্ক্রিনে ইমেজ ডিসপ্লে করা যেন একটি সিম্পল কমান্ড। কিন্তু কম্পিউটারের কোথাও একটি কোডের টুকরো আছে যা সেই কমান্ডকে আসল প্রসেসর ইনস্ট্রাকশনে ট্রান্সলেট করার দায়িত্বে।
ফার্মওয়্যার হলো হার্ডওয়্যার এবং সফটওয়্যারের মধ্যে লিংক, যা ডেভেলপারদের ডিভাইসের ক্যাপাবিলিটি ব্যবহার করতে দেয় একটি সিম্পলিফাইড প্রোগ্রামিং ইন্টারফেসের মাধ্যমে CPU-স্পেসিফিক ইনস্ট্রাকশনের বদলে। কম্পিউটারের জন্য এই ফার্মওয়্যার হলো সুপরিচিত Basic Input Output System (BIOS), যা OS ছাড়াও অ্যাক্সেসযোগ্য।
সিম্পলার ইলেকট্রনিক ডিভাইসের মতো TV রিমোট বা রাউটারের ক্ষেত্রে, ফার্মওয়্যার অপারেটিং সিস্টেম হিসেবে ডবল ডিউটি করে। такие মেশিনগুলো PC-এর মতো থার্ড-পার্টি অ্যাপ্লিকেশন সফটওয়্যার ইনস্টলেশনের জন্য তৈরি নয় এবং সকল প্রয়োজনীয় টাস্ক পারফর্ম করতে ফার্মওয়্যারই تکMvc।
ফার্মওয়্যার ডিভাইসে কীভাবে ইনস্টল হয়?
কোনো ইলেকট্রনিক ডিভাইস ফার্মওয়্যার ছাড়া ব্যবহারযোগ্য নয়। এই কারণেই সকল ইলেকট্রনিক কম্পোনেন্ট ম্যানুফ্যাকচারার tarafından প্রি-ইনস্টলড ফার্মওয়্যার সহ আসে।
কম্পিউটারেও, এই প্রোগ্রাম মাদারবোর্ডের একটি স্পেশালাইজড ফ্ল্যাশ চিপে স্টোরড থাকে, হার্ড ড্রাইভে নয়। এতে একটি কম্পিউটার বুট আপ করা এবং অপারেটিং সিস্টেম ইনস্টলড না থাকলেও হার্ডওয়্যার সেটিংস কনফিগার করা সম্ভব।
ফার্মওয়্যার আপডেট করা অধিকাংশ ডিভাইসে ন तो সহজ ন আবশ্যক। মেশিনের ফান্ডামেন্টাল কন্ট্রোল কোড হলে, এটাকে গুলিয়ে দিলে হার্ডওয়্যার অনযুজেবল হতে পারে। কম্পিউটার এক্সেপশন, যেখানে ইউজার BIOS আপগ্রেড ফ্ল্যাশ করে চিপে ইনস্টল করতে পারে।
Firmware vs Software: এক নজরে
| Firmware | Software | |
|---|---|---|
| উদ্দেশ্য | হার্ডওয়্যার কম্পোনেন্ট সরাসরি কন্ট্রোল করার জন্য এসেনশিয়াল কোড। | ফার্মওয়্যার ব্যবহার করে জটিল টাস্ক পারফর্ম করার অপশনাল প্রোগ্রাম। |
| স্টোরেজ | ডিভাইসের ডেডিকেটেড চিপে স্টোরড। | হার্ড ডিস্ক মেমরিতে ইনস্টলড। |
| ইনস্টলেশন | ম্যানুফ্যাকচারার দ্বারা প্রি-ইনস্টলড। | ইউজার দ্বারা ইনস্টল এবং কনফিগার করা যায়। |
| লেয়ার | অপারেটিং সিস্টেম এবং অন্যান্য সফটওয়্যার সাপোর্ট করার সবচেয়ে নিচের কোড লেয়ার। | নিচের ফার্মওয়্যার দিয়ে হার্ডওয়্যার অবস্ট্রাকশনের ওপর নির্ভরশীল হাই-লেভেল কোড। |
| সিম্পল ডিভাইসে ভূমিকা | সিম্পল ইলেকট্রনিক ডিভাইসে একমাত্র কন্ট্রোলিং প্রোগ্রাম। | ফার্মওয়্যার ছাড়া ফাংশন করতে পারে না। |
| হার্ডওয়্যার স্পেসিফিক | হার্ডওয়্যার স্পেসিফিক। ফার্মওয়্যার ভিন্ন প্রসেসর আর্কিটেকচারের জন্য ভিন্ন এবং ইন্টারচেঞ্জেবল নয়। | হার্ডওয়্যার ইনডিপেনডেন্ট। OS ভিন্ন প্রসেসর ফ্যামিলিতে একইভাবে কাজ করে, যদিও অ্যাপ্লিকেশন সফটওয়্যার সাধারণত OS-স্পেসিফিক। |
| আপডেট | খুব কম আপডেট হয়, যদি কখনো। আনইনস্টল করা যায় না। | আসানেই আপগ্রেড এবং রিমুভ করা যায়। |
ফার্মওয়্যার সফটওয়্যার থেকে কীভাবে আলাদা?
হার্ডওয়্যার এবং সফটওয়্যারকে সাধারণত ইলেকট্রনিক ডিভাইসের দুটি কম্পোনেন্ট বলা হয়, কিন্তু এটা পুরো চিত্র নয়। অপারেটিং সিস্টেম এবং অ্যাপ্লিকেশন হার্ডওয়্যারের সাথে সরাসরি যোগাযোগ করতে পারে না, হার্ডওয়্যার এবং সফটওয়্যারের গ্যাপ পূরণের জন্য একটি স্পেশালাইজড কোড লেয়ার দরকার।
এই লিংকিং এলিমেন্টটি হলো Firmware। এতে আর্কিটেকচার-স্পেসিফিক ইনস্ট্রাকশন থাকে যা সরাসরি হার্ডওয়্যার কন্ট্রোল করে, এবং সিম্পল ইলেকট্রনিক্সে বেসিক OS-রrollenটাও পালন করে। অন্যান্য ডিভাইসে ফার্মওয়্যার সফটওয়্যারকে একটি অ্যাবস্ট্রাক্ট ইন্টারফেস দেয়, যাতে OS আন্ডারলাইন আর্কিটেকচারের চিন্তা ছাড়া হার্ডওয়্যার ব্যবহার করতে পারে।
তার এসেনশিয়াল প্রকৃতির কারণে, ফার্মওয়্যার মাদারবোর্ডের ফ্ল্যাশ চিপে প্রি-লোডেড থাকে, ডিস্কে লেখা যেকোনো সফটওয়্যার থেকে স্বাধীন। এটাকে শুধু স্পেশালাইজড প্রসেসদ্বারা আপডেট (যাকে "flashed" বলা হয়) করা যায়, সফটওয়্যার প্যাকেজের সিম্পল ইনস্টলেশনের মতো নয়।
সকল ইলেকট্রনিক ডিভাইস এবং পেরিফেরাল কম্পোনেন্টের নিজস্ব ফার্মওয়্যার থাকে। ডিজিটাল ক্যামেরা, স্মার্টফোন, SSD, এমনকি USB ড্রাইভ—যদি হার্ডওয়্যার থাকে যা কন্ট্রোল করতে হবে, সেটি ম্যানেজ করার জন্য সেখানে ফার্মওয়্যার অনবোর্ড থাকে।