Nor Flash电路与驱动程序
发布时间:2020-12-15 19:57:20 所属栏目:百科 来源:网络整理
导读:1.Nor Flash电路详情 8位的flash( HY29F040是现代公司的一款8-BIT的NOR FLASH )与CPU连接: 从图上可以看出,A0连接A0,相当于An连接An,没有错位连接。 对于16位的Flash( SST39VF160是SST公司的一款16-BIT的NOR FLASH ),CPU的A0是没有连接的,相当于被
1.Nor Flash电路详情
8位的flash(
HY29F040是现代公司的一款8-BIT的NOR FLASH)与CPU连接:
从图上可以看出,A0连接A0,相当于An连接An,没有错位连接。
对于16位的Flash(
SST39VF160是SST公司的一款16-BIT的NOR FLASH),CPU的A0是没有连接的,相当于被屏蔽掉了,原因何在????????
原因便是对于16位的flash,每次flash收到一个地址,便将该地址的16bit通过D15-D0给CPU,此外ARM的一个地址对应的是一个BYTE,这个
BYTE的意思就是每次ARM发一次数据,就只读一个byte。那么A1与A0连接,正好。
补充说明: 1。? 一般来说,ARM处理器内部要设置相应的寄存器,告诉处理器外部扩展的FLASH的位宽(8-BIT/16-BIT/32-BIT) 。这样,处理器才知道在访问的时候如何从FLASH正确的读取数据。 2。? 有些ARM处理器内部可以设置地址的错位。对于支持软件选择地址错位的处理器,在连接16-BIT FLASH的时候,硬件上可以不需要把地址线错位。读者设计的时候,请参考MCU的数据手册,以手册为准,以免造成不必要的麻烦。 3。? 如果处理器支持内部设置地址错位,在实际访问的时候,送出的地址实际上是在MCU内部做了错位处理,其作用是等效于硬件连接上的错位的。
下面两个例子不错:例子 1:ARM处理器需要从地址 0x0 读取一个 BYTE 1 - ARM处理器在地址线An-A0上送出信号0x0; 2 – 16-BIT FLASH在自己的地址信号An-A0上看到的地址是0x0,然后将地址0x0对应的16-BIT数据单元输出到D15-D0上; 3 – ARM处理器知道访问的是16-BIT的FLASH,从D7-D0上读取所需要的一个BYTE的数据; 例子 2:ARM处理器需要从地址 0x1 读取一个 BYTE 1 - ARM处理器在地址线An-A0上送出信号0x1; 2 – 16-BIT FLASH在自己的地址信号An-A0上看到的地址依然是0x0, 然后将地址0x0对应的16-BIT数据单元输出到D15-D0上; 3 –ARM处理器知道访问的是16-BIT的FLASH,从D15-D8 上读取所需要的一个BYTE 的数据;2.下面从两个阶段解剖Nor Flash驱动
1.bootloader阶段
/* ************************************************************************* * * Jump vector table as in table 3.1 in [1] * 1.set SVC mode * 2.关看门狗 * 3.屏蔽所有中断 * 4.初始化SDRAM * 5.设置堆栈 * 6.设置时钟 * 7.将代码从nor flash拷贝到SDRAM * 8.跳转到start_armboot ************************************************************************* */这是uboot启动汇编代码过程,在第7步骤之前,代码都是在nor flash里边执行的,当然nor flash支持代码执行,不用将程序复制到RAM里边。
同时在bootloader里边,暂时还不是操作系统环境,所以对flash的读写最终就是下面这样操作:
#define __arch_getb(a) (*(volatile unsigned char *)(a))//读 #define __arch_getw(a) (*(volatile unsigned short *)(a)) #define __arch_getl(a) (*(volatile unsigned int *)(a)) #define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))//写 #define __arch_putw(v,a) (*(volatile unsigned short *)(a) = (v)) #define __arch_putl(v,a) (*(volatile unsigned int *)(a) = (v)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |