×
单片机 > 单片机程序设计 > 详情

利用ADS1.2和JLINK V8搭建ARM7开发平台

发布时间:2024-05-14 发布时间:
|

硬件资源:一块以ARM7(LPC2119)为核心的电路板,Jlink v8仿真器,LONGWEIPS-305DM直流稳压电源,笔记本电脑(安装win7旗舰版)


软件资源:ADS1.2 Jlink v8驱动Setup_JLinkARM_V408i


最近需要用到LPC2119这款芯片,可手头没有这款芯片的仿真器,上网一查周立功公司的仿真器AK100某宝上最便宜也要1.8K,这个....囊中羞涩啊。LZ我忽然想到以前用ADS1.2搞S3C2440开发时用的是Jlink v8仿真器,这个仿真器能不能用到LPC2119这款芯片呢?于是乎赶忙问度娘,查资料得知有Jlink v8支持LPC2119芯片,欣喜万分,立马开始尝试。

由于我现有的电路板上已经焊好了下载插槽为单排8针插槽,和我现有的Jlink v8 2*4插槽无法搭配使用,但是Jlink v8仿真器的转接板上有2*7 、2*10等多种插针,于是乎我就拿现有的杜邦线从转接板的插针引出,而杜邦线也插上一排插针,将转接板上引出的线和电路板插槽一一对应上(nTRST、TDI、TMS、TCK、RTCK、TDO、nRST、VDD)。将线练好,电路板上电,启动ADS方针DEBUG(前提是安装好JLINK驱动,并配置好,可百度Jlink v8 用户手册,上面有详细操作教程),发现报错,一直出现low voltage,这下子可把我弄懵了,我查是否线没接好、芯片供电是否正常....搜百度搜了很多资料 没有相关解释,没办法我又仔细研究Jlink v8的硬件结构,一个个端口测试电压 是否正常,最后发现有Jlink v8上有个Vref 一直为低,而看数据手册上应该与Vdd相连 为3.3v,于是将Vref飞线连上了Vdd3.3v,问题解决了.....可是留下一个问题,为什么我以前用Jlink v8烧写S3C2440程序时没有报错呢??


当我编好程序down到目标板,嘿,又给我出难题了。进不了中断,这可我接纳闷了,赶紧找原因,首先检查一遍中断的相关初始化程序是否有误,是否屏蔽中断,没问题,看看内存里面中断标志是否置位,奇了怪了,我中断标志是置位了,可是就是进不了中断服务程序,查看其它与中断相关的寄存器,发现CPSR寄存器有异常。这下就和ARM7的启动代码相关了,搜寻网络资料发现,可能引起无法触发中断的可能原因有以下两点


1.请注意你的程序调试方式选择,若选择DebugInFlash或RelInFlash,程序入口地址应为:0x00000000;若选择DebugInRam,程序的入口地址应为:0x40000000。


我下载的周立功的工程模板,里面已经将入口地址正确设置了,所以排除了这个原因。


2.在Startup.s文件中初始化堆栈函数设置有误


我下载的原版的工程模板中代码如下


InitStack

MOV R0, LR

;Build the SVC stack

;设置管理模式堆栈

MSR CPSR_c, #0xd3

LDR SP, StackSvc

;Build the IRQ stack

;设置中断模式堆栈

MSR CPSR_c, #0xd2

LDR SP, StackIrq

;Build the FIQ stack

;设置快速中断模式堆栈

MSR CPSR_c, #0xd1

LDR SP, StackFiq

;Build the DATAABORT stack

;设置中止模式堆栈

MSR CPSR_c, #0xd7

LDR SP, StackAbt

;Build the UDF stack

;设置未定义模式堆栈

MSR CPSR_c, #0xdb

LDR SP, StackUnd

;Build the SYS stack

;设置系统模式堆栈

MSR CPSR_c, #0xdf

LDR SP, =StackUsr

MOV PC, R0


最后一句 MSR CPSR_c,#0xdf。这就出问题了,将IRQ中断屏蔽掉了,本人汇编都还给老师了,所以就不在此贻笑大方了。关于启动代码解读可参考:/zixunimg/eeworldimg/blog.chinaunix.net/uid-22124213-id-403007.html

将上面代码改为以下:


InitStack

MOV R0, LR

;Build the SVC stack

;设置管理模式堆栈

MSR CPSR_c, #0xd3

LDR SP, StackSvc

;Build the IRQ stack

;设置中断模式堆栈

MSR CPSR_c, #0xd2

LDR SP, StackIrq

;Build the FIQ stack

;设置快速中断模式堆栈

MSR CPSR_c, #0xd1

LDR SP, StackFiq

;Build the DATAABORT stack

;设置中止模式堆栈

MSR CPSR_c, #0xd7

LDR SP, StackAbt

;Build the UDF stack

;设置未定义模式堆栈

MSR CPSR_c, #0xdb

LDR SP, StackUnd

;Build the SYS stack

;设置系统模式堆栈

MSR CPSR_c, #0x5f

LDR SP, =StackUsr

MOV PC, R0


实际就是降0xdf换为0x5f即可。


改完后,下载,调试,顺利进入中断....


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR单片机语音识别电路模块设计