linux移植问题汇总(一)
linux移植问题汇总(一)
在此记录移植linux过程中出现的问题以及解决方法。
项目GitHub地址
linux3.0.80:https://github.com/numbqq/linux-3.0.80_for_tiny210
linux3.3.5:https://github.com/numbqq/linux-3.3.5_for_tiny210
uboot2014.04:https://github.com/numbqq/uboot201404_for_tiny210
1、移植linux kernel碰到的问题
①、kernel配置好后启动时发现卡在“Starting kernel ...”,最后发现是linux的bug,由于u-boot2014.04串口配置默认开启FIFO,linux内核在早期串口打印时也用到了FIFO,但是却有两个变量fifo_mask、fifo_max没被赋值,
导致死在了一个while循环里面(arch/arm/plat-samsung/include/plat/uncompress.h -> static void putc(int ch))。
解决方法:
一: 修改linux内核,给未初始化的变量赋值:arch/arm/mach-s5pv210/include/mach/uncompress.h arch_detect_cpu()
static void arch_detect_cpu(void)
{
/* we do not need to do any cpu detection here at the moment. */
fifo_mask = S5PV210_UFSTAT_TXMASK; //add by Nick
fifo_max = 255 << S5PV210_UFSTAT_TXSHIFT; //add by Nick.
}
二: 修改uboot,关闭串口FIFO。
最终我采用关闭uboot串口FIFO的方法。参考博文:http://www.arm9home.net/read.php?tid=86329
②、linux3.3.5增加tiny210板级文件支持是碰到的问题,很奇怪我仅仅是重命名了一下函数的名字,就出现编译错误,能确定命名是没有错误的。错误如下:
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
CC [M] drivers/scsi/scsi_wait_scan.o
KSYM .tmp_kallsyms1.S
AS .tmp_kallsyms1.o
LD .tmp_vmlinux2
KSYM .tmp_kallsyms2.S
AS .tmp_kallsyms2.o
LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
Inconsistent kallsyms data
This is a bug - please report about it
Try make KALLSYMS_EXTRA_PASS=1 as a workaround
make: *** [vmlinux] Error 1
用下面提示的做法make KALLSYMS_EXTRA_PASS=1编译可以通过,生成的镜像文件也可以正常运行,但不知道为什么会报这个错误,仅仅只是重命名了函数名,很奇怪,貌似是bug,为了避免我更换了一个版本linux3.0.80,
用这个版本没有任何问题,以后也先用这个版本移植。
2、移植根文件系统碰到的问题
①、制作根文件系统参考http://blog.csdn.net/xie0812/article/details/11366137,通过nfs挂载文件系统,没什么大问题。
②、由于linux3.0.80不支持yaffs2,所以要自己下载打补丁,yaffs2下载地址git clone git://www.aleph1.co.uk/yaffs2,下载完后打补丁编译发现有很多错误,
最终参考博文http://blog.csdn.net/flfihpv259/article/details/52102050 解决。
③、配置内核支持yaffs2,同时还要使uboot支持yaffs文件系统烧写命令,开始由于不知道烧写yaffs文件系统要用nand.yaffs命令,导致一直报错。配置内核时要关闭nand flash HWECC,使用yaffs自己的ECC校验。
linux移植问题汇总(一)的更多相关文章
- [转帖]最佳 Linux 发行版汇总
最佳 Linux 发行版汇总 https://cloud.tencent.com/developer/article/1505186 以后说不定用的到. Linux入门 Ubuntu Ubuntu是一 ...
- Linux面试题汇总答案
转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...
- 73条日常Linux shell命令汇总,总有一条你需要!
转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...
- linux编程基础汇总贴
linux编程基础汇总贴http://newzol.cn/forum.php?mod=viewthread&tid=67&fromuid=3(出处: newzol) 1.管道 http ...
- Linux移植之tag参数列表解析过程分析
在Linux移植之内核启动过程start_kernel函数简析中已经指出了start_kernel函数的调用层次,这篇主要是对具体的tag参数列表进行解析. 1.内存参数ATAG_MEM参数解析 2. ...
- 【Linux】Linux 常用命令汇总
查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ...
- Linux移植之内核启动过程start_kernel函数简析
在Linux移植之内核启动过程引导阶段分析中从arch/arm/kernel/head.S开始分析,最后分析到课start_kernel这个C函数,下面就简单分析下这个函数,因为涉及到Linux的内容 ...
- Linux移植之内核启动过程引导阶段分析
在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...
- Linux移植之子目录下的built-in.o生成过程分析
在Linux移植之make uImage编译过程分析中罗列出了最后链接生成vmlinux的过程.可以看到在每个子目录下都有一个built-in.o文件.对于此产生了疑问built-in.o文件是根据什 ...
随机推荐
- 关于 CommonJS AMD CMD UMD 规范的差异总结
一.CommonJS 主要是用于服务器端的规范,比如目前的nodeJS. 根据CommonJS规范,一个单独的文件就是一个模块.每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函 ...
- 迭代接口的IEnumerator
我们经常在工作中用到对List,Dictionary对象的Foreach遍历,取出每一项. 其实这个接口很简单,只有一个属性2个方法. [ComVisible(true), Guid("49 ...
- SQL 批量字符串替换
--在SQL SERVER中批量替换字符串的方法 update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容') up ...
- 一个Linq表达式的扩展函数帮助类
/// <summary> /// Linq表达式的扩展函数 /// </summary> public static class ExpressionExtensions { ...
- Python入门笔记(25):Python面向对象(2)
一.类 类就是一个数据结构,封装了数据和操作. 类的声明与函数的声明十分类似: class newClass(object): """class documentatio ...
- 【Bootstrap基础学习】00 序
其实这样的东西很多了,但是我就是要写. 我写这种鬼东西只是为了监督自己,如果能顺便帮一下别人就更好了. 这个系列的基础学习,不会去看实体书,主要是去看网上的资料和官网. Bootstrap就是对jQu ...
- 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性
[源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介 ...
- php学习笔记:利用gd库生成图片,并实现随机验证码
说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...
- galera cluster DDL节点间状态不一致的问题
近期某个系统中的galera cluseter环境发生A DDL操作后,B节点未同步的情况,同时B节点的errorlog中有如下警告信息: 2016-07-23 17:31:32 18920 [War ...
- Play常用代码片段 http://www.anool.net/?p=625
持续更新中: (1)按照降序查询: List<Entity> entities= Entity.find("order by id desc").fetch(2); ...