<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MCU工程師幾個階段的開發(fā)感悟~

          共 2953字,需瀏覽 6分鐘

           ·

          2021-04-08 22:24

          關(guān)注、星標(biāo)公眾號,直達精彩內(nèi)容

          來源:嵌入式資訊精選


          今天跟大家分享一位嵌入式工程師的項目開發(fā)感悟,寫得非常的接地氣,學(xué)習(xí)和開發(fā)過程可以進行相應(yīng)參考!


          自從我(原作者)去年被調(diào)到了嵌入式組,終于和以前研究生階段搞的開發(fā)經(jīng)歷一致了。但以前用的是ADS工具,還有用Linux平臺上的交叉編譯工具鏈,還有看linux 內(nèi)核的驅(qū)動代碼。

          現(xiàn)在搞起對日外包了。日本人不愛用linux,凡事總是搞出自己的一套。現(xiàn)在用的ut-kernel(看成一個RTOS就好),  開發(fā)工具則有RVDS,DS-5,MTK和IAR, 硬件調(diào)試器有Dstream, Realview ICE。

          現(xiàn)在對應(yīng)的是富士通半導(dǎo)體部門,做的MCU(基于arm cm3,cm4, ca5核的富士通芯片) 的軟件開發(fā)測試

          本來自己的想法是搞搞嵌入式,熟悉下硬件東西,這樣可以加深的我的底層編程功底。


          以下是幾個階段的工作感悟


          1、ut-kernel/FA5 測試修復(fù)BUG工作:

          日本人做的ut-kernel屬于嵌入式RTOS范疇,這塊同類的產(chǎn)品有uc/os, vxworks等,共同特征是高度可裁減,想塞到片內(nèi)那有限的容量內(nèi)。還有實時性好吧。實時性不僅表現(xiàn)在可搶占式進程調(diào)度,還有快速響應(yīng)中斷的能力。

          RTOS的設(shè)計畢竟和通用操作系統(tǒng)(linux)的設(shè)計思想還是有很大的差別的。感覺這個領(lǐng)域更適合微內(nèi)核結(jié)構(gòu)的發(fā)揮,宏內(nèi)核結(jié)構(gòu)如linux可裁剪性方面是個缺點。

          這個ut-kernel算是代碼量比較簡單,里面的修復(fù)BUG工作我覺得也不難,期間有timer相關(guān)的BUG,最后一看發(fā)現(xiàn)timer相關(guān)的代碼根本沒改造。

          印象深刻的是后期做性能測試,對FA5和FM3芯片做比較時,因為兩個各基于Cortex-m3和cortex-a5架構(gòu),架構(gòu)不同,發(fā)現(xiàn)這里面還是很有意思的。一開始FA5的性能沒有發(fā)揮出來,找到原因,cache沒打開。高檔次的CPU是要靠cache發(fā)揮威力的。

          于是查找芯片手冊,正確地初始化了cache并打開它。后來又發(fā)現(xiàn)還有些功能如指令分支預(yù)測等這些也得打開,于是又修改了相關(guān)寄存器。完了,感覺FA5的性能比以前好了很多。

          于是對CM3和CA5的架構(gòu)差別方面,我又充滿了興趣。我覺得知道這些,對以后并行多核程序開發(fā),物聯(lián)網(wǎng)領(lǐng)域的一些東西都有幫助。

          感覺FA5這種檔次高的芯片應(yīng)該用到手持設(shè)備開發(fā)中去。那些工控級別的應(yīng)用應(yīng)該是FM3這類51單片機取代者的天下。ut-kernel是配著FM3芯片開發(fā)的,感覺配上FA5的話,ut-kernel架構(gòu)就應(yīng)該進行大改變了,或者直接用linux等內(nèi)核比較好。

          期間做了個初始化外接的DDR芯片工作,我們直接從UBOOT社區(qū)那邊拷過來該芯片的初始化代碼。然后針對該代碼做成一個具有初始化DDR單一功能的AXF可執(zhí)行文件。以此來方便我們測試。

          還有測試中間差點鬧出來一個大問題,當(dāng)時日方客戶見我們的初始化DDR代碼中還殘留有GPL版權(quán)信息,他們大怒,拷貝代碼慣了,對版權(quán)從來沒怎么看重。日本人對這塊比較看重,聽說在日本下載盜版音樂好像要被起訴。

          下來經(jīng)過這場事,我們對版權(quán)方面的東西特別敏感,搞好代碼后,首先要在代碼包中掃描版權(quán)信息。


          2、micro.NET framework 在FM3平臺上的移植

          這個項目做起來還是非常有發(fā)展前途的??纯船F(xiàn)在物聯(lián)網(wǎng)炒得多么火熱就知道了,可惜做了不到一半,日本人就給咔嚓掉了。不是我們做的不好,而是他們又想讓我們做別的是事情了。

          做對日外包就是這樣,沒自主權(quán),得按別人指令辦事。

          這個項目的做的過程中,終于我對串口,timer,GPIO移植熟悉了很多,自己也做了些特性改造。而且我也會根據(jù)開發(fā)板的板子布線原理圖以及芯片手冊來寫一些簡單的驅(qū)動代碼了。

          還有對scatfile,分散加載也熟悉了很多,對于MDK, RVDS,DS-5調(diào)試工具以及ICE,Dstream等硬件調(diào)試器的靈活運用也掌握了不少。

           

          3、ut-kernel/M3及M4F的測試

          我親自參與并熟悉了怎么在片外再擴接一個SRAM,因為我們的測試代碼體積還比較龐大,無法放到片內(nèi)中。想想自己以前本科學(xué)電子的,那時對示波器,萬用電表掌握的特別熟練?,F(xiàn)在卻全部都忘完了(因為后來一直都搞的是純軟件)??吹巾椖拷M同事在使用示波器時,我想到自己還是有基礎(chǔ)的,快速學(xué)習(xí)能力還是有的。

          因為做驅(qū)動開發(fā),不可避免要用到示波器等這些設(shè)備??上М?dāng)時外接SRAM硬件并沒多大問題,而且示波器等還是借的,所以我沒太多機會熟悉這些硬件測量設(shè)備。

          想想自己本科數(shù)字電路,模擬電路等一些硬件課程,實驗課程都學(xué)的不錯的。哎,如果我這些功底都恢復(fù)并加強的話,那么自己的底層軟件編程也會加強不少,最主要的是編程視野也會相當(dāng)開闊。畢竟最高層的軟件算法分析設(shè)計,我研究生階段都掌握了。

          沒事以后會有機會繼續(xù)窺探到這一領(lǐng)域的。

          可惜外接ram又不穩(wěn)定,后來我們又不得不移到片內(nèi)進行測試。這時為了能把程序放到片內(nèi)去跑,就要對ut-kernel里面占用內(nèi)存空間的地方進行剪裁了,好在ut-kernel都是可裁剪的,在我們裁剪完之后,發(fā)現(xiàn)放到片內(nèi)ram中測試比片外ram穩(wěn)定多了。

          還有對嵌入式系統(tǒng)的軟件BUG調(diào)試也有所掌握,感覺嵌入式里面的軟件調(diào)試時,發(fā)現(xiàn)東西跑飛了。這時可以有多個途徑查找。也許是沒禁掉看門狗,或者那些pend_sv中斷在內(nèi)存中根本沒有初始化正確, 或者中斷向量表被沖掉了,或者對照著匯編指令看看寄存器狀態(tài)有沒有正確。要卡住出問題的地方來進行多方面原因的判斷調(diào)查。另外也要結(jié)合map文件,看看地址鏈接和加載得是否都正確,有沒有越界。

          在測試M4F FPUT時,曾經(jīng)發(fā)現(xiàn)一個詭異現(xiàn)在,一些調(diào)用子函數(shù)換個先后順序去執(zhí)行時,就崩潰了,再換過了就不崩潰了。這時我調(diào)查了下,發(fā)現(xiàn)崩潰前代碼執(zhí)行時用的棧遭到了破壞。

          具體我往前推,發(fā)現(xiàn)在調(diào)用某個API返回之后,就會破壞掉待返回的正確棧上的值。具體再調(diào)查時,發(fā)現(xiàn)是執(zhí)行某條匯編指令時,棧遭到了破壞。不過這時候這個調(diào)查上面中止了,事情實在太多了又去做其他事情了。不過我相信只要掌握了方法和本質(zhì),這些問題都只是時間問題。

          ????????????????  END  ????????????????

          推薦閱讀:


          嵌入式編程專輯
          Linux 學(xué)習(xí)專輯
          C/C++編程專輯
          Qt進階學(xué)習(xí)專輯

           關(guān)注公眾號『技術(shù)讓夢想更偉大』,后臺回復(fù)關(guān)鍵字:『Qt』『C語言基礎(chǔ)』『C語言難點』『C++』『Linux』『freertos』『指針』『數(shù)據(jù)結(jié)構(gòu)與算法』『經(jīng)驗技巧篇』『疑問篇』『基礎(chǔ)理論篇』『實戰(zhàn)篇』『架構(gòu)篇』『模塊化編程』『狀態(tài)機』『實用工具』『心聲社區(qū)』『期刊』『視頻』······等,查看更多精選內(nèi)容。 


          關(guān)注我的微信公眾號,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。


          這是我另一個技術(shù)號,程序員的編程學(xué)習(xí)基地,注重編程思想,歡迎關(guān)注!


          點擊“閱讀原文”查看更多分享。

          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美女被操视频91 | 一起草 中文字幕 无码专区 | 给我下载一个三级片黄色录像毛片 | 欧美视频手机在线 | 五月激情婷婷影音娱乐 |