1253_确认FreeRTOS QEMU例程中中断的使用

全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)

QEMU既然是模拟了MCU的功能,而且让FreeRTOS能够运行起来。那么,至少得有一个定时器中断需要支持。接下来,找一下这部分功能的实现,同时了解一下其他的中断是否容易在QEMU中配置。

我的突破点放到了tick相关的几个功能上。前面看FreeRTOSConfig中的配置信息的时候看到了hook函数的配置。Hook函数中就有一个tick hook。既然是跟tick相关的,肯定能够顺腾摸瓜找到相关的设计。正好,默认的例子这个功能是开启了的。

上面的这个接口应该是tick发生需要调用的。

进一步确认,这个应该是在main.c中定义的。相关的定义在现在的文件包里面有2个,因此这个需要根据实际的编译所用的功能确认一下。

函数设计为了一个空函数,其实是没有任何有效信息的。为了方便测试,我在里面加一个计数器在其他的任务中打印一下。

测试接口设计如上。

测试接口调用。

测试结果。看得出来,现在的tick hook是已经生效了的。

继续向前找,这个vApplicationTickHook是在上面的接口中调用的。

继续向根源寻找,这里找到的这个应该就是定时器中断的ISR了。在执行的时候,看起来还加了一个中断的临界保护。

而这个ISR生效的原因是填充了这个中断向量表。其中,__attribute__的属性应该是决定了这个中断的处理机制。中断向量表的填充位置,在链接文件中做了指定。从这个表的信息看,似乎现在是没有多少可配置的中断资源存在。要么就是现在没写完整。

中断优先级的配置没有找到明确的修改点,但是在配置文件中找到了这部分信息。看起来QEMU模拟的功能也不是很完善,还是有没有模拟的部分。

原本想在软件中增加一部分定时器,现在看来QEMU的环境还是不是很完善。如此,接下来的尝试还是尽快选择一个合适的开发板之后进行硬件级别的调试这样会好一些。如此,对于一个嵌入式系统的了解可能会更加完善。QEMU学习自然还不能止步,即使是止步于嵌入式的学习,后面尝试虚拟化环境的时候还是的继续了解。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值