芯片:交换芯片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后面有一个空格,否则编译选项将不同,编译会带来麻烦。
阅读(10971) | 评论(3) | 转发(1) |