您的当前位置:首页正文

DM8148编译Linux内核方法

2023-02-01 来源:星星旅游


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

因篇幅问题不能全部显示,请点此查看更多更全内容