您的位置:首页 > 其它

98DX3236内核编译过程小结

2017-10-11 20:18 991 查看

0.条件

(1)Marvell技术支持提供的压缩文件:

GNU EABI:

arm-mv5sft-linux-gnueabi_SW3.2.tar.bz2.tar.bz2

armebv7-marvell-linux-gnueabi-softfp_i686_201201.tar.bz2

CPSS代码:

Cpss-PP-DxCh-4.2_012.zip

Linux内核文件:

lsp-4.2_012.zip

LSP-Unified.zip

LuaCLI:

luaCli-4.2_012.zip

LuaSuite-4.2_012.zip

其它:

EnablerSuite-4.2_012.zip

ExtUtils-4.2_012.zip

GaltisSuite-4.2_012.zip

ReferenceCode-4.2_012.zip

Simulation-4.2_012.zip

UT-4.2_012.zip

(2)Busybox压缩包:

busybox-1.01.tar.bz2

busybox-1.25.0.tar.bz2

(3)工作站操作系统:Ubuntu14.10,32位

(4)编译时工作目录:~/work

1.安装交叉编译环境

(1)复制GNU压缩包arm-mv5sft-linux-gnueabi_SW3.2.tar.bz2.tar.bz2和

armebv7-marvell-linux-gnueabi-softfp_i686_201201.tar.bz2到~/work目录下;

(2)解压缩:

# tar -xjf arm-mv5sft-linux-gnueabi_SW3.2.tar.bz2.tar.bz2

# tar -xjf armebv7-marvell-linux-gnueabi-softfp_i686_201201.tar.bz2

(3)确认系统已经安装了以下程序:

make

bc

mtd-utils

(4)添加交叉编译工具链的路径

# gedit ~/.bashrc

在文档末尾插入以下内容,最后保存并退出:

PATH=$PATH:/home/user/work/Marvell_toolchain_201201/armv7-marvell-linux-gnueabi-softfp_i686/bin

PATH=$PATH:/home/user/work/arm-mv5sft-linux-gnueabi_SW3.2/bin

(注意:user为开发者名称,需要修改为自己的用户名!)

2.编译内核

(1)在终端中以user(普通用户)的身份登录;

(2)跳转到~/work目录下

# cd ~/work

(3)创建linux子目录,并修改work目录权限

# mkdir linux

# sudo chown -R user ~/work

(4)解压缩CPSS代码

# cd ~/work

# unzip Cpss-PP-DxCh-4.2_012.zip

# chmod +x build_cpss.sh

(5)打开调试信息开关

# export DEBUG_INFO=D_ON

(6)复制以下文件到work目录下:

lsp-4.2_012.zip

LSP-Unified.zip

luaCli-4.2_012.zip

LuaSuite-4.2_012.zip

EnablerSuite-4.2_012.zip

ExtUtils-4.2_012.zip

GaltisSuite-4.2_012.zip

ReferenceCode-4.2_012.zip

Simulation-4.2_012.zip

UT-4.2_012.zip

(7)复制两个busybox压缩文件到~/work/linux目录下

(8)编译内核文件

# cd ~/work

# ./build_cpss.sh MSYS DX_ALL UNZIP

注意:第一次使用build_cpss.sh脚本程序时,要使用UNZIP参数,之后UNZIP需要改为CUST

命令中,MSYS为CPU型号,DX_ALL为包处理器型号

主要问题:

1)CPU型号

解决思路:

98DX3236为XCAT3系列CPU,当使用命令“./build_cpss.sh XCAT DX_ALL UNZIP”编译时,终端会报错并提示需要在linux目录下放置对应版本的内核文件。通过尝试发现,当CPU型号使用MSYS时,不会出现类似报错信息。

2)提示缺少文件“simulation/_Makefile”

解决思路:解压缩Simulation-4.2_012.zip,并将simulation文件夹剪切至~/work/cpss目录下。

3)busybox1.25.0设置问题

克服以上问题后,会出现以下报错提示:
coreutils/lib.a(sync.o): In function `sync_main':
sync.c:(.text.sync_main+0x7c): undefined reference to `syncfs'
collect2: ld returned 1 exit status
Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
Makefile:717: recipe for target 'busybox_unstripped' failed
make: *** [busybox_unstripped] Error 1


解决思路是:

首先将终端目录切换至busybox-1.25.0:

# cd ~/work/linux/MSYS/msys_lsp_3_4/linux-3.4.69/rootfs/busybox-1.25.0

接着配置一下busybox:

# make menuconfig

在弹出的对话框中去掉Coreutils--->sync的选项,接着保存退出,

将~/work/linux目录下的busybox1.25.0.tar.bz2剪切至其它子目录中,最后执行下方命令:

# ./build_cpss.sh MSYS DX_ALL UNZIP

(再次编译内核时,请使用# ./build_cpss.sh MSYS DX_ALL
CUST

3.烧写内核

编译成功后,在目录~/work/compilation_root下会生成内核文件:

ubifs_arm_256eb_nand_v2_5.image和ubifs_arm_512eb_nand.image,

98DX3236开发板对应的内核文件是ubifs_arm_512eb_nand.image。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  98DX3236 内核 busybox gnu