主题 : Tiny6410做led实验时,遇到了问题,高手帮帮忙呗! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 73327
精华: 0
发帖: 13
金钱: 70 两
威望: 14 点
综合积分: 26 分
注册时间: 2012-07-07
最后登录: 2012-12-09
楼主  发表于: 2012-08-09 20:18

 Tiny6410做led实验时,遇到了问题,高手帮帮忙呗!

以下是led实验的初始化函数,在加载时,报错“unable to handle kernel",如果我把对红色标注的那块有关硬件读写操作的代码注释掉,则通过insmod命令加载模块,可以成功加载。大家帮忙分析一下是什么原因呢?难道要将寄存器物理地址先映射成虚拟地址,再对虚拟地址操作吗?

static int dev_init(void)
{
int ret;
unsigned tmp;

printk("misc device init 0\n");

/*set GPKCON GPK4~GPK7 output */

tmp = readl(GPKCON0);
tmp = (tmp & ~(0xffffU << 16)) | (0x1111U << 16);
writel(tmp, GPKCON0);


tmp = readl(GPKDAT0);
tmp |= (0xf << 4);
writel(tmp, GPKDAT0);


ret = misc_register(&misc);
printk(" misc device initialized\n");
return ret;
}
[ 此帖被80后公民在2012-08-22 19:49重新编辑 ]
级别: 新手上路
UID: 76370
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2012-08-23
最后登录: 2014-05-07
1楼  发表于: 2012-08-23 21:24
我也是新鸟,不太懂。GPK确实有GPKCON0 和GPKCON1,但是只有GPKDATE,没有见过GPKDATE0,所以才会报错吧。纯属臆测,仅供参考。
级别: 新手上路
UID: 73327
精华: 0
发帖: 13
金钱: 70 两
威望: 14 点
综合积分: 26 分
注册时间: 2012-07-07
最后登录: 2012-12-09
2楼  发表于: 2012-09-09 21:42
问题解决了。
级别: 新手上路
UID: 76370
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2012-08-23
最后登录: 2014-05-07
3楼  发表于: 2012-10-09 10:01

 回 2楼(80后公民) 的帖子

请问你有用过 中断组 产生过中断么?