cramfs+yaffs嵌入式平台的实现

出处:edanzg 发布于:2009-07-13 11:59:16

  作者:蒙洋,华清远见嵌入式学院讲师。

  首先我们要将我们的某个分区格式化成yaffs格式。

  制作格式化工具过程如下:

  mtd-utils编译

  1、编译libz:

  首先安装 zlib 库,这个是后面的库的编译基础。

  https://www.zlib.net/zlib-1.2.3.tar.gz

  解压

  tar zxf zlib-1.2.3.tar.gz

  由于 zlib 库的configure 脚本不支持交叉编译选项,可以采用以下方法来解决:

  1)CC=ARM-softfloat-linux-gnu-gcc ./configure --prefix=/*你的安装目录*/ --shared

  注意:这里配置指向 --prefix=/*你的安装目录*/,会自动安装在 --prefix=/*你的安装目录*/ [include,lib] 目录下,

  千万不要装错目录了,不然后面会找不到这个库的。

  2)make

  3)make install

  安装完后检查一下目录 --prefix=/*你的安装目录*/[include,lib] ,假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的 *.h 都需要拷过去,在拷库的时候用 cp –a libz.* /…./lib 就行,要用上 –a 选项

  2、编译mtd-utils:

  mtd-utils-1.0.0.tar.gz:

  ftp://ftp.infradead.org/pub/mtd-utils/mtd-utils-1.0.0.tar.gz

  解压目录为mtd-utils-1.0.0

  #cd mtd-utils-1.0.0

  1) 修改Makefile

  CROSS=arm-softfloat-linux-gnu-

  2) make ( 用file命令查看,如 file mkfs.jffs2 )

  #file mkfs.jffs2

  mkfs.jffs2: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped

  可知:交叉编译成功。

  因为格式化flash分区是在板子上运行的,所以要交叉编译,这个概念一定要分清楚。

  编译好后将生成的flash_eraseall工具拷贝你的文件系统下的usr/bin下

  flash_eraseall /dev/mtd/x

  擦除干净后再

  mount -t yaffs /dev/mtdblock/x /mnt

  即可挂上了yaffs分区,解释一下什么是/dev/mtd/x和/dev/mtdblock/x

  /dev/mtd/x 是字符设备 mtd设备的主设备号为90,至于次设备号:单数为只读,双数为读写。《构建嵌入式LINUX系统》一书有介绍,可以参考一下

  /dev/mtdblock/x 是块设备

  在linuxrc下添加一句话就可以实现分区的自动挂载了

  /bin/mount -t yaffs /dev/mtdblock2 /mnt/yaffs

  部署文件系统到开发板

  我的分区信息

  dev: size erasesize name

  mtd0: 00100000 00004000 "bootloader" //1M

  mtd1: 00400000 00004000 "linux-kernel" //4M

  mtd2: 02000000 00004000 "cramfs-partition" //32M

  mtd3: 01b00000 00004000 "yaffs-partition" //27M

  flash烧写命令和分区设置要和内核设置是一样的

  烧写内核

  tftp 30008000 zImage

  nand erase 100000 400000

  nand write 30008000 100000 400000

  烧写cramfs文件系统

  tftp 30008000 rootfs.cramfs

  nand erase 500000 2000000

  nand write 30008000 500000 2000000

  启动参数设置

  setenv bootargs root=1f02 console=ttySAC0,115200 init=/linuxrc devfs=mount display=sam240

  setenv bootcmd nand read 30008000 100000 400000 \; go 30008000

  “本文由华清远见
https://www.embedu.org/index.htm提供”



  
关键词:cramfs+yaffs嵌入式平台的实现嵌入式

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

2023全国大学生嵌入式芯片与系统设计竞赛,海思赛道,工程机械远程管理与安全检测系统
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站客服电话

0571-85317606

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!