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中运行程序,加油少年!
之前一直在使用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中运行程序,加油少年!
相关文章推荐
- 在sdram中运行的linux内核和文件系统烧写到flash中的方法
- TQ2440调试心得-2.1例程运行不了
- 关于Tq2440流水灯才行直接下载到sdram和nand中运行的区别
- 使用J-Link v8和u-boot烧写裸机程序到s3c2440的nand flash(这里假设nor flash已经烧进了u-boot)
- stm32系统在线调试时程序运行正常输出正常,但是一旦把程序烧写进去则输出不正常
- 用Keil-MDK开发TQ2440裸机程序入门教程(把裸机程序下载到Nor Flash中!)
- stm32系统在线调试时程序运行正常输出正常,但是一旦把程序烧写进去则输出不正常
- s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
- mini2440裸机程序时ADS调试开始全速运行不进main断点问题
- Keil MDK使用J-LINK分别在Sram,Nor Flash以及Sdram中调试代码的原理和方法
- MDK972-EK开发板裸调试设置和裸机程序烧写(转)
- arm:jlink调试和直接烧写运行的不同 [mdk s3c2440]
- Keil MDK使用J-LINK分别在Sram,Nor Flash以及Sdram中调试代码的原理和方法
- 4.mini2440存储器测试,包括sdram、nor flash和eeprom(裸机)
- 一键烧写Linux,USB烧写Linux,裸机调试准备
- s5pv210运行裸机程序的方法之在SDRAM(DDR2)中运行
- 下载uboot的调试版本到开发板的sdram中运行
- CTDB运行调试
- 调试运行localized的程序
- 使用WebStorm创建/运行/调试React Native项目