您的位置 首页 观点

s3c2440存储控制器和地址以及发动的了解

1首先应该先了解FlashROM的种类NORFLASH地址线和数据线分开,来了地址和控制信号,数据就出来。NANDFlash地址线和数据线在一起,需

1.首要应该先了解Flash ROM的品种

NOR FLASH地址线和数据线分隔,来了地址和操控信号,数据就出来。
NAND Flash地址线和数据线在一起,需求用程序来操控,才干出数据。
浅显的说,只给地址不可,要先指令,再给地址,才干读到NAND的数据,在一个总线完结的。
结论是:ARM无法从NAND直接发动。除非装载完程序,才干运用NAND Flash.
2.Nand Flash的指令、地址、数据都经过I/O口发送,管脚复用,这样做做的优点是,能够显着削减NAND FLASH的管脚数目,将来假如规划者想将NAND FLASH更换为更高密度、更大容量的,也不用改动电路板。在S3C2440中NANDFLASH的操控依托NAND FLASH操控器。不能够履行程序,自己总结其原因如下 :
a. NAND FLASH自身是衔接到了操控器上而不是体系总线上。CPU发动后是要取指令履行的,假如是SROM、NOR FLASH 等之类的,CPU 发个地址就能够获得指令并履行,NAND FLASH不可,因为NAND FLASH 是管脚复用,它有自己的一套时序,这样CPU无法获得能够履行的代码,也就不能初始化体系了。
b. NAND FLASH是次序存取设备,不能够被随机拜访,程序就不能够分支或跳转,这样你怎样去规划程序。
3.在2440中为什么能够装备成从Nand Flash中发动程序?
假如S3C2440被装备成从Nand Flash发动, S3C2440的Nand Flash操控器有一个特别的功用,在S3C2440上电后,Nand Flash操控器会主动的把Nand Flash上的前4K数据搬移到4K内部SRAM中,(此内部RAM被称为Steppingstone)并把0x00000000设置内部RAM的开端地址,CPU从内部RAM的0x00000000方位开端发动。这个进程不需求程序干与。程序员需求完结的作业,是把最中心的发动程序放在Nand Flash的前4K中,也便是说,你需求编写一个长度小于4K的引导程序,效果是将主程序拷贝到SDRAM中运转(NF地址不是线性的,程序不能直接运转,有必要拷贝到线性RAM中???)。
4.Samsung S3C2440支撑Nor Flash和Nand Flash发动,在TQ2440上能够经过跳线设置发动方法。主要由OM[1:0]这两位来决议从何处发动。详细意义如下:

OM[1:0]所决议的发动方法

OM[1:0]=00时,处理器从NAND Flash发动

OM[1:0]=01时,处理器从16位宽度的ROM发动

OM[1:0]=10时,处理器从32位宽度的ROM发动。

OM[1:0]=11时,处理器从Test Mode发动。

Arm的发动都是从0地址开端,所不同的是地址的映射不一样。在arm开电的时分,要想让arm知道以某种方法(地址映射方法)运转,不可能经过你写的某段程序操控,因为这时分你的程序还没发动,这时分arm会经过引脚的电平来判别。
a.当引脚OM0跟OM1有一个是高电平时,这时地址0会映射到外部nGCS0片选的空间(Bank0),也便是Norflash,程序就会从Norflash中发动,arm直接取Norflash中的指令运转。
b.当OM0跟OM1都为低电平,则0地址内部bootbuf(一段4k的SRAM)开端。体系上电,arm会主动把NANDflash中的前4K内容考到bootbuf(也便是0地址),然后从0地址运转。

这时NANDFlash中的前4K便是发动代码(他的功用便是初始化硬件然后在把NANDFlash中的代码复制到RAM中,再把相应的指针指向该运转的当地)

5.发动代码应该做什么?
因为Nand Flash操控器从Nand Flash中搬移到内部RAM的代码是有限的,所以在发动代码的前4K里,咱们有必要完结S3C2440的中心装备以及把发动代码(U-BOOT)剩下部分搬到RAM中运转,至于将2440作为单片机玩裸跑程序的时分,就不要做这样的工作,当代码小于4K的时分,只需下到nand flash中就会被搬运到内部RAM中履行了。

bootloader在某种意义上来说便是一个发动代码,品种有许多(vivi uboot 等),可是功用上无非便是完结一些初始化。bootloader是芯片复位后进入操作体系之前履行的一段代码,完结由硬件发动到操作体系发动的过渡,为运转操作体系供给根本的运转环境,如初始化CPU、仓库、初始化存储器体系等,其功用类似于PC机的BIOS.

在实践的开发中,一般能够把bootloader烧入到Norflash,程序运转能够经过串口交互,进行必定的操作,比方下载,调试。这样就很能够很便利的调试你的一些代码。Norflash中的Bootloader还能够烧录内核到Norflash等等功用。
6.存储操控器的效果
在2440中分了8个bank,每个bank的基地址由nCGSx来挑选,每个bank都接外设之后,就能够经过存储操控器来进行地址上的挑选了。每个bank与外设的衔接方法不一样,主要看外设是每次进行多少位的数据传输,假如是8位,这样CPU的地址线A0就能够直接接外设的A0,假如是16位,那么CPU的A1就该接到外设的A0,一次类推往后移位,详细原因见错位原因。nor flash接在bank0,数据线为16位。存储操控器的特性如下:
1. 巨细端设置;
2. 地址空间:每个bank为128MB (总共1GB);
3. 除了bank0其他一切banks的数据位宽是可编程的(8/16/32-bit);(bank0是16/32位)
4. 总共8个memory banks,其间6个bank是接ROM,SRAM等,其他2个bank是接ROM,SRAM,SDRAM等;
5. 7个memory bank的开端地址是固定的;(发现size也是固定的,128MB)
6. 1个memory bank的开端地址和巨细是可灵敏可变的;
7. 一切banks的拜访周期数是可编程的;
8. 支撑片外等候信号以扩大总线周期;
9. SDRAM在Power down形式下支撑主动改写.
2010.5.2弥补:这儿看到有8个BANK,然后他们地址怎样就能够确认呢?了解:外面总共就运用了27根地址线,还有5根地址线没有被运用,5根地址线就有16个挑选了,开始估量其间的3根又被用来挑选这8个bank了,所以才有那样的地址~~至于那个可变地址,暂时还想不出什么解说,好像是叫部分译码~呵呵。。OK
7.Nand Flash操控器
1. 主动发动: 体系复位后,boot code搬运到4KB Steppingstone,然后在其内部履行;
2. Nand Flash存储接口: 支撑256Words,512Bytes,1KWords和2KBytes Page;
3. 软件形式: 用户能直接拜访nand flash;
4. 接口: 支撑8/16-bit Nand flash存储接口;
5. 支撑巨细端形式;
6. 硬件ECC发生器:检测和指示(软件纠正)(此处不怎样了解);
7. Steppingstone: 4KB SRAM Buffer,在nand flash发动往后能够用作它处.
当体系处在复位状况时,Nand flash操控器从管脚NCON,GPG13,GPG14,GPG15得到nand flash的一些信息(如page size,bus width等,见下图).在上电或体系复位之后,则nand flash操控器将主动加载4KB boot loader代码,之后便是在steppingstone里履行.
留意:在主动发动这个进程中,ECC模块是不发挥效果的,所曾经4KB nand flash应当不含bit error.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/260913.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部