博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
s3c6410的裸机中断点灯
阅读量:5056 次
发布时间:2019-06-12

本文共 1509 字,大约阅读时间需要 5 分钟。

s3c6410在裸机下用中断点灯

声明:

1.程序中部分源码来自网络.不清楚是否可以商用,请自行考虑.

2.如需署名,请邮件通知我.

3.如需源码,请邮件索取.(不懂怎么传附件下载)

1.硬件

FriendlyARM的tiny6410 ram128 flash256

2.软件

Eclipse + yagarto

3.调试器

Jlink 4.32a

4.过程

4.1 IDE

eclipse + yagarto IDE的搭建可以参考yagarto的网站. 德国人这么方面真不错.

整个介绍都很详细.不过给出的例子中没有arm11. 可在给出的例子基础上进行修改.

4.2中断方法

网上讲的很多,googl看看就知道什么道理了.指出两点:1. 打开VIC的控制器.可在startup.s中,或者在c程序中.2.看看cpsr中是否禁止了IRQ的中断.

我当时就卡在这个地方了.

1     /* Enable VIC Port */ 2     MRC     p15,0,r0,c1,c0,0 3     ORR     r0,r0,#(1<<24) 4     MCR     p15,0,r0,c1,c0,0

1 #define IRQ_MASK 0x00000080  2  3 static inline unsigned asm_get_cpsr(void)  4 {
5 unsigned long retval; 6 asm volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ ); 7 return retval; 8 } 9 10 static inline void asm_set_cpsr(unsigned val) 11 {
12 asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (val) ); 13 } 14 15 unsigned EnableIRQ(void) 16 {
17 unsigned _cpsr; 18 19 _cpsr = asm_get_cpsr(); 20 asm_set_cpsr(_cpsr & ~IRQ_MASK); 21 return _cpsr; 22 } 23 24 unsigned DisableIRQ(void) 25 {
26 unsigned _cpsr; 27 28 _cpsr = asm_get_cpsr(); 29 asm_set_cpsr(_cpsr | IRQ_MASK); 30 return _cpsr; 31 } 32 33 unsigned RestoreIRQ(unsigned oldCPSR) 34 {
35 unsigned _cpsr; 36 37 _cpsr = asm_get_cpsr(); 38 asm_set_cpsr((_cpsr & ~IRQ_MASK) | (oldCPSR & IRQ_MASK)); 39 return _cpsr; 40 }

其他的地方网上都有讲.我就不罗嗦了.

5.问题

在单步调试的时候,中断无法返回.全速运行就没有问题.可能是我对中断的理解有误.有时间在单片机上试试,这东西我比较了解.

转载于:https://www.cnblogs.com/darwin/archive/2011/09/04/2166108.html

你可能感兴趣的文章
Spring框架IOC容器和AOP解析(转)
查看>>
为程序员的浩浩荡荡再加份力量
查看>>
批处理制作教程
查看>>
评价使用的输入法
查看>>
char的本质
查看>>
对回溯算法的理解(以数独游戏为例,使用c++实现)
查看>>
PHP_EOL
查看>>
Redis 基本命令
查看>>
软件测试基础 - 缺陷管理
查看>>
操作系统面试
查看>>
java-大数据运算
查看>>
谜题48:我所得到的都是静态的
查看>>
Remove Linked List Elements
查看>>
Effective java -- 7 通用程序设计
查看>>
Oracle数据库数据字典学习
查看>>
如何删除Sitecore CMS中的项目
查看>>
谷歌Chrome浏览器离线安装包
查看>>
java基础:包装类
查看>>
Mysql中文乱码
查看>>
XILINX FFT IP仿真 (二)
查看>>