Top Banner

Click here to load reader

18

移植Os and 相關io介紹

May 24, 2015

Download

Technology

Hong Da Lin

移植Os and 相關io介紹
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 移植Os and  相關io介紹

移植OS & 相關IO介紹陳品杰 <[email protected]>林宏達 <[email protected]>

From NCKU國立台北科技大學 / 2014-08-24

2014/8/13 1

Page 2: 移植Os and  相關io介紹

開始前的準備工作

2014/8/13 2

Page 3: 移植Os and  相關io介紹

移植OS

• 首先至FREERTOS官網下載最新版本FREERTOS• 進行多工系統的嵌入式開發

• 至ST官網下載板子週邊lib• http://www.st.com/web/en/catalog/tools/PF259429

• 使用下列網址的Makefile進行修改編譯• https://github.com/PJayChen/STM32f4xx_Bootloader/blob/master/Makefile

2014/8/13 3

Page 4: 移植Os and  相關io介紹

移植OS

• 這邊以之前說明的test為例,將FreeRTOS、Libraries、Makefile放置到test資料夾下

• 板子要燒入必須跟Compiler說明板子的記憶體相關資訊,所以必須放入linkscript(自行Google查詢linkscript相關資訊)

• test資料夾下新增linkscript資料夾,內容為stm32_flash.ld檔• stm32_flash.ld檔案內容可參照下面網址

• https://github.com/PJayChen/STM32f4xx_Bootloader/blob/master/linkscript/stm32_flash.ld

• 在test資料夾下新增source code跟include資料夾,名稱跟Makefile設定路徑一樣

2014/8/13 4

Page 5: 移植Os and  相關io介紹

移植OS

• 所以我們便在test資料夾下新增src跟inc兩個資料夾• 注意因為Makefile內容將freertos移至Libraries內,若要將freertos拉到test資料夾,Makefile也請一併更該PATH

• 最後test資料夾下會只有2個檔案+4資料夾

2014/8/13 5

Page 6: 移植Os and  相關io介紹

UART設置

2014/8/13 6

Page 7: 移植Os and  相關io介紹

啟用UART

• 於src資料夾下,創建main.c,內容可依照下面網址• https://github.com/PJayChen/STM32f4xx_Bootloader/blob/master/src/main.

c• 其內容主要是創建3個task,分別做UART的測試

2014/8/13 7

Page 8: 移植Os and  相關io介紹

啟用UART

• 進入main一開始我們必須設置一個Queue來放置UART傳送的MSG• 設置Queue的方式可到FreeRtos的官網輸入xQueueCreate會出現使用方法如下

2014/8/13 8

需要include的*.h檔

函式使用的方式

設置Queue的長度設置Queue一格的大小

一格大小是一個Char

Page 9: 移植Os and  相關io介紹

啟用UART

• 設定好Queue後我們必須設置接收的function

2014/8/13 9

Page 10: 移植Os and  相關io介紹

啟用UART

• src/hw_it.c內容是設置USART為中斷處理(不是polling的方式)• 所以必須撰寫中斷處理常式,這邊我們在 prvSetupHardware 內的

USART_Configuration 為 開 啟 USART1 , 所 以 中 斷 函 式 的 名 稱 為USART1_IRQHandler(為Libraries/CMSIS/Device/startup_stm32f40xx.s設定好的)。

2014/8/13 10

Page 11: 移植Os and  相關io介紹

啟用UART

• 接著必須設定板子的GPIO打開UART,透過main底下的 prvSetupHardware()來設定,此函式會呼叫src/hw_conf.c

• hw_conf.c會執行• NVIC_SetVectorTable,中斷的設置

• NVIC_PriorityGroupConfig,中斷優先權設置

• USART_Configuration,USART的設置

• 相關設置的參數可以至http://wiki.csie.ncku.edu.tw/embedded/PWM看程式碼說明

• (最後面附註的四個網址也都有說明)

• 其餘myio.c與String.c為實現printf相關檔案

