内核移植笔记----FS4112学习板

本文提供了一款FS4412学习板的内核移植步骤,从下载内核源码到配置网络驱动,再到解决根文件系统挂载问题,详细记录了整个过程。适用于初学者及需要进行类似工作的嵌入式开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人学习的是华清远见的一款FS4412学习板,学到内核移植,就把内核移植的学习笔记贴上来,跟大家学习交流交流。
在这里插入图片描述
具体步骤如下:
1,linux官网下载好linux-4.14.123.tar.gz (最好提前下载,下载速度超级慢)
https://www.kernel.org/

2,解压:

linux@linux:~/mykernel$ tar -xvf linux-4.14.123.tar.xz

3,进入linux-4.14.123目录:
不修改Makefile 直接执行 : make ARCH=arm exynos_defconfig 将exynos_defconfig配置文件导入
注:采用Exynos4412芯片,即加载exynos_defconfig配置

linux@linux:~/mykernel/linux-4.14.123$ make ARCH=arm exynos_defconfig

4,图形界面配置: make ARCH=arm menuconfig

linux@linux:~/mykernel/linux-4.14.123$ make ARCH=arm menuconfig

配置:
System Type —>
[*] Samsung EXYNOS —>在这里插入图片描述
5,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 编译将会生成zImage 内核映像压缩文件

linux@linux:~/mykernel/linux-4.14.123$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

6,进入目录 linux-4.14.123/arch/arm/boot 执行命令将zImage制作成 uImage

linux@linux:~/mykernel/linux-4.14.123/arch/arm/boot$ mkimage -A arm -O linux -T kernel -C none -a 0x41000000 -e 0x41000040 -n "aaa" -d zImage uImage

详细指定内核地址的方式可查看 :https://blog.youkuaiyun.com/qq_21792169/article/details/50166557

7,使用 linux-4.14.123/arch/arm/boot/uImage 和linux-4.14.123/arch/arm/boot/dts/exynos4412-origen.dtb
至此没有异常的话可以正常启动 linux,但是挂载不了根文件系统,因为没有配置网卡驱动
8,vi arch/arm/boot/dts/exynos4412-oringen.db,在 regulators前添加下面代码

linux@linux:~/mykernel/linux-4.14.123$ vi drivers/clk/clk.c

添加设备树节点

srom-cs1@5000000 {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x5000000 0x1000000>;       //对应芯片手册 3 Memory Map 的0x0500_0000  和 16 MB 
		ranges;

		ethernet@5000000 {
			compatible = "davicom,dm9000";     //内核通过该名字来匹配驱动
			reg = <0x5000000 0x2 0x5000004 0x2>;  //寄存器地址和数据宽度
			interrupt-parent = <&gpx0>;//继承于 中断控制器gpx0
			interrupts = <6 4>; //对应中断源 DM9000_IRQ -> XEINT6 。4对应 active high level-sensitive
			davicom,no-eeprom;
			mac-address = [00 0a 2d a6 55 a2];
		};
	};

在这里插入图片描述
9,驱动选配

linux@linux:~/mykernel/linux-4.14.123$ make ARCH=arm menuconfig

make ARCH=armmenuconfig
配置网络协议支持TCP / IP
[ * ]Networking support —>
Networking options —>
< * > Packet socket
< * >Unix domain sockets
[ * ] TCP/IP networking
[ * ] IP: kernel level autoconfiguration

在这里插入图片描述
配置dm900支持的网卡驱动:
Device Drivers —>
[ * ] Network device support —>
[ * ] Ethernet driver support (NEW) —>
<*> DM9000 support

在这里插入图片描述
配置支持的NSF服务:
File systems —>
[ * ] Network File Systems (NEW) —>
< * > NFS client support
[ * ] NFS client support for NFS version 2
[ * ] NFS client support for NFS version 3
[ * ] NFS client support for the NFSv3 ACL protocol extension
[ * ] Root file system on NFS
在这里插入图片描述
10,修改文件driver/clk/clk.c static bool clk_ignore_unused;改为static bool clk_ignore_unused = true; 具体原因不清楚,必须要配置。

linux@linux:~/mykernel/linux-4.14.123$ vi drivers/clk/clk.c

在这里插入图片描述

11,再次编译内核,执行步骤5,6,然后将内核,设备树拷贝到/tftboot下,可完成启动并挂载根文件系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值