先介绍一下norflash .norflash 是一个容量比较小的内存相比nandflash ,但是比nandflash的质量好,不会有坏块,也就不会有数据丢失。所以可以用来存放一下不予许出错的数据。nandflash 可以存放海量数据如视频等。
我们用的的norflash是2M大小的。可以直接读,但不可以直接写。如果要写的话,先要解锁写操作,解锁的操作会在norflash手册上有。下面,一个是16位的,一个是8位的数据。我们的是16位的,可以从原理图上看出。
所以我们用的写操作是word那一行。嗯,好。怎么写呢。
当我们现在u-boot之后,我们退出菜单模式,进入命令行。使用mw.w,mw.b进行写操作,md.w,md.b进行读操作。.w,.b是word,byte的意思。
由于我们CPU的LADDR1接到nor芯片的A0上面,所以默认是地址LADRR0开始的,但我们得左移一位,把数据移动LADDR1上面,这样才能符合他们之间的规则。
上面的programmer里面的写解锁有3个命令:
555H | AAH | 2AAH | 55H | 555H | A0H |
1.把AA写到555地址上 地址左移一位后aaa 在终端我们的操作是:mw.w aaa aa
2.把55写到2AA地址上 地址左移一位后554 在终端我们的操作是:mw.w 554 55
3.把a0写到555地址上 地址左移一位后aaa 在终端我们的操作是:mw.w aaa a0
好了写的解锁操作完成了,但不一定就可以写。只有当一个地址上数据是FFFF也就是被清除时,才可以写。
那再说一下清除地址上的数据操作。
Chip Erase 我们猜测是把整个norflash都擦除一下,Sector E rase 就把把一个地址擦除一下。
解锁操作和上面一样,这次比上次多了2个命令,其他都一样。
1.把AA写到555地址上 地址左移一位后aaa 在终端我们的操作是:mw.w aaa aa
2.把55写到2AA地址上 地址左移一位后554 在终端我们的操作是:mw.w 554 55
3.把a0写到555地址上 地址左移一位后aaa 在终端我们的操作是:mw.w aaa a0
4.把55写到2AA地址上 地址左移一位后554 在终端我们的操作是:mw.w 554 55
5.把30写到写到你要擦除的地址上 假如我们要擦除的地址是100000 在终端我们的操作是:mw.w 100000 a0
然后我们再用md.w 100000指令看一下100000地址上的数据是不是被清除了。肯定是被擦除了。
然后我们再用mw.w 100000 1234 在100000上写1234.
然后你在用md.w 100000 读一下,肯定是1234
这样就完成了在norflash上的读写操作。