本次移植主要是移植最新内核Linux4.1.6到TQ2440开发板
开发板:TQ2440
内核:Linux4.1.6
目的:在开发板上实现内核的启动,并挂上nfs根文件系统
1、 下载最新内核linux-4.1.6.tar.xz https://www.kernel.org/
2、 直接拖内核源码到虚拟机中的一个目录
3、 解压 :tar axvf linux-4.1.6.tar.xz 并切换到内核源码目录 cd linux-4.1.6/
4、 修改makefile文件: gedit Makefile
5、 修改机器码,用于启动需要,根据自己uboot的机器码设定,我的是168
a)
b) gedit arch/arm/tools/mach-types
c)
6、 设置DM9000的一些参数
a)
#include <linux/dm9000.h>
b)/* DM9000 */
static struct resource s3c_dm9k_resource[] = {
[0] = {
.start = S3C2410_CS4,
.end = S3C2410_CS4 + 3,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = S3C2410_CS4 + 4,
.end = S3C2410_CS4 + 4 + 3,
.flags = IORESOURCE_MEM,
},
[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7,
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
}
};
static struct dm9000_plat_data s3c_dm9k_platdata = {
.flags = DM9000_PLATF_16BITONLY,
};
struct platform_device s3c_device_dm9000 = {
.name = "dm9000",
.id = 0,
.num_resources = ARRAY_SIZE(s3c_dm9k_resource),
.resource = s3c_dm9k_resource,
.dev = {
.platform_data = &s3c_dm9k_platdata,
}
};
C)
7、 修改时钟
8、 设置初始化相关的
9、 nand flash 分区 gedit arch/arm/mach-s3c24xx/common-smdk.c
10、 给内核指定启动参数,不知道为啥,好像uboot 不能自动跟内核传递参数样
Make menuconfig -> boot option->在第六行输入 :noinitrd mem=64M console=ttySAC0,115200 init=/linuxrc root=/dev/nfs rw nfsroot=172.16.123.57:/opt/myfs ip=172.16.123.238 换上各自的ip 和文件系统目录
11、 make 编译
12、启动成功,但是只实现了基本功能,各项驱动的移植,待续