Linux内核移植 | 内核移植

本文详述在华清远见FS4412开发板上移植Linux内核至Cortex-A9处理器的过程,包括环境搭建、内核编译、设备树修改及网卡驱动配置等关键步骤。

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

硬件环境

  • 开发板 FS4412(华清远见的板子,基于Cortex-A9的处理器)
  • PC机 Ubuntu系统 (Linux大家庭中一个发行版)
  • 网线 (速度较快,通过网络xieyi协议传输文)
  • 串口线(与开发板进行命令交互)

前提

  • 使用已经移植好的U-BOOT,在此基础上进行内核的移植
  • 保证开发板与虚拟机网络联通状态,虚拟机提供tftp,nfs服务
  • 在虚拟机中集成了指定的交叉编译工具,并添加到PATH变量中

首先将在Ubuntu环境中,添加交叉编译工具到PATH变量,永久有效。

root@linux:~/linux-3.14-fs4412# vim /etc/bash.bashrc 
export PATH=/home/linux/soft/gcc-4.6.4/bin:$PATH

/home/linux/soft/ 是工具链的路径,添加到PATH的头部;写入/etc/bash.bashrc 中保证重启机器后变量仍然有效。

内核与设备树的移植

1.下载最新版本的内核 到Ubuntu

The Linux Kernel Archives

2.解压内核

tar -xvf  linux-4.19.1.tar.xz

3.进入目录,在Makefile中指定交叉编译工具

root@linux:~/linux-3.14-fs4412# vim Makefile
ARCH            ?= arm
CROSS_COMPILE   ?= arm-none-linux-gnueabi-

ARCH指定默认索引路径,CROSS_COMPILE 指定交叉编译工具的前缀

4.导入三星公司对该芯片的配置文件

make exynos_defconfig     (arch/arm/configs/ 目录下,arch/arm/configs/exynos_defconfig)

 ps:如果提示缺少库,使用apt-get install下载即可。也可以将错误信息在百度查询。

5.编译内核,生成压缩的内核镜像文件uImage

root@linux:~/linux-4.19.1# make uImage LOADADDR=0x40008000

或者

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-       //编译将会生成  zImage

cd linux-4.19.1/arch/arm/boot                         //进入目录

执行命令将 zImage 制作成 uImage
mkimage -A arm -O linux -T kernel -C none -a 0x41000000 -e 0x41000040 -n "aaa" -d zImage uImage

6.编译设备树

root@linux:~/linux-4.19.1# make dtbs

7.将内核与设备树文件,放在 /tftpboot/(tftp服务根目录)下

root@linux:~/linux-4.19.1/arch/arm/boot # cp uImage /tftpboot/
root@linux:~/linux-4.19.1/arch/arm/boot # cp dts/exynos4412-origen.dtb /tftpboot/


 

U-Boot启动命令和参数

通过串口配置U-Boot的启动参数,让U-Boot通过tftp服务获取uImage和 exynos4412-origen.dtb

配置如下

至此没有异常的话可以正常启动 linux, 但是挂载不了根文件系统,因为没有配置网卡驱动。

配置网卡驱动

1.配置内核,menuconfig 驱动选配

make ARCH=arm menuconfig

[*] Networking support  --->

Networking options  --->

        <*> Packet socket

        <*>Unix domain sockets

        [*] TCP/IP networking

        [*]   IP: kernel level autoconfiguration

Device Drivers  --->

[*] Network device support  --->

        [*]   Ethernet driver support (NEW)  --->

2.配置设备树,添加设备树节点

root@linux:~/linux-4.19.1# vim arch/arm/boot/dts/exynos4412-origen.dts


srom-cs1@5000000 {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x5000000 0x1000000>;
		ranges;

		ethernet@5000000 {
			compatible = "davicom,dm9000";
			reg = <0x5000000 0x2 0x5000004 0x2>;
			interrupt-parent = <&gpx0>;
			interrupts = <6 4>;
			davicom,no-eeprom;
			mac-address = [00 0a 2d a6 55 a2];
		};
	};

3.重新编译内核和设备树,并覆盖到tftp跟目录下 

这样上电就能成功加载内核,挂载nfs文件系统了。

完毕。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hinzer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值