关于ok6410裸机中断心得

从朋友那里拿了块飞凌OK6410的开发板,打算业余时间学习学习嵌入式方面的知识。

刚拿到开发板时里面有所谓的国嵌的学习光盘,花了几天时间浏览了下前面关于裸机ARM的部分,感觉真的很烂。很多东西都没有讲清楚,资料也是乱七八糟的,尤其是关于定时器,中断方面的。个人感觉嵌入式初学都最关键的就是学习定时器与中断,因为中断与定时器是经常用到的东西。而国嵌光盘中的教程,代码都是简单的要死,怎么看上去都像是赶工之作。

我学习了教程中一开始的Linux体验,进程相关知识的学习,但这个只跟后面的有关,我想先学习在裸机上仿真。因为我基础可能没有那么好,操作系统方面知识还是不到位。

一开始的时候真的还是非常有积极性的。想一下子把这些学好,但后来我慢慢地发现没有我想像的那么容易。最开始的点灯还是挺好的,但到了中断这一块就嗝屁了。我觉得有两个原因:1、对于嵌入式arm裸机了解还不够,而且是一个人瞎搞,而且我的工作是软件开发,没有太多精力时间去钻研这方面的东西。。2、我是按照教程来的,教程在这方面写得不是很清楚,它可能更注重后面的linux驱动核心开发。

为了了解这中断与定时器,我在网上搜了相关文章,我发现这方面的资料太少了,在官方论坛里也几乎没有。在今天,我花了一天时间终于是把定时器,中断搞定了。在我之前搜到的相关资料中,有很多的方法是将中断的地址写在0x00,百度搜索里几乎整个版面的内容都是这个方法,这个方法在我这个还没有入门的菜鸟来说还是有点困难的,好像这个是类似单片机的做法吧(本人没有学过单片机,只是推断)。今天,我花了一天的时间,终于在一个博客里找到了一个更简单的方法。

原来,s3c6410芯片有一个专门的协处理器可以处理中断程序,而不用自己去写几十行的汇编代码。这个只要6行汇编代码就可以了,代码如下:

    mrc p15,0,r0,c1,c0,0
    orr r0,r0,#(1 << 24)
    mcr p15,0,r0,c1,c0,0

    ;允许中断,开启CPU总中断
    MRS R0,CPSR    ;将CPSR保存至R0
    BIC R0,R0,#0x80    ;R0 = R0 & 0x80
    MSR CPSR_c, R0    ;将R0写回CPSR
 只要将这段代码在main入口函数之前执行就可以了,其他的就可以交给协处理器了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值