嵌入式系統基礎知識(一): 系統結構和嵌入式Linux


目錄

一. 嵌入式體系結構

二. 開發過程中的分工

三. 嵌入式軟件體系結構

四. 嵌入式Linux 


 一. 嵌入式體系結構

<嵌入式系統設計師教程>這本書的前三章脈絡很清晰, 按照嵌入式系統結構從下往上, 從底層的硬件, 電路, 到上層的系統, 應用, 逐層展開介紹. 書的后三章是在掌握好前面的基礎后, 對於應用開發, 軟件工程等宏觀上的指導. 我根據前三章的結構畫出了圖1.1的嵌入式系統結構圖, 系統分層結構一目了然. 第三層多出來的Linux和四大塊, 后面再介紹.

圖1.1


 二. 開發過程中的分工

部門里每個產品的基本開發都需要硬件組, DSP&BSP組, 應用開發組的協作完成.

基礎知識這塊距離嵌入式開發越來越遙遠了, 各大IC廠商為嵌入式產品開發商提供了完善的芯片和手冊, 批量購買就行了哈哈.

硬件組的工作屬於第二層, 第二層里還有我沒有標識出的電源技術, "畫板子"技術. 涉及到硬件, 比如喇叭, 麥克風, 電源, 芯片選型, 系統總線接口設計, 網口, 藍牙, 畫PCB, 制作PCB...自然也涉及到成本, 硬件研發周期等問題. 

DSP&BSP組的工作屬於第三層, 在不同平台, 也就是不同處理器架構的板子上移植BootLoader->操作系統->設備驅動->文件管理系統,  協助硬件調通板子上電能跑, 再交給應用層做開發.

應用開發組就是"站在巨人的肩膀上"敲代碼了. 向下要了解操作系統基本知識, 向上要把握客戶的迫切需求, 還要夜以繼日的提高開發技能. 也希望這一層是"入門不易, 前途無量"吧.


三. 嵌入式軟件體系結構

軟件體系結構在<嵌入式系統設計師教程> 里有圖示, 即圖3.1. 我覺着部門里BSP&DSP組的人是在跨層工作, 因為紅框里的這些移植都是由他們實現的.

圖3.1

3.1 設備驅動層

設備驅動層又叫板級支持包, 即Board Support Package, BSP. 包含了嵌入式系統中所有與硬件有關的代碼. BSP的基本思想是把嵌入式操作系統與具體的硬件平台隔離開來, 並向上層提供一個虛擬的硬件平台, 操作系統就運行在這組虛擬平台上. OS使用一組定義好的編程接口與BSP交互, 通過BSP訪問真正的硬件. BSP主要實現以下兩種功能:

1. 引導BootLoader

BootLoader是嵌入式系統上電后運行的第一段軟件代碼. 在一個基於ARM*內核的嵌入式系統中, 系統上電或復位一般都是從地址x00000000開始執行, 這個地址通常放置的就是BootLoader. 

  • 片級初始化, 包括微處理器核心寄存器和控制寄存器, 微處理器核心工作模式, 局部總線模式;
  • 板級初始化, 正確設置各種寄存器內容如初始化定時器, 設置中斷控制寄存器, 初始化串口通信, 建立內存空間的地址映射;
  • 加載內核, 將操作系統和應用程序從Flash存儲器復制到系統內存中, 跳轉到系統內核的第一條指令處.

2. 引導設備驅動

設備驅動就是一組庫函數, 對硬件進行初始化和管理, 向上層提供訪問接口. 設備驅動的基本功能:

 

  • 硬件啟動: 在開機上電或系統重啟時, 對硬件初始化
  • 硬件關閉: 將硬件設置為關機
  • 讀: 從硬件中讀取數據
  • 寫: 往硬件中寫入數據

3.2. 嵌入式中間件

在操作系統內核, 設備驅動程序, 應用軟件之外的所有系統軟件. 如Sun公司的嵌入式Java, Google的Android. 

3.3. BootLoader之uBoot

系統上電后, 需要一段小程序來初始化, 包括: 關閉看門狗, 改變系統時鍾, 初始化存儲控制器, 將更多的代碼復制到內存中等等. 如果它能將操作系統內核從Flash/遠端網絡傳輸復制到內存, 就稱這段小程序為BootLoader. 

比如BSP組提供的Bootloader, 在以上基本功能之外, 還提供給廣大應用開發人員增強的BootLoader功能, 包括通過串口, ftp傳輸, 下載, 燒錄文件, 將Flash上的壓縮文件解壓后再運行等等. 增強版的功能用戶並不需要, 它們都是為了方便廣大應用開發人員, 感動crying.

3.4 BootLoader的兩種工作模式

1. 啟動加載模式

上電后, BootLoader從板子的固態存儲設備上將OS加載到RAM, 整個過程無用戶介入, 產品發布時采用此模式.

2. 下載模式

開發人員可以使用各種命令, 通過串口或網絡連接等通信手段從主機下載文件, 比如內核映像, 文件系統映像等, 將它們放入內存運行或燒入Flash類固態存儲設備中.

從主機傳輸文件, 可以采用串口xmodem/ymodem/zmodem協議, 簡單而且慢; 還可以使用網絡通過ftp, nfs傳輸, 主機需要開啟ftp, nfs服務.

U-Boot是功能強大的BootLoader, 通常支持兩種工作模式, 而且允許用戶在兩種模式間切換. 比如, U-Boot啟動時處於正常的啟動加載模式, 但會延時若干秒, 等待終端用戶按下某鍵而將U-Boot切換到下載模式. ITE啟動時就是這樣, 開啟后立刻回車, 就會進入下載模式, 在這個模式下可以進行參數配置和ftp系統升級.


四. 嵌入式Linux

作為軟件體系結構的主流結構, 嵌入式Linux體系應用廣泛, 日后我也是靠它吃飯了. 關於嵌入式Linux最常聽到的四大塊就是: BootLoader, 內核, 驅動, 根文件系統. 其實也就是Linux內核+"嵌入式周邊"=嵌入式Linux的關系. 四大塊物理位置處於第二層中的不同存儲體系中:

  • 內存: BootLoader
  • (ROM)Flash: Linux內核
  • 外存: 驅動程序

 

參考

[1] Bootloader之uBoot簡介

[2] 做嵌入式開發, 職業如何發展? from知乎

[3] <嵌入式系統設計師教程> 清華大學出版社


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM