AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17
AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17
手上板子原来自带的是2.4.19的内核, 打算移植新的2.6的内核,从网上下了2.6.17的kernel,下载地址为:http://www.kernel.org/pub/linux/kernel/v2.6/
修改PATH环境变量或者Makefile文件的CROSS_COMPILE宏,将前面制作好的交叉编译工具链路径添加进来,同时需要下载针对AT91rm9200的patch包, 2.6.17-at91.patch.gz, 下载地址是http://maxim.org.za/AT91RM9200/2.6/
$ tar zxvf linux-2.6.17.tar.gz
$ cp 2.6.17-at91.patch.gz linux-2.6.17
$ cd linux-2.6.17
$ zcat ./2.6.17-at91.patch.gz | patch -p1
有点要注意的是,如果从windows下下载该patch,有三四百K大小,执行zcat时会报not gzip format的错误,而在linux环境里下载则为79.1K,且命令执行没有问题,不知道下同一个文件在两种环境下怎么会有区别,协议有区别?
然后一个很必要的修改是串口的驱动,打开文件: /linux-2.6.17/arch/arm/mach-at91rm9200/board-dk.c, 作如下改动:
/*
* Serial port configuration.
* 0 .. 3 = USART0 .. USART3
* 4 = DBGU
*/
static struct at91_uart_config __initdata dk_uart_config = {
.console_tty = 0, /* ttyS0 */
.nr_tty = 5,
.tty_map = { 4, 1, 0, 2, 3 } /* ttyS0, ..., ttyS4 */
};
否则,新内核没有ttyS4设备,而我们的serial console正是基于ttyS4的,所以ramdisk解压后由于找不着ttyS4而死掉。
然后运行
$ make mrproper
$ make distclean
$ make at91rm9200dk_defconfig
$ make menuconfig
修改其中的Boot Options:
Default Kernel Command String: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我修改的为:mem=32M console=ttyS0,115200 initrd=0x21000000,0x181341 root=/dev/ram0 rw
0x21000000是ram文件系统的起始地址,0x181341是文件系统大小
at91rm9200dk_defconfig位于/linux-2.6.17/arch/arm/config/下,可以修改其默认配置
最后
$ make
# cp arch/arm/boot/zImage ...
在uboot的shell里
$ tftp 20008000 zImage
$ tftp 21000000 Ramdisk.gz
$ go 20008000
内核启动后会停在
wanted = 164392 limterd = 164384
无法启动文件系统,经过在网上多番搜索,可能的原因是kernel配置的ramdisk的大小不够
但是我的ramdisk只有1.5M,而内核配置默认的是8192,怎么会不够呢??改大到10240,果然可以加载ramdisk了
转载:http://blog.csdn.net/shevsten/archive/2007/07/16/1694003.aspx
转载于:https://www.cnblogs.com/fly-fish/archive/2011/03/10/1979470.html
AT91RM9200Linux移植笔记(三)-移植Linux kernel 2.6.17相关推荐
- Linux内核移植笔记 | 02 - 移植Linux 3.4.2 内核到JZ2440(修改内核中的mtd分区)
1. 问题 在上一节Linux系统启动之后,打印出的分区表如图: 和实际对nand flash的分区表不一致,实际上在uboot移植教程(08 - 移植uboot 2012.04到JZ2440(设置m ...
- U-Boot-2009-03移植笔记(移植准备)
因为工作需要,需要在S3C2440板子上移植U-boot和Linux,虽然关于S3c2440移植的文章比较多,但是毕竟全面的不多,而且都是别人的,这次自己动手,以此系列记录全过程. U-boot1.1 ...
- linux内核关闭igmp,Linux kernel IGMP多个安全漏洞
受影响系统: Linux kernel 2.6.9 Linux kernel 2.6.8 Linux kernel 2.6.7 Linux kernel 2.6.6 Linux kernel 2.6. ...
- 编写一个简单的linux kernel rootkit
一.前言 linux kernel rootkit跟普通的应用层rootkit个人感觉不大,个人感觉区别在于一个运行在用户空间中,一个运行在内核空间中:另一个则是编写时调用的API跟应用层rootki ...
- Linux Kernel 4.20 生命周期已结束,建议迁移 5.0
继 Linux Kernel 4.20 版本正式发布三个月, Linux Kernel 4.20.17 维护版本也于近日更新.Greg Kroah-Hartman 在邮件中写道:"这是 4. ...
- linux畸形文件夹,Linux Kernel畸形ULE报文处理远程拒绝服务漏洞
Linux Kernel是开放源码操作系统Linux所使用的内核. Linux的ULE(单向轻型封装RFC 4326)拆封代码存在一个漏洞,远程攻击者可能利用此漏洞对接收处理的服务器造成拒绝服务攻击. ...
- s5pv210 linux内核移植,S5PV210(TQ210)学习笔记——内核移植与文件系统构建之二
由于之前做过2440和6410,鉴于时间原因,这里暂时跨过其他模块的裸机驱动和uboot移植,直接进入内核移植及驱动开发方面的学习. 三 设置uboot启动参数 我的nfs根目录为/nfsroot,我 ...
- I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之kernel移植
前篇文章已经在tqimx6q上成功跑起了新版BSP的uboot,本文来配置下新版BSP的kernel,使kernel能在tqimx6q上正常启动. 准备工作 每次移植kernel的时候都会做的工作就是 ...
- 【ARM】一步一步移植Linux Kernel 2.6.13到板子
1环境搭建所需材料 2环境搭建所需材料之间的关系 3所使用的开发板 4译内核 1修改makefile 2拷贝配置文件 3编译得到zImage 4把zImage转成uImage 5开发板串口连接 6ub ...
最新文章
- 【数据竞赛】“达观杯”文本智能处理挑战赛2
- 【树状数组】【dfs】树
- 光端机的原理和使用范围
- Go语言实例系列【 获得url实例】
- bzoj 2761 平衡树
- python代码注释规范-Python编程规范之注释
- 交叉熵损失函数(Cross Entropy Error Function)与均方差损失函数(Mean Squared Error)
- 云信api_服务端API文档
- 使用SecureCRT连接虚拟机中Linux系统 和 虚拟机网络配置
- 计算机竞赛制作机器人,电脑制作活动机器人项目详细说明
- oracle修改表的owner,Oracle中改变表的Owner和tablespace
- Windows 微信多开
- Python --- Numpy 创建n维数组基本方法
- 微信公众号开发之(35)地图导航
- java丧尸危机全城爆发_伤尸危机-全城爆发BT版
- 月过春枝似带烟的情境里
- 雇佣兵(程序设计与算法(一))
- fread()和fwrite()函数分析
- 交付实施工程师是做什么的?
- python百科全书_维基百科中的数据科学:手把手教你用Python读懂全球最大百科全书...
热门文章
- python 用元类 type 实现对数据库的ORM 映射
- html中通过定位 实现下拉,JS+CSS相对定位实现的下拉菜单
- android文本复制自定义剪切板,android 剪切板-文本复制、粘贴
- CodeForces - 786C——二分+模拟?
- linux网络编程:使用多进程实现socket同时收发数据
- arm-linux-gcc静态编译和动态编译的区别
- 汇编语言的相对跳转和绝对跳转以及反汇编代码解析
- 什么是地址译码 理解二进制编码
- 从草根到百万年薪程序员的十年风雨之路,吊打面试官系列!
- java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing