Mini2440学习I

来源:互联网 发布:网络问政 高新园 编辑:程序博客网 时间:2024/06/05 12:02

开发板的基本使用方法

使用HJTAG烧写Nor Flash,再利用Super Vivi把系统装到Nand Flash

         很无奈,由于哥的学习习惯不好,以前会的东西,经过这么久后,就什么都忘了!没办法,只好耐着性子学人家写点笔记,以备以后查看!哪里有什么不对的地方请大家多多指教!首先请看看Mini2440开发板长成啥样,如下图所示:

      

        我买的这个开发板有两个Flash,一个是Nor  Flash ,另一个是Nand  Flash!至于这两者有啥区别,在这里也说一下:

1) 历史:NOR FLASH/NAND FLASH 是现在市场上两种主要的非易失闪存技术。Intel1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROMEEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。

2) NOR Flash特点:芯片内执行(XIP eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。

3) NAND Flash特点:它的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理和需要特殊的系统接口。通常NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。

4) 性能比较:flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以832KB的块进行的,执行相同的操作最多只需要4ms。 执行擦除时块尺寸的不同进一步拉大了NORNADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素:

1、NOR的读速度比NAND稍快一些。

2、NAND的写入速度比NOR快很多。

3、NAND4ms擦除速度远比NOR5s快。

4、大多数写入操作前得先进行擦除。

5、NAND的擦除单元更小,相应的擦除电路更少。

5) 接口差别:NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。NOR可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

6) 软件支持:当讨论软件支持的时候,应该区别基本的读//擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD)NANDNOR器件在进行写入和擦除操作时都需要MTD。使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-SystemTrueFFS驱动,该驱动被Wind River SystemMicrosoftQNX Software SystemSymbianIntel等厂商所采用。


      基于以上原因,该开发板上也有两块Flash,因为Nor Flash贵且可以直接运行程序,所以只配置了2M,  Nand Flash则有128M!开发板在启动的时候可以通过开关选择是从Nor Flash启动还是Nand Flash启动,如图所示。注意,CPU本来是不能直接运行在Nand Flash上的代码的!其实Nand Flash读数据就像硬盘一样,一次只能读取一块(512B),而且还得要驱动程序,所以突然觉得它好像又有点不像是Flash了,因为Flash一般都是可以片上运行程序的。其实Mini2440的CPU  S3C2410可以自动将NandFlash前4KB复制到内置的4KB的 SRAM中,并且CPU跳到该处运行。所以CPU也可以从Nand启动。

      

       如果说开发板是刚买回来的,Nand  Flash Nor  Flash里面什么都没有,这时候就可以通过自带的JTAG工具配合H-JTAG软件烧写Super Vivi(相当于PCBIOS,后面再介绍),一端连接电脑的并口,一端连接开发板的JTAG接口,看图就知道在哪了!这里先将Super Vivi烧写至Nor Flash(从地址0开始)。但安装了H-JTAG软件,开发板的JTAG也连接好,电源开电后,也行运行H-JTAG软件发现无法找到硬件,这时要对H-JTAG软件进行一定的配置。因为我们的JTAG是通过LPT(并口)连接的,所以选择该项,如果是JLINK的话就选USB


       然后对JTAG的针口进行配置(引脚连接方式),双方通信当然得先配置好事先的约定咯。这时检测到是ARM920T啊!点击Init,选择为提供的脚本。接下来配置Win下的超级终端,买开发板的时候配置了一根串口线,一端连接电脑串口,一端连接开发板串口,用于主机和目标机之间进行串口通信。注意,如果开发板没有正在运行相应程序配合Windows下程序就无法通信,必须是开发板里面的程序配合Windows下的程序通过串口进行通信,开发板里面的一般是Super vivi或其他BootLoaderWindows下的最常用的是自带的超级终端,通过该串口线,两个人在通信,我们就可以在电脑上操作开发板了,比如使用Super Vivi的下载程序并运行的功能。配置如图:

当连接成功后,就可以从超级终端里面看到从开发板发出来的信息:

不管是从Nand Flash还是Nor Flash启动的BootLoader一般都可以从超级终端里面看到启动信息,还可以在超级终端里进行控制,比如利用BootLoader提供的下载并运行裸机程序的功能,在超级终端里面设置好,再利用USB下载线(得先安装该USB驱动程序—FriendlyArm USB DownLoad Drive),将程序下载到开发板运行(使用友善之臂提供的dnw工具)。

又或者是:

1. 首先设置H-JTAG的连接方式为并口。打开H-JTAG,菜单:Settings->USB/LPT Selection->LPT。

2. 设置H-JTAG的引脚链接方式。Settings->LPT JTAG Setting,设置如下:

3.选择脚本文件,设置CPU的寄存器。Script->Init Script->Load。这里选择友善开发板提供的配置,至于为什么这么配置,可以参看CPU芯片手册了解各个地址的含义。

4.设置flash的型号并下载程序。Flasher->Start H-Flasher,我的是2M的flash,选择如下(如果没有此选项,请下载最新的H-JTAG):

5.在上图的Configuration中设置Ram的起始地址为0x30000000。

6.在Pgm Options中必须选择如下:

