iMX25 Linux内核修改详细步骤与根文件系统的使用

    前一阵子,一直在做有关Linux内核移植方面的工作。使用的是Linux-2.6.28的源码包,配合飞思卡尔官方提供的补丁。通过移植工作,最终完成了任务。但是由于硬件条件所限,还有官方提供的补丁打上也有错误存在,所以现将针对内核源码的修改步骤详细的写出,与大家分享。

1.linux/arch/arm/mach-mx25/Makefile.boot 所有的地址都改成9开头的。

2.linux/arch/arm/plat-mxc/include/mach/mx25.h 中的SDRAM基地址 改为CSD_1的。

3.linux/drivers/serial/mxc_uart_early.c中的mxcuart_console_write_chev 注释一部分。

再修改while循环中的寄存器为UTS

修改部分:

#define UTS_TXEMPTY (1<<6)    //增加的部分

static void __init mxcuart_console_write_char(struct uart_port *port, int ch)

{

unsigned int status;

//do {

// status = readl(port->membase + MXC_UARTUSR1);

//} while ((status & MXC_UARTUSR1_TRDY) == 0);

do {                                                                                 //增加的部分

status = readl(port->membase + MXC_UARTUTS);         //增加的部分

} while ((status & UTS_TXEMPTY) == 0);                        //增加的部分

writel(ch, port->membase + MXC_UARTUTXD);

}

4.linux/arch/arm/plat-mxc/include/mach/memory.h的38行 PHYS_OFFSET 改为0×90000000。

5.注释用到的expo

在文件linux-2.6.28/arch/arm/mach-mx25/mx25_3stack_cpld.c 中,注释最后一句话。因为在加上此模块后,内核将无法正常启动,会卡死在这个模块的程序中。

 

这样修改之后,重新编译内核,配合之前的uboot,就可以在目标板上成功启动内核了。但是启动后,会停在kernel panic处,这是提示要挂在根文件系统才行。

 

根文件系统的使用:

首先,要编译好跟文件系统,这个资料很多。

我使用的是根文件系统名字为ramfs。

image

其次,我是将根文件系统直接编译进内核的,直接放在目标的ram中运行了,这样操作比较简单快捷。

在内核的源文件根目录下,进行配置,即:make menuconfig

在General Setup中,选择Initied RAM file system and RAM disk (initramfs/initrd) support,

在下面的Initramfs Source file(s)中,写入根文件系统所在的绝对路径,这样一来,就可以把根文件系统编译入内核了。

image

这样一,经过重新编译,再加载新内核,就会在目标平台上启动内核并进入文件系统了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值