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

目錄

一. 嵌入式體系結構html

二. 開發過程當中的分工編程

三. 嵌入式軟件體系結構小程序

四. 嵌入式Linux 網絡


 一. 嵌入式體系結構

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

圖1.1函數


 二. 開發過程當中的分工

部門裏每一個產品的基本開發都須要硬件組, DSP&BSP組, 應用開發組的協做完成.spa

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

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

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

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


三. 嵌入式軟件體系結構

軟件體系結構在<嵌入式系統設計師教程> 裏有圖示, 即圖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] <嵌入式系統設計師教程> 清華大學出版社

相關文章
相關標籤/搜索