2. 第5~24句:是将F040的中断跳转重定义,查阅F040的说明书我们可以看到,0X0003H是外部中断0的代码起始地址,在内核中,将外部中断0的起始代码重新定义到0E003H开始了。这里就产生了3个问题:
① 为什么要将中断的起始代码地址重定义?
答:这个是为了方便代码管理,前面笔者曾经提到过,驱动下载到内核里,是存放在一
块相应的地址空间由内核调用的。这个地址你现在可以看到,是从0XE000H开始的,由于用户中断也属用户驱动的一部分,所以,它的这部分代码也必须保存到0XE000H以后的一个地址段内,而默认的中断起始代码从哪里开始呢?以外部中断0为例,你可以从说明书上看到,它的起始地址是0X0003H,这样用户驱动流程代码和用户驱动中断代码就被分成了2个地址段,给内核的管理造成了麻烦。所以我们必须要进行中断代码地址重定义的工作。
② 如何实现中断的起始代码地址重定义?
答:还是以外部中断0为例,内核在这里直接用了一个“LJMP 0XE003H”即完成了地址重定义的工作,是不是很简单?
③ 科威PLC芯片组还有其他的中断重定义了吗?我可以用它们吗?
答:我们只能够用到上面代码给出的这些中断,还有的中断比如T0,T1等中断已被内核占用,我们编写用户驱动就无缘使用它们啦!