• (請試著讀懂它,將來就業也是透過讀懂別人的Source Code來修改加入自己的功能,請事先練習,為將來先做準備)。

2014/8/13 11

Page 12: 移植Os and  相關io介紹

啟用UART

• 試著使用make編譯,若發生路徑錯誤找不到檔案,請修改Makefle(這邊可能會出現很多錯誤,請練習著修改),將不必要的檔案刪除盡量簡化資料夾內容。

• 其中Source內的startup檔案請選擇gcc的資料夾下的startup• Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/gcc_ride7/startup_stm32f40xx.s

• 板子(stm32f4相關的檔案)的編譯都通過後,可能會出現Freertos的錯誤

• 可能錯誤的原因有資料夾的大小寫、路徑錯誤、缺少FreeRTOSConfig.h、缺少portable.h、檔案名稱不同(startup_stm32f4xx.s -> startup_stm32f40xx.s)

• 其中FreeRTOSConfig.h請參照下面網址編寫(將欲打開的設定打開、priority大小設定、以及TASK命名長度等等)

• https://github.com/PJayChen/STM32f4xx_Bootloader/blob/master/Libraries/freeRTOS/FreeRTOSConfig.h• portable.h位於portable/GCC/ARM_CM4F/底下,獎資料夾下兩個檔案複製到Freertos資料夾下

2014/8/13 12

Page 13: 移植Os and  相關io介紹

啟用UART

• 完成編譯後的情況

• 這時候資料夾下會多出幾個檔案(切忌之前提過的不要將非必要的檔案上傳到GITHUB,如這些編譯後的產生檔*.o,*.elf,*.hex及暫存檔*.~等等)

2014/8/13 13

Page 14: 移植Os and  相關io介紹

啟用UART

• 如果不想要上傳非必要的檔案,請在專案資料夾下(這邊即是test資料夾)新增一個.gitignore的隱藏檔,內容為

• 編譯產生的檔案也可以加入,這邊視需求自行新增。

• 若在圖形化介面下看不到隱藏檔案,可使用Ctrl+H顯示所有檔案

2014/8/13 14

Page 15: 移植Os and  相關io介紹

燒入

• 編譯完成後可使用make qemu對板子做燒入動作(板子不可連接USB3.0只能用2.0,因為LINUX要支援3.0必須經過設置)

• 燒入完成後的結果如下

2014/8/13 15

Page 16: 移植Os and  相關io介紹

練習SHELL撰寫

2014/8/13 16

Page 17: 移植Os and  相關io介紹

練習加入Shell task,創造指令

• 請於main.c的main()內加入一個task為Shell,此task內容為偵測使用者輸入的字元判斷是否為有效指令做出相應的動作。

• 可參照https://github.com/openbox00/quadcopter/blob/master/src/shell.c

• Shell這個task很重要,飛行器的控制都是透過解析字元,做出相應的動作

• 如控制轉速(上升、下降)、前後左右、立即停止(重要!如果發生問題請不要猶豫按下停止)

• 因為我們是透過手機APP(這邊若是使用Android手機是連接不到飛控板上的WIFI,必須經過Root,但是Apple手機的可以連接,所以最好是有人會寫Apple的APP這樣比較方便)控制,所以手機發出的訊號相當於透過WIFI傳送字元給飛控板,飛控板的SHELL接收到字元做出相應的動作

2014/8/13 17

Page 18: 移植Os and  相關io介紹

附註

• 請善用grep、find、man指令

• 請熟悉vi操作

• 請熟讀gun make manual• http://www.gnu.org/software/make/manual/html_node/

• 這些東西都是會用到,但是不熟會卡很久,請務必熟悉,對未來就業是很有幫助的

• 請先閱讀• http://wiki.csie.ncku.edu.tw/embedded/USART• http://wiki.csie.ncku.edu.tw/embedded/PWM• http://wiki.csie.ncku.edu.tw/embedded/SPI• http://wiki.csie.ncku.edu.tw/embedded/GPIO• 這些都是飛行器可能會用到的週邊裝置

2014/8/13 18