您的位置 首页 IC

ARM9发动剖析存储器区别和发动流程解析

最近遇到一个大大的问题,其实以前都一直有问题,但是我没有去深究过!主要是我自己想来弄点新东西,打算用J-link烧写ARM9的处理器,如果能…

最近遇到一个大大的问题,其实曾经都一向有问题,可是我没有去深究过!主要是我自己想来弄点新东西,计划用J-link烧写ARM9的处理器,假如能够将j-link的强壮调试功用也移到arm9上,那将是一件多么美好的作业啊。就带着这个问题我一向看材料,最开端我是有两块开发板的,详细点说是三块。可是我开端只用了一块的时分,我没发现什么问题。我其时便是依照他人给我的阐明书上进行操作的,也没有去了解和剖析为什么!可是最近由于有了那个计划,就发现问题了。我在一块板子上用H-JTAG能够进行烧写,在别的一块上也能够,可是都有一个共同点便是,两块板子都是arm9的(分别是S3C2410和S3C2440),相同我在实践使用中还用到了LPC2478.用J-link来调试和烧写ARM7是件很简单的作业。我想我都具有了这么多条件应该很简单就能够用j-link来烧写arm9了吧!实践上是我想错了!我遇到了这个问题好多天了,一向在弄。最终才发现是我没弄清楚流程,下面共享下我对这些处理器的发动流程和代码存储的剖析。

首要,理清几个概念。NOR flash:(概念最用我自己的言语归纳了)是前期的flash,存储量少,存储速度慢,可是履行速度快,能够在flash上履行。能够用来存储代码和作为SDRAM。NAND flash :是用来做海量存储的,一般用来存储数据,文件体系等,烧写速度快。SDRAM :动态存储器,用来进行数据存储,数据改写,和代码履行。可是不能存储代码。要了解SDRAM和NOR flash的差异,NOR flash是能够用来做为SDRAM,可是不是SDRAM。

咱们开端评论代码寄存的当地了,留意的是我在这里给代码加一个约束,(是固化的程序,差异开linux体系文件和bootlooder,我在这里界说bootlooder为程序而linux文件体系为数据)。代码有许多寄存的方法,一、存储在单片机的flash上,像ARM7一类的单片机(LPC2478就带有512k的flash)。二、寄存在NOR flash中,便是是SDRAM中(假如是SDRAM的芯片就无法存储了如有的开发板用的是HY57V641620 SDRAM芯片,代码是无法存储的)三、寄存在NAND flash中,一般的代码都寄存在NAND flash中在。

还需要知道的常识便是,存储器的地址映射,下面咱们看一种方法的地址映射。代码寄存在NAND flash中,用SDRAM的芯片做为动态存储的比如:如下图:

看到这个图,咱们是否发现了了解了一点点发动流程了啊?假如还有疑问让咱们再来剖析一下S3C2440的存储操控模块,实践便是存储地图。如下图所示:

解说下上图,有多种发动方法的,一种是使用NAND flash发动。一种是不必,不必的方法便是直接用SROM(S便是动态的存储空间,其实便是NOR flash)。要点介绍使用NAND flash发动的流程。

我们看到的是经过M[10]=00的方法设置发动方法为用NAND flash发动的方法,S3C2440内部有一个4K的SRAM。这个是芯片自带的。为了支撑NAND flash起动,S3C2410内建了内部的4k的SRAM缓存“Steppingstone”。当起动时,NAND flash开端的4k字节将被读入”Steppingstone”然后开端履行起动代码。一般起动代码会把NAND flash中的内容拷到SDRAM中以便履行主代码。留意boot进程是要设置成autoboot的,是经过硬件来设置的。在复位和上电发动进程都要经过这样的一个发动进程,这是开端一步的发动进程。下面便是在经过bootlooder的代码设置体系时钟和初始化寄存器等一系列的作业,在完结后经过跳转指令跳转到体系引导阶段。完结发动。最近还移植了一个最新的u-boot,支撑的东西仍是挺多的。对这个全体了解也有了一些加深。

在我了解了这么多了后,后来我就处理了那个问题,我的过错是没仔细剖析,我一向在用j-link flasher烧写SDRAM,难怪问题一向处理不了!!其实便是没有好好的去总结自己所看到的东西!做产品设计还真的是要脱了几层皮你的东西才干过关!!

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部