ARM学习-RealView_MDK+Jlink+TQ2440_调试笔记
- 格式:pdf
- 大小:271.20 KB
- 文档页数:8
TQ2440开发板使用手册包含以下内容:一、硬件概述1. 开发板简介:TQ2440是一款基于Samsung S3C2440A处理器的ARM9开发板,配备了丰富的外围接口和扩展资源,适用于嵌入式系统学习和开发。
2. 硬件资源:TQ2440开发板提供了多种硬件资源,包括存储器、GPIO、UART、I2C、SPI、ADC、PWM、SD卡接口等。
3. 开发板结构:介绍了开发板的布局、主要芯片和接口的位置及功能。
二、开发环境搭建1. 开发工具:介绍了用于TQ2440开发板的开发工具,如交叉编译器、调试器等。
2. 开发环境配置:详细说明了如何配置开发环境,包括安装交叉编译器、设置环境变量等。
3. 编译和烧写程序:介绍了如何编译和烧写程序到TQ2440开发板上。
三、基础实验1. LED实验:通过控制GPIO口实现LED灯的亮灭。
2. UART实验:通过UART接口实现串口通信,可以与其他设备或电脑进行数据传输。
3. ADC实验:通过ADC接口采集模拟信号,并将其转换为数字信号进行处理。
4. PWM实验:通过PWM接口生成脉冲宽度调制信号,可用于电机控制等应用。
5. I2C实验:通过I2C接口实现与I2C设备的通信,如EEPROM、温度传感器等。
6. SPI实验:通过SPI接口实现与SPI设备的通信,如SD卡、FLASH等。
7. 中断实验:介绍了如何使用中断服务程序处理外部事件或定时任务。
8. SDRAM实验:通过操作SDRAM实现大容量数据的存储和访问。
9. FLASH实验:通过操作FLASH实现程序的固化和数据的非易失性存储。
四、高级应用1. Linux系统移植:介绍了如何在TQ2440开发板上移植Linux 操作系统。
2. 文件系统操作:介绍了如何在TQ2440开发板上实现文件系统的挂载和操作。
3. 网络通信:介绍了如何在TQ2440开发板上实现网络通信功能,包括以太网和WIFI等。
4. USB设备驱动:介绍了如何在TQ2440开发板上实现USB设备的驱动和应用。
JLINK调试友善之臂mini2440/micro2440一、准备工作1、USB线连接JLINK V8;2、将JLINK上的JTAG线连接到mini2440/micro2440开发板;3、将mini2440/micro2440开发板的启动模式(开关S2)切换到norflash启动模式;4、连接直连串口线;5、打开超级终端;6、打开电源开关。
二、调试步骤如下:1、打开J-Link GDB Server软件,软件打开后提示如下信息,则表示连接成功。
2、打开目录F:\ARMprj\mini2440\myled下的myled工程文件,该文件是ADS1.2下开发。
初始化文件库文件库文件包含头文件主函数,也就是我们要修改的3、编译文件,点击Project->make选项或者直接单击快捷方式编译单击编译快捷方式编译调试信息:0 表示没有错误,如果提示错误信息,程序上有问题1表示警告,这个一般没关系2表示显示信息4、在程序编译没有问题后,下一步就要进入调试了,单击菜单Project->Debug 或者单击进入调试界面,在AXD界面,单击菜单Options->Configure Target...,弹出如下界面:1、选中…\jlinkARM_v412\jlinkRDI.dll2、单击Configure按钮,对JLINK进行配置5、对JLINK进行配置,打开Init选项把2440的配置文件加载进来,该文件位于E:\J-link\脚本文件\s3c2440.setup下,如图所示:5、单击菜单Target->Connet ,连接开发板开始装载工程文件,如图所示:单击按钮,将2440配置加载进来 记得勾选 完成以上步骤后,点确认退出单击OK 退出6、加载工程成功后,单击菜单Execute->Go 或单击按钮,全速运行,一般主函数入口地址都设有断点,全速运行可以直接进入到主函数里,如图所示:提示找到CPU 内核和ID 号7、至此JLINK调试mini2440/Micro2440完成。
Realview MDK4.0 进行2440开发快速入门----苑臣芒(光芒)RealView MDK在中国推出已经有一段时间了,而且作为未来发展的趋势必将取代ADS1.2,成为工程师广泛应用的开发平台。
但是好多工程师还习惯于用ads环境来调试,编译,我以前也是,但毕竟ads软件已经没有技术支持了,这势必会在以后对开发工作有一定影响,ARM将Keil公司收购之后,正式推出了针对ARM微控制器的开发工具RealView Microcontroller Development Kit (简称RealView MDK 或者MDK),它将ARM开发工具RealView Development Suite(简称RVDS)的编译器RVCT与Keil的工程管理、调试仿真工具集成在一起,是一款非常强大的ARM微控制器开发工具。
所以将ads工程转成rvmdk工程势必会成为开发道路上的难题。
第一步:分析一下ads工程及环境。
这是我的工程文件,看一下ads的设置,首先是target setting选项,选择arm from elf接下来编译器选项总平台都选择arm920t,其余不需要修改。
如图其余几个编译器(c,c++)也相应都设置为arm920t,其他地方不需要动。
接下来就是关键的link选项了,最关键的是ro,这个是程序运行地址,也就是在ram的哪个地址运行,tq2440和mini2440都可以设置为0x30000000,也可以比这个数值稍微大些,看实际需要吧,我们设置为0x30000000.在option标签页中添加程序入口点,这个入口点就是主程序运行的第一条指令的地方,在2440init.s中可以找到是entry,所以这里填写“__ENTRY”接下来看lay out选项卡,设置如下:到这里,设置基本完工了,但还不能生成文件,在arm fromELF中我们选择plain binary,接可以生成与工程名字同名的bin文件了。
用RealView MDK与J-Link V7调试TQ2440的方法华南农业大学工程学院07 通信工程3 刘永鑫引言:由于本人是从51单片机开始入手ARM,对Keil自然有些不舍,而就目前而言MDK在功能上已经强于ADS1.2因此,决定从MDK开始写第一个ARM的底层代码。
另一方面,MDK 优于ADS的地方在于其启动汇编代码可以在图形化界面中配置而不用自己去写,因此对初学者毕竟有一定的好处。
但比较遗憾,关于RealView MDK的起步教程太少,因此想将自己两天来调试的经验总结一下,希望像刚刚起步的同学少走些弯路。
实验平台:TQ2440开发板RealView MDK 4.03 J-Link V7实验目的:让开发板上的LED闪烁实验步骤:1、安装并且让RealView MDK 及J-Link v7 正常工作2、新建工程,并且器件选择S3C2440A3、确认出现的对话框中以添加最基本的启动代码。
4、新建main.c保存并添加到工程中5、点击工具栏上按钮进入配置界面,6、进入“Debug”选项卡,选中使用J-Link调试器,Initialization File使用MDK提供的的文件,位置为C:\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky,本实验中为方便起见建议将其拷到工程目录下,并将此文件倒数第三行LOAD Obj\Blinky.axf INCREMENTAL // Download program。
中的Obj\Blinky.axf改为实际生成的映像名字7、从“Settings”按钮进入J-Link配置窗口,其中速度选择自动即可。
8、进入“Utilities”选项卡,按照下图配置即可9、选择“Settings”进入Flash Download Setup 并加入相应编程算法,由于MDK中不带板上标配的NOR Flash芯片编程算法,因此只是寻找了一个接近的来代用(编程下正常,但用MDK FLASH菜单中的ERASE命令进行擦除时会出现异常,原因待查)10、进入“Target”选项卡,根据开发板的配置时钟选12.0MHz11、如果你希望将程序下载到NOR Flash中运行(此时无法调试)按图1进行配置,如果你希望对程序进行跟踪调试,请按照图2进行配置,后面将会进行详细分析。
第一章MDK环境配置和LED闪烁1 安装Keil MDK2 新建工程选择Samsung->S3C2440A接着会问你是否添加启动代码,选OK3 新建文件->保存为b.c->添加到工程,如图4 天机如下代码//定义PORTB的控制寄存器地址#include<S3C2440.h>void delay(){int i, j;for(i = 0; i < 10000; i ++)for(j = 0; j < 50; j ++);}int main(){GPBCON = 0x155555;//配置protB的所有引脚为输出while(1){//点亮第一个小灯GPBDAT |= 0x1E0;GPBDAT &= 0x1C0;delay();//点亮第二个小灯GPBDAT |= 0x1E0;GPBDAT &= 0x1A0;delay();//点亮第三个小灯GPBDAT |= 0x1E0;GPBDAT &= 0x160;delay();//点亮第四个小灯GPBDAT |= 0x1E0;GPBDAT &= 0x0E0;delay();}return 0;}/*********************************************************************/其中S3C2440.h有IO口的定义,这里摘录出GPADAT和GPBDAT的定义// I/O port#define GPACON (*(volatile unsigned long *) 0x56000000)#define GPADAT (*(volatile unsigned long *) 0x56000004)#define GPBCON (*(volatile unsigned long *) 0x56000010)#define GPBDAT (*(volatile unsigned long *) 0x56000014)#define GPBUP (*(volatile unsigned long *) 0x56000018)在TQ2440中GPBDAT的第四位为LED控制位,与51不同的时,ARM的IO口的有多种工作方式,具体的以后再说,这里直接配置为输出口:GPBCON = 0x155555;//配置protB的所有引脚为输出除了配置以外ARM的IO口跟51几乎很相似哦。
学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因
在ARM + Linux 培训班学习,讲师一般首先讲解用ADS 或RealView MDK 去调试ARM 开发板。
原因在于:
1、掌握ARM 体系结构。
ARM 是一种计算机,掌握其体系结构也就是掌握ARM的工作原理。
在大学里一般会开设《微机原理》这门课程,讲解
x86计算机的工作原理,并学习x86汇编语言。
因为ARM与x86体系结构上的不同,所以学习ARM+Linux之前,要首先掌握ARM这种计算机的工作原理,并学习ARM汇编语言。
2、掌握ARM汇编语言。
众所周知,汇编语言是低级语言,与计算机硬件关系密切。
因为体系结构的不同,ARM汇编语言与x86汇编语言有很大的不同。
前几年有一本书《ARM体系结构与编程》专门讲解ARM体系结构与汇编语言,随着技术的发展,ARM汇编语言的参考书也越来越多。
掌握ARM汇编语言是学习ARM+Linux 的基础。
Linux中汇编语言用得不多,却都是启动时必须有的。
3、掌握ARM开发板的原理图。
电路板原理图是由做硬件的工程师画。
使用RealView MDK进行SW调试和实时跟踪STM32有两个调试端口,即JTAG和SW。
Keil 的ULINK2 USB-JATG接口适配器支持这两种调试接口。
本文描述了如何配置和使用SW接口来获取各种调试信息。
一、目标调试阶段的配置1.调试器的选择选择μVision->Debug ->Options for Target –>Debug,并选择ULINK Cortex Debugger调试器。
2.调试目标初始化文件按照路径\Keil\ARM\Startup\ST,将文件STM32DBG.ini拷贝到工程文件夹中。
选择μVision->Debug -> Options for Target –>Debug,同时在Initialization File选项中选择该文件。
3.Cortex-M 目标设备调试驱动配置选择Options for Target – Debug – Settings,设置SWJ,端口选择SW。
4.Trace功能的配置Trace功能包括:Core Clock, Trace Port 以及定义TraceEvents 等。
二、实时跟踪1.μVision的状态栏信息在μVision的状态栏中显示了实时跟踪的状态信息。
2.实时跟踪窗口调试时选择Peripherals – Trace。
1)Trace Records窗口该窗口显示了所有被捕获的跟踪记录,每一个跟踪记录都包含了详细的信息。
可以选择Peripherals - Trace – Records来查看。
2)Exception Trace 窗口该窗口显示了异常和中断的统计信息,这些信息是基于Trace Records中所捕获的跟踪记录的。
可以选择Peripherals - Trace - Exceptions来查看。
3)Event Counters窗口这个窗口显示了特殊事件计数器的值,计数值是基于Trace Records中所捕获的跟踪记录的。
移植基于ADS的Mini 2440代码到Keil MDK4.11环境(SDRAM调试,支持中断)Syd168@ QQ:174997990 2010年10月29日环境说明:⏹操作系统:XP SP3⏹Jlink驱动:4.08⏹Keil:MDK for ARM 4.11 Pro⏹终端连接:Xshell3.0⏹下载工具:DNW(Mini2440光盘提供)⏹开发板:Mini2440 (Mini 2440 /2M Nor Flash/64 SDRAM/256 NAND Flash)⏹S3C2440测试程序:2440test-20100609(Mini2440光盘提供)一、移植原因(略读)很多人在学习ARM的时候,都会学习ADS下跑裸奔程序。
ADS是ARM公司2001年推出的一款开发及调试的工具。
至今,仍然是很多ARM开发者的首选工具。
现如今,ARM公司已经不再支持或更新ADS了,取而代之的是DS-5、RVDS和MDK等几款软件。
和最新的这些工具相比较,ADS就显得有些小巫见大巫了。
而且,随着操作系统的不断升级,ADS的使用越来越麻烦,ADS在windows7下会莫名其妙地崩溃,连错误信息都没有,在XP下会时常蹦出个“无法打开…ses文件”,这让很多用户都很头疼(其实解决的办法很简单,只需要重新在AXD中配置一下调试工具,然后关闭再次启动调试即可)。
由于ADS本身的缺点,要实现联机调试,有时候很麻烦的。
尤其是下载到SDRAM中调试,笔者一直没有成功。
一气之下,才转入MDK。
其实,RealView MDK也是Keil公司的产品,它是在Keil被ARM公司()收购后开发的关于arm的新的开发环境,个人感觉它比ads1.2要好使的多。
RealView MDK有很多突出特点:1.启动代码生成向导,自动引导启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越多门槛。
RealView MDK的μVision4工具可以自动生成完善的启动代码,并提供图形化的窗口,可以很方便地进行修改启动配置参数(看门狗、内存配置、CPU速度配置等等)。
如何使用STM32F4的DSP库我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。
当遇到形如1.1+1.1的浮点数运算时,定点CPU就遇到大难题了。
对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。
现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。
我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。
前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。
首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。
在system_init()中,定义__FPU_PRESENT和__FPU_USED/* FPU settings------------------------------------------------------------*/#if (__FPU_PRESENT == 1)&& (__FPU_USED == 1)SCB->CPACR |= ((3UL<< 10*2)|(3UL << 11*2)); /*set CP10 and CP11 Full Access */#endif这样就使能了FPU。
对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。
但是对于复杂的如三角运算、开方运算等,我们就需要加入math.h头文件。
但是如果单纯的加入他,那么Keil会自动调用内部的math.h,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。
对于使用了FPU的STM32F4是没有任何作用的。
所以,需要将math.h换成ST的库,即arm_math.h。
在该头文件中,涉及到另一个文件core_cmx.h(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4.h即可。
ARM学习-RealView MDK+Jlink+TQ2440 调试笔记2010年5月29日lzz发表评论阅读评论调试环境软件:RealView MDK 4.03q硬件:JLINK v7,TQ2440开发板刚开始学习ARM无OS编程的时候用的是天嵌的TQ2440_Test工程,它是ads1.2的工程,可是我用的是windows7的操作系统,ads1.2比较老了在windows7下不太好使老是莫名奇妙的就崩了,弄的我很郁闷于是我就换了RealView MDK,可是关于RealView MDK的教程网上很少(可能是用的人还不太多)经过一个星期的学习大概熟悉了RealView MDK的环境,下面就记录下我的调试过程。
1.RealView MDK介绍2.Jlink 介绍3.创建RealView MDK 的led跑马灯工程4.调试程序1.关于RealView MDK其实RealView MDK也是Keil公司的产品,它是在Keil被ARM公司收购后开发的关于arm的新的开发环境,个人感觉它比ads1.2要好使的多。
RealView MDK有很多突出特点:启动代码生成向导,自动引导启动代码和系统硬件结合紧密,必须用汇编语言编写,因而成为许多工程师难以跨越多门槛。
RealView MDK的μVision3工具可以帮您自动生成完善的启动代码,并提供图形化的窗口,随您轻松修改。
无论对于初学者还是有经验的开发工程师,都能大大节省时间,提高开发效率。
软件模拟器,完全脱离硬件的软件开发过程RealView MDK的设备模拟器可以仿真整个目标硬件,包括快速指令集仿真、外部信号和I/O 仿真、中断过程仿真、片内所有外围设备仿真等。
开发工程师在无硬件的情况下即可开始软件开发和调试,使软硬件开发同步进行,大大缩短开发周期。
而一般的ARM开发工具仅提供指令集模拟器,只能支持ARM内核模拟调试。
性能分析器,看得更远、看得更细、看得更清RealView MDK的性能分析器好比哈雷望远镜,让您看得更远和更准,它辅助您查看代码覆盖情况,程序运行时间,函数调用次数等高端控制功能,指导您轻松的进行代码优化,成为嵌入式开发高手。
通常这些功能只有价值数千美元的昂贵的Trace工具才能提供。
Cortex-M3支持RealView MDK支持的Cortex-M3核是ARM公司最新推出的针对微控制器应用的内核,它提供业界领先的高性能和低成本的解决方案,未来几年将成为MCU应用的热点和主流。
目前国内只有ARM公司的MDK和RVDS开发工具可以支持Cortex-M3芯片的应用开发。
业界最优秀的ARM编译器——RealView 编译器,代码更小,性能更高RealView MDK的RealView编译器与ADS 1.2比较:代码密度:比ADS 1.2编译的代码尺寸小10%;代码性能:比ADS 1.2编译的代码性能高20%。
可以到KEIL的官方下载RealView MDK 下载的版本是试用版的有32K的代码限制可以在网上找个注册机,好像3.x的注册机就行。
2.关于JlinkJlink是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。
配合IAR EWARM,ADS,KELL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便,简单易学,是学习开发ARM的最实用的开发工具。
关于Jlink的特性可以参考SEGGER的官方介绍SEGGER3.创建跑马灯工程打开 Keil uVision4然后新建一个工程tq2440,然后选择CPU类型,这里我们选tq2440所使用的s3c2440a确定后会提示我们是否添加s3c2440的启动代码到我们的工程(这是RealView MDK 相对是ads1.2的一个特点它会自动生成相应CPU的启动代码,而且配置启动代码也很方便后面会讲到。
)这里我们选是这时候我们的工程就建好了,启动代码也有了,下面我们就看一下这个启动代码启动代码还不少啊,有1000多行,不要害怕其实代码并不多,你可以仔细看一下,有一多半都是注释,而且不用手动更改代码就能实现启动代码的配置,点上图中红色部分的Configuration Wizard 就可以图形方式对启动代码进行配置比如我们要配置看门狗定时器就可以选中Watchdog Time Setup,点开它左边的加号可以进行详细的设置,这里我们图省事把所有对钩都点上。
好了启动代码也配置好了,下面我们添加我们的led 跑马灯程序,我们在工程的目录下新建一个main.c文件然后把它添加到工程的源文件中来然后把下面的代码添加到main.c文件中1 2 3 4 5 6 7 8 91011121314151617 //定义PORTB的控制寄存器地址#define GPBCON (*(volatile unsigned *) 0x56000010) #define GPBDAT (*(volatile unsigned *) 0x56000014) #define GPBUP (*(volatile unsigned *) 0x56000018)void delay(){int i, j;for(i =0; i <10000; i ++)for(j =0; j <50; j ++);}int main(){GPBCON=0x155555;//配置protB的所有引脚为输出18 1920 2122 23 24 25 26 27 28 29 30 31 3233 343536373839 40 41 42while (1){ //点亮第一个小灯GPBDAT|= 0x1E0; GPBDAT&= 0x1C0; delay ();//点亮第二个小灯GPBDAT |= 0x1E0; GPBDAT &= 0x1A0; delay ();//点亮第三个小灯 GPBDAT |= 0x1E0; GPBDAT &= 0x160; delay ();//点亮第四个小灯GPBDAT |= 0x1E0;GPBDAT &= 0x0E0;delay ();}return 0; } 好了,代码都全了,下面我们配置编译和连接选项,我们选择工程属性然后选Target选项按下图设置在Output选项中选上Create HEX File就行了,其它的选项先不用管,然后我们按F7试着Build下,查看输出信息,已经成功了只有一个Warning不能管它。
从上图我们可以看到hex文件已经生成了,还告诉我们,我们的代码大小为920字节,只读数据为16字节,可读写数据为0,ZI数据为1256字节。
好,下面我们就把它烧到我们的开发板中。
我们还需要配置一下烧写选项我们还是选择工程属性然后选Utilities选项然后在烧写选项中选J-LINK/J-Trace,然后去掉Update Target before Debugging选项,最后点Settings添加烧写算法,这里没有针对我们的norflash EN29LV160AB 的算法,我们只选一个相近的如我选的是AM29F160DBFlash,但是这个算法只能烧写不能擦除(有兴趣的话可以自己写一个烧写算法)。
好了万事具备只欠JLINK了,不过在烧写之前请确认你已经安装了JLINK的驱动,JLINK的驱动可以到SEGGER官方下载Software and documentation pack V4.14b ,驱动安装好了以后我们接上开发板,然后在把开发板的启动方式改为从norflash启动,然后启动开发板,最后点Download,如果没有意外的话,你就可以看到led的开始闪了。
4.调试跑马灯程序光能下载可不行,我们最主要的是能调试,下面我们看看怎么在RealView MDK下调试程序,其实RealView MDK的高度功能要比ads1.2好用的多。
我们打开工程属性先Debug选项然后选择Use J-LINK/J-Trace,然后点Settings,在其中选择JTAG Speed为Auto Selection,先择Reset Strategy为Hardware,halt with BP@0。
最后选上Run to main(),这样在调试的时候会自动停到我们的main函数入口。
此外我们不需要一个调试初始化文件,这个文件不用写,我们可以在RealView MDK的例子中找到它,比如在我机子上是D:\Tool\Electronic\RealViewMdk\ARM\Boards\Samsung\S3C2440\RTX_Blinky下的Ext_ARM.ini,我们把它拷到我们的工程目录下然后在Initialization File中选择它就OK了。
还有一个地方我们得改就是程序的内存地址,刚刚我们烧写的时候用的是起始地址为0大小2M的设置,而这个地址0对应的正好是我们的norflash的地址。
而现在我们调试的时候是直接把代码载入到内存(也就是sdram)中,在s3c2440上它对就的地址是0×30000000所以我们要把ROM的起始地址改为0×3000000,相应的RAM起始地址改为0×30200000,大小不变。
好了,调试选项都设置好了,我们开始调试,如果没有意外的话会出现下面所示我们可以看到它的调试环境很友好,很像vs之类的,左边是各个寄存器的值右上是汇编代码,下面是对应源码当前指针停在main中,我们可以单步调试,还可以下断点。
还可以查看内存之类的信息等。
如果我们没有JLINK还可以用RealView MDK自带的仿真器方法是在Debug选项中选择Use Simulator选项就可以了。
如果出现了*** error 65: access violation at 0×53000008 : no ‘write’ permission类似这样的的错误,可以试着去掉启动代码中的看门狗和时钟的设置。
附上跑马灯的工程。