7.此时在上图的Programming选项中点击Check按钮,可以检测到cpu和flash的型号。点击Erase首先将整个芯片擦除,点击按钮选择镜像文件的存放,点击Program按钮就可以将文件烧写到norflash内。

       如果用JTAGH-JTAG软件把 Suer ViviBootLoader)成功烧写进了Nor Flash,那么一切都好办了!接下来只需要在开发板上从Nor Flash启动运行刚刚烧写的Super Vivi,运行后在Win7的超级终端下显示的情况如下图所示:

安装Linux的这个过程必须注意根据以下顺序:

1) 先使用配置的那根串口线,将开发板和宿主机连接起来用来让宿主机和开发板进行通信,同时还得把配置的那根USB下载线也连接好,注意一端连接PCUSB,另一端连接开发板的USB Slave(当然在这之前你必须得安装了USB下载驱动,否则无法识别)。

2) 再从Nor Flash启动,此时开发板和宿主机就可以通过串口进行通信了,即用户在超级终端里的输入可传给开发板里正在运行的Super Vivi来控制开发板,让Super ViVi来运行指定的操作,下面的操作也就是对另一边的Nand Flash进行操作,而Super Vivi的运行进度都可以通过串口输出给Windows的超级终端显示给用户看。

3) 从Win7的超级终端里就可以看到Super Vivi的运行情况,如上图所示,此时它提示给用户选择菜单进行相应操作。

4) 选择xFormat Nand Flash For Linux也就是将Nand Flash格式化为Linux分区,这一步很快,几秒就完了。

5) 选择v: DownLoad Vivi,下载Super Vivi(跟刚才下载到Nor Flash里面的Super Vivi是一样的)进Nand Flash。选择v号菜单后,Super Vivi提示正在等待下载,此时得用dnw通过USB线将Super Vivi下载至Nand  Flash

6) 选择K: DownLoad Linux Kernel下载Linux内核,跟刚才类似,选择K后,Super Vivi就提示已经准备好接收数据,所以此时应该用dnwLinux内核文件(由友善之臂提供的已经编译好的zImage_X35内核文件)下载。注意如果此时就停止,然后从Nand Flash启动就会提示Kernel  Panic,因为Linux内核运行后却找不到根文件系统,所以别急,把第七部做完先。

7) 选择yDownLoad root_yaffs image将根文件系统(友善之臂提供的已经制作好的名为rootfs_qtopia_qt4的根文件系统镜像)通过Dnw 下载安装在Nand Flash上。完了之后,现在就可以成功滴从Nand Flash启动了!我们的Linux也就成功安装了!其他的WinCE,或者uC/OS都是一样的道理,参照如下。

安装WinCE的过程(在上面的基础上):

1) Nor Flash里面安装了Super Vivi,因为WinCE也是靠它下载的,然后只要接上串口线和USB线就可以了,串口用于通信,USB则被dnw用做数据下载。

2) 主机运行了超级终端,至于如何配置,参照上面的说明。

3) 开发板先设置从Nor Flash启动,然后开机。这时在超级终端里又看到了Super Vivi那熟悉的面孔,就是上面那张图。

4) 选择nDownLoad nboot for WinCE,超级终端显示正在等待下载......使用dnw将友善之臂提供的nbootnboot-X35.bin)下载即可。

5) 选择lDownLoad WinCE BootLogo下载安装BootLogo。所谓BootLogo就是一张位图,该位图是用作开机画面。同样是用dnw下载。

6) 选择wDownload WinCE NK.bin 下载安装WinCE内核镜像。选择w选项后,超级终端显示正在等待下载......此时通过dnw下载有友善之臂编译后的WinCE内核,名字是Nk_X35.bin

7) 烧写完毕,设置开发板从Nand Flash启动,重启开发板即可。

注意:第5步可以选择v命令下载Super Vivi(此时Super Vivi加载内核而非n-boot),只是Super Vivi没有开机画面和启动条,但启动速度比n-boot2-3秒,n-boot提供了源码,用ADS编译,有开机画面和启动条界面。

使用HJTAG烧写Nand Flash

刚才说的是先用H-JTAG烧写Super Vivi2MNor Flash,然后从Nor Flash启动Super Vivi,并利用Super Vivi的功能菜单安装系统至Nand Flash。下面就说说如何用H-JTAG烧写128MNand Flash

1) 同上面一样,得先把JTAG连接上PC串口和开发板的JTAG。连接无误后开发板上点,运行H-JTAG

2) 配置好H-JTAG软件使得其能够识别开发板。跟上面一样,此处不累述。

3) 点击H-JTAGFlasher菜单,如图:

4) 然后进行配置,第一项的Flash Slection,选择Nand 里面的S3C2440+k9flg08,如图有的可能没有Nand 芯片可选,那应该是你的H-JTAG版本太低了,升级即可。

5) 第二项Configurations的配置如图:

6) 选择Programming,点击里面的Check按钮即可检测到该开发板的CPUFlash类型。如果当前的Nand  Flash正在启动则会无法检测,所以可以在Nor Flash启动时格式化Nand Flash让它无法启动,在对其进行烧写。点击Check后情况如下:点击Erase擦除后情况为:擦除成功了!这时你就无法再从Nand Flash启动了,Nand Flash里面啥也没有了!

 

点击此处下载本文档——> 

原创粉丝点击