alien75 发表于 2009-6-24 11:55:43

我用skyeye学习linux的笔记

平台环境:winxp+vmware 6.52+ubuntu 9.04+skyeye 1.2.6

一、交叉编译环境建立
操作系统环境:ubuntu 9.04, gcc-4.1.0, crosstool-0.43
交叉编译环境:gcc-3.4.5, glibc-2.3.6, linux-2.6.12, u-boot-1.2.0
问题:
1、建立交叉编译环境依赖库:build-essential,texinfo,gawk(不能为mawk,在编译glibc时出错),bison,flex,libgmp3-dev,libmpfr-dev,autoconf,libncurses5-dev
2、crosstool似乎停止了更新,高一点的版本不支持。需手工修改patch
见http://blog.chinaunix.net/u2/72383/showart_1076976.html
3、u-boot与交叉编译器版本及软浮点问题
http://fishrei.blog.163.com/blog/static/9274584520088110306553/
http://blog.csdn.net/micro_zhu/archive/2009/02/25/3935809.aspx
但是我在生成交叉编译器后,编译u-boot的时候修改相应CPU目录下的config.mk没出现这个问题。
4、报错:*** buffer overflow detected ***: arm-linux-ar terminated
将ubuntu 9.04自带的gcc-4.3.2替换成gcc-4.1.0。
见http://blog.csdn.net/java211/archive/2009/02/09/3869097.aspx
5、关于gcc-3.4.5-glibc-2.3.6.dat中LINUX_DIR和LINUX_SANITIZED_HEADER_DIR造成的问题
http://www.5itek.com/bbs/Show.asp?id=133&BoardID=20&TB=1

二、u-boot移植
环境:arm-linux-gcc-3.4.5, glibc-2.3.6, u-boot 1.2.0
问题:
1、关于u-boot.lds的修改
http://womking.bokee.com/5967668.html
http://bbs.tech.ccidnet.com/read.php?tid=656155
2、针对不同平台必须修改的部分:主要是与时钟频率外设等。我主要参考了“移动u-boot到阳初2410”这篇文章和论坛zbluecn的文章。
3、关于Norflash的移除(如果是模拟开发板无nor的情况)
http://blog.163.com/huangwei820410@126/blog/static/24070492200923085151246/
4、skyeye-1.2.8存在问题,u-boot启动不是大量"bus error"就是跑飞后显示大量乱码,改用skyeye-1.2.6(此问题困扰了一个星期,不停去找u-boot的问题)。大致看了一下skyeye的源码,发现指令的动态翻译执行是在一个ARMul_Emulate32的函数中,估计是这个的问题。有时间分析一下为什么skyeye-1.2.8会这样。
5、tftpd的建立:注意如果要使用虚拟网卡,必须以sudo来运行skyeye
见http://blog.mcuol.com/User/weishuangbo/Article/12301_1.htm
6、关于mknandflashdump
源代码有一个bug,另外每重新生成u-boot.bin就要执行一次重新生成nand.dump,否则在运行的时候会停住。
http://www.linuxfans.org/bbs/thread-184643-1-5.html
7、错误:NAND read: device 0 offset 0, size 131072 ... warning when REfalling,do nothing 0 bytes read: ERROR
解决:http://blog.csdn.net/zblue78/archive/2008/02/26/2121871.aspx

三、内核移植
参考文档:S3C2410的Linux UBOOT全线移植文档.pdf、移植2.6.22.2到博创2410-S开发板.pdf
环境:arm-linux-gcc-3.4.5, glibc-2.3.6, linux-2.6.12
1、错误:arch/arm/mm/alignment.c:116: error: read-only variable '__r2' used as 'asm' output
解决:交叉编译环境由4.1.0换成低一点的版本编译3.4.5
2、通过tftp加载zImage运行bootm,报Bad Magic Number错误。必须转换成uImage才行。
zImage要用u-boot的go命令执行(实际是会报错的);用u-boot的mkimage生成的uImage用bootm执行。
zImage是压缩的,uImage是非压缩的,uImage前面有0x40个字节的头。
3、错误:Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)
原因:没有实现根文件系统
4、根据网上关于移植2.6.22到博创2410开发板的文章来看,nandflash分区信息不需要添加到devs.c,因为在common-smdk.c中已经有分区信息。不知道从哪一版本开始是这样。

四、cramfs移植
1、采用“S3C2410的Linux UBOOT全线移植文档”会报错:Kernel panic - not syncing: No init found.Try passing init= option to kernel。估计是执行不对。
2、采用http://www.diybl.com/course/6_system/linux/Linuxjs/2008826/137708.html成功

[ 本帖最后由 alien75 于 2009-6-24 12:02 编辑 ]
页: [1]
查看完整版本: 我用skyeye学习linux的笔记