http://blog.csdn.net/menuconfig/article/details/2276078
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 memory
base??? - print or set address offset
bdinfo?- print Board Info structure
bootm?? - boot application image from memory
cmp???? - memory compare
coninfo - print console devices and information
cp????? - memory copy
crc32?? - checksum calculation
echo??? - echo args to console
erase?? - erase FLASH memory
fl????? - flush a file to FLASH memory
flinfo?- print FLASH memory information
go?? ???- start application at address 'addr'
help??? - print online help
loadb?? - load binary file over serial line (kermit mode)
loads?? - load S-Record file over serial line
loop??? - infinite loop on address range
md????? - memory display
mm????? - memory modify (auto-incrementing)
mtest?? - simple RAM test
mw????? - memory write (fill)
nm????? - memory modify (constant address)
oc????? - over clocking
printenv- print environment variables
protect - enable or disable FLASH write protection
reset?? - Perform RESET of the CPU
run???? - run commands in an environment variable
saveenv - save environment variables to persistent storage
setenv?- set environment variables
sleep?? - delay execution for some time
version - print monitor version
最終可以將uboot裁減到63k。
3,修改控制臺返回信息和環境變量:
修改環境變量的存儲扇區地址,并刪除無用的環境變量或相應修改成對應于我們開發板的環境變量。
相應修改一些控制臺返回信息。
4,如果不動態修改環境變量,建議刪除saveenv命令,以免誤擦除u-boot程序。同時將內核存放地址修改為20010000。
轉自 ?http://www.eefocus.com/myspace/blog/show_77755.html