国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MCU軟件工程師如何改變些沒有軟件設計思想?

Q4MP_gh_c472c21 ? 來源:最后一個bug ? 作者:handong ? 2021-03-17 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天分享的文章,主要給那些沒有軟件設計思想的MCU軟件工程師看的!隨著目前MCU的各方面性能顯著提升,一些以MCU為控制中心嵌入式系統也是越來越復雜,毫無軟件設計理念的代碼真的是拖累單片機,所以對每個MCU軟件工程師在軟件設計等方面的要求也將越來越高!

這里利用一個實際發生的例子,對入行的初級軟件工程師提一些軟件設計上的建議,并分享了一些經常走的彎路,希望可以幫到大家。這篇文章我沒有談編程的規范性的東西,如果你想讓自己的程序文件代碼更加直觀、看起來美觀、可讀性強,推薦學習一下全面的編程規范,比如網絡上廣為流傳的,華為“C語言編程規范”。本文主要想說一說當我們的單片機遇到多個模塊的數據需要處理,類似于“多任務”時應該怎么去思考和處理?背景是這樣的,9月份開始安排一個工程師開始做電動汽車交流充電樁機械設計部分由公司機械結構部門負責。充電樁的電子部分總體上分為X個部分(用到的資源): 電阻觸摸屏(RS232),M1卡讀寫(RS232),電能計量表(RS485),語音提示(SPI),電力開關(繼電器IO),通訊接口(RS485、CAN)。

工程師做的過程非常勤奮,期間也是困難重重,改了很多個版本,很多的bug,總算第二年6月把充電樁立起來了。當然此過程我并沒有過多的干涉,系統也沒有經過非常嚴格的測試,結果發現讀卡的時候不能處理觸摸屏,播放語音的時候不能處理讀卡,語音播放不能打斷或者跳躍,反正就是所有事件必須一個一個按部就班的來,一旦操作錯誤就需要多次執行、等待、甚至重新來過。一個工作3年多的工程師怎么會把產品做成這樣呢?思來想去不應該呀,是不是程序哪里出了問題 ? 解決問題的最好辦法就是評審代碼,來review代碼瞧瞧。不看不知道,一看嚇一跳!整個的程序是沒有邏輯的,一條線就往下寫,這不正是當年在學校剛做第一個項目的代碼嗎 ? ……

//主循環

while(1)

{

//上電進入主程序 或 觸發觸摸屏

Function1();//播放提示語音

Delay();//等待播放完畢

//讀取M1卡信息

Function2();

Delay();//等待讀卡數據返回

//播放提示語音

Function3();

Delay();//等待播放完畢

//M1卡數據交互,判定下一步操作及提示

Function4();

Delay();//等待數據處理完畢

……

……

}

從代碼上可以看出這個工程師基本上對于自己設計的產品沒有任何軟件上的設計可言,也很少去吸收一些優秀的代碼和思想,對自己開發的程序在產品上的具體表現也不敏感,更被說對RTOS的學習和理解了。

他犯了幾個我們在程序開發過程中幾個忌諱的問題:

1、 delay(死等)這類函數應該只在實驗室驗證某個功能過程中用到,或許是在一些初始化時序使用到,而不會用來控制整個的程序運行架構,在實際的產品開發時無論是主循環while中,還是其調用的函數中,亦或是中斷服務程序中幾乎是不可能看到的。

2、 產品設計的各個相對比較獨立的子模塊之間的邏輯關系太強,例如:必須等待播音完畢才能讀卡進入下一步操作等。我們講,產品設計中只有各個事件處理模塊間的邏輯關系弱化,才能更加靈活的進行處理。例如:兩個事件A和B,如果程序開發時將A做成B事件的必要條件,B事件的觸發就必須等待A事件的發生。反之如果A事件作為B事件處理的一個特殊情況,也就是說我不執行A也有可能執行B,那么程序開發起來就變得靈活很多。

