grace under pressure
分类: LINUX
2011-12-17 20:18:43
交叉编译zilib库,下载源码zlib-1.2.3.tar.gz
tar
zxvf zlib-1.2.3.tar.gz
指定交叉编译器及安装路径
CC=arm-none-linux-gnueabi-gcc
./configure --prefix=/usr/local/arm/arm-2008q1/ --shared
make
make
install
之后在/usr/local/arm/arm-2008q1/下的include
lib share下即可生成相应的头文件、库等。
下载源码包mtd-utils-1.0.0.tar.gz
tar
zxvf mtd-utils-1.0.0.tar.gz
cd mtd-utils-1.0.0
gedit
Makefile
修改内容如下:
CROSS=
arm-none-linux-gnueabi-
然后:
make
但是总是出现如下错误:mkfs.jffs2.c:68:18:
error: zlib.h: No such file or
directory次错误表示zlib.h没有放到合适的地方,因为我用的这个编译器的路径比较混乱,不知道到底该将其拷到那个目录下,最终我在Makfeile中用-I指定了路径最终编译成功:
将CFLAGS
:= -I./include -02 –Wall修改为
CFLAGS
:= -I./include -I/usr/local/arm/arm-2008q1/include/ -02 –Wall
此时就会在mtd-utils-1.0.0目录下生成一系列文件,其中的flash_eraseall正是我要用的命令,将其拷贝到文件系统的/usr/bin目录下
下面是我按照mcuzone版主建议挂载yaffs2系统镜像文件:
首先我们要建立mtd的字符和块控制台,在建立过程中,参考了http://fengjixuchui.blog.51cto.com/854545/462275,我主要是参考了下面内容:
“
mknod Name { b | c } Major Minor
。。。
某些主设备号已经静态地指派给了大部分常见设备。在内核源代码树的Documentation/device.txt文件中可以找到这些设备的列表。由于许多编号已经分配了,为新设备选择一个唯一的编号是很困难的——可配置的设备要比主设备号多得多
。。。
”
flash_eraseall /dev/mtd1
nanwrite -a -o /dev/mtd1 uImage.yaffs2
上传一个MTD工具使用文档(文档来源:大聪师兄资料) mtd工具使用.doc
mount -t yaffs2 /dev/mtdblock1 /tmp
进入tmp一看,真的只有lost+found文件夹,后来分析是mkyaffs2image工具出了问题,后来那一个同学的三星开发板工具制作文件镜像,然后用mtd工具烧写,然后启动,成功了
下面是我刚开始错误的启动信息:
VFS: Mounted root (yaffs filesystem).
Freeing init memory: 116K
Warning: unable to open an initial console.
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel
到这了,yaffs系统烧写成功,共享下我用的工具。 tool.zip