登录
注册
一键加入QQ群
友善之臂官方网站
首 页
联系我们
淘宝店铺
维基教程
固件下载
资料汇总
搜索帖子!
NanoPC 系列:
NanoPC-T2
NanoPC-T3 Plus
NanoPC-T4
NanoPC-T6
NanoPC-T6 Plus
NanoPi 系列:
NanoPi-NEO
NEO Core
NEO Air
M1 Plus
Duo2
NEO3
NEO4
M4B
M5
M6
M6V2
核心板:
Smart4418
Core4418
Smart6818
Core6818
SOM-RK3399V2
CM3588
CM3588 Plus
迷你R系列:
NanoPi-R1
R1S
R2S
R2S Plus
Zero2
R3S
R76S
R4S
R5S
R5C
R6C
R6S
热门版块:
友善之臂最新动态
开发板实战手册及教程
友善之臂官方客服中心
ROM发布区
NanoPi 玩家交流区
我的论坛我的贴
默认风格
用户中心首页
编辑个人资料
查看个人资料
好友列表
用户权限查看
积分管理
积分转换
特殊组购买
收藏夹
我的主题
基本统计信息
到访IP统计
管理团队
管理统计
在线统计
会员排行
版块排行
帖子排行
个人首页
我的收藏
好友近况
Linux技术交流区
中断程序中的 INTC_SetIntISR()函数无法编译,跪求解决办法!
友友粉丝快线
开发板销售中心
嵌入式最新资讯
友善之臂最新动态
友善之臂官方客服中心
开发板实战手册及教程
应用方案和定制开发
NanoPi 交流与讨论
NanoPi 玩家交流区
ROM发布区
硬软DIY及开发
嵌入式交流与讨论
Android技术交流区
Linux技术交流区
U-boot技术交流区
WinCE技术交流区
Ubuntu技术交流区
裸机程序和微型OS
OpenWRT讨论区
开发板硬件讨论区
相关资料下载及使用技巧
站点服务
二手交易区
我的论坛我的贴
站务管理与公告
上一主题
下一主题
新 帖
主题 : 中断程序中的 INTC_SetIntISR()函数无法编译,跪求解决办法!
复制链接
|
浏览器收藏
|
打印
chenxianzju
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
65930
精华:
0
发帖:
24
金钱:
125 两
威望:
25 点
综合积分:
48 分
注册时间:
2012-03-24
最后登录:
2012-04-16
楼主
发表于: 2012-04-04 10:42
只看楼主
|
小
中
大
中断程序中的 INTC_SetIntISR()函数无法编译,跪求解决办法!
前日里在论坛看到了一组源码,打算测试一下其中的pwm波程序,但是中断函数interrupt.c中定义的一个
INTC_SetIntISR()函数,是用来往中断向量地址寄存器中写入中断函数地址的,始终编译不了,具体情况是这样的:
在interrupt.h中有一个外部函数声明:extern void INTC_SetIntISR(unsigned int intNum, void (*isr)(void) __irq);
在interrupt.c中有关于此函数的定义:
void INTC_SetIntISR(unsigned int intNum, void (*isr)(void) __irq)
{
if(intNum > INT_LIMIT)
{
return ;
}
if(intNum < 32)
{
VIC0VECTADDR[intNum] = (unsigned )isr;
}
else
{
VIC1VECTADDR[intNum-32] = (unsigned )isr;
}
}
但是在linux下的编译出现了问题,截图如下:
貌似是函数定义过程中的 void (*isr)(void) __irq 变量 编译器无法识别,这个是个什么变量我也不是很清楚,在源文件中找不到这个变量的定义,只知道它代表的是中断函数地址之类的东西,有没有哪位高人帮我解决一下这个问题呢?感激不尽啊!
顶端
回复
引用
分享
chenxianzju
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
65930
精华:
0
发帖:
24
金钱:
125 两
威望:
25 点
综合积分:
48 分
注册时间:
2012-03-24
最后登录:
2012-04-16
1楼
发表于: 2012-04-04 15:57
只看该作者
|
小
中
大
额。。。没有人能解决么?
顶端
回复
引用
分享
skyeyeqhl
级别: 侠客
作者资料
发送短消息
加为好友
UID:
65739
精华:
0
发帖:
58
金钱:
295 两
威望:
59 点
综合积分:
116 分
注册时间:
2012-03-21
最后登录:
2012-04-21
2楼
发表于: 2012-04-05 16:06
只看该作者
|
小
中
大
同求,希望有碰到类似问题的朋友们能帮个忙解答一下。
会不会是中断程序对于不同的编译器是不一样的?
顶端
回复
引用
分享
kasim
*無鈳取玳
级别: 论坛版主
作者资料
发送短消息
加为好友
QQ联系
UID:
27
精华:
12
发帖:
5398
金钱:
40120 两
威望:
17929 点
综合积分:
11036 分
注册时间:
2008-01-16
最后登录:
2014-11-22
3楼
发表于: 2012-04-05 16:42
只看该作者
|
小
中
大
回 楼主(chenxianzju) 的帖子
gcc恐怕是不认识__irq的, 你所说的源代码恐怕也不是适用于arm-linux-gcc来交叉编译的。如果你确定它可以用arm-linux-gcc来编译,你需要加上下面的宏定义
#define __irq __attribute__((interrupt("IRQ"))
参考这里
http://www.ohse.de/uwe/articles/gcc-attributes.html#func-interrupt
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
顶端
回复
引用
分享
chenxianzju
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
65930
精华:
0
发帖:
24
金钱:
125 两
威望:
25 点
综合积分:
48 分
注册时间:
2012-03-24
最后登录:
2012-04-16
4楼
发表于: 2012-04-05 18:15
只看该作者
|
小
中
大
谢谢你!请问什么编译器可以认识 __irq 呢?这是一种比较特殊的语法是么?
顶端
回复
引用
分享
chenxianzju
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
65930
精华:
0
发帖:
24
金钱:
125 两
威望:
25 点
综合积分:
48 分
注册时间:
2012-03-24
最后登录:
2012-04-16
5楼
发表于: 2012-04-05 18:16
只看该作者
|
小
中
大
回 3楼(kasim) 的帖子
谢谢你!请问什么编译器可以认识 __irq 呢?这是一种比较特殊的语法是么
顶端
回复
引用
分享
kasim
*無鈳取玳
级别: 论坛版主
作者资料
发送短消息
加为好友
QQ联系
UID:
27
精华:
12
发帖:
5398
金钱:
40120 两
威望:
17929 点
综合积分:
11036 分
注册时间:
2008-01-16
最后登录:
2014-11-22
6楼
发表于: 2012-04-05 18:50
只看该作者
|
小
中
大
回 5楼(chenxianzju) 的帖子
我想ARM自家的RVCT应该可以吧。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
顶端
回复
引用
分享
chenxianzju
级别: 新手上路
作者资料
发送短消息
加为好友
UID:
65930
精华:
0
发帖:
24
金钱:
125 两
威望:
25 点
综合积分:
48 分
注册时间:
2012-03-24
最后登录:
2012-04-16
7楼
发表于: 2012-04-05 21:01
只看该作者
|
小
中
大
谢谢!!
顶端
回复
引用
分享
上一主题
下一主题
Linux技术交流区
http://121.40.142.80
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问