kernel移植

实验环境】
1、ubuntu 14.04
2、linux-3.14.tar.xz
3、FS_4412平台(EXYNOS 4412)
4、交叉编译器 arm-none-linux-gnueabi-gcc

开始移植:
1、下载内核
linux 内核 下载地址 https://www.kernel.org/
linux 各个版本下载地址 https://www.kernel.org/pub/linux/kernel/
我们下载的是linux-3.14.tar.xz
2、• 解压内核
将linux-3.14.tar.xz拷贝到/home/linux下并解压
$tar xvf linux-3.14.tar.xz
$ cd linux-3.14
•修改内核顶层目录下的Makefile
$ vim Makefile
修改:
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
为:
ARCH ?= arm
CROSS_COMPILE ?= arm-none-linux-gnueabi-

•导入默认配置
$ make exynos_defconfig
•配置内核
$ make menuconfig

System Type  --->
	(2) S3C UART to use for low-level messages

该命令执行时会弹出一个菜单,我们可以对内核进行详细的配置。这里我们先查看一下,内核都提供了那些功能!
•编译内核
$ make uImage
通过上述操作我们能够在arch/arm/boot目录下生成一个uImage文件,这就是经过压缩的内核镜像。
如果编译过程中提示缺少mkimage工具,需将第二天编译的uboot源码中的tools/mkimage拷贝到ubuntu的/usr/bin目录下
$ cp u-boot-2013.01/tools/mkimage /usr/bin
修改设备树文件
生成设备树文件,以参考板origen的设备数文件为参考。
$ cp arch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts

添加新文件需修改Makefile才能编译
$ vim arch/arm/boot/dts/Makefile

exynos4412-origen.dtb
下添加如下内容
exynos4412-fs4412.dtb
•编译设备树文件
$ make dtbs
•拷贝内核和设备树文件到/tftpboot目录下
$ cp arm/arm/boot/uImage /tftpboot
$ cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpboot/
•修改uboot启动参数
重启板子在系统倒计时是按任意键结束启动,输入如下内容修改uboot环境变量:
#setenv serverip 192.168.1.50
#setenv ipaddr 192.168.1.100
#setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 – 42000000
#setenv bootargs root=/dev/nfs nfsroot=192.168.1.50:/source/rootfs rw console=ttySAC2,115200init=/linuxrc ip=192.168.1.100
#save
注意:192.168.1.50 对应Ubuntu的ip
192.168.1.100 对应板子的ip
这两个ip应该根据自己的实际情况适当修改
重启开发板查看现象
3、网卡驱动的移植 FS4412使用的是DM9000网卡
•设备树文件修改:
$ vim arch/arm/boot/dts/exynos4412-fs4412.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];
	};
};

•修改文件driver/clk/clk.c
修改
static bool clk_ignore_unused;

static bool clk_ignore_unused = true;

•配置内核:
make 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) —>
<
> DM9000 support
File systems —>
[] Network File Systems (NEW) —>
<
> NFS client support
[] NFS client support for NFS version 3
[
] NFS client support for the NFSv3 ACL protocol extension
[*] Root file system on NFS

•编译内核和设备树
$ make uImage
$ make dtbs
•测试:
拷贝内核和设备树文件到/tftpboot目录下
$ cp arch/arm/boot/uImage /tftpboot
$ cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpboot/
启动开发板,修改内核启动参数,通过NFS方式挂载根文件系统

在这里插入图片描述

内核启动,准备挂载根文件系统,下一篇准备SD卡的移植

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值