打印

菜农心目中之OS即对HotOS系列之展望和安全意识

[复制链接]
1898|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2009-2-22 08:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
随着HotTasm51之研究和编写的进展,以及嵌入式专家吴旭光教授屈尊地**

HotPower的农会组织,俺久久不能入睡,真可谓“彻夜难眠”~~~

和吴教授的多次探讨,更让俺增强了信心和“胆量”。




首先,我选定了从51开始俺的HotOS系列的“开始旅程”,在DSP的54系列上

俺也进行了85%的研究,但是那时可以C/C++,他们的构架和资源差距很大,

再者,俺心里也选中了AVR,因为小芯片的记得有个汇编级源码的OS.

也想在ARM7的LPC213X/LPC214X上开刀~~~至少俺在其“防御系统”上实现

了突破~~~




在OS的编写上,有些代码是要用汇编才能实现的,这不单单是速度的问题,

实际速度并非重要,而是限于C语言有些对方根本访问不到,也限制了发挥。

一般所有的编译器都可以嵌入汇编代码,但Keil C51还要设置几个地方,虽然

不难,但总觉得别扭~~~



对于机器级来讲,代码和数据是很难区分的:

当机器运行过的地方,肯定是代码(当然也可用于加密校验及防止改写代码)。

否则,代码的可能性少点,应该认为是数据。

所以,由于汇编代码的不同,导致了OS的不同~~~

若是用汇编数组又如何呢???



所以俺在HotTask51上使用了汇编数组并计划将其用COM接口来封装。

再进一步将HotTask51用COM接口封装,那么不就和微软在DLL越发不可收拾时

推出COM接口来进行对DLL的再封装,这样就实现了不需将DLL用C++来编写

即可达到C++之效果~~~




若是COM技术的早几年的推出,我们的PC机里就不会出现居多的DLL文件~~

所以,菜农对COM技术进行了深入研究和在CVI和DSP上进行了实验并成功实现。

那么若能在51上实现又能如何呢???

都是C语言,都有结构及指针,以及位域和联合,所以51也能从COM接口中

完成更强的功能~~~



目前的OS特别是能在MCU上运行的,菜农说心里话都不满意,理由:

1. 满世界的全局变量及宏定义让人“眼晕”~~~简直是A人之举~~~
   无任何封装的概念~~~也难怪那些“OS的先烈们”了~~~

2. 神秘的内核让人“心醉”,华丽的外衣让人更想“裸了才爽”~~~
   51十分紧张的资源使那些“爱美的人们”不得不放下那“皇帝的外衣”

3. 现在是“拇指一代”了,任务的创建和配置,都很晕~~~
   由于编译器软件厂家的OS虽然和环境无缝连接,但天文数字的费用实在
   不能接受~~~想学习学习也要背个“D人”之名,难呀~~~
  
4. 开源OS之病在于原作者和厂家有很大之不同~~~
   首先是与环境的链接,当然像uCOS-II嵌入在IAR内固然很好,但~~~

   再者小容量MCU各在不同的干扰环境下的表现也不同,所以,这些应用

   群体的硬件上都有硬件看门狗之类的防护,虽然不盼着狗咬,但没人
   
    敢在设计上将狗遗忘~~~至少俺没这个胆量~~~

   所以在开工HotTask51之决定时,狗任务那是排第一的~~~

综合以上所述,故俺要PK~~~至少俺有“唐吉珂德之精神”~~~

在起点上,定调已把俺“雷翻”~~~




首先在Keil C51环境下,实现脚本文件的嵌入,这样可对任务及硬件的配置

实现“傻瓜设置”,即在编译前即搞定之,故最后决定放弃初始化任务中的

动态装载任务,改由对静待装载的确认,为使核占用资源更小,将凡涉及任务

指针、永不改写的参数都移入FLASH中,并像在LPCARM中应用很成功的防御体系

之中的精华---将中断向量表的地址改为中断号管理,这样虽说散转稍慢些,

但它可以捕捉错误,并保证中断、事件及任务程序入口的安全~~~

如何保证呢???这要追述到“中断喂狗”和“主程序喂狗”之争来了~~~

后者即“中断喂狗”的反对者观点大概如下:

“主程序飞但中断还在喂狗!!!”,所以结论是:不能在中断中喂狗。

反方的强烈支持者和俺自称是“狗论的缔造者”的菜农答曰:

