davnici dm6446中flash程序固化

http://ansondeng.blog.163.com/blog/static/182682482201212092338857/

1.     配置编译一个符合要求的内核

 

首先,IDE驱动和flash驱动有冲突必须disable,路径为:

        Device drivers --> ATA/ATAPI/MFM/RLL support à ATA/ATAPI/MFM/RLL support

 

       然后,使能flash驱动,nor路径:

              Device drivers --> memory technology devices à RAM/ROM/Flash chip drivers àsupport for AMD

       Nand路径:

              Device drivers --> memory technology devices à NAND Flash device driver àNAND device support

 

       最后,使能支持jffs2,路径:

              File system à miscellaneous filesysytems à Journalling flash file system v2(JFSS2) support


       具体配置信息:

#CONFIG_IDE is not set

 

CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
 
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
 
CONFIG_MTD_CFI=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_UTIL=y
 
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x8000000
CONFIG_MTD_PHYSMAP_LEN=0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
 
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
 
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y
 
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_VERIFY_WRITE=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD_NAND_DAVINCI=y
 
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
 
 

另外,程序固化后出现错误 Sending DHCP and RARP requests,解决办法:

把下面几个选项去掉就OK

networking -》networking options -》IPKernel level autoconfiguration不能选下面三个子项

 

 

 

 

 

 

2.制作一个文件系统镜像

 

       第一种方法,源码包中给出了一个ramdisk.gz,可以直接做成镜像。其位置为/opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/images/ramdisk.gz,具体操作:

  •   Create a working directory
   host$ mkdir -p /home/user/workdir
  • Copy the example ramdisk.gz file to the working directory
   host$ cd /home/user/workdir
   host$ cp <ramdisk location>/ramdisk.gz .
  • Gunzip and mount the ramdisk image to a temporary directory
   host$ mkdir ram
   host$ gunzip ramdisk.gz
   host$ mount ramdisk ram -o loop
  • Create the JFFS2 image of the file system mounted at /home/user/workdir/ram
host$ mkfs.jffs2 -r ram -e 64 -o rootfs.jffs2

生成的rootfs.jffs2就是所要的镜像文件

第二种方法,通过裁剪target文件自己制作一个镜像,此方法比较复杂,具体见TI Davinci DM6446 开发攻略.doc

 

 

 

 

 

3.将内核与文件系统镜像固化到flash中,以nor flash烧写rootfs.jffs2为例

      

第一种方法,使用uboot

       先通过网络下载到ram中,

               dvevm# tftp 0x80700000 rootfs.jffs2

       擦除nor中用于存储的区域,具体地址根据partition_mtd分区表确定

               dvevm# erase 0x02440000 +

       ram中拷贝到nor

               dvevm# cp.b 0x80700000 0x2440000 0x27eeec

       更改启动参数 bootargs,此处示例表示mtd中的第四个分区存储文件系统

               "... root=/dev/mtdblock3 rw rootfstype=jffs2 ..."

 

       另外,烧写kernel可用同样方法,只需改变nor中存储的地址即可。最后需要更改启动方式:setenv bootcmd bootm 0x02040000,此地址即为kernel存储的地址。

 

 

第二种方法,使用linux

       先擦除nor的分区

               target$ flash_eraseall -j /dev/mtd3

       烧写fsnor的分区

               target$ flashcp <image dir>/rootfs.jffs2 /dev/mtd3

              重启,改bootargs,偶了

你可能感兴趣的:(davnici dm6446中flash程序固化)