uboot2015.04 裁剪過程記錄


include\common.h #define DEBGU

common\cmd_mmc.c do_mmc_dev, do_mmc_rescan里面強制init_mmc,ture改為false,可以節省多余的三次mmc_init。

include\configs\mx6sabre_common.h
修改CONFIG_BOOTCOMMAND,不再loadbootscript,直接loadimage,節省20ms
修改boot_fdt這個環境變量try->null,不再loadfdt文件,直接bootz,節省10ms


串口靜默
在include\configs\mx6sabre_common.h文件中
#define CONFIG_EXTRA_ENV_SETTINGS \
"silent=1\0" \

#define CONFIG_SILENT_CONSOLE
#define CONFIG_SYS_DEVICE_NULLDEV
#define CONFIG_SILENT_CONSOLE_UPDATE_ON_SET

That also killed kernel serial console after successful boot, until I added
#define CONFIG_SILENT_U_BOOT_ONLY

 

 


include/config_cmd_default.h
啟動過程用到的命令:
【bootcmd:mmc,run loadimage/mmcboot,bootm】
【loadimage:fatload】
【mmcboot:echo,run mmcargs,test,bootz】
【mmcargs:setenv】

 

CONFIG_CMD_NFS nfs命令 沒變化
CONFIG_CMD_MISC sleep命令 8k
CONFIG_CMD_XIMG imxtract- extract a part of a multi-image 沒變化

#define CONFIG_CMD_SOURCE run script from memory 沒變化
#define CONFIG_CMD_SETGETDCR 沒變化,命令都沒減少
#define CONFIG_CMD_MEMORY 4k(259k)
base - print or set address offset
cmp cpy crc32
loop - infinite loop on address range
md - memory display
mm - memory modify (auto-incrementing address)
mtest - simple RAM read/write test
mw - memory write (fill)
nm - memory modify (constant address)

#define CONFIG_CMD_SAVEENV save命令 沒變化
#define CONFIG_CMD_LOADS loads (255k)
#define CONFIG_CMD_LOADB loadb,loadx,loady (247k)

一起去掉兩個:
CONFIG_CMD_FLASH flinfo, erase, protect 沒變化
CONFIG_CMD_IMLS

CONFIG_CMD_ITEST itest - integer ture/false 沒變化
CONFIG_CMD_IMI iminfo顯示Image信息 沒變化

CONFIG_CMD_BOOTD boot/bootd 沒變化
CONFIG_CMD_ECHO echo 4k

一起去掉三個:
CONFIG_CMD_EDITENV
CONFIG_CMD_ENV_EXISTS
CONFIG_CMD_FPGA
去掉的命令editenv - edit environment variable 沒變化

CONFIG_CMD_CONSOLE coninfo 沒變化
CONFIG_CMD_BDI bdinfo

CONFIG_CMD_NET去掉,編譯不過。
根據出錯信息,發現是usb/eth相關的。
查看/drivers/usb/eth/Makefile,發現依賴的宏
/* #define CONFIG_USB_HOST_ETHER lejia*/
/* #define CONFIG_USB_ETHER_ASIX */
都在mx6sabresd.h中,去掉這兩個宏,則編譯通過了。
去掉了20k左右
去掉的命令:
tftpboot- boot image via network using TFTP protocol
bootp - boot image via network using BOOTP/TFTP protocol

CONFIG_CMD_RUN 去掉之后,引導不起來系統,不可去

 

 

 


在mx6sabresd.h中,去掉USB相關的宏,代碼減少28k
去掉的命令:
usb - USB sub-system
usbboot - boot from USB device

 

 

繼續查看命令,有fdt相關的,去掉
搜索fdt - flattened device tree utility commands
找到定義的文件是cmd_fdt.c
搜索找到在Makefill中cmd_fdt.o依賴的宏是CONFIG_OF_LIBFDT(mx6sabre_common.h中)
去掉這個宏,編譯出錯:
arch/arm/cpu/armv7/built-in.o: In function `check_ldo_bypass':
home/book/book777/uboot2015-04/arch/arm/cpu/armv7/mx6/soc.c:799: undefined reference to `fdt_node_offset_by_compatible'
/home/book/book777/uboot2015-04/arch/arm/cpu/armv7/mx6/soc.c:805: undefined reference to `fdt_getprop'
/home/book/book777/uboot2015-04/arch/arm/cpu/armv7/mx6/soc.c:813: undefined reference to `working_fdt'
發現soc.o沒有依賴任何宏,所以去不掉,遂放棄。。。

 

 

 

 

原來做過把menu去掉,咋去掉的?

 

uboot菜單輸入help之后查看命令列表,還是有很多沒有裁掉。
./common/cmd_xxx.c都可以選擇性去掉

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM