Mini2440学习I
来源:互联网 发布:网络问政 高新园 编辑:程序博客网 时间:2024/06/05 12:02
开发板的基本使用方法
使用H—JTAG烧写Nor Flash,再利用Super Vivi把系统装到Nand Flash
很无奈,由于哥的学习习惯不好,以前会的东西,经过这么久后,就什么都忘了!没办法,只好耐着性子学人家写点笔记,以备以后查看!哪里有什么不对的地方请大家多多指教!首先请看看Mini2440开发板长成啥样,如下图所示:
我买的这个开发板有两个Flash,一个是Nor Flash ,另一个是Nand Flash!至于这两者有啥区别,在这里也说一下:
1) 历史:NOR FLASH/NAND FLASH 是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,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器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。 执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素:
1、NOR的读速度比NAND稍快一些。
2、NAND的写入速度比NOR快很多。
3、NAND的4ms擦除速度远比NOR的5s快。
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),NAND和NOR器件在进行写入和擦除操作时都需要MTD。使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。
基于以上原因,该开发板上也有两块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(相当于PC的BIOS,后面再介绍),一端连接电脑的并口,一端连接开发板的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或其他BootLoader,Windows下的最常用的是自带的超级终端,通过该串口线,两个人在通信,我们就可以在电脑上操作开发板了,比如使用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内。
如果用JTAG和H-JTAG软件把 Suer Vivi(BootLoader)成功烧写进了Nor Flash,那么一切都好办了!接下来只需要在开发板上从Nor Flash启动运行刚刚烧写的Super Vivi,运行后在Win7的超级终端下显示的情况如下图所示:
安装Linux的这个过程必须注意根据以下顺序:
1) 先使用配置的那根串口线,将开发板和宿主机连接起来用来让宿主机和开发板进行通信,同时还得把配置的那根USB下载线也连接好,注意一端连接PC的USB,另一端连接开发板的USB Slave(当然在这之前你必须得安装了USB下载驱动,否则无法识别)。
2) 再从Nor Flash启动,此时开发板和宿主机就可以通过串口进行通信了,即用户在超级终端里的输入可传给开发板里正在运行的Super Vivi来控制开发板,让Super ViVi来运行指定的操作,下面的操作也就是对另一边的Nand Flash进行操作,而Super Vivi的运行进度都可以通过串口输出给Windows的超级终端显示给用户看。
3) 从Win7的超级终端里就可以看到Super Vivi的运行情况,如上图所示,此时它提示给用户选择菜单进行相应操作。
4) 选择x,Format 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就提示已经准备好接收数据,所以此时应该用dnw将Linux内核文件(由友善之臂提供的已经编译好的zImage_X35内核文件)下载。注意如果此时就停止,然后从Nand Flash启动就会提示Kernel Panic,因为Linux内核运行后却找不到根文件系统,所以别急,把第七部做完先。
7) 选择y:DownLoad 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) 选择n:DownLoad nboot for WinCE,超级终端显示正在等待下载......使用dnw将友善之臂提供的nboot(nboot-X35.bin)下载即可。
5) 选择l:DownLoad WinCE BootLogo下载安装BootLogo。所谓BootLogo就是一张位图,该位图是用作开机画面。同样是用dnw下载。
6) 选择w:Download WinCE NK.bin 下载安装WinCE内核镜像。选择w选项后,超级终端显示正在等待下载......此时通过dnw下载有友善之臂编译后的WinCE内核,名字是Nk_X35.bin。
7) 烧写完毕,设置开发板从Nand Flash启动,重启开发板即可。
注意:第5步可以选择v命令下载Super Vivi(此时Super Vivi加载内核而非n-boot),只是Super Vivi没有开机画面和启动条,但启动速度比n-boot快2-3秒,n-boot提供了源码,用ADS编译,有开机画面和启动条界面。
使用H—JTAG烧写Nand Flash
刚才说的是先用H-JTAG烧写Super Vivi至2M的Nor Flash,然后从Nor Flash启动Super Vivi,并利用Super Vivi的功能菜单安装系统至Nand Flash。下面就说说如何用H-JTAG烧写128M的Nand Flash。
1) 同上面一样,得先把JTAG连接上PC串口和开发板的JTAG。连接无误后开发板上点,运行H-JTAG。
2) 配置好H-JTAG软件使得其能够识别开发板。跟上面一样,此处不累述。
3) 点击H-JTAG的Flasher菜单,如图:
4) 然后进行配置,第一项的Flash Slection,选择Nand 里面的S3C2440+k9flg08,如图有的可能没有Nand 芯片可选,那应该是你的H-JTAG版本太低了,升级即可。
5) 第二项Configurations的配置如图:
6) 选择Programming,点击里面的Check按钮即可检测到该开发板的CPU及Flash类型。如果当前的Nand Flash正在启动则会无法检测,所以可以在Nor Flash启动时格式化Nand Flash让它无法启动,在对其进行烧写。点击Check后情况如下:点击Erase擦除后情况为:擦除成功了!这时你就无法再从Nand Flash启动了,Nand Flash里面啥也没有了!
点击此处下载本文档——>
- Mini2440学习I
- Mini2440学习 01
- MINI2440学习笔记(一)
- mini2440 clock学习
- Mini2440学习 GPIO
- mini2440学习步骤
- mini2440学习笔记
- mini2440学习入门
- Linux触摸屏驱动学习,mini2440
- Mini2440 按键驱动程序学习笔记
- mini2440--linux2.6.22学习记录
- 计划以mini2440学习Linux。
- mini2440-s3c2440 的 存储系统和I/O空间 认识
- mini2440学习笔记一 —— 基础
- mini2440学习之2440时钟配置解
- mini2440学习——uboot新手入门
- 友善之臂Mini2440开发板的存储系统及I/O空间总结(转)
- 友善之臂Mini2440开发板的存储系统及I/O空间总结(转)
- shell脚本
- 2013年完美世界校园招聘笔试题
- C++程序运行时内存布局之----------简单类实例,成员变量,成员函数,静态成员变量,静态成员函数
- Android WideVine
- linux文件下的权限
- Mini2440学习I
- 你懂得“下属”的想法吗?
- 【数据库编程标准规范系列】之第六章:对错误的处理
- linux——————vi编辑器的使用
- 【转载】开源且免费软件包分类列表
- shell
- linux——————grub的简介
- C# FUNC 应用
- 堆和栈的区别