Chinaunix首页 | 论坛 | 博客
  • 博客访问: 312843
  • 博文数量: 118
  • 博客积分: 313
  • 博客等级: 二等列兵
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 22:51
文章分类

全部博文(118)

文章存档

2012年(68)

2011年(50)

分类:

2011-12-20 04:39:03

在yaffs系统测试的时候,遇到很多问题,但是网上查了很多资料都没有解决,后来在mcuzone论坛发贴,版主回帖如下:
  此时我发下我一直用的是sam-ba,而且是2.10晕死。。。
按照版主的思路,我慢慢找到了问题。
  首先是编译MTD内核支持和MTD交叉编译工具的生成:(参考资料:大聪师兄的文档《在ramdisk中挂载yaff2分区》和http://www.cnitblog.com/luofuchong/archive/2011/05/23/21725.html):
  内核编译是增选:
下面是编译MTD交叉编译工具,参考的是大聪师兄文档,下面是大聪师兄的文档内容:
  1. 交叉编译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下即可生成相应的头文件、库等。

  2. 下载源码包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

  3. 此时就会在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   

阅读(1132) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~