bcm56334_b0在sdk-all-5.9.1移植后,为了方便系统启动时自动加载以及缩小.ko文件尺寸,需要将bcm-shell,appl等部分剪裁掉,方法主要是修改各级目录的makefile文件,使其只编译生成必须的两个模块文件:
linux-kernel-bde.ko和linux-bcm-core.ko
需要修改的地方如下:
1 去掉$SDK/src/Makefile中目录搜索参数subdirs的appl,可以清除bcm-shell等应用的编译;
2 设置Make.local文件中NO_SAL_APPL=1,可清除sal应用的编译;
3 使Make.local文件中DISPATCH_LIST宏只保留ESW,清除掉其它体系文件的编译,FEATURE_LIST也可进行删 减或设置为EMPTY;
4 开启Make.local文件中三个配置参数:
CFGFLAGS +=-DSOC_NO_NAMES
CFGFLAGS +=-DSOC_NO_ALIAS
CFGFLAGS +=-DSOC_NO_DESC
5 修改$SDK/systems/linux/kernel/common/Makefile文件中生成5个.ko模块对应的宏:
KERNEL_XXX_LOCAL和KERNEL_XXX,令不需要的模块宏为空。
同时删除编译目标all中的依赖目标user_apps和link_check。
另外只保留$SDK/systems/linux/kernel/modules/Makefile文件中subdirs参数中的子参数shared 和bcm-core。
这样可以使不需要的模块和bcm-shell不编译;
6 此外还可能需要删除并修改$SDK/systems/linux/kernel/modules/bcm-core/bcm-core-symbols.h文件中的某些没有编译的模块中的符号;
7 加载bcm-core模块时可以通过指定参数init=bcm代替在bcm-shell启动后手动输入init bcm进行初始化,此初始化需要执行bcm-core.c文件中的bcore_init_all文件,因此需要使unit参数的范围定义宏在bde与bcore两个模块文件中保持一致;
8 通过以上步骤可以将映像大小由未删减之前的30M缩减到15M,为了进一步删减映像大小,还可以将不需要的bcm-API函数删除,可能需要修改的文件如下:
$SDK/src/bcm/api_ref.c
$SDK/src/bcm/dispatch.c
$SDK/systems/linux/kernel/modules/include/bcm-export.h
$SDK/src/bcm/esw/init.c
$SDK/src/bcm/async_run.c
$SDK/src/bcm/loop.c
此外$SDK/src/soc/phy目录有许多不需要的phy文件可以删除掉;
$SDK/src/bcm/esw/下各芯片体系有许多交叉使用的文件,可以选择性删除,但不推荐这么做,因为enduro的芯片某些功能会使用同样esw下其它体系芯片的该功能文件,会造成混乱;
9 关于源代码中涉及到的芯片feature特性,源代码中定义在feature.c文件,打印出的bcm56334_b0默认feature特性参见文章bcm56334 soc-feature。所有property都为空;
阅读(1537) | 评论(0) | 转发(0) |