正方自己打嘴巴~~~他承认了中断比主循环更安全,程序即使飞了下次还能

进入运行~~~

哈哈~~~因为中断的地址是固定的,不可改写的,是有很规律的地址表格,

即中断向量~~~虽然有2种代表方式,即指针或跳转地址。

所以,中断比主循环更安全~~~即使错几次,他总要回来,这是硬件的中断

机制所造成的~~~




所以菜农要将没一个任务和事件变成“中断机制”,将它们的地址用51的4组

中断向量表来填入,即所有任务函数都用真的中断函数来声明~~~

因为这次是针对52系列,它的中断源不会超过24个,故Keil C51允许使用4组

的情况下,HotTask51用了后16个,其中8个为任务,另8个作为其他中断的后台

处理任务。




故在菜农的心目中,把OS的组级别分成了:

1.中断
在HotTask51中,占用了T2定时器,主要是它能自动装载。特别是它的中断标志

TF2不能像T0/T1一样不能被自动清除,真可谓是天天生了“一副OS的模样”~~

一样这样就可分清是节拍定时中断,还是其他中断及事件和任务软中断。

哈哈~~~老天都在祝俺~~~谁就早知道TF2是OS专门不清零TF2的请举手~~~

2.事件

菜农俺无文化,说不出规范之语,故在HotTask51中是这样定义的:

当硬件中断紧急事务处理结束后,应该立即退出,而且必须在每个节拍之内

处理结束,否则应该进行“中断隐身”:

即上半身为“前台”,用于处理紧急事务,级别为特权级,它的级别有硬件设定。

下本身为“后台”,即做“中断隐身”操作后,级别降为“事件”,它比任何

任务的级别都高,但HotTask51私自规定:“狗”的权利归农会~~~

3.任务

在HotTask51中,任务包含了任务与OS有关和无关的事务~~~

任务由节拍中断触发同步,也可由高级别中断退出或隐身软中断异步进入。

也可由同级任务主动弃权后的软中断再入。

所以,HotTask51将问题简单化并有同一节拍中断的隐身转由节拍“事件”

来处理任务的优先级,节拍的申请及其他中断的“事件”等多复杂操作。

故HotTask51只承认三种形式的请求:中断-->事件-->任务。

而且它们的中断地址都为51的中断地址:N*8+3.

它们可以最多4组(51硬件决定),故管理只需5个位来管理

其中2位作为4组的组号管理,它可以用来做4种区分:

中断,保留中断,事件,任务。

另3位用来做组内具体为哪个中断、保留中断、事件和任务。

故“红色之脑浆”用5位来PK中断向量表中的4(组)*8(个)*16位(地址位长)

最不太“精妙”,也未让人享受到其“防御体系之威力”,但数的概念

总能知道此回合应该判菜农“胜出”~~~

再者,狗任务是所有事件中的最高级别,也就是说它在节拍中断时间片里,

它永远排第一~~~因为它要先“排雷”“安检”及“验票”~~~

HotTask51的核即节拍事件,它采用高速数字处理中的预测处理算法,它能

在任务就绪后立即做出切换操作!!!

所以,HotTask51在设计的理念上还是够新潮的~~~因为它被菜农在理论

上设计为强实时的具有霸权的OS~~~

菜农在吴教授的解释和提醒下,记得见过对强实时的定义,估计无终论。

所以俺想在强实时和零耗时任务切换上都来个“红杏出墙”玩玩~~~

也好早给《keil c51红杏出墙记》找个“好婆家”嫁了算了~~~

不能老让它总是《Keil C51红杏出墙记》节选~~~

但愿这次搞成,俺一定写个搞笑的《Keil C51红杏出墙记》终结篇~~

HotPower农会主席 菜农 HotPower@126.com   2009.2.22 论道于小白菜基地


相关链接:http://www.google.cn/search?q=keil+c51%E7%BA%A2%E6%9D%8F%E5%87%BA%E5%A2%99%E8%AE%B0&hl=zh-cn&gl=cn&sa=X&revid=497503892&rtp=M&cd=2&oi=revisions_inline&ct=broad-revision

相关帖子

沙发
hotpower|  楼主 | 2009-2-22 08:25 | 只看该作者

哈哈~~~警告:看帖者自戴墨镜

使用特权

评论回复
板凳
呆板书生| | 2009-2-22 13:04 | 只看该作者

已经晕了

使用特权

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

本版积分规则

1460

主题

21619

帖子

506

粉丝