0
点赞
收藏
分享

微信扫一扫

Exynos4412 Linux Kernel移植过程记录(一)

进击的铁雾 2022-01-15 阅读 80

Exynos4412 Linux Kernel移植过程记录

项目说明
操作系统Ubuntu 18.04
Linux内核版本stable: 5.15.14
Image NameLinux-5.15.14-FriendlyARM
硬件CBT4412(类似:tiny4412)
U-Bootu-boot-2022.01-rc4
gccarm-none-linux-gnueabihf-gcc 10.3.1 20210621

一、Linux Kernel编译的准备工作

1、Linux Kernel下载与解压

下载地址:https://www.kernel.org/
目前,最新版本是5.16。我下载的是linux-5.15.14.tar.xz。
解压到~目录下。

tar vxf linux-5.15.14.tar.xz

2、修改内核顶层目录下的Makefile

gedit Makefile

修改:

ARCH               ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

为:

ARCH               ?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabihf-

3、导入默认配置

make exynos_defconfig

4、配置内核

make menuconfig

配置System Type —>
Samsung Exynos —>Samsung Exynos 4412

5、解决error: gmp.h No such file or director问题

编译内核

make uImage

报错:error: gmp.h 没有这个文件或目录
通过360搜索,找到解决方案:

sudo apt-get install  libgmp3-dev

6、解决error: mpc.h: No such file or director

编译内核,报错fatal error: mpc.h: No such file or directory。解决方法:

sudo apt-get install libmpc-dev

7、配置tftp服务器,

配置tftp服务器具体步骤参见另一篇博文ubuntu18.04上配置tftp服务器1

把arch/arm/boot目录下的uImage复制到/CBT-SuperIOT/tftpboot/。

cp arch/arm/boot/uImage /CBT-SuperIOT/tftpboot/

8、烧写内核

安装串口助手CuteCom。

sudo apt-get install cutecom

打开/dev/ttyUSB0。如果遇到无权限打开串口的情况,通过chmod指令修改/dev目录下的ttyS0或ttyUSB0等串口的读写权限即可。

sudo chmod 666 ttyUSB0

在CuteCom终端中,输入指令

tftp 40008000 uImage;bootm 40008000;

在CuteCom终端中显示。

[20:14:46:125] ## Booting kernel from Legacy Image at 40008000 ...␍␊
[20:14:46:145]    Image Name:   Linux-5.15.14-FriendlyARM␍␊
[20:14:46:145]    Image Type:   ARM Linux Kernel Image (uncompressed)␍␊
[20:14:46:145]    Data Size:    6795088 Bytes = 6.5 MiB␍␊
[20:14:46:145]    Load Address: 40008000␍␊
[20:14:46:161]    Entry Point:  40008000␍␊
[20:14:46:161]    Verifying Checksum ... OK␍␊
[20:14:47:026]    Loading Kernel Image␍␊
[20:14:47:128] FDT and ATAGS support not compiled in␍␊

以上是开发板通过串口打印出的信息,在“OK”之前的内容是64Bytes打印出的内容,之后的是Linux内核自解压程序输出的内容。在打印出“Loading Kernel Image”后,内核遇到错误停止运行。而接下来,即在内核移植之前,有必要去了解Linux内核源代码构造框架——Kbuild机制,这是进行内核代码增删改的基础。

内核make流程

有必要认识2个命令和3个文件:make %config命令、make menuconfig 命令、.config文件、Makefile文件、Kconfig文件。内核的make编译流程就是由它们组成的,它们也是组成Kbuild机制的成员。我们需要像学习shell命令一样,明白它们如何使用,以便在制作完整的Linux内核过程中不会有障碍,
下图是内核编译的流程及其各环节关系:
在这里插入图片描述


  1. ubuntu18.04上配置tftp服务器解决Transfer timed out ↩︎

举报

相关推荐

0 条评论