Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167851
  • 博文数量: 109
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 147
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-23 16:12
文章分类

全部博文(109)

文章存档

2015年(109)

我的朋友

分类: 嵌入式

2015-02-12 15:51:34

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) |
给主人留下些什么吧!~~