技術問答
技術文章
iT 徵才
Tag
聊天室
2024 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2022 iThome 鐵人賽
DAY
4
0
自我挑戰組
System Software Introduction
系列 第
4
篇
System Software - Firmware
14th鐵人賽
脆脆
2022-09-15 13:15:34
6546 瀏覽
分享至
Firmware是管理hardware的software,負責在hardware上電後運作起來管理hardware。
How to Request Hardware Service
Firmware運行在hardware MCU (micro-controller unit) 或MPU (micro-processor unit)內部的CPU上
Firmware在bare metal環境下運作,MCU/MPU上電後內部CPU固定執行的PC (program counter) 就是firmware開始擺放的address,所以hardware device一上電,MCU/MPU就會開始執行firmware。
例如: SSD內部會有SSD controller,而SSD firmware會擺放在SSD controller CPU上電之後執行的PC,這樣SSD上電後SSD firmware就會開始執行
Firmware會執行邏輯判斷,並且將依照邏輯判斷對hardware進行操作
例如: 有資料要寫入SSD時,SSD firmware會負責找出有空位的flash,開始下指令把資料寫進flash
例如: SSD firmware偵測到SSD已經空閒一段時間後,不需要外部指令就會開始定時自己執行垃圾收集(garbage collection,一種讓SSD讀寫效率更好的機制)工作,執行時會下指令給hardware對flash儲存的資料座移動、複製、刪除。
How to Service Hardware
Firmware負責hardware與外部的溝通
Firmware對外溝通是透過hardware上的hardware interface: bus (匯流排)
Bus是依照protocol傳輸command與data的hardware interface ,使hardware之間可以互相交換資訊與驅動對方
- Command: hardware發出command要求收到command的hardware做事情
- Data: hardware之間交換的資料
Firmware會藉由bus接收外部hardware對所在hardware發出的command與data,將command解讀完畢之後firmware依照command、data對hardware進行操作,完成後再透過bus回覆command被執行的結果
例如: SSD對外部的bus介面是SATA (Serial Advanced Technology Attachment)。南橋晶片(Southbridge)對SSD讀取data的需求會透過SATA以SATA command的方式發送到SSD,SSD firmware收到SATA command並解讀之後得知SATA command需要的是哪一塊flash內存放的data,接著SSD firmware對SSD操作把對應flash存放的data讀出來再透過SATA回覆給Southbridge 。
Special cases
BIOS是一種firmware,專門用來協助system開機時檢查hardware是否正常,並且尋找bootable device (可開機裝置)進行開機流程的一套firmware,但提供BIOS運作的CPU並不是專用的周邊hardware CPU,而是hardware platform的CPU本身。
OpenSBI是一種對RISC-V SBI (RISC-V的CPU權限管理機制)進行實作的firmware,他會直接運作在hardware platform的CPU上。
Computer system當中,有一些CPU周邊hardware的firmware會有自己的kernel,是一套獨立的小系統
例如: Marvell Wi-Fi網路卡firmware就搭載了Thread-X的kernel
留言
追蹤
檢舉
上一篇
Types of System Software
下一篇
System Software - Device Driver
系列文
System Software Introduction
共
30
篇
目錄
RSS系列文
訂閱系列文
6
人訂閱
26
Build Environment Setup in Build System
27
System Software MISC – Benchmark
28
System Software MISC – Static Link & Dynamic Link
29
System Software MISC – Perf & PMU/HPM
30
System Software Conclusion
完整目錄
直播研討會
{{ item.subject }}
{{ item.channelVendor }}
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
1064
組
團體組數
40
組
累計文章數
22202
篇
完賽人數
602
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
windows server
linux
css
react
vue.js
熱門問題
熟識南投軟體工程師推薦
筆電無法使用usb開機重裝系統
CCNA相關問題詢問
要怎知道LINE使用者的使用地址
電商在販售商品時,可以自行縮短保固期限嗎?
求救 有人會修改cookie權限嗎
防火牆互通問題
桌面的使用者文件圖標壞掉
函數問題
Cisco 防火牆密碼確認正確,可是無法登入
熱門回答
防火牆互通問題
開啟Microsoft Edge 瀏覽器無法開啟網頁,出現錯誤訊息
電商在販售商品時,可以自行縮短保固期限嗎?
筆電無法使用usb開機重裝系統
if函數中的>&<&=是否可以使用儲存格代替
熱門文章
[翻譯]使用AI工具寫程式碼時如何避免「AI幻覺」?
每日一篇學習筆記 直到我做完專題 :( [Day3]
每日一篇學習筆記 直到我做完專題 :( [Day4]
每日一篇學習筆記 直到我做完專題 :( [Day5]
每日一篇學習筆記 直到我做完專題 :( [Day6]
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}