您的位置:首页 > 其它

TQ2440 加Ulink2 裸机SDRAM调试和NOR Flash烧写运行

2015-01-20 16:01 387 查看
/*******第一次在CSDN大神云集的地方写博客,为了监督自己学习,记录学习中遇到的问题,也希望能给大家有所帮助********/

之前一直在使用STC单片机和DSP进行开发,但是学习嵌入式如果不学习ARM实在是不能够,所以最近从师兄那里拿了天嵌TQ2440开发板进行学习,拿到手发现配套的资料都是基于ADS1.2的,但是ADS应该逐渐会被ARM公司放弃了,所以我去Keil的官网下载了最新的MDK 4.74进行调试(应该是4系列的最新版本)。

之前一直在使用Keil C51进行单片机程序开发,感觉非常简单,但是初步使用MDK感觉还是不太熟悉。经过一下午折腾,终于实现了在MDK下对开发板的SDRAM调试和NOR Flash 的下载运行。这里简单记录分享下:

1.最开始的时候使用JLink无法调试和下载,报错说我的JLink是clone克隆版本,然后就退出了。这个是由于Segger公司开始打击盗版,所以盗版的Jlink(如果JLink的驱动的版本过高会存在问题,4.08i版本的应该可以,所以最好不要更新)可能会无法使用,我从网上查了一些资料,很多大神说需要刷JLink的固件,我选择了另外的一个方法,用旧版的JL2CM3.dll和JLinkARM.dll文件替换现在keil安装目录\Keil\ARM\Segger下的同名文件,问题解决。这里附上可用的dll文件
http://download.csdn.net/detail/u013622200/8380241
2.因为一开始的时候JLink存在问题,后来发现实验室中竟然有一条ULink2,所以干脆就直接先使用ULink2进行调试了!Ulink因为本身是ARM公司开发的,所以说和MDK的配合应该是非常好的,但是和IAR可能不能通用(没用过IAR,猜测),实际使用过程中发现在MDK下Ulink2的下载和调试速度比JLink快不少!

3.在ULink下进行SDRAM中的调试

因为用习惯了DSP进行调试,使用的都是片上的RAM和Flash,一拿到S3C2440的手册一看吓到了,片上没有RAM(只有一块4K的RAM作为NAND Flash 的StepStone)和Flash,都需要使用片外的SDRAM和Flash,感觉这个应该算是一个飞跃,ARM9已经算是处理器的级别,比Cortex-m3有了较大提升。

所以先建立一个工程,选择S3C2440芯片,然后直接系统添加S3C2440.s启动文件(启动文件很重要的,以后还需要进一步学习),然后添加main.c文件,这些步骤和C51环境下都相同的~然后接下来最重要的是需要对target的options进行设置,主要有以下关键点:

(1)在target选项卡中将Start的rom地址起始设置为0x30000000,长度为0x200000 2M长度,如下所示:



(2)设置Debug选项卡,如下所示,这里要非常注意的是必须要有Ext_Ram.ini初始化文件,否则的话是不能够正常进行调试的!因为这个初始化文件需要将RAM在使用之前初始化好,需要进行基本的初始化设置,另外,对于低版本的MDK,在\Keil\ARM\Boards\Samsung目录下有S3C2440的文件夹,直接将里面的Ext_Ram.ini文件复制到你的工作目录下,然后一定要记住将倒数第三行的.axf编译文件的地址修改成你的程序的地址(.axf文件和.bin文件都是编译生成的,前者含有的内容更多,还含有其他的调试信息);对于我的MDK版本为4.74,所以在\Keil\ARM\Boards\Samsung目录下没有S3C2440的文件夹,所以需要下载一个Ext_Ram.ini文件,这里也附上下载链接
http://download.csdn.net/detail/u013622200/8380245


其他的和C51一样,如果需要生成.hex文件需要在output中进行修改。然后这样就可以直接点击Debug进行调试了,如下图,可以设置断点,查看寄存器等等:



写一个最简单的点流水灯的程序,然后debug就可以看到运行的效果了。

4.在SDRAM中运行之后接下来需要考入到NOR Flash中运行,这里首先需要注意的是NOR Flash和NAND Flash 的区别,前者可以直接运行程序,但是容量较小,后者容量较大,主要用来存储数据,如果需要从NAND Flash中进行启动需要Bootloader的引导才可以,这个还是需要研究的!这里只简单说明如何直接将程序下载到核心板NOR Flash中然后断电直接运行:

(1)将Startup的ROM地址进行修改,之前是在SDRAM中调试,起始地址为0x3000000,而在NOR Flash运行的时候的起始地址位0x0,长度同样设置为2M,然后将RAM的地址可以修改成0x30000000,如下图:



(2)这个是Flash下载的关键,需要选择合适的下载算法,在utilities选项卡中需要进行烧写算法的选择,这里需要注意的是由于没有直接在NOR flash中烧写的算法(只有一个S3C2440的NAND Flash烧写算法),我们就选择了2M(选择4M也可以,前面的ROM相应修改就可以)的类似的烧写算法,如果烧写算法选择的不对是无法正常下载的NOR flash中运行的,如下所示,注意开发板上也需要选择到NOR flash,这就体现出了NORflash比NAND
flash的优势,但是NAND Flash是主流和趋势:



(3)点击Load的按钮,然后程序就可以直接下载到NOR Flash中运行了!

总结一下,经过一些摸索,最终实现了在SDRAM中的在线调试和在NORFlash的烧写运行,也没有关注到底ARM的启动是怎么的过程,硬是把功能强大的处理器用成了51单片机,也是醉了~~~~~不过先可以运行程序之后,以后就需要好好研究下ARM的启动了,还有如何在NANDFlash中运行程序,加油少年!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: