2440 keil 如何设置中断服务函数?

[复制链接]
11294|25
 楼主| Lyc1992 发表于 2013-1-29 23:31 | 显示全部楼层 |阅读模式
这个要改启动代码吗?
进入中断入口地址后,程序是怎么运行的呢?  外部中断服务函数应该怎么写才能让程序进入中断呢?
阿南 发表于 2013-1-30 11:31 | 显示全部楼层
这个和Keil关系不在,ADS也是一样的,参考下ADS上的吧。启动代码部分需要中断向量表
Xplain 发表于 2013-1-30 22:33 | 显示全部楼层
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做,
extern unsigned int *HandleEINT0;

*HandleEINT0 = EINT0_isr;
EINT0_isr为你的EINT0的中断处理函数

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
inurl 发表于 2013-1-31 08:29 | 显示全部楼层
Xplain 发表于 2013-1-30 22:33
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做, ...

楼上的用的什么工程模板?
 楼主| Lyc1992 发表于 2013-1-31 10:30 | 显示全部楼层
Xplain 发表于 2013-1-30 22:33
2440的中断服务程序入口在2440init.s里边定义,如果你要设置EINT0的中断处理函数,可以在C文件里边这样做, ...

你这个是由ads移植过来的吧,没有用keil的启动代码吗
inurl 发表于 2013-1-31 11:57 | 显示全部楼层
Lyc1992 发表于 2013-1-31 10:30
你这个是由ads移植过来的吧,没有用keil的启动代码吗

e:\Keil 3.8\ARM\Boards\Samsung\S3C2440\RTX_Blinky\S3C2440.s
inurl 发表于 2013-1-31 12:08 | 显示全部楼层
本帖最后由 inurl 于 2013-1-31 19:17 编辑
阿南 发表于 2013-1-30 11:31
这个和Keil关系不在,ADS也是一样的,参考下ADS上的吧。启动代码部分需要中断向量表 ...

版主,ARM9的向量表好像没有STM32的好用,要在IRQ_HANDLER里面判中断类型,STM32是跳到固定的向量地址
阿南 发表于 2013-1-31 15:48 | 显示全部楼层
STM32和ARM9都是ARM,向量表区别不大的
 楼主| Lyc1992 发表于 2013-1-31 17:21 | 显示全部楼层
inurl 发表于 2013-1-31 12:08
版主,ARM9的向量表好像没有STM32的好用,要在IRQ_HANDLER里面判中断类型,STM32是固定的向量地址 ...

要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个优先级判断有什么用呢?  最后还是要程序判断吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
inurl 发表于 2013-1-31 19:16 | 显示全部楼层
Lyc1992 发表于 2013-1-31 17:21
要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个 ...

看2440的芯片手册,比什么资料都讲的清楚
inurl 发表于 2013-1-31 19:44 | 显示全部楼层
本帖最后由 inurl 于 2013-1-31 20:09 编辑
Lyc1992 发表于 2013-1-31 17:21
要在IRQ_HANDLER里面判中断类型       正好问下

RM9里面irp类型中断向量地址都是同一个,那它本身的这个 ...

keil对ARM9的支持还是不好, D:\Keil4\ARM\Boards\Samsung\S3C2440\RTX_Blinky里的启动文件里面都没有写IRQ的函数,startup很简单,peripheral lib完全没有,看来还是要用RVDS
对ARM7的支持就很好,D:\Keil4\ARM\RV31\LIB\ST\STR71x 这个工程就很全,vectors/startup/peripheral lib都有,另外还有工程讲解怎么用Lib,完全可以在此基础上做应用开发。

另外像下面的VECTOR,ARM7和ARM9就差不多都有,STM32上面就没用到。STM32的VECTOR写起来很简单




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Xplain 发表于 2013-1-31 22:56 | 显示全部楼层
inurl 发表于 2013-1-31 08:29
楼上的用的什么工程模板?

天嵌的裸机程序,不过也是参考原厂的工程,网上看到的都差不多
Xplain 发表于 2013-1-31 22:57 | 显示全部楼层
其实Keil自动生成的启动文件一般都不用的,自己参考uboot,或者其他现成的工程改改就能用了
 楼主| Lyc1992 发表于 2013-2-1 10:29 | 显示全部楼层
刚学,就看到好几个不同的启动文件了,好多都是自己改的。头都弄晕了
inurl 发表于 2013-2-1 12:39 | 显示全部楼层
Xplain 发表于 2013-1-31 22:57
其实Keil自动生成的启动文件一般都不用的,自己参考uboot,或者其他现成的工程改改就能用了 ...

UBOOT都是gcc编译的,keil要改很多东西啊
Xplain 发表于 2013-2-1 22:44 | 显示全部楼层
inurl 发表于 2013-2-1 12:39
UBOOT都是gcc编译的,keil要改很多东西啊

uboot可以用keil编译,我一直都是这么干的
nongxiaoming 发表于 2013-2-2 01:25 | 显示全部楼层
把你的中断服务函数的地址赋给对应的中断寄存器就好了啊~
inurl 发表于 2013-2-4 14:43 | 显示全部楼层
Xplain 发表于 2013-2-1 22:44
uboot可以用keil编译,我一直都是这么干的

keil里面用调用GCC编译 ?
Xplain 发表于 2013-2-7 21:45 | 显示全部楼层
inurl 发表于 2013-2-4 14:43
keil里面用调用GCC编译 ?

移植startup.s文件,修改嵌入式汇编,修改连接文件,编译的时候加-gnu选项,支持gnu扩展语法就可以了
 楼主| Lyc1992 发表于 2013-2-8 17:14 | 显示全部楼层
ls的现在来说太高深了,移植ads的启动代码,还看的懂。keil自带的启动代码估计是要自己去加中断向量表的。就是两种启动方式的中断入口地址有点纠结。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

155

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部