1. 程式人生 > >20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告

20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告

htm direct 通過 較差 函數 點擊 IV 其他 小夥伴

20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告

一、個人貢獻

  • 參與課設題目討論及完成全過程;

  • 資料收集;

  • 負責主要代碼調試;

  • 撰寫小組結題報告。

二、設計中遇到的問題及解決方法

① 移植之後編譯出現錯誤,沒能出現正確現象;

  • 解決方法是修改幾個重要文件時出錯,具體如圖:

技術分享圖片

技術分享圖片

②老師給的示例代碼是基於STM32F429的,沒法在STM32F407上出現結果,需要修改

  • 修改心路歷程大致如下:先找到在STM32F407能夠成功運用LCD上出現現象的工程,對比兩個工程下跟LCD有關的文件(頭文件和c文件),首先理解main.c,發現main.c是不用修改的,然後找到老師所給代碼中找到註釋中標有STMF429
    字樣的文件,對比兩個工程中相同文件的內容,若是有串口之類定義的不同,則將不同的部分按照成功運用LCD的工程中的文件內容進行修改;有缺少的文件就從成功的工程裏復制;每進行一步就運行一下,然後按照提示的錯誤來進行修改。這真的是很考驗耐心和細心的一項工作,因為同時需要打開很多文件,代碼量也很多,非常容易看花眼,最好每修改一步就進行一下備份。

③ 最後運行UCOSIII互斥任務量代碼時下載成功之後沒能出現正確現象;

  • 解決辦法是:咨詢過老師之後,將實驗代碼與之前有現象的程序代碼作比較,進行修改,但實驗箱仍然沒有出現本應出現的現象。再次詢問老師,發現是代碼中互斥信號量有問題,最後在老師指導下,出現實驗現象。

技術分享圖片

技術分享圖片

技術分享圖片

三、調試過程中遇到的主要問題及解決方法

① 在運行老師給的代碼時keil顯示需要安裝STM32F4XXDFP;

  • 解決辦法是安裝STM32F4XXDFP

② STM32F4XXDFP安裝之後出現如下錯誤:

技術分享圖片

  • 出現原因是版本不匹配,這個安裝包安裝到MDK5.15上是沒問題的,5.11上會出現這個問題。現在MDK的策略是低版本基本不讓更新安裝包,讓用戶去上級到新的MDK版本上.

  • 解決辦法是下載MDK5.15,不再出現這個錯誤。

③ 編譯之後出現如下錯誤:..\OBJ\HZ.axf: error: L6050U: The code size of this image (47788 bytes) exceeds the maximum allowed for this version of the linker.

技術分享圖片

  • 出現錯誤的原因是:沒有完全破解。
  • 解決辦法是:按照D:\實驗箱資料20161008\實驗箱資料20161008-forsale-exp\Part4-Cortex M3\1.實驗平臺搭建\MDK5.11a安裝手冊中的破解方法破解MDK5.15

④ 運行程序之後下載到開發板時出現如下錯誤:

技術分享圖片

  • 解決辦法是:打開Options for Target選項卡,在Debug欄選擇仿真工具為J-LINK/J-TRACE Cortex,如圖所示:

技術分享圖片

技術分享圖片

  • 上圖中我們還勾選了Run to main(),該選項選中後,只要點擊仿真就會直接運行到main函數,如果沒選擇這個選項,則會先執行startup_stm32f40_41xxx.s文件的Reset_Handler,再跳到main函數。
  • 然後我們點擊Settings,設置J-LINK的一些參數,如圖所示:

技術分享圖片

  • 圖中,我們使用J-LINK V8的SW模式調試,因為我們JTAG需要占用比SW模式多很多的IO口,而在實驗箱開發板上這些IO口可能被其他外設用到,可能造成部分外設無法使用。所以,我們建議大家在調試的時候,一定要選擇SW模式。Max Clock,可以點擊Auto Clk來自動設置,上圖中我們設置SWD的調試速度為10MHz或者5MHz,這裏,如果你的USB數據線比較差,那麽可能會出問題,此時,可以通過降低這裏的速率來試試。
  • 註意:若是JLINK連接成功的話,SW Device處會顯示設備信息。
    單擊OK,完成此部分設置,接下來我們還需要在Utilities選項卡裏面設置下載時的目標編程器,如圖所示:

技術分享圖片

  • 我們直接勾選Use Debug Driver,即和調試一樣,選擇JLINK來給目標器件的FLASH編程,然後點擊Settings,設置如圖所示:

技術分享圖片

  • 這裏MDK5會根據我們新建工程時選擇的目標器件,自動設置flash算法。我們使用的是STM32F407ZGT6FLASH容量為1M字節,所以Programming Algorithm裏面默認會有1M型號的STM32F4xx FLASH算法。特別提醒:這裏的1M flash算法,不僅僅針對1M容量的STM32F4,對於小於1M FLASH的型號,也是采用這個flash算法的。最後,選中Reset and Run選項,以實現在編程後自動運行,其他默認設置即可。設置完成之後,如圖所示。
  • 在設置完之後,點擊OK,然後再點擊OK,回到IDE界面,編譯一下工程。接下來我們就可以通過JLINK下載代碼和調試代碼。

⑤安裝keil MDK5.15之後再運行以前老版本的工程會出現如下錯誤:.\Core\core_cm4.h(169): error: #5: cannot open source input file "core_cmInstr.h": No such file or directory

  • 解決方法:手動添加path;為: MDK安裝目錄\ARM\Pack\ARM\CMSIS\4.1.1\CMSIS\Include,然後重新編譯,解決問題。

技術分享圖片

四、設計體會及收獲

本次設計在同組小夥伴的共同努力和老師的悉心指導下順利完成。通過本次課程設計了解了uC/OS-III是一個可剝奪型內核(搶占式內核,Preemptive Kernel),它總是執行當前就緒任務中優先級最高的那個,ucos的任務的類型有兩種:運行至完成型、無限循環型,允許任務停止自身或者停止另外的任務。雖然本次課程設計的題目要求中程序設計並不是重點,但是在運行調試代碼的過程中,不僅熟悉了cortex-m4的使用,還對ucos的基本任務創建,優先級調度,使用lcdled等功能的代碼編寫有了初步的了解。我在本次課程設計的過程中查閱了不少關於ucos的資料,體會到了ucos的魅力和功能的強大,但我對ucos的了解才僅僅處於入門階段,希望以後有機會能深入學習!

五、參考資料(圖書、網址…)

網址

https://blog.csdn.net/zq1035874027/article/details/54709563;
https://blog.csdn.net/hello__xs/article/details/70666285;
https://download.csdn.net/download/lqxk000/7163935;
https://blog.csdn.net/avenger0422/article/details/50708969;
https://blog.csdn.net/nemol1990/article/details/45461053;
https://www.amobbs.com/thread-5628435-1-1.html

圖書

  • The Definitive Guide to Arm Cortex-M3 and Cortex-M4 Processors_c;

  • Cortex-M3權威指南CnR2(電子書);

  • 時間觸發嵌入式系統設計模式(中文版)

20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告