3、 沒有考慮到單片機本身是一個單核單任務的架構,每一個事件都會獨占CPU內核,當多個任務模塊同時存在時我們應該對各個事件進行區分,我們應當分情況、分事件實時性要求等區分對待。

那么針對于這樣的問題,或者是遇到類似的項目我們應該如何處理呢?這里提一下我的建議和想法,首先他這里是裸機開發,所以就不談RTOS方面的設計建議了,僅僅只是針對前后臺架構。

1、將硬件系統區分為獨立單元單獨做成底層驅動函數和應用函數,并且函數正常應該有參數和返回值,其中返回值是必要的。如何衡量這類函數呢?這類函數可移植性強,只要一個.h文件和一個或多個.c文件就可以隨意放到任何工程中,一句話吧,模塊化!例如:語音播放、M1讀卡、485處理等等。

2、將1中的所有函數進行時間評估,評估點有兩個。一個是函數的執行時間t,第二個是函數的周期性發生的時間T,一個最基本的條件是t 《 T,理想情況應該是t 《《 T。

3、建立一個集中邏輯處理函數,也就是核心任務調度處理函數,在這個函數中對1中的各個函數進行調度。這個函數發揮的作用相當于嵌入式系統中的系統調度。這種調度是整個硬件邏輯中所有事件處理的調度,它的目的是完成一個處理過程,但是絕不依賴于任意事件的必要處理過程。這樣就將問題2中提到的事件間的邏輯關系弱化了,處理起來變得十分靈活,使得各個關系不在相互必要。bug菌記得有一本書籍叫《時間觸發型調度系統》,大伙可以看看,大體思想與這里的觀點差不多!

4、為了保證前面內容的正常實施還需要針對各類事件的周期,建立一個必要的時間管理函數,時間函數的基礎一般情況下由一個內部定時器的中斷來完成,中斷的周期一般我們考慮5-10ms。按照實際需求將N個定時器中斷定義為一個事件處理的周期TT,這個周期應該保證處理完最惡劣情況可能發生的所有t,且保證TT 《 T。

5、 這其中也有例外,一些實時性要求高的事件應當用中斷完成。其中中斷處理函數的處理事件應盡量短,時間要求參見2。bug菌覺得,不管你所做的項目有沒有用到RTOS,平時都需要玩玩RTOS,對該觀點的理解會有幫助。

原文標題:3年的MCU工程師就寫出這樣的代碼?

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18925

    瀏覽量

    398167
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73969

