一、uboot簡介
U-Boot,全稱 Universal Boot Loader,是遵循GPL條款的從FADSROM、8xxROM、PPCBOOT逐步發展演化而來的開放源碼項目。
在操作系統方面,U-Boot不僅支持嵌入式Linux系統的引導,它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系統。目前支持的目標操作系統是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。
在CPU架構方面,U-Boot除了支持PowerPC系列的處理器外,還能支持MIPS、x86、ARM、NIOS、XScale等諸多常用系列的處理器。
U-Boot項目的開發目標是支持盡可能多的嵌入式處理器和嵌入式操作系統。
二、uboot的特性
Uboot的特性:
1、開放源碼;
2、支持多種嵌入式操作系統內核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;
3、支持多個處理器系列,如PowerPC、ARM、x86、MIPS;
4、較高的可靠性和穩定性;
5、高度靈活的功能設置,適合U-Boot調試、操作系統不同引導要求、產品發布等;
6、豐富的設備驅動源碼,如串口、以太網、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、鍵盤等;
7、較為豐富的開發調試文檔與強大的網絡技術支持;
三、嵌入式 uboot裁剪
u-boot裁減的主要方法是通過刪除不需要的命令來減小可執行代碼體積。比如說,如果不需要網絡相關的功能,則可以將網絡相關的所有命令全部刪除,可以節約可觀的flash空間。一般u-boot的大小為100k左右,通過刪除命令(如果刪除網絡相關的命令),可以裁減到64k以內,只保留一些經常使用的命令。
另外,如果需要動態修改環境變量,環境變量還需要單獨分配一個flash扇區用于保存。這樣大約就需要64k+64k的flash空間。如果我們不需要動態修改環境變量,可以省去一個扇區的Flash開銷。
以下是本人裁減u-boot的基本步驟:
1,刪除除默認命令以外的命令:
刪除include/configs/naribf533.h中CONFIG_COMMANDS的定義,直接采樣默認的命令。可以將u-boot從108k裁減到79k。2,刪除其他不需要的命令,只保留常用命令:
通過修改include/cmd_confdefs.h中的CFG_CMD_NONSTD常量,進一步裁減u-boot命令。CFG_CMD_NONSTD為“non-standard”命令,除了這個常量定義的命令外,其余都是常用命令。我們可以通過在這個常量中添加不需要的命令來減少默認命令的數量。我們這里只保留以下命令,其余全部裁減掉:
- alias for 'help'autoscr - run script from memorybase- print or set address offsetbdinfo- print Board Info structurebootm- boot application image from memorycmp- memory compareconinfo - print console devices and informationcp- memory copycrc32- checksum calculationecho- echo args to consoleerase- erase FLASH memoryfl- flush a file to FLASH memoryflinfo- print FLASH memory informationgo- start application at address 'addr'help- print online helploadb- load binary file over serial line (kermit mode)loads- load S-Record file over serial lineloop- infinite loop on address rangemd- memory displaymm- memory modify (auto-incrementing)mtest- simple RAM testmw- memory write (fill)nm- memory modify (constant address)oc- over clockingprintenv- print environment variablesprotect - enable or disable FLASH write protectionreset- Perform RESET of the CPUrun- run commands in an environment variablesaveenv - save environment variables to persistent storagesetenv- set environment variablessleep- delay execution for some timeversion - print monitor version
最終可以將uboot裁減到63k。
3,修改控制臺返回信息和環境變量:修改環境變量的存儲扇區地址,并刪除無用的環境變量或相應修改成對應于我們開發板的環境變量。相應修改一些控制臺返回信息。
4,如果不動態修改環境變量,建議刪除saveenv命令,以免誤擦除u-boot程序。
-
嵌入式
+關注
關注
5044文章
18811瀏覽量
298417 -
Uboot
+關注
關注
4文章
124瀏覽量
28053
原文標題:嵌入式 uboot裁剪的方法及思路
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論