待解决问题?
1,Linux內核在啟動過程中會尋找并加載根文件系統,加載成功則進入Linux Shell,運行用戶程序。如果找不到合適的根文件系統,則會出現Kernel Panic錯誤并停止。
那么問題來了,如何尋找和加載根文件系統?
2,嵌入式Linux Bootloader的基本功能是:根據設定的參數直接引導操作系統啟動和下載程序。在程序下載模式下,Bootloader能夠完成內核、根文件系統的固化和更新,甚至實現Bootloader的自我更新。
那么問題來了?我們可以通過哪些方式來完成文件的下載和固化?串口?以太網?USB接口?SD接口?
3,在產品開發過程中,Bootloader的擴展功能,如硬件檢測、文件系統支持和文件瀏覽等,對于硬件的調試是非常便利的。
那么問題來了,該怎么開發一個完整易用的Bootloader?
4,Booloader的特性和功能有哪些?
(1)可靠性和穩定性都較好
(2)支持命令行,都自己的Shell
(3)支持外設豐富,如:串口、以太網、SDRAM、FALSH、LCD、NVRAM、EEPROM、RTC、鍵盤等
(4)有自己的文檔
(5)網絡技術支持方便
(6)系統引導
(7)支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統
(8)支持NFS掛載、從FLASH中引導壓縮或非壓縮系統內核
(9)CRC校驗,可校驗FLASH中內核、RAMDISK鏡像文件是否完好
(10)提供各種外設的驅動,如串口、FLASH、以太網、LCD、EEPROM、鍵盤、USB、PCMCIA、RTC等
(11)上電自檢能:可自動檢測SDRAM、FLASH大小,也能檢測外設故障
(12)支持XIP內核引導
(13)操作系統接口功能強大:可靈活誰設置、傳遞多個關鍵參數給操作系統,適合系統在不同開發階段的調試要求與產品發布
5,Linux產品:
(1)參考評估板,需要考慮:功能軟件、引腳復用、完善評估板的驅動和修復BUG。
(2)Bootloader、內核、文件系統要貼合、匹配硬件。
(3)NAND直接啟動:有位反轉問題。當我們對NAND進行分區域保護時,會對Bootloader、內核、文件系統等進行分,并對各不同分區設置不同的mask_flag,從而實現對該MTD分區的屬性設置,如只讀等,防止誤操作破壞分區。采用雙備份方式。
6,操作系統,一定要bootloader嗎?
不一定。如果系統支持內核XIP,就可以不需要bootloader。
7,快速啟動
(1)精簡Bootloader。開發時用一個完整的bootloader,發布產品時用一個精簡bootloader。
開發用bootloader:包含很多的功能和命令,例如以太網、USB、SD卡等自檢功能。設置uboot等待時間如3秒。
發布用bootloader:刪除自檢用功能和命令。關于等待時間,可將等待時間單位設置為“百毫秒”或“十毫米”。(<common/main.c>的abortboot(int bootdelay)函數)。重新上電后,提前按著鍵盤按鍵不松開,直到進入命令行。
(2)精簡內核:要注意Bootloader搬運內核的時間,內核自解壓后以及運行的時間。裁剪冗余的驅動和協議功能模塊,去掉驅動模塊的調試支持功能,在Kernel Hacking(Show timing information on prinkd)中關閉各種系統調試功能,將內核必備功能,如串口、NAND驅動、系統RTC等靜態編譯在內核中,對其他模塊編譯為內核模塊,在進入系統后再加載。
(3)精簡根文件系統:要注意根文件系統鏡像的格式,根文件系統本身體積的大小,init程序以及根文件系統所啟動的服務和程序的多少。
轉載于:https://www.cnblogs.com/stephen-mcu-tech/p/10205360.html
總結
- 上一篇: 标准差、方差、协方差的区别
- 下一篇: Percona XtraDB Clust