技术生涯,半生荣辱,每天都是生活在痛并快乐中,我讨厌的东西总是不得不天天面对,麻木和无所谓也就是这样产生的.但对于技术的好奇和追求是我下半生依然不会停止的事情,虽然驽钝,只要每日有所得,也有所追求足以.
这两天在忙于另外一个程序,由于上家的延误,使我又有了点空闲,继续来学习已经不是新事物的新事物.:-)
前几天决定了从简单的单任务Arm程序学起,放下手中的uC/OS-II书籍,发现手中又少了可以阅读的东西.好在网上有很多可以参考的资料,只是这些资料不是专为LPC2400写的.不过没关系,手里还有LPC2400的datasheet,对照的看就可以了.Arm的原理大同小异,只是型号之间有所区别罢了.
下面的这本书对初学者很有帮助,在网上狂搜了一通,终于找到了电子档,我想这应该不算我盗版吧?
深入浅出ARM7-LPC213x_214x(上).pdf
深入浅出ARM7-LPC213x_214x(下).pdf
自己找找,应该能在网上翻到.我不喜欢按照数的顺序来读,而是挑选自己认为正确的顺序来读.我们一起来研究一下中断向量控制器吧,也就是英文缩写的"VIC"
向量中断控制器(VIC,Vectored Interrupt Controller):
.具有32个中断请求输入,可将其分为3类:FIQ,向量IRQ,非向量IRQ.可编程分配机制意味着不同外设的中断优先级可以动态分配并调整.
.快速中断请求(FIQ,Fast Interrupt reQuest):要求有最高的优先级.如果分配给FIQ的请求多于1个,VIC将中断请求"相或"后像ARM处理器产生FIQ信号.当只有一个中断被分配为FIQ时,可实现最短的FIQ等待时间.因为FIQ服务程序只有简单地启动器件的处理器就可以了.如果分配给FIQ级的中断多于1个,FIQ服务程序需要取FIQ状态寄存器啦识别产生中断请求的FIQ中断源.
.向量IRQ(Vector IRQ)具有中等优先级.该级别可分配32个的16个.32个请求中的任意16个向量IRQ slot中的任意一个.其中slot0具有最高优先级,而slot15则为最低优先级.
.非向量IPR(Non-vectored IRQ)的优先级最低:
.VIC将所有向量和非向量的IRQ"相或",将相或的结果向ARM处理器产生IRQ信号.IRQ服务程序可通过读取VIC的一个寄存器立即启动并跳转到相应的地址.如果有任意一个向量IRQ发出请求,VIC这提供最高优先级请求IRQ服务程序的地址,否则提供默认程序的地址.该默认程序有所有非向量IRQ共用.默认程序可读取另一个VIC寄存器以确定哪个IRQ被激活.
.VIC中所有的寄存器都为字寄存器,即32bit,不支持字节和半字的读和写操作.
总结一下:
.最多32个中断请求输入
.16个向量IRQ中断
.16个优先级,可动态分配给中断请求.
.可产生软件中断
关于VIC还有很多内容要学,看了后继续把笔记写下来,与大家共勉.