裸奔已經(jīng)可以滿足需求了,那么為什么還要OS?
為什么要裸奔?
理由1:裸奔已經(jīng)可以滿足需求了,那么為什么還要OS?
理由2:os很高大上,但是能被hold住么?
以上兩點(diǎn)差不多就OK了。
一般說,單片機(jī),就是搞點(diǎn)簡單的東西。簡單不是貶義,喬布斯總說自己要做最簡單易用的作品,所以說我們遵從簡單的設(shè)計(jì)原則,是沒有問題的了。
那么如何裸奔呢?
看到21IC網(wǎng)站很多所謂大牛給出了所謂的架構(gòu),感覺高大山的架構(gòu),在我看來都是差的一塌糊涂,純屬照貓畫虎,形式主義罷了。
最經(jīng)典而完美的架構(gòu)就是
main{
INT K ;
init();
while(1) {
INT J = K;
}
}
IRQ {
K++;
}
就是前后臺(tái) 的架構(gòu)。當(dāng)然這樣說放到論壇里面肯定被噴。但這里沒人噴。所以可以胡說八道了。
好的架構(gòu)一定是隔離,大家互不干涉。說起來簡單,做起來不易。如何做到互不干涉,有些是一定要有交叉了。比如定時(shí)器。首先提到定時(shí)器,因?yàn)樘匾恕;旧礁愣硕〞r(shí)器,就搞定了架構(gòu)的很大一部分。看看哪些PLC的定時(shí)器的涉及,猜猜他們是怎么實(shí)現(xiàn)的。比如你可以實(shí)現(xiàn)這樣一個(gè)定時(shí)器
if (timeup(n ms)) {
//do something
}
如果實(shí)現(xiàn)了這樣一個(gè)函數(shù),在各個(gè)所謂的任務(wù)中都用這個(gè)函數(shù);旧霞軜(gòu)就很清晰了。
那么對(duì)于串口發(fā)送這種需要耗時(shí)的功能?咋辦?如果有DMA,那么就用上。如果你有500個(gè)字節(jié)要發(fā)送,你還想實(shí)時(shí)性比較高,若沒有DMA,那么很抱歉,裸奔沒有辦法搞定,即便是實(shí)時(shí)性O(shè)S,也很難辦。如果接收方判斷兩個(gè)字符的間距的話,如modbus。那么發(fā)送必須是高優(yōu)先級(jí)的,若采用os。
基本就這些了。
裸奔,感覺就是完全可以掌控得住。
如果要集成一些代碼,比如我最近要集成canopen的代碼,于是我就覺得我的代碼整體可靠性要下降一檔。心理上真的如此覺得。對(duì)自己就是這么自信。
如果要用os,那么也要熟讀。弄透。然后采用。這樣才覺得過癮。否則感覺沒有掌控力。
啰啰嗦嗦,說了廢話,可見今天是廢話連篇了。

編輯:admin 最后修改時(shí)間:2018-05-22