1. 程式人生 > >【RTX作業系統教程】第3章 初學RTX作業系統準備工作

【RTX作業系統教程】第3章 初學RTX作業系統準備工作

第3章  初學RTX作業系統準備工作

    俗話說萬事開頭難,學習一門新的知識,往往難的不是知識本身,而是如何快速上手,需要什麼資料和開發環境,一旦上手後,深入的學習相對就要容易些了。     本章節就起到這樣的作用,主要說明下初學RTX作業系統需要做的準備工作。     3.1 開發環境     3.2 重要說明     3.3 RTX系統參考資料     3.4 RTX的除錯方法     3.6 RTX除錯元件功能介紹     3.5  總結3.1  開發環境 u IDE:MDK4.74,建議使用者使用此版本操作教程配套的例子。 u 偵錯程式使用JLINK,ULINK或者STLink均可。 u 配套開發板是安富萊STM32-V4開發板,MCU是STM32F103ZET6和STM32-V5開發板,MCU是STM32F407IGT6。3.2   重要說明

u RTX作業系統是由KEIL公司(現在已經被併入ARM公司旗下)開發並進行升級維護的。 u 每個MDK的安裝目錄裡面都會有一個RTX原始碼,對於MDK4.XX來說,大家使用的那個MDK版本,務必使用那個MDK版本下面的RTX,這樣使用MDK自帶的RTX除錯元件時,才能顯示正確的除錯資訊。 u 當前STM32F103和STM32F407開發板使用的RTX原始碼是MDK4.74裡面的,KEIL官方已經放棄MDK4系列的更新了,這個版本號是MDK4系列裡面最新版本了。如果需要使用MDK自帶的RTX除錯元件顯示資訊,請務必使用MDK4.74。 u 對於MDK5.XX,RTX也在其安裝目錄裡面,但是RTX已經不作為單獨版本釋出了,它有一個全新的名字叫CMSIS-RTOS RTX。ARM官方在RTX的基礎上給RTX又做了一層封裝。3.3   RTX系統參考資料
    學習RTX主要有兩個可以參考的資料: u KEIL MDK安裝目錄裡面的rlarm.chm檔案。 u KEIL官網上線上檢視。     當然,兩者的內容是一樣的。其實不光RTX作業系統是這樣,像FreeRTOS和uCOS現在也是這種形式,一個離線方式的電子手冊和一個線上的手冊。     rlarm.chm檔案在MDK4.74的安裝目錄C:\Keil_v474\ARM\Hlp裡面,下圖3.1就是開啟後的效果

圖3.1 RTX手冊

圖3.2 RTX手冊線上檢視

等RTX作業系統入門後,主要看這兩個手冊即可,基本可以解決大部分問題。3.4  RTX的除錯方法     MDK(以MDK4.74為例)中自帶RTX的除錯元件,本小節就給大家介紹下如何使用RTX的除錯元件。首先將基於RTX的MDK工程進行全編譯,然後進行軟體模擬或者硬體模擬,因為只有在模擬狀態下才可以使用RTX的除錯元件。下面是詳細的設定步驟: u 第1步:進行MDK工程全編譯 u 第2步:點選MDK的這個圖示                            

  u 第3步:進入除錯狀態後,選擇如下選項System and Viewer                            選擇後,可以看到右側彈出如下視窗:                            u 第4步:選擇如下選項Event Viewer                                  選擇後,可以看到右側彈出如下視窗:                               u 第5步:使能除錯狀態下的視窗週期性更新功能                                             u 第6步:這裡就是最後一步了,點選RUN圖示:                                                 點選執行後,可以看到視窗System and Viewer在不斷的重新整理RTX多工的執行情況,                                                    而視窗Event Viewer上面沒有資料更新,這是因為需要配置Serial WireViewer(簡稱SWV),SWV僅在除錯介面使用SW模式的時候才可以工作,除錯介面使用JTAG模式是無法工作的。JTAG和SW的切換可以在MDK的下圖所示位置進行設定:

圖3.3MDK設定

圖3.4JTAG和SW介面在MDK中的切換位置

另外配置SWV模式需要使用到STM32的SWO引腳,本教程配套的STM32F103和STM32F407開發板的除錯介面沒有使用SWO引腳,所以關於Event Viewer功能就不做過多介紹了。 l JTAG介面和SWD介面區別

    下圖分別是20pin的標準JTAG引腳和SWD( SerialWire Debug)引腳,一般SWD介面僅需要Vref,SWDIO,SWCLK,RESET和GND五個引腳即可,SWO(Serial Wire Output)引腳是可選的。有了SWO引腳才可以實現資料從晶片到電腦端的資料傳送。

l 詞條 SWV(Serial Wire Viewer)

    SWV是由儀器化跟蹤巨集單元ITM(Instrumentation Trace Macrocell)和SWO構成的。SWV實現了一種從MCU內部獲取資訊的低成本方案,SWO介面支援輸出兩種格式的跟蹤資料,但是任意時刻只能使用一種。兩種格式的資料編碼分別是UART(序列)和Manchester(曼徹斯特)。當前JLINK僅支援UART編碼,SWO引腳可以根據不同的資訊傳送不同的資料包。當前M3/M4可以通過SWO引腳輸出以下三種資訊:

    1.  ITM支援printf函式的debug呼叫(工程需要做一下介面重定向即可)。ITM有32個通道,如果使用MDK的話,通道0用於輸出除錯字元或者實現printf函式,通道31用於Event Viewer,這就是為什麼實現Event Viewer需要配置SWV的原因。

    2.  資料觀察點和跟蹤DWT(Data Watchpoint and Trace)可用於變數的實時監測和PC程式計數器取樣。

    3.  時間戳,ITM 還附帶了一個時間戳的功能:當一個新的跟蹤資料包進入了 ITM 的 FIFO 時, ITM 就會把一個差分的時間戳資料包插入到跟蹤資料流中。跟蹤捕獲裝置在得到了這些時間戳後,就可以找出各跟蹤資料之間的時間相關資訊。另外,在時間戳計數器溢位時也會發生時間戳資料包。

3.5  RTX除錯元件功能介紹     由於STM32F103開發板和STM32F407開發板沒有引出SWO引腳,除錯元件Event Viewer是無法使用的,這裡僅介紹一下System and Viewer元件。下圖3.5是System and Viewer介面。

圖3.5 Systemand Viewer介面

    下面是系統部分功能介紹:

u Timer Number:0表示使用晶片的滴答定時器,1表示使用外設定時器。 u Tick Timer:RTX的時鐘節拍週期。 u Roud Robin Timeout:時間片溢位時間,即時間片排程時任務分配的時間片大小。 u Stack Size:任務棧大小,單位位元組。 u Stack Overflow Check:設定是否支援棧溢位檢測。 u Tack Usage:任務建立情況,Available表示可以建立的最大任務數,Used表示實際建立的。 u User Timers:軟體定時器個數,Available表示可以建立的最大任個數,Used表示實際建立的個數。          下面是任務部分功能介紹: u ID:任務的ID標示。 u Name:任務的函式名。 u Priority:任務優先順序。 u State:任務狀態。 u Delay:任務延遲時間。 u Event Value:任務當前的事件標誌數值。 u Event Mask:任務等待的事件標誌數值。 u Stack Load:任務堆疊利用率。3.6  總結

    本章節就為大家講解這麼多,建議初學者花些時間對RTX系統的參考資料章節結構瞭解一下,隨著以後的學習最好可以達到熟練檢視這個手冊的程度。