一. 嵌入式體系結構html
二. 開發過程當中的分工編程
三. 嵌入式軟件體系結構小程序
四. 嵌入式Linux 網絡
<嵌入式系統設計師教程>這本書的前三章脈絡很清晰, 按照嵌入式系統結構從下往上, 從底層的硬件, 電路, 到上層的系統, 應用, 逐層展開介紹. 書的後三章是在掌握好前面的基礎後, 對於應用開發, 軟件工程等宏觀上的指導. 我根據前三章的結構畫出了圖1.1的嵌入式系統結構圖, 系統分層結構一目瞭然. 第三層多出來的Linux和四大塊, 後面再介紹.架構
圖1.1函數
部門裏每一個產品的基本開發都須要硬件組, DSP&BSP組, 應用開發組的協做完成.spa
基礎知識這塊距離嵌入式開發愈來愈遙遠了, 各大IC廠商爲嵌入式產品開發商提供了完善的芯片和手冊, 批量購買就好了哈哈.操作系統
硬件組的工做屬於第二層, 第二層裏還有我沒有標識出的電源技術, "畫板子"技術. 涉及到硬件, 好比喇叭, 麥克風, 電源, 芯片選型, 系統總線接口設計, 網口, 藍牙, 畫PCB, 製做PCB...天然也涉及到成本, 硬件研發週期等問題. 設計
DSP&BSP組的工做屬於第三層, 在不一樣平臺, 也就是不一樣處理器架構的板子上移植BootLoader->操做系統->設備驅動->文件管理系統, 協助硬件調通板子上電能跑, 再交給應用層作開發.3d
應用開發組就是"站在巨人的肩膀上"敲代碼了. 向下要了解操做系統基本知識, 向上要把握客戶的迫切需求, 還要夜以繼日的提升開發技能. 也但願這一層是"入門不易, 前途無量"吧.
軟件體系結構在<嵌入式系統設計師教程> 裏有圖示, 即圖3.1. 我覺着部門裏BSP&DSP組的人是在跨層工做, 由於紅框裏的這些移植都是由他們實現的.
圖3.1
設備驅動層又叫板級支持包, 即Board Support Package, BSP. 包含了嵌入式系統中全部與硬件有關的代碼. BSP的基本思想是把嵌入式操做系統與具體的硬件平臺隔離開來, 並向上層提供一個虛擬的硬件平臺, 操做系統就運行在這組虛擬平臺上. OS使用一組定義好的編程接口與BSP交互, 經過BSP訪問真正的硬件. BSP主要實現如下兩種功能:
BootLoader是嵌入式系統上電後運行的第一段軟件代碼. 在一個基於ARM*內核的嵌入式系統中, 系統上電或復位通常都是從地址x00000000開始執行, 這個地址一般放置的就是BootLoader.
設備驅動就是一組庫函數, 對硬件進行初始化和管理, 向上層提供訪問接口. 設備驅動的基本功能:
在操做系統內核, 設備驅動程序, 應用軟件以外的全部系統軟件. 如Sun公司的嵌入式Java, Google的Android.
系統上電後, 須要一段小程序來初始化, 包括: 關閉看門狗, 改變系統時鐘, 初始化存儲控制器, 將更多的代碼複製到內存中等等. 若是它能將操做系統內核從Flash/遠端網絡傳輸複製到內存, 就稱這段小程序爲BootLoader.
好比BSP組提供的Bootloader, 在以上基本功能以外, 還提供給廣大應用開發人員加強的BootLoader功能, 包括經過串口, ftp傳輸, 下載, 燒錄文件, 將Flash上的壓縮文件解壓後再運行等等. 加強版的功能用戶並不須要, 它們都是爲了方便廣大應用開發人員, 感動crying.
上電後, BootLoader從板子的固態存儲設備上將OS加載到RAM, 整個過程無用戶介入, 產品發佈時採用此模式.
開發人員可使用各類命令, 經過串口或網絡鏈接等通訊手段從主機下載文件, 好比內核映像, 文件系統映像等, 將它們放入內存運行或燒入Flash類固態存儲設備中.
從主機傳輸文件, 能夠採用串口xmodem/ymodem/zmodem協議, 簡單並且慢; 還可使用網絡經過ftp, nfs傳輸, 主機須要開啓ftp, nfs服務.
U-Boot是功能強大的BootLoader, 一般支持兩種工做模式, 並且容許用戶在兩種模式間切換. 好比, U-Boot啓動時處於正常的啓動加載模式, 但會延時若干秒, 等待終端用戶按下某鍵而將U-Boot切換到下載模式. ITE啓動時就是這樣, 開啓後馬上回車, 就會進入下載模式, 在這個模式下能夠進行參數配置和ftp系統升級.
做爲軟件體系結構的主流結構, 嵌入式Linux體系應用普遍, 往後我也是靠它吃飯了. 關於嵌入式Linux最常聽到的四大塊就是: BootLoader, 內核, 驅動, 根文件系統. 其實也就是Linux內核+"嵌入式周邊"=嵌入式Linux的關係. 四大塊物理位置處於第二層中的不一樣存儲體系中:
[3] <嵌入式系統設計師教程> 清華大學出版社