(圖片僅為示例,並不一定固定為這種造型)
第十二屆全國大學生智能汽車競賽有一個分項是光電四輪車的競速(任務A),Seven她們組采購到的配件使用了freescale Crotex-M4內核的CPU,TSL1401 CCD攝像頭進行道路識別,從網上搜索了一下,應當是K60平台的的一個變種方案。
這個方案基本平台使用IAR系統開發編譯、調試及燒錄。IAR其實是一個很昂貴的系統,還好這次真的是純粹的教學需求,經由《計算機軟件保護條例》第十七條的豁免說明,這次用一下破解版。
原廠提供的DEMO程序沒有考察所使用的編譯版本,但是在網上查找一些資料,IAR6的系統可能是有一些兼容性的小問題,需要補丁,所以干脆下載了當前比較新的8.1版本。軟件的破解是需要一些技巧的,建議仔細看一下附帶的視頻了解操作流程。
還收集了一些相關的資料,包含上面說的IAR共有:
- IAR8.1安裝包、破解包、破解說明視頻
- IAR for ARM系列教程,可以當做手冊看,IAR系統十分龐大,短時間不可能全部熟悉,一般只要了解自己常用的功能就好。
- 附件3-第十二屆全國大學生“恩智浦”杯智能汽車競賽規則.pdf,作為命題作文,這個文檔是要爛熟於心的。
- NEWB_K60_OV7725_ZL_.rar,廠方提供的原始demo代碼,對於所有新上手的同學,實際練習都應當從這里開始起步。
- 【野火】K60中文資料整合版.pdf 這個是比較完整的資料。
- 野火Kinetics開發板教程:三天入門Cortex-M4.pdf建議從這篇文章開始入門,寫的非常淺顯易懂。
- 野火K60開發板資料集錦(飛思卡爾智能車).rar 這是一組資料,有些跟上面是重復的,根據自己的時間情況酌情了解。
- 智能車PID算法.pdf
- 智能車總結.doc 這篇跟上篇是智能車的基本理論知識,包括調優的一些公式、算法的基本推演,理論上說應當先看懂這些再下手開發,當然很多天生的實踐派就當我沒說,不過相信我,早晚你會回到這里。
上述所有資料下載鏈接:https://pan.baidu.com/s/1nv5QH1R 密碼:c6t9
廠商demo程序,IAR編譯上手記錄
-
解壓到自己的工作目錄,不要破壞原有的目錄結構。
-
頂層目錄中的fire_Kinetis_demo.eww文件就是總工程文件,雙擊就可以用IAR打開。
-
打開后左上角是項目文件列表,首先右鍵點擊工程文件(默認是fire_demo-Debug)字樣。在左側列表中選擇Linker,右側的路徑中有原開發者的路徑,一般情況下這同你的項目文件是不一致的,點選你項目文件夾下面/iar_config_files/LPLD_BOOT_K60DN512.icf文件。然后OK退出設置。
-
選擇Project菜單中Make,開始編譯項目,也可以直接按F7快捷鍵。
-
編譯過程中會有很多警告信息,這些信息中,有因為版本不同造成的,有原有開發者不重視造成的。一般企業開發的要求是不允許存在這些警告信息,都需要改正。但在學習項目中,根據自己情況來定吧,建議有能力的情況下都要修正。當然經驗上說,一般情況下警告信息不影響最終的編譯結果。
-
編譯完成后,左上角列表窗口中最下面一行Output之后應當有輸出內容,本項目中應當是:fire_gpio_demo.out,右鍵點擊這個文件,菜單中Open Containing Folder可以打開編譯結果所在文件夾。其中有3個文件,out文件是編譯結果,一般是本地調試及其它一些特殊用途,hex文件是可以燒制到智能車中運行的文件。一般燒制使用J-Link,使用不同的燒制工具操作有不同,需要看具體工具的說明書,IAR平台也支持大多常見的工具,在菜單中有J-link菜單,可以參考。
-
按照一般開發經驗,Project菜單中的Download and Debug也是指的燒錄到設備進行調試,手頭沒有測試環境沒有嘗試。
-
左上角項目窗上面,Debug可以點擊選擇成Release,最終正式發布的版本,應當選擇為Release方式然后編譯、燒錄到設備。
代碼粗解
項目文件列表中,剛才說到了Output是指編譯的輸出結果,從下向上看還有:
- uCOS-II:這是一個極簡的嵌入式操作系統,比常見的Windows/Linux都要小很多,雖然功能弱,但也具備了基本的功能,可以在網上搜索查找更全面資料。
- LIB:各種庫文件,所謂的開發,一般情況下都是基於這些庫和操作系統的。
- Header:對應上面庫的c語言頭文件,通過這些頭文件的描述,開發才能使用上面的庫。
- drivers:驅動程序,理論上說除了cpu之外所有的設備都是需要驅動的,不同設備有不同驅動,一般就歸類在這個目錄。
- cpu:實際是uCOS-II跟具體硬件之間的一個接口層,不同的配置,比如FLASH大小、RAM大小、型號不同,這部分及驅動部分都會有響應的設置及內容不同,從而保證系統正常啟動、加載必要的驅動比如內存、FLASH的驅動,然后才把控制權交給uCOS-II操作系統。
- common:其它一些必須的、共用的、也是基礎的功能,類似基本的i/o,輸入輸出、內存測試等,這些既是系統必須的,又嚴重依賴當前的設備從而無法歸類到通用的庫、驅動、操作系統中。
- app:終於切入了正題,這里面是我們真正自己要開發的部分,也就是我們應用的主程序。在其中的main.c則又是我們程序的入口。
拉普蘭德開源Kinetis固件庫使用
拉普蘭德開源Kinetis固件庫地址:https://github.com/LPLDTeam/LPLD_OSKinetis
項目README.md已經有比較清楚的說明,所有的演示代碼及自己的項目,應當放在project中,github上project中還提供了一個windows可執行的exe文件來幫助用戶建立基於拉普蘭德開源庫的項目,自動生成可供iar系統使用的工程文件。
前面介紹的fire_Kinetis_demo.eww這個工程,實際是用官方庫+野火K60開發庫所建立的工程,和這里介紹的拉普蘭德開源庫,實際相當於我們企業及應用中所說的軟件框架。目前看,官方的標准庫肯定是兼容性最好的,其它框架中都可以使用官方庫的功能。但官方庫也只提供了最基本的功能,已經很少看到有人在官方庫的基礎上從頭開發。而其它的框架之間目前看幾乎沒有辦法直接互相調用,選擇一個,基本代表放棄另外一個。所以選擇一個適合自己的開發庫框架開始來建立自己的項目就比較重要。當然接手一個別人的項目,往往大多只能延續原有的框架。
從網上的評價看,拉普蘭德開源項目的完整性比較好,上手容易。而野火庫有寫的很完善的文檔,似乎更適合新手。