打印

Flash 读写的初级问题

[复制链接]
1620|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MCU2me|  楼主 | 2013-3-20 16:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
S3c44b的板子。对k9f2808读写。程序定义:
#define        NAND_DAT        0x08000000
#define        NAND_ALE                           0x08000004
#define        NAND_CLE        0x08000002
有如下几个问题想不明白:
1.数据、地址和命令都从8位的IO传递,是不是ARM的数据口地址可变,对应上面那三个地址,分别由地址线A1 A2 选择?
我看程序是分别对上面三个地址赋值实现数据、地址和命令的输入的。
2.如果是的话,ARM是怎么控制A1 A2 的?是因为对上面中某个地址赋值 A1A2就会自动变化吗?

相关帖子

沙发
MCU2me|  楼主 | 2013-3-20 16:01 | 只看该作者
本帖最后由 MCU2me 于 2013-3-20 17:42 编辑

硬件接线 A1 A2对应ARM的ADDR1、2         D0~D7对应DATA0~DATA7

QQ截图20130320154745.png (25.15 KB )

QQ截图20130320154745.png

使用特权

评论回复
板凳
江枫渔火| | 2013-3-20 17:23 | 只看该作者
MCU里已经含有NAND FLASH控制器,所以,硬件连接方式也基本固定,只有使用MCU中定义的那些为了NAND FLASH提供了驱动的引脚才能使用上已有的硬件驱动器。
然后你只管访问数据,其他的状态切换由NAND FLASH驱动器已经自动完成了。你可以仔细研读一下MCU的数据手册中关于NAND FLASH控制器的部分资料。我只是推测的,怕不是很准确。
三星的片子不是有开机自动拷贝4KB数据到内存的NAND FLASH启动方法吗?也就是MCU上电就能自动执行时序,从NAND FLASH中复制出数据。

使用特权

评论回复
地板
江枫渔火| | 2013-3-20 17:31 | 只看该作者
上面定义的是MCU中寄存器的地址,对相应地址赋值,就能使相应引脚电平发生变化。具体可以查看MCU手册中寄存器表。

使用特权

评论回复
5
MCU2me|  楼主 | 2013-3-20 17:36 | 只看该作者
江枫渔火 发表于 2013-3-20 17:23
MCU里已经含有NAND FLASH控制器,所以,硬件连接方式也基本固定,只有使用MCU中定义的那些为了NAND FLASH提 ...

手册英文的看起来好费劲……找了几本书也没发现对这方面有很好的解释。那就先不管它是怎么切换状态的了。
如果把外部Flash映射(不知道用这个词是否准确)到ARM内部的某一个Bank上,是不是DATA口的地址是可以在这个Bank内任意选取的,由地址线决定?

使用特权

评论回复
6
江枫渔火| | 2013-3-20 17:53 | 只看该作者
映射到这个BANK,就以这个BANK地址开始,访问这个BANK的地址,就等同于访问了FLASH内的内容了。这样就把地址在空间上管理起来了,屏蔽了底层的交流。所有的东西放在同一个地址平面上玩。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
MCU2me + 2 稍微有点懂了~
7
江枫渔火| | 2013-3-20 17:54 | 只看该作者
可以找同系列的手册看,内容其实差不多的。这个芯片没中文的,那跟他类似的另一个芯片有中文的,也可以看着参考啊。度姐,谷哥~

使用特权

评论回复
8
MCU2me|  楼主 | 2013-3-20 18:31 | 只看该作者
江枫渔火 发表于 2013-3-20 17:54
可以找同系列的手册看,内容其实差不多的。这个芯片没中文的,那跟他类似的另一个芯片有中文的,也可以看着 ...

:handshake
刚开始学,不懂的太多了……

使用特权

评论回复
9
jlass| | 2013-3-21 09:16 | 只看该作者
本帖最后由 jlass 于 2013-3-21 09:20 编辑

从你的描述来看,S3c44b应该没用专用的nand flash的接口,而是使用通用的并口来模拟nand flash的操作,因为并口没有ALE,CLE的连线,所以使用A1和A2来模拟,
#define        NAND_DAT        0x08000000
#define        NAND_ALE        0x08000004
#define        NAND_CLE        0x08000002
后两句就是A1,A2对应NAND_ALE与NAND_CLE的定义语句,如果改为A3和A4,这两句定义也要做相应的改动。
#define        NAND_ALE        0x08000010  对应A4
#define        NAND_CLE        0x08000008  对应A3
比如程序在0x08000008 里写数据,A3就会变高,相应的NAND_CLE就变高了


使用特权

评论回复
10
MCU2me|  楼主 | 2013-3-21 12:28 | 只看该作者
jlass 发表于 2013-3-21 09:16
从你的描述来看,S3c44b应该没用专用的nand flash的接口,而是使用通用的并口来模拟nand flash的操作,因为 ...

看来我还还猜对了……怎么没有一本书好好讲讲这部分的东西呢 最为一个初学者我感觉挺难理解的
还有非常感谢你耐心的回答~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

79

帖子

1

粉丝