西安欧亚学院本科毕业论文(设计)
4.2.1 J-Link ARM主要特点
? IAR EWARM集成开发环境无缝连接的J-Link仿真器。
? 支持所有ARM7/ARM9内核的芯片,以及cortexM3,包括Thumb模式。 ? 支持ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有的开发环境。 ? 下载速度高达ARM7:600kB/s,ARM9:550kB/s,通过DCC最高可达800kB/s。 ? 最高JTAG速度12MHz。
? 开发板安全电压区间1.2V–3.3V,兼容5V。 ? 自动快速识别功能。
? 监测所有J-Link信号和开发板电压。 ? 可以实现即插即用。 ? 使用USB电源。
? 带USB连接线和20芯扁平电缆。 ? 支持多J-Link器件串行连接。 ? 标准20芯J-Link仿真插头。 ? 选配14芯J-Link仿真插头。
? 带J-LinkTCP/IPserver,允许通过TCP/IP网络使用J-Link。 4.2.2 J-Link支持ARM内核
? ARM7TDMI(Rev 1) ? ARM7TDMI(Rev 3) ? ARM7TDMI-S(Rev 4) ? ARM720T/ARM920T ? ARM926EJ-S ? ARM946E-S ? ARM966E-S ? ARM11 ? Cortex-M3
表4-1 速度信息
Revision J-Link Rev. 1-4 J-Link Rev. 5-8 J-Trace Rev. 1 ARM7 Memory download 150.0 kB/s (4MHz JTAG) 720.0 kB/s (12MHz JTAG) 420.0 kB/s (12MHz JTAG) ARM9 Memory download 75.0 kB/s (4MHz JTAG) 550.0 kB/s (12MHz JTAG) 280.0 kB/s (12MHz JTAG 4.2.3 J-Link在IAR开发环境调试过程
17
西安欧亚学院本科毕业论文(设计)
在IAR既可以使用IAR提供的JLINK的驱动,也可以使用RDI接口的驱动,推荐使用RDI接口的驱动,因为IAR版本的JLINK对速度和功能做了限制。
首先打开一个工程,然后按照下图开始进入设置页面:
图4-4 选项设置界面
图4-5 选项设置界面
18
西安欧亚学院本科毕业论文(设计)
5 程序设计
5.1 LPC1768芯片底层代码
ARM芯片开发应用的重要环节之一底层开发,即用汇编和C语言混合编程来启动代码,系统配置及部份启动代码程序如下:
config.h
#ifndef __CONFIG_H #define __CONFIG_H #ifndef TRUE #define TRUE 1 #endif
#ifndef FALSE #define FALSE 0 #endif
typedef unsigned char uint8; /* 无符号8位整型变量 */ typedef signed char int8; /* 有符号8位整型变量 */ typedef unsigned short uint16; /* 无符号16位整型变量 */ typedef signed short int16; /* 有符号16位整型变量 */ typedef unsigned int uint32; /* 无符号32位整型变量 */ typedef signed int int32; /* 有符号32位整型变量 */ typedef float fp32; /* 单精度浮点数(32位长度) */ typedef double fp64; /* 双精度浮点数(64位长度) */ #include \#include \
#include \ // ARM核特征头函数
/*****************************************************************************
系统时钟配置:Fosc、Fcclk、Fcco、Fpclk/
*****************************************************************************/
#define Fosc 12000000 // 时钟频率:12MHz(晶振频率范围:10MHz~25MHz)。
#define Fcclk (Fosc*5) // 系统时钟:60MHz(系统频率范围:Fcclk=(1~32)*Fosc,且<=60MHZ)。
19
西安欧亚学院本科毕业论文(设计)
#define Fcco (Fcclk*4) // 流控振荡频率:240MHz(允许频率范围:Fcco=156MHz~320MHz,且必须为Fcclk的2、4、8、16倍)。
#define Fpclk (Fcclk/4)*2 // 外设时钟频率:30MHz(Fpclk必须为 (Fcclk/4)的 1、2、4 倍,且不能高于Fcclk)。
#define KOM_H IO1SET_bit.P1_24=1; #define KOM_L IO1CLR_bit.P1_24=1; void ZLG7289_cmd_dat(char cmd, char dat); void ZLG7289_Init(); #endif 部份启动代码
MODE_MSK DEFINE 0x1F
USR_MODE DEFINE 0x10 FIQ_MODE DEFINE 0x11 IRQ_MODE DEFINE 0x12 SVC_MODE DEFINE 0x13 ABT_MODE DEFINE 0x17 UND_MODE DEFINE 0x1B SYS_MODE DEFINE 0x1F mrs r0,cpsr bic r0,r0,#MODE_MSK orr r0,r0,#SVC_MODE msr cpsr_c,r0 ldr sp,=SFE(SVC_STACK) bic r0,r0,#MODE_MSK orr r0,r0,#ABT_MODE msr cpsr_c,r0 ldr sp,=SFE(ABT_STACK) bic r0,r0,#MODE_MSK orr r0,r0,#UND_MODE msr cpsr_c,r0 ldr sp,=SFE(UND_STACK) bic r0,r0,#MODE_MSK orr r0,r0,#FIQ_MODE msr cpsr_c,r0 ;//设置比特位CPSR模式 ;//用户模式
;//快速中断请求模式 ;//中断请求模式 ;//管理模式 ;//终止模式 ;//未定义模式 ;//系统模式 ;//原始PSR值 ; //清除模式位 ; //设置管理模式位 ; //改变模式
; //SVC_STACK结束 ; //清除模式位 ; //终止模式设置位 ; //改变模式
; //ABT_STACK结束 ; //清除模式位 ; //未定义模式设置位 ; //改变模式 ; //UND堆栈结束 ; //清除模式位 ; //设置有限脉冲响应位 ; //改变模式位
20