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