DM8168编译Linux内核方法
Revision History
Draft Date 2016/07/27
Revision No.
V1.1
1.修改错误指令。 2.增加自启服务章节说明。
2016/01/29
V1.0
1.初始版本。
Description
1/9
目
录
1 内核编译 .................................................................................................................................. 3
1.1 1.2 1.3 1.4 1.5
安装内核源代码 ...................................................................................................... 3 清理内核 .................................................................................................................. 3 配置内核 .................................................................................................................. 4 编译内核 .................................................................................................................. 5 编译模块 .................................................................................................................. 7
2 自启服务说明(针对系统启动失败) .................................................................................. 8
2/9
1 内核编译
广州创龙TL8148使用Linux版本为:linux-2.6.37,光盘中路径为\"Linux/kernel/linux-ezsdk/src\"。
1.1 安装内核源代码
将内核源文件复制到任意目录下,并解压安装到\"linux-2.6.37\"目录下,进入源码目录下,执行如下命令: Host# mkdir linux-2.6.37
Host# tar zxvf linux-2.6.37-xxxxx.tar.gz -C linux-2.6.37 //根据实际名称,用Tab键补全
图 1
图 2
1.2 清理内核
进入linux-2.6.37内核源码的顶层目录,然后执行以下命令:
Host# cd linux-2.6.37/ Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- ARCH=arm distclean //以交叉编译工具实际路径为准
3/9
图 3
make clean、make mrproer、make distclean的区别:
删除的文件范围从小到大依次为:make clean < make mrproper< make distclean。 make clean:删除大多数的编译生成文件,但会保留.config内核配置文件。
make mrproper:删除所有的编译生成文件,同时删除内核配置文件以及各种备份文件。 make distclean:删除所有的编译生成文件,同时删除内核配置文件以及各种备份文件和补丁文件,清除最完整。 1.3 配置内核
(1)配置内核。执行如下命令:
Host# sudo make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- ti8148_evm_defconfig
图4
(2)上一步已完成平台所需配置,如用户需添加其他配置(如无需要可跳过此步), 可执行以下步骤选择配置:
4/9
Host# sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- ARCH=arm menuconfig
图 5
图 6
1.4 编译内核
编译内核镜像。执行如下命令:
5/9
Host# sudo make ARCH=arm
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- uImage -j 16
图 7
编译完成如下图所示:
图8
编译完成后在\"/linux-2.6.37/arch/arm/boot\"路径下生成uImage文件。如下图所示:
图9
6/9
1.5 编译模块
最后执行模块的编译。执行如下命令:
Host# sudo make ARCH=arm
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- modules -j 16
图 10
将modules安装到系统卡rootfs分区。
将系统卡插入pc机,在ubuntu上确认是否挂载了系统卡,将编译的模块安装到系统卡rootfs分区,执行如下命令: Host#
sudo make
CROSS_COMPILE=/home/tl/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- ARCH=arm modules_install INSTALL_MOD_PATH=/media/rootfs
7/9
图 11
至此编译完成。但由于编译完成后,驱动中缺少syslink.ko,会导致系统的一些驱动无法正常使用,因此还要根据《syslink使用文档》编译和安装syslink.ko驱动,然后将syslink步骤生成的dsp目录复制到SD卡开发板文件系统\"/rootfs/lib/modules/2.6.37/kernel/drivers\"目录路径。
注意:如需生成制卡工具里面的压缩包可以把modules安装到ubuntu其他目录而非sd卡rootfs,将syslink.ko添加进去,然后再进入安装目录打包成压缩包即可。
2 自启服务说明(针对系统启动失败)
用户自启服务有以下列表
图 12
其中S01load-hd-firmware.sh:加载HDVPSS固件,需要内核模块支持,如果没有系统启动时会停在下图位置,无法正常进入系统。
8/9
图 13
问题:使用自己编译的内核镜像不能启动,原因为以上所述。 解决方法:
1.可以把启动卡放到ubuntu的pc机上
图 14
2.进入rootfs目录: Host#
sudo rm /media/tl/rootfs/etc/rc5.d/S01load-hd-firmware.sh //用户目录
删除自启动服务。 3.重新启动开发板系统。
9/9
因篇幅问题不能全部显示,请点此查看更多更全内容