裸奔已經(jīng)可以滿足需求了,那么為什么還要OS?
為什么要裸奔?
理由1:裸奔已經(jīng)可以滿足需求了,那么為什么還要OS?
理由2:os很高大上,但是能被hold住么?
以上兩點(diǎn)差不多就OK了。
一般說(shuō),單片機(jī),就是搞點(diǎn)簡(jiǎn)單的東西。簡(jiǎn)單不是貶義,喬布斯總說(shuō)自己要做最簡(jiǎn)單易用的作品,所以說(shuō)我們遵從簡(jiǎn)單的設(shè)計(jì)原則,是沒(méi)有問(wèn)題的了。
那么如何裸奔呢?
看到21IC網(wǎng)站很多所謂大牛給出了所謂的架構(gòu),感覺(jué)高大山的架構(gòu),在我看來(lái)都是差的一塌糊涂,純屬照貓畫(huà)虎,形式主義罷了。
最經(jīng)典而完美的架構(gòu)就是
main{
INT K ;
init();
while(1) {
INT J = K;
}
}
IRQ {
K++;
}
就是前后臺(tái) 的架構(gòu)。當(dāng)然這樣說(shuō)放到論壇里面肯定被噴。但這里沒(méi)人噴。所以可以胡說(shuō)八道了。
好的架構(gòu)一定是隔離,大家互不干涉。說(shuō)起來(lái)簡(jiǎn)單,做起來(lái)不易。如何做到互不干涉,有些是一定要有交叉了。比如定時(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í)性比較高,若沒(méi)有DMA,那么很抱歉,裸奔沒(méi)有辦法搞定,即便是實(shí)時(shí)性O(shè)S,也很難辦。如果接收方判斷兩個(gè)字符的間距的話,如modbus。那么發(fā)送必須是高優(yōu)先級(jí)的,若采用os。
基本就這些了。
裸奔,感覺(jué)就是完全可以掌控得住。
如果要集成一些代碼,比如我最近要集成canopen的代碼,于是我就覺(jué)得我的代碼整體可靠性要下降一檔。心理上真的如此覺(jué)得。對(duì)自己就是這么自信。
如果要用os,那么也要熟讀。弄透。然后采用。這樣才覺(jué)得過(guò)癮。否則感覺(jué)沒(méi)有掌控力。
啰啰嗦嗦,說(shuō)了廢話,可見(jiàn)今天是廢話連篇了。
編輯:admin 最后修改時(shí)間:2018-05-22