天天看點

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

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

一、個人貢獻

  • 參與課設題目讨論及完成全過程;
  • 資料收集;
  • 負責主要代碼調試;
  • 撰寫小組結題報告。

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

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

  • 解決方法是修改幾個重要檔案時出錯,具體如圖:
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告

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

  • 修改心路曆程大緻如下:先找到在

    STM32F407

    能夠成功運用

    LCD

    上出現現象的工程,對比兩個工程下跟

    LCD

    有關的檔案(頭檔案和c檔案),首先了解

    main.c

    ,發現

    main.c

    是不用修改的,然後找到老師所給代碼中找到注釋中标有

    STMF429

    字樣的檔案,對比兩個工程中相同檔案的内容,若是有序列槽之類定義的不同,則将不同的部分按照成功運用

    LCD

    的工程中的檔案内容進行修改;有缺少的檔案就從成功的工程裡複制;每進行一步就運作一下,然後按照提示的錯誤來進行修改。這真的是很考驗耐心和細心的一項工作,因為同時需要打開很多檔案,代碼量也很多,非常容易看花眼,最好每修改一步就進行一下備份。

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

  • 解決辦法是:咨詢過老師之後,将實驗代碼與之前有現象的程式代碼作比較,進行修改,但實驗箱仍然沒有出現本應出現的現象。再次詢問老師,發現是代碼中互斥信号量有問題,最後在老師指導下,出現實驗現象。
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告

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

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

  • 解決辦法是安裝

    STM32F4XXDFP

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

20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 出現原因是版本不比對,這個安裝包安裝到

    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.

20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 出現錯誤的原因是:沒有完全破解。
  • 解決辦法是:按照

    D:\實驗箱資料20161008\實驗箱資料20161008-forsale-exp\Part4-Cortex M3\1.實驗平台搭建\MDK5.11a安裝手冊

    中的破解方法破解

    MDK5.15

④ 運作程式之後下載下傳到開發闆時出現如下錯誤:

20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 解決辦法是:打開

    Options for Target

    頁籤,在

    Debug

    欄選擇仿真工具為

    J-LINK/J-TRACE Cortex

    ,如圖所示:
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 上圖中我們還勾選了

    Run to main()

    ,該選項選中後,隻要點選仿真就會直接運作到

    main

    函數,如果沒選擇這個選項,則會先執行

    startup_stm32f40_41xxx.s

    檔案的

    Reset_Handler

    ,再跳到

    main

    函數。
  • 然後我們點選

    Settings

    ,設定

    J-LINK

    的一些參數,如圖所示:
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 圖中,我們使用

    J-LINK V8的SW

    模式調試,因為我們

    JTAG

    需要占用比SW模式多很多的

    IO

    口,而在實驗箱開發闆上這些

    IO

    口可能被其他外設用到,可能造成部分外設無法使用。是以,我們建議大家在調試的時候,一定要選擇

    SW

    模式。

    Max Clock

    ,可以點選

    Auto Clk

    來自動設定,上圖中我們設定

    SWD

    的調試速度為

    10MHz

    或者

    5MHz

    ,這裡,如果你的

    USB

    資料線比較差,那麼可能會出問題,此時,可以通過降低這裡的速率來試試。
  • 注意:若是

    JLINK

    連接配接成功的話,

    SW Device

    處會顯示裝置資訊。

    單擊

    OK

    ,完成此部分設定,接下來我們還需要在

    Utilities

    頁籤裡面設定下載下傳時的目标程式設計器,如圖所示:
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 我們直接勾選

    Use Debug Driver

    ,即和調試一樣,選擇

    JLINK

    來給目标器件的

    FLASH

    程式設計,然後點選

    Settings

    ,設定如圖所示:
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告
  • 這裡

    MDK5

    會根據我們建立工程時選擇的目标器件,自動設定

    flash

    算法。我們使用的是

    STM32F407ZGT6

    FLASH

    容量為

    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

    ,然後重新編譯,解決問題。
20155227辜彥霖《基于Cortex-M4的UCOSIII的應用》課程設計個人報告

四、設計體會及收獲

本次設計在同組小夥伴的共同努力和老師的悉心指導下順利完成。通過本次課程設計了解了

uC/OS-III

是一個可剝奪型核心(搶占式核心,

Preemptive Kernel

),它總是執行目前就緒任務中優先級最高的那個,

ucos

的任務的類型有兩種:運作至完成型、無限循環型,允許任務停止自身或者停止另外的任務。雖然本次課程設計的題目要求中程式設計并不是重點,但是在運作調試代碼的過程中,不僅熟悉了

cortex-m4

的使用,還對

ucos

的基本任務建立,優先級排程,使用

lcd

led

等功能的代碼編寫有了初步的了解。我在本次課程設計的過程中查閱了不少關于

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(電子書);
  • 時間觸發嵌入式系統設計模式(中文版)