当前位置: 技术问答>linux和unix
如何在vivi的平台上使用中断
来源: 互联网 发布时间:2016-02-04
本文导语: 我买了一块2410的板子,但是我目前暂不打算跑系统。 我的设想是:先在板子上烧写了vivi,然后在ADS里写了些简单的代码,直接操作2410寄存器的,编译成bin文件后,在vivi的平台上,利用串口或网口把它下载到vivi的kerne...
我买了一块2410的板子,但是我目前暂不打算跑系统。
我的设想是:先在板子上烧写了vivi,然后在ADS里写了些简单的代码,直接操作2410寄存器的,编译成bin文件后,在vivi的平台上,利用串口或网口把它下载到vivi的kernel分区上以实现上电自启动。
在ADS写的代码里,我想用到外部中断,程序都写好了,利用DNW把bin文件烧写到RAM里能正常运行,但是在vivi的平台就是不能正常运行,查了些资料才知道:vivi中没有支持中断,如果需要中断,就要在某一RAM空间设置好中断向量然后将这一段空间映射到0地址就可以了。
目前我的部分代码如下:
#define _ISR_STARTADDRESS 0x33FFFF00
... ...
#define pISR_EINT8_23 (*(unsigned *)(_ISR_STARTADDRESS+0x34))
... ...
pISR_EINT8_23=(unsigned)EintHandler;
... ...
请问:“在某一RAM空间设置好中断向量然后将这一段空间映射到0地址”,这个应该怎么做呢?大家能不能给出些示例代码啊?
多谢各位的指点!:)
我的设想是:先在板子上烧写了vivi,然后在ADS里写了些简单的代码,直接操作2410寄存器的,编译成bin文件后,在vivi的平台上,利用串口或网口把它下载到vivi的kernel分区上以实现上电自启动。
在ADS写的代码里,我想用到外部中断,程序都写好了,利用DNW把bin文件烧写到RAM里能正常运行,但是在vivi的平台就是不能正常运行,查了些资料才知道:vivi中没有支持中断,如果需要中断,就要在某一RAM空间设置好中断向量然后将这一段空间映射到0地址就可以了。
目前我的部分代码如下:
#define _ISR_STARTADDRESS 0x33FFFF00
... ...
#define pISR_EINT8_23 (*(unsigned *)(_ISR_STARTADDRESS+0x34))
... ...
pISR_EINT8_23=(unsigned)EintHandler;
... ...
请问:“在某一RAM空间设置好中断向量然后将这一段空间映射到0地址”,这个应该怎么做呢?大家能不能给出些示例代码啊?
多谢各位的指点!:)
|
“在某一RAM空间设置好中断向量然后将这一段空间映射到0地址” 这一说法有些问题。因为在vivi中,MMU还未被打开,exceptions的入口总是在0地址处(不考虑high vector)。
中断部分的处理需要加入到vivi启动部分(exceptions入口要加入,具体的请参考ARM体系的说明),一种可能的实现是入口是一条跳转指令,跳转到总的IRQ处理函数中,在处理函数里自己再处理各个具体的IRQ(一般会有个IRQ table)。
实现看可以找某个版本的kernel,根据arch/arm/kernel下的实现自己编码,或者找某个RTOS(支持AMR平台)来参考会快一些。
中断部分的处理需要加入到vivi启动部分(exceptions入口要加入,具体的请参考ARM体系的说明),一种可能的实现是入口是一条跳转指令,跳转到总的IRQ处理函数中,在处理函数里自己再处理各个具体的IRQ(一般会有个IRQ table)。
实现看可以找某个版本的kernel,根据arch/arm/kernel下的实现自己编码,或者找某个RTOS(支持AMR平台)来参考会快一些。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。