20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告
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
算法。我們使用的是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
,然後重新編譯,解決問題。
四、設計體會及收獲
本次設計在同組小夥伴的共同努力和老師的悉心指導下順利完成。通過本次課程設計了解了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(電子書);
時間觸發嵌入式系統設計模式(中文版)
20155227辜彥霖《基於Cortex-M4的UCOSIII的應用》課程設計個人報告