Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16511
  • 博文数量: 1
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-04 11:21
文章分类
文章存档

2011年(1)

分类: LINUX

2011-03-01 16:21:03

需求分析:

 

尝试在linux进程中,直接操作NOR_FLASH某个区域,例如将一个Kernel文件写入NOR_FLASH 0xff060000~0x ff11ffff中。

 NOR_FLASH容量为16M,其地址

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,具体如何去操作还在研究中。。。。。

阅读(4121) | 评论(1) | 转发(2) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~

chinaunix网友2011-03-06 15:52:19

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com