这里的思想,中断

[复制链接]
2198|10
手机看帖
扫描二维码
随时随地手机跟帖
sxhhhjicbb|  楼主 | 2014-7-28 16:41 | 显示全部楼层 |阅读模式
本帖最后由 21ic大掌柜 于 2017-4-5 10:14 编辑

在一个no os的cpu里面,想要做点事,或在做事的时候要考虑什么呢:


重中之重是中断,能否用好中断是体现你思想的时候。要熟悉你的中断控制器的性能,包括如何挂接中断,如何响应中断,各中间之间的关系是什么样的。以m4 core的cpu为例,在各模块的中断信号送出之时,cpu还不能响应中断,在各模块和cpu之间连着一个中断控制器。该控制器对中断提供了一个统一的管理。中断控制器也是一个模块,不像以前51 cpu,要让cpu响应你的模块,还要让中断控制器模块接受其它模块提交的中断信号,在m4 core中就是向0xE000E100地址写入配置值。


其实任务一工程师,比较完整地使用过os的话,都不想回到裸编程,但实际情况是复杂的,比如刚研发出来的cpu,还没有配套该cpu的稳定的os可用,比如出于flash,ram等成本的原因,不能加载os,毕竟加载os会消费一定的ram,flash.实际上加载os,主要用到os二个特点,一为任务管理,二为os组件。在大量的嵌入式控制器中,更常用到的是任务管理,很多时候,我们的任务不会很多。在一个好的嵌入式设计中,不会任由任务数量增加,毕竟每个任务都需要自己的ram stack space,在嵌入式cpu中,ram还是比较贵的。在很多的情况下,二个任务就可以了。


是的,很多应用,二个任务就可以了。一个后台任务,一个实时任务。在裸程序中,一个由main带来的非实时任务,一个由中断带来的实时任务,就可分配相应的逻辑和应用。在阻塞处理方便的相应代码,分布到非实时的main任务中,比如等待用户输入,并对输入合法性检查的代码块。在需要实时处理的可以分配到中断任务,如果中断任务分优先级的话,那就更好了,可以根据实时程度来分享中断任务。


在有优先权的cpu中,中断的分配也就成了一门艺术了,给了高优先权的事务,该事务也要主动的最快的让出cpu使用权,这个做法和os系统中对优先权的管理思路是一样的。采用上半部分和下半部分的做法。这个对于用过os的人再熟悉不过了。


随着项目code的增大,功能增强,裸程序也长大了,有自己的管理事务的组织框架。这时候,又从no os code到“os code”了。

相关帖子

sxhhhjicbb|  楼主 | 2014-7-28 16:42 | 显示全部楼层
原创,自己做沙发。必需的。

使用特权

评论回复
busdriver| | 2014-7-28 22:29 | 显示全部楼层
撒啊

使用特权

评论回复
keer_zu| | 2014-7-29 07:01 | 显示全部楼层
期待后续

使用特权

评论回复
chhyxf| | 2014-7-29 08:43 | 显示全部楼层
期待……

使用特权

评论回复
icekoor| | 2014-7-29 08:59 | 显示全部楼层
赞一个

使用特权

评论回复
bluesky001| | 2014-9-1 10:58 | 显示全部楼层
实习生来学习一下。

使用特权

评论回复
bestray| | 2014-9-1 12:10 | 显示全部楼层
Mark

使用特权

评论回复
a651588| | 2014-9-10 09:37 | 显示全部楼层
学习了。

使用特权

评论回复
bli19| | 2014-9-12 15:11 | 显示全部楼层
我感觉对中断的控制还是很难,毕竟现在的机器系统已经不是以前的要求了,要求更多,外设控制起来可不是多多益善这种说法。
程序员所做的已经不仅仅是把中断服务写好这么简单了,还需要考虑系统带来的冗余性,如何减少中断的频率和适当的轮询控制以减少
CPU的使用率。

使用特权

评论回复
woshusma| | 2017-3-30 18:57 | 显示全部楼层
刚入门 谢谢楼主带路

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:目标是前进的动力

14

主题

1159

帖子

5

粉丝