Uncompressing Linux___ done, booting the kernel_tekkamanninja-ChinaUnix博客
今天用主线Linux内核移植到MINI6410,主线内核2.6.37.1基本已经支持了MINI6410的板子,所以移植到能够启动起来的阶段很简单,但是在移植的时候还是出现了一个比较常见的问题:
- MINI6410 # bootm 0x50008000
- ## Booting kernel from Legacy Image at 50008000 ...
- Image Name: Linux-2.6.37.1
- Image Type: ARM Linux Kernel Image (uncompressed)
- Data Size: 3800644 Bytes = 3.6 MiB
- Load Address: 50008000
- Entry Point: 50008040
- Verifying Checksum ... OK
- XIP Kernel Image ... OK
- OK
- Starting kernel ...
- Uncompressing Linux... done, booting the kernel.
- 停住不动了~~~~
1、machine type 不匹配
在内核自解压完成以后内核会首先会进入 bl __lookup_machine_type函数(在arch/arm/kernel/head.S中),检查machine_type是否匹配,如果不匹配会跳入__error_a函数(在arch/arm/kernel/head-common.S中),导致启动失败。
例如arch/arm/mach-s3c64xx/mach-mini6410.c 查看下面这个结构体:
- MACHINE_START(MINI6410, "MINI6410")
- /* Maintainer: Darius Augulis <augulis.darius@gmail.com> */
- .boot_params = S3C64XX_PA_SDRAM + 0x100,
- .init_irq = s3c6410_init_irq,
- .map_io = mini6410_map_io,
- .init_machine = mini6410_machine_init,
- .timer = &s3c24xx_timer,
- MACHINE_END
这个宏的定义在arch/arm/include/asm/mach/arch.h
- /*
- * Set of macros to define architecture features. This is built into
- * a table by the linker.
- */
- #define MACHINE_START(_type,_name) \
- static const struct machine_desc __mach_desc_##_type \
- __used \
- __attribute__((__section__(".arch.info.init"))) = { \
- .nr = MACH_TYPE_##_type, \
- .name = _name,
- #define MACHINE_END \
- };
这个宏定义扩展之后的machine type 就成了 MACHINE_TYPE_MIN6410。
MACHINE_TYPE_MIN6410这个宏定义在include/generated/mach-types.h
- #define MACH_TYPE_MINI6410 2520
machine type在u-boot的配置在board/samsung/mini6410/mini6410.c
- /*
- * Miscellaneous platform dependent initialisations
- */
- int board_init(void)
- {
- s3c64xx_gpio * const gpio = s3c64xx_get_base_gpio();
- .....
- gd->bd->bi_arch_number = MACH_TYPE;
- gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
- return 0;
- }
这个宏的定义在:include/configs/mini6410.h
- /*
- * Architecture magic and machine type
- */
- #define MACH_TYPE 2520
只要这两个数对上就可以了。
2、串口驱动没有编译入内核
在弄MINI6410的时候我就犯了这个错误,因为还没有MINI6410的默认配置文件,所有这个要自己选上的。位置在Device Drivers->Character devices->Serial drivers中
- <*> Samsung SoC serial support
- [*] Support for console on Samsung SoC serial port
- <*> Samsung S3C6400/S3C6410/S5P6440/S5P6450/S5PC100 Serial port support
3、内核启动参数设置错误
内核的启动参数的错误也可以造成同样的错误,但是这种错误可能有几种:
(1)控制台串口配置字符串不匹配
比如有一个配置是:
- noinitrd root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M
关键是在console=ttySAC0,115200上,如果ttySAC0弄错了,或者波特率不对就会出问题。
不同的CPU的console有可能不一样,比如:
有的可能是ttyS0,
三星的CPU一般是ttySAC0,
早期TI ARM 处理器的一般是ttyS2,
后来TI Omap系列的高版本内核变成了ttyO2。把“S”变成了“ O”,代表Omap。自恋阿~~~~
Uncompressing Linux___ done, booting the kernel_tekkamanninja-ChinaUnix博客的更多相关文章
- MYSQL 博客
DavidYang的博客 - CSDN.NET DimitriK's (dim) Weblog Xaprb · Stay Curious! 飞鸿无痕的博客 - ChinaUnix博客 何登成的技术博客 ...
- 我的Android进阶之旅------>经典的大牛博客推荐(排名不分先后)!!
本文来自:http://blog.csdn.net/ouyang_peng/article/details/11358405 今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下 谦虚的天下 柳志超 ...
- MYSQL 名人博客
: DavidYang的博客 - CSDN.NET DimitriK's (dim) Weblog Xaprb · Stay Curious! 飞鸿无痕的博客 - ChinaUnix博客 何登成的技术 ...
- 原博客地址http://blog.chinaunix.net/uid/20656672.html弃用
原博客地址http://blog.chinaunix.net/uid/20656672.html弃用
- 原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(10年前数百篇oracle/teradata性能优化、故障处理案例)
原博客地址http://blog.chinaunix.net/uid/20656672.html不再维护(数百篇oracle/teradata性能优化.故障处理原创文章) 858871 top 500 ...
- 以前写的关于Linux C/C++的博客
以前在CU写的关于Linux C/C++的博客 http://blog.chinaunix.net/uid/25909722/cid-24318-list-1.html
- MetaWeblog 同时管理51cto,csdn,sina,163,oschina,cnblogs等博客
我们技术人一般都会有自己的一个博客,用于记录一些技术笔记,也期望自己的笔记文章可以让更多人知道. 如何让更多人知道自己的博客? 搜索引擎收录,用户通过关键词搜索可能会进入 内容运营,但是一般技术人为了 ...
- [转载]关于CSDN, cnblog, iteye和51cto四个博客网站的比较与分析
CSDN:http://blog.csdn.net/ cnblog: http://www.cnblogs.com/ iteye: http://www.iteye.com/blogs/ 51cto: ...
- Qt学习博客推荐
附录C Qt资源 C.1 Qt 官方资源 全 球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程序开发进度.这些开发人员,无论是想开发单平台软件. ...
随机推荐
- ADO.Net知识总结
(一)基础知识 ADO.NET: .NET中用来向数据库提交执行SQL语句的一堆类 本机访问直接"Windows验证",但是一般项目中都是单独的数据库服务器,程序在另外一台电脑上连 ...
- O-C相关-07-@property关键字简介与使用
基本概念:在O-C中,创建完类之后还需要给一个类添加属性和方法,之前说过的set和get方法比较繁琐,因此引入了@property 这个编译器指令.@property 是一个编译器指令.所谓的编译器指 ...
- .Net Framework 开发Http协议
一.Http的基本原理 1.HTTP协议的运作方式 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTTP协议是基于请求/响应范式的.一个客户机与服务器建立连接后,发送一个请求 ...
- 初步认识 Web Service
Web Service初步认识 Web Service:不是框架,不是一种技术,而是一种跨平台,跨语言的规范. 作用:异构平台之间的交互,解决了不同平台,不同语言所编写的应用之间的相互调用.(远 ...
- 【制作镜像Win*】文件准备
mkdir /var/image-createcd /var/image-create/ 在物理机上: wget http://10.254.3.75/images/libvirt/libvirt.x ...
- linux指令大全(完整篇)(转)
http://blog.chinaunix.net/uid-9681606-id-1998590.html linux指令大全(完整篇)(转) 2009-03-17 01:21:46 分类: ...
- Google Web Designer 测试
这东东完全就是一个flash啊,简单测试,感觉就是个做HTML5动画的..不过暂时是beta版的, 官方安装版的半天打不开,这边有个绿色版的,需要的童鞋可以这里下载:百度网盘
- SVG
目前SVG在国内的使用并不常见,并且关于svg的相关js库也不多,这里指出两款svg的库Snap.svg和svg.js,Snap.svg张鑫旭的博客上有关于他的使用APi http://www.zha ...
- mysqli 取出数据库中某表的表头和内容
需求如题 取出数据库中某表的表头和内容,并显示该表的行数和列数 <?php //显示表内容的函数 function showTable($tableName){ //连接数据库 $mysqli= ...
- yii 使用renderPartial调用另外一个控制器的视图
以下由我们在信易网络公司开发项目的时候终结出的一些经验 我们可以使用renderPartial访问存储在不同控制器的视图文件夹中的部分视图文件. 在Yii1.1.3中,我们使用双斜线“//”,程序就会 ...