原文標題:3年的MCU工程師就寫出這樣的代碼?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    軟通動力ASDM平臺三大核心能力實現軟件工程效能提升

    在 AI 大模型與 Agent 技術快速發展的當下,企業軟件開發團隊的需求早已從單一的 AI Coding 工具,轉向軟件工程全流程的場景化 AI 賦能。軟通動力推出的 ASDM 平臺
    的頭像 發表于 02-27 11:34 ?318次閱讀
    軟通動力ASDM平臺三大核心能力實現<b class='flag-5'>軟件工程</b>效能提升

    軟通動力ASDM AI優先軟件研發流水線助力軟件工程發展

    在 AI 深度融入軟件工程的當下,軟通動力 ASDM(AI 優先的系統化研發方法和平臺)打造的AI 優先的軟件研發流水線,成為企業研發效能躍升的核心落地載體,徹底打破傳統 “人主導、AI 輔助
    的頭像 發表于 02-27 11:21 ?393次閱讀
    軟通動力ASDM AI優先<b class='flag-5'>軟件</b>研發流水線助力<b class='flag-5'>軟件工程</b>發展

    什么是BSP工程師

    一、嵌入式系統 要明白什么是嵌入式軟件工程師,我們先從嵌入式系統(嵌入式設備)說起。維基百科上對嵌入式系統的定義如下: 嵌入式系統(Embedded System),是一種嵌入機械或電氣系統內部
    發表于 01-13 06:54

    開源鴻蒙技術大會2025丨AI軟件工程分論壇:智能創新,賦能開源鴻蒙軟件工程

    師生深度參與技術交流聯動。論壇由華為終端軟件工程與IT裝備部孫為國與開源鴻蒙AI軟件工程SIG副組長王意明聯合出品。此次論壇的成功舉辦標志著開源鴻蒙AI軟件工程從技術探索步入規模落地階段,預計2025年底將賦能10萬+開發者。
    的頭像 發表于 11-20 17:32 ?1021次閱讀
    開源鴻蒙技術大會2025丨AI<b class='flag-5'>軟件工程</b>分論壇:智能創新,賦能開源鴻蒙<b class='flag-5'>軟件工程</b>

    工程師變身AI“指揮者”,吉利與阿里云的軟件開發變革實驗

    1975年,IBM工程師Fred Brooks在《人月神話》中提出軟件工程的核心難題:隨著系統規模和團隊規模增長,復雜度會呈指數級上升。他的結論是, 軟件工程沒有銀彈”,
    的頭像 發表于 11-13 10:43 ?385次閱讀
    <b class='flag-5'>工程師</b>變身AI“指揮者”,吉利與阿里云的<b class='flag-5'>軟件</b>開發變革實驗

    硬件工程師面試必會:10個核心考點#硬件設計 #硬件工程師 #電路設計 #電路設計

    硬件工程師
    安泰小課堂
    發布于 :2025年09月23日 18:00:33

    硬件工程師和嵌入式軟件哪個更有前途?

    不少人琢磨硬件工程師和嵌入式軟件到底哪個更有前途,其實從實際職場情況和成長路子看,差別還挺清楚的。先說說天花板這事,一般來講,硬件工程師的職業天花板還真比嵌入式軟件低 —— 硬件崗位大
    的頭像 發表于 09-10 10:43 ?1107次閱讀

    招鑲入式工程師1個,硬件工程師一個,

    東莞市研生科技有限公司是一家藍牙方案公司,主營藍牙方案的設計開發,產品包括藍牙BLE/4G透傳/AI智能體方案開發,因公司發展需要需對外招聘嵌入式軟件開發工程師,對藍牙音頻/BLE以及智能IC讀卡器有三年實操經驗,能單獨完成項目的軟件
    發表于 08-29 02:14

    問,成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚興科技 #搞笑

    硬件工程師
    揚興科技
    發布于 :2025年04月25日 17:15:37

    工程師經驗分享:社區之星 趙云 沉著穩定才能做好技術

    控制算法理論和實踐有過推導和大量的研發調試經驗。 ? 工作經歷: 華為技術有限公司---芯片驗證工程師 上海問問網絡科技有限公司---電機驅動軟件工程師 ? ? ? 社區訪談: 社區小助手:可以分享一下您的學習、工作經歷嗎,您是怎樣進入電子行業的呢? 趙
    的頭像 發表于 04-15 15:58 ?1314次閱讀
    <b class='flag-5'>工程師</b>經驗分享:社區之星  趙云 沉著穩定才能做好技術

    如何成為一名嵌入式軟件工程師

    如何成為一名嵌入式軟件工程師? 01明確崗位的角色與定位 嵌入式軟件工程師主要負責開發運行在特定硬件平臺上的軟件,這些軟件通常與硬件緊密集成,以實現特定的功能。 不僅需要精通編程語言
    發表于 04-15 14:37

    超低功耗MCU軟件設計技巧與選型

    與開發應用生態的沉淀,大力節省超低功耗選型設計成本以及開發周期.如何做好超低功耗mcu嵌入式軟件設計與選型是本文講述的主要內容.
    的頭像 發表于 04-12 17:19 ?1975次閱讀
    超低功耗<b class='flag-5'>MCU</b><b class='flag-5'>軟件設計</b>技巧與選型

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發布于 :2025年03月25日 17:30:51