ARM学习-RealView MDK+Jlink+TQ2440 调试笔记

ARM学习-RealView MDK+Jlink+TQ2440 调试笔记
ARM学习-RealView MDK+Jlink+TQ2440 调试笔记

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.关于 Jlink 关于 Jlink 是 SEGGER 公司为支持仿真 ARM 内核芯片推出的 JTAG 仿真器。配合 IAR EWARM,ADS, KELL,WINARM,RealView 等集成开发环境支持所有 ARM7/ARM9 内核芯片的仿真,通过 RDI 接口和各集成开发环境无缝连接,操作方便,简单易学,是学习开发 ARM 的最实用的开发工具。关 于 Jlink 的特性可以参考 SEGGER 的官方介绍 SEGGER
3.创建跑马灯工程 创建跑马灯工程 打开 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 9 10 11 12 13 14 15 16 17
//定义 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 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 } return 0; } //点亮第四个小灯 GPBDAT |= 0x1E0; GPBDAT &= 0x0E0; delay(); //点亮第三个小灯 GPBDAT |= 0x1E0; GPBDAT &= 0x160; delay(); GPBDAT |= 0x1E0; GPBDAT &= 0x1A0; delay(); //点亮第二个小灯 while(1) { //点亮第一个小灯 GPBDAT |= 0x1E0; GPBDAT &= 0x1C0; delay();
好了,代码都全了,下面我们配置编译和连接选项,我们选择工程属性

然后选 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 类似这样的的错误,可以试着去掉启动代码中的看门狗和时钟的设置。 附上跑马灯的工程

流体力学总结

