2011年(1)
分类: LINUX
2011-03-01 16:21:03
需求分析:
尝试在linux进程中,直接操作NOR_FLASH某个区域,例如将一个Kernel文件写入NOR_FLASH 0xff060000~0x ff11ffff中。
ff000000 ~ ff03ffff UBOOT
ff060000 ~ ff11ffff Kernel
ff120000 ~ ffffffff rootfs
方法如下:
第一步:通过mmap将nor flash作为一个设备文件/dev/mem映射到进程虚拟地址空间
第二步;这一步总共有三种方案:
1.用nor flash手册中指明的erase和write操作流程往映射到的进程虚拟地址空间写数据
2.将要写入的数据直接拷贝到进程对应的虚拟地址空间,就相当于直接写nor flash
3.用write文件的办法直接往设备文件中写数据,就相当于直接写nor flash
经试验这三种方法都不可行;
失败原因分析:nor flash手册要求我们在写nor flash的时候必须要保证write的时候保证序列的完整,在以上方法中写的时候都由底层rootfs接管,因此不能保证写序列不被打断,所以以上三种方案都不能直接对Nor flash进行写操作
下面尝试在底层做一个驱动不经过rootfs接管,但是rootfs和我们即将开发的驱动之间会有冲突,因为我们不能保证我们自己开发的驱动在操作nor flash的时候rootfs不会发生操作nor flash的情况,因此底层开发驱动来直接操作nor flash也不可行
最终,认为可行的方案是,通过uboot这边来操作nor flash,具体如何去操作还在研究中。。。。。
chinaunix网友2011-03-06 15:52:19
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com