Chinaunix首页 | 论坛 | 博客
  • 博客访问: 440292
  • 博文数量: 139
  • 博客积分: 106
  • 博客等级: 民兵
  • 技术积分: 613
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 16:03
文章分类

全部博文(139)

文章存档

2016年(1)

2014年(16)

2013年(23)

2012年(98)

2011年(1)

分类:

2012-08-03 17:45:11

需求分析:

 

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

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