流体力学总结 [题型]:简答题 流体静压强实验的操作步骤, 答案:(1)搞清仪器组成及其用法;(2)检查仪器是否密封,将阀门关闭,加压后检查测管液面高程是否恒定,若下降,表明漏气,应查明原因并加以处理;(3)量测点静压强(各点压强用厘米水柱高表示);(4)打开排气阀,记录水箱液面标高?0和各测压管液面标高?H (?H =0);(5) 关闭排气阀,用加压器缓慢加压,U形管出现压差?h。在加压的同时,观察左侧? A1、A2、B1、B2管的液柱上升情况,由于水箱内部的压强向各个方向传递,在左侧的测压管中,可以看到由于A、B两点在水箱内的淹没深度h不同,在压强向各点传递时,先到A点后到B点。在测压管中反应出的是A1管的液柱先上升,而B1管的液柱滞后一点也在上升,当停止加压时,A1、B1两点在同一水平面上, A2、B2两点与水箱内液面在同一水平面上,测记?0及各?H(此过程反复进行3 次;(6)打开排气阀,使液面恢复到同一水平面上。关闭排气阀,打开密闭容器底部的水门,放出一部分水,造成容器内压力下降,观察U形管中液柱的变化情况,测记?0及各?H(此过程反复进行3次)。 难度:1 分数:100 所属知识点: 知识体系/建筑系/土木专业/《流体力学》/流体动力学 [题型]:简答题 雷诺方程演示实验的操作步骤, 答案:(1)测记本实验的有关常数;(2)观察两种流态;(3)打开开关3使水箱充水至溢流水位,经稳定后,微微开启调节阀9,并注入颜色水于实验管内,使颜色水

流成一直线。通过颜色水质点的运动观察管内水流的层流流态,然后逐步开大调节阀,通过颜色水直线的变化观察层流转变到紊流的水力特征,待管中出现完全紊流后,再逐步关小调节阀,观察由紊流转变为层流的水力特征;(4)测定下临界雷诺数;(5) 将调节阀打开,使管中呈完全紊流,再逐步关小调节阀使流量减小。当流量调节到使颜色水在全管刚呈现出一稳定直线时,即为下临界状态;(6)待管中出现临界状态时,用体积法或重量法测定流量;(7)根据所测流量计算下临界雷诺数,并与公认值(2320)比较,偏离过大,需重测;(8)重新打开调节阀,使其形成完全紊流,按照上述步骤重复测量不少于三次;(9)同时用水箱中的温度计测记水温,从而求得水的运动粘度。难度:1 分数:100 所属知识点: 知识体系/建筑系/土木专业/《流体力学》/流体动力学 [题型]:简答题 流体力学综合实验的操作步骤, 答案:(1)测记本实验的有关常数;(2)打开电子调速器开关,使恒压水箱充水,排除实验管道中的滞留气体,待水箱溢流后,检查泄水阀全关时,各测压管液面是否齐平,若不平,则需排气调平;(3)打开泄水阀至最大开度,待流量稳定后,测记测压管读数,同时用体积法测记流量;(4)改变泄水阀开度3,4次,分别测记测压管读数及流量;(5) 实验完成后关闭泄水阀,检查测压管液面齐平后再关闭进水阀。 难度:2 分数:100 所属知识点: 知识体系/建筑系/土木专业/《流体力学》/流体动力学 [题型]:简答题 能量方程演示实验的操作步骤,

流体动力学

1.2 流体动力学 本节重点:连续性方程与柏努利方程。 难点:柏努利方程应用:正确选取截面及基准面,解决流体流动问题。 1.2.1 流体的流量与流速 1.流量 体积流量 单位时间内流经管道任意截面的流体体积,称为体积流量,以V S 表示,单位为m 3/s 或m 3/h 。 质量流量 单位时间内流经管道任意截面的流体质量,称为质量流量,以m S 表示,单位为kg/s 或kg/h 。 体积流量与质量流量的关系为 ρs s V m = (1-15) 2.流速 平均流速 流速是指单位时间内流体质点在流动方向上所流经的距离。实验发现,流体质点在管道截面上各点的流速并不一致,而是形成某种分布。在工程计算中,为简便起见,常常希望用平均流速表征流体在该截面的流速。定义平均流速为流体的体积流量与管道截面积之比,即 A V u s = (1-16) 单位为m/ s 。习惯上,平均流速简称为流速。 质量流速 单位时间内流经管道单位截面积的流体质量,称为质量流速,以G 表示,单位为kg/(m 2·s )。 质量流速与流速的关系为 ρρ u A V A m G s s === (1-17) 流量与流速的关系为 GA uA V m s s ===ρρ (1-18) 3.管径的估算

一般化工管道为圆形,若以d 表示管道的内径,则式(1-16)可写成 2 4 d V u s π = 则 u V d s π4= (1-19) 式中,流量一般由生产任务决定,选定流速u 后可用上式估算出管径,再圆整到标准规格。 适宜流速的选择应根据经济核算确定,通常可选用经验数据。通常水及低粘度液体的流速为1~3m/s ,一般常压气体流速为10饱和蒸汽流速为20~40 m/s 等。一般,密度大或粘度大的流体,流速取小一些;对于含有固体杂质的流体,流速宜取得大一些,以避免固体杂质沉积在管道中。 例 某厂要求安装一根输水量为30m 3/h 的管道,试选择一合适的管子。 解:取水在管内的流速为1.8m/s ,由式(1-19)得 mm 77m 077.08 .114.33600 /3044==??== u V d s π 查附录低压流体输送用焊接钢管规格,选用公称直径Dg80(英制3″)的管子,或表示为φ88.5×4mm ,该管子外径为88.5mm ,壁厚为4mm ,则内径为 mm 5.80425.88=?-=d 水在管中的实际流速为 m/s 63.10805.0785.03600 /304 2 2 =?= = d V u S 在适宜流速范围内,所以该管子合适。 1.2.2 定态流动与非定态流动 流体流动系统中,若各截面上的温度、压力、流速等物理量仅随位置变化,而不随时间变化,这种流动称之为定态流动;若流体在各截面上的有关物理量既随位置变化,也随时间变化,则称为非定态流动。 如图1-11所示,(a )装置液位恒定,因而流速不随时间变化,为定态流动;(b )装置流动过程中液位不断下降,流速随时间而递减,为非定态流动。

相关文档
最新文档