linux如何编译的sdk,编译BroadCom的SDK

芯片:交换芯片BCM56334,PHY5464,PHY5461

交叉编译OS为Tilepro

SDK版本:sdk-all-5.6.6

BCM针对其出品的所有交换芯片和PHY芯片的配置源代码都在BCM的SDK软件包中,通过编译SDK可以生成针对你所需要的芯片的内核模块映像(.ko文件),加载到OS中即可自动完成配置。

编译步骤:

(1)解压SDK包,定义并导出以源码根目录的环境变量SDK

在这之前知晓tilepro MDE中linuxOS源代码的目录:$(TILERA_ROOT)/src/sys/linux

tilepro MDE中交叉编译器使用的头文件目录:$(TILERA_ROOT)/usr/lib/tile-gcc/include

tilepro linux编译内核时生成的编译环境目录(即运行tile-prepare脚本的目录):$(COMPILE_DIR)

(2)$(SDK)/system/linux/kernel/路径下,新建的我们自己平台目录myplat,拷贝近似平台的Makefile文件到$(SDK)/system/linux/kernel/myplat,修改平台参数和编译环境参数;

(3)在$(SDK)/make路径下,拷贝近似平台的Makefile.linux-xxx-2_6文件到Makefile.linux-myplat-2_6。

修改的主要参数有:

1)$(KERNDIR) = $(COMPILE_DIR)若指定为源文件目录(TILERA_ROOT)/src/sys/linux则找不到生成模块文件时需要的autoconf.h等文件;

2)在KFLAG参数中剔除本交叉编译器不支持的编译选项,并添加源文件的头文件路径和编译环境头文件路径

-I$(TILERA_ROOT)/src/sys/linux/include 和 -I$(COMPILE_DIR)/include.

最重要的是要指定出交叉编译器运行时需要的头文件路径-isystem $TILERA_ROOT)/usr/lib/tile-gcc/include,此处如果是构建非交叉编译的映像则要指定-isystem为如/usr/lib/gcc/4.1.1/include类似的路径.

还有就是如果编译过程中出现某些Makefile中定义的宏参数未在源码中定义,则可以在该处

通过-D'macro=xxx'的形式定义。如-D'KBUILD_MODNAME=xxx',定义了驱动名称的宏。

(4)在$(SDK)/make目录下,拷贝Make.local.templete到新文件Make.local,编辑Make.local文件选择需要支持的芯片类型和各种功能选项(不修改则默认为所有芯片都支持)

(5)进入$(SDK)/system/linux/kernel/myplat目录下运行make,启动编译过程。

(6)最后在$(SDK)/system/linux/kernel/myplat目录下生成所有的.ko文件,一般只需要自检过程需要的bcm文件和调用BCM API使用的core文件。

注意:Makefile.linux-kernel文件中的语句ORIGIN = Broadcom后面有一个空格,否则编译选项将不同,编译会带来麻烦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值