|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
OS中,某個任務(wù)占用系統(tǒng)資源太大,請求解決思路。 |
| 作者:kanprin 欄目:嵌入式系統(tǒng) |
情況描述: 用mega64作主機,串口0與從機MEGA8通信,串口1與PC通信。傳輸網(wǎng)絡(luò)為半雙工的485網(wǎng)絡(luò)。1主,多從機制。從機主要負責監(jiān)測各種事件的發(fā)生情況。mega64以輪循的形式查詢各MEGA8的情況,而同時要響應(yīng)PC的查詢。 問題: 為了保證實時性,mega64輪詢MEGA8的時間間隔就要很小,導致該輪詢?nèi)蝿?wù)占用系統(tǒng)資源太多,不能很好的響應(yīng)PC的查詢。 嘗試: 增加mega64查詢MEGA8的時間間隔,但降低了實時性,不可取。 從機MEGA8有事件發(fā)生時主動向主機mega64發(fā)數(shù)據(jù),這就需要組建多主機的485網(wǎng)絡(luò),但一直沒嘗試成功。 求救: 不知道大家是否有比較好的解決問題的思路? 或有多主機485網(wǎng)絡(luò)組建經(jīng)驗的兄弟給點資料參考。 補充說明: mega64和PC通信以及和從機MEGA8通信都是基于中斷完成的。在中斷中產(chǎn)生相應(yīng)的信號量來驅(qū)動某的任務(wù)的完成。 如task1為與PC通信的任務(wù),task2為與從機通信的任務(wù)。在任務(wù)1中等待sem1,得到信號量后再做相應(yīng)的操作,沒有等待信號量超時的概念。 而在與從機通信的任務(wù)2中,由于采用輪循查詢的機制,當某個從機沒響應(yīng)時,應(yīng)暫先跳過,查詢別的從機。所以引進了等待超時的感念,比如10ms從機還沒響應(yīng),則查詢下一從機。所以任務(wù)2就很可能占用了比較大的系統(tǒng)資源,(關(guān)鍵是任務(wù)2查詢從機時,從機響應(yīng)查詢,而引起的串口0中斷占用教多)。 謝謝大家的關(guān)注。 |
| 2樓: | >>參與討論 |
| 作者: LPCfAnS 于 2006/5/31 17:55:00 發(fā)布:
頂....485在學... |
|
| 3樓: | >>參與討論 |
| 作者: 何以解憂 于 2006/5/31 18:15:00 發(fā)布:
出個餿主意:AVR+MCP2510(SPI接口)+82C250,玩canbus算了 老周說了,canbus的可靠性比RS485高一個檔次; 現(xiàn)成的多主+屏蔽過濾的機制,保證mcu忙的過來 |
|
| 4樓: | >>參與討論 |
| 作者: kanprin 于 2006/6/1 7:50:00 發(fā)布:
呵呵, 謝謝何以解憂的“餿主意”。 如果485確實一直都搞不定的話,到時再考慮換總線方式了。 最好是在原來的基礎(chǔ)上有所改進而達到目的比較理想了。 要不又要改電路。呵呵。 |
|
| 5樓: | >>參與討論 |
| 作者: rockos 于 2006/6/2 10:50:00 發(fā)布:
呵呵,任務(wù)占用資源大不是什么壞事吧 你在輪循時,是不是對每個MEGA8都有等待呀?這樣如果每個MEGA8都不響應(yīng),那你豈不是輪循一周需要N * Tmax這么長時間! 這樣的話就不是任務(wù)占用資源的問題了,而直接影響到系統(tǒng)的實時性了,這種問題需要從輪循方案上修改。 |
|
| 6樓: | >>參與討論 |
| 作者: kanprin 于 2006/6/5 14:11:00 發(fā)布:
很想請教rockos一個問題。 不知道你說的在輪詢方案上修改,確實是個方向性的建議。 不過是否可以具體些 ? 如何無需等待,而能判斷出從機有沒有事件發(fā)生呢? |
|
| 7樓: | >>參與討論 |
| 作者: 松鼠的大樹 于 2006/6/6 9:43:00 發(fā)布:
考慮令牌環(huán)機制 既然對從機的查詢是固定的輪詢,建議不要通過主機查詢了,將從機構(gòu)成令牌環(huán)網(wǎng)絡(luò),主機對總線進行監(jiān)聽,同時跟PC進行通訊。 如果主機有特殊命令要發(fā)給從機的,將主機聯(lián)接在令牌環(huán)中。 |
|
| 8樓: | >>參與討論 |
| 作者: xillinx 于 2006/6/6 13:27:00 發(fā)布:
應(yīng)答方式查詢 你設(shè)計的程序結(jié)構(gòu)有問題,如果從站太多,你不能采用查詢問答的方式, 你需要采用查詢應(yīng)答方式,即被查詢從站如果沒有數(shù)據(jù)立即應(yīng)答NAK,否則應(yīng)答數(shù)據(jù),還需要定時查詢從站是否存在,如果這個從站有故障或者不存在,在下一段時間那就不需要對它查詢,所以你的最大等待時間就是發(fā)送NAK的時間。這樣可以提高你的效率。 |
|
| 9樓: | >>參與討論 |
| 作者: kanprin 于 2006/6/7 8:42:00 發(fā)布:
呵呵, 樓上兩位朋友的建議都很不錯。 to 松鼠的大樹: 你的建議可能效率會高很多,但我對令牌環(huán)網(wǎng)絡(luò)不怎么了解,如果真用這個的話,到時還望多多指教。 to xillinx: 我現(xiàn)在查詢的方式差不多也是你指的那種,不過為了確保數(shù)據(jù)的可靠性,應(yīng)答有3~4個字節(jié),你說是不是沒必要呢?1個字節(jié)怕很不可靠的。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.hbjingang.com 浙ICP證030469號 |