8. Hello World! – Hi Blinky!
您將在本章中學到以下內容:
如何從頭開始為EK-RA6M4評估板創建項目。
如何在FSP配置器中更改靈活配置軟件包的設置。
如何編寫代碼以切換EK上的用戶LED。
如何下載和測試程序。
大多數編程語言新手曾編寫的第一個程序(現在仍是)就是將字符串“Hello World”輸出到標準輸出設備的程序。對我而言,就是在編輯器中鍵入“Writeln(‘Hello World’)”,如同我開始學習Pascal一樣。從那時起,我用其他幾種語言編寫了類似的代碼行,主要是為了對新開發環境的安裝進行完整性檢查。
20世紀80年代末,當我開始編寫嵌入式系統時,沒有可以接收字符串的屏幕。那么,如何指示處理器發出正常工作的信號?在這些應用中幾乎找不到LED,因此,必須要切換僅有的I/O引腳之一并用示波器觀察波形。
這些年來,LED成為了一種商品,我們在電路板上放置了大量的LED,將它們的閃爍作為新的“Hello World”。
這也是本章的目標:使用您在之前章節中學到的所有知識,切換RA6M4系列器件的評估板(EK)上的LED:您將(幾乎)從頭開始編寫代碼,使用配置器創建一個新項目,采用靈活配置軟件包(FSP)的API,最后下載、調試并運行代碼。這項練習將各個操作步驟集中到一起。
前提條件包括:e2 studio以及FSP應安裝在Windows工作站上(有關詳細信息,請參見第4章),您應當已驗證設置是否如第7章中所述工作。對于之前進行過動手實驗的人員:請理解一下作者,因為作者決定再次介紹先前已經探討過的一些主題,以方便直接從目錄轉到本章的讀者。
在本練習中,我們將再次使用EK-RA6M4,它允許您立即探究RA6M4單片機及其所有外設,因此非常適合此類任務。可以輕松連接外部硬件,因為大多數引腳均可通過MCU引腳訪問區域中的公頭引腳插針或電路板的系統控制和生態系統訪問區域中的生態系統連接器進行訪問。由于RA6M4系列MCU是RA產品家族MCU的RA6系列的超集器件,因此可以評估該系列的大多數功能,并隨后將結果應用于該系列的較小同級產品。圖8-1所示為電路板的框圖,其中突出顯示了主要元件。
圖8-1:EK-RA6M4評估板的框圖
本章目錄:
使用項目配置器創建項目
使用FSP配置器設置運行環境
編寫前幾行代碼
編譯第一個項目
下載和調試第一個項目
8.1 使用項目配置器創建項目
如果尚未啟動e2 studio,請從Windows工作站的“Start”(開始)菜單中打開e2 studio。開發環境啟動并運行后,請關閉“Welcome”(歡迎)屏幕(如果它在顯示),因為它會擋住其他窗口。
由于在e2 studio中為單片機編寫新程序始終需要創建一個項目,因此這是您需要執行的第一步。為此,請轉到“File → New → C/C++ Project”(文件 → 新建 → C/C++ 項目),或者在“Project Explorer”(項目資源管理器)視圖中單擊鼠標右鍵,然后選擇“New → C/C++ Project”(新建 → C/C++ 項目)。兩種方式都將打開一個對話框,詢問要使用的模板。在左側欄中選擇Renesas RA,再從主窗口中選擇“Renesas RA C/C++ Project”(瑞薩RA C/C++ 項目)(請參見圖4-7)。然后單擊“Next”(下一步)。
圖8-2:第一步是調用項目配置器
出現“Project Configurator”(項目配置器)后,為項目命名(例如MyBlinkyProject),接受項目的默認位置(將作為e2 studio工作區),或將其更改為您偏好的文件夾。單擊“Next”(下一步),轉到“Device and Tools Selection”(器件和工具選擇)屏幕。
圖8-3:項目配置器的第一個屏幕主要詢問項目的名稱和位置
在“Device Selection”(器件選擇)下,查找名為“FSP Version”(FSP版本)的字段:它應顯示與之前下載的靈活配置軟件包相同的版本。從“Board”(電路板)下的下拉列表中選擇EK-RA6M4,因為這是我們用于小型“Hello World”程序的硬件。該列表通常將包含RA產品家族的評估板以及“Custom User Board”(定制用戶板)條目,并通過為所選FSP版本安裝的Renesas CMSIS包文件創建。驗證R7FA6M4AF3CFB是否在“Device”(器件)旁顯示,它應該已經自動插入。如果未顯示,請瀏覽下拉列表,直到發現為止。在“Toolchains”(工具鏈)框中,驗證是否列出了GCC ARM Embedded, 9.2.1.20191025或更高版本,以及“Debugger”(調試器)框中是否已選擇J-Link Arm。這些字段應預先填入。如果未預先填入,請相應修改以匹配上面給出的值。
圖8-4:可以在此頁面中選擇項目的電路板和器件
如果一切正常,請單擊“Next”(下一步),打開“Project Type Selection”(項目類型選擇)屏幕。在此處,可以選擇您的項目應當為所謂的“扁平化項目”(即無需TrustZone隔離即可立即執行的項目)、包含安全啟動代碼和其他安全代碼的安全TrustZone項目,還是包含與安全項目一起使用的非安全代碼的非安全TrustZone項目。對于本章中的練習,選擇“Flat(Non-TrustZone)Project”(扁平(非TrustZone)項目),然后單擊“Next”(下一步)繼續操作。
圖8-5:使用“Project Type Selection”(項目類型選擇)屏幕,可以在TrustZone和非TrustZone項目之間進行選擇
下一頁是“Build Artifact and RTOS Selection”(構建工件和RTOS選擇)屏幕,可以在其中設置構建的類型。只有在上一個窗口中選擇了非TrustZone器件或為扁平化項目選擇了TrustZone器件時,才會顯示此屏幕。
可用的選項包括用于創建獨立ELF(可執行和可鏈接格式)可執行文件的“Executable”(可執行文件)、用于創建目標代碼庫的“Static Library”(靜態庫)以及用于創建配置為與靜態庫一起使用的應用程序項目的“Executable using an RA Static Library”(使用RA靜態庫的可執行文件)。在頁面右側的下拉列表中,為項目選擇可選的實時操作系統RTOS)。
圖8-6:我們要編譯一個沒有RTOS的可執行項目
圖8-7:“Project Template Selection Page”(項目模板選擇頁面)將顯示適合項目最初內容的模板
對于小型動手實驗,請選擇“Executable”(可執行文件)和“No RTOS”(無RTOS),然后單擊“Next”(下一步)。
這將打開“Project Template Selection”(項目模板選擇)頁面,可以在其中選擇初始項目內容的模板。項目模板可能包含多個條目;至少包括適合所選電路板/器件組合的板級支持包。有些模板甚至包括一個完整的示例項目,但“Project Configurator”(項目配置器)將僅顯示與您在先前屏幕上所做選擇匹配的模板。在本例中,選擇“Bare Metal – Minimal”(裸機 – 最小化)條目,以加載評估板的板級支持包。單擊“Finish”(完成),完成項目的配置。
“Project Configurator”(項目配置器)將關閉并在最后一步中創建項目所需的所有文件。完成此后處理后,將出現一個對話框,詢問您是否要打開“FSP Configuration”(FSP配置)透視圖。選擇“Open Perspective”(打開透視圖)。
8.2 使用FSP配置器設置運行環境
FSP配置器啟動后,將為您提供項目的只讀摘要和所選軟件組件的簡短概述。此外,它還提供了快捷方式,可方便地訪問視頻網站上的瑞薩RA頻道、瑞薩官網上的瑞薩設計與支持頁面(可在其中訪問文檔、知識庫和Renesas Rulz論壇)以及硬盤上的FSP用戶手冊。
圖8-8:e2 studio內部的“FSP Configuration”(FSP配置)透視圖
在以下名為BSP的選項卡中,可以查看和編輯設置的多個方面,例如電路板和器件選擇。在此選項卡的屬性視圖中,可以為板級支持包進行其他設置,例如,主堆棧的大小或MCU的某些安全功能。在之后的“Clocks”(時鐘)選項卡中,可以為您的項目分配初始時鐘配置。任何潛在的問題都將以紅色突出顯示,將鼠標懸停在突出顯示的位置上將出現有關沖突或設置不完整的說明。
第四個選項卡“Pins”(引腳)涵蓋了RA MCU的引腳分配。可以根據端口或外設列出引腳。如果設置不兼容或缺失,則配置器右側的“Package View”(封裝視圖)會顯示器件的封裝,突出顯示所配置的引腳并標記錯誤。“Problems”(問題)視圖以及“Pin Conflicts”(引腳沖突)視圖中也會顯示這些內容。這樣,便可將可能的錯誤減少到最低限度。
接下來是“Interrupts”(中斷)選項卡。可以在此處指定用戶定義的(即非FSP)驅動程序如何使用單片機的中斷控制器單元(ICU),以及將哪個中斷服務程序(ISR)與ICE事件(中斷)相關聯。此外,還可以在此處查看分配的所有ICU事件的完整列表,包括由在配置器的“Stacks”(棧)視圖中創建的FSP模塊實例生成的ICU事件。
“Event Links”(事件鏈接)選項卡具有類似作用。可以在此處指定驅動程序如何在RA項目中使用事件鏈接控制器(ELC),并且可以聲明此類驅動程序可能通過一組外設功能產生一組ELC事件或使用一組ELC事件。
需要花費大部分時間的頁面為“Stacks”(棧)頁面,可以在其中創建RTOS線程和內核對象,以及FSP軟件棧。可以添加不同的對象和模塊,并且可以在“Properties”(屬性)視圖中修改其屬性。所有這些對象和模塊都將自動插入,直到降至需要用戶干預的程度為止。在這種情況下,一旦鼠標懸停在模塊上,便會將需要注意的模塊標記為紅色,同時給出必要設置或問題的說明。如果問題解決,模塊將恢復為標準顏色。“Stacks”(棧)視圖本身以圖形方式顯示各種棧,可讓您輕松跟蹤不同的模塊。在我們的示例中,僅顯示了一個具有一個模塊的線程:在r_ioport上使用g_ioport I/O端口驅動程序的HAL/通用線程。它是由項目配置器自動插入的,允許我們僅用幾行代碼便可編寫讓LED閃爍的程序。
最后一個選項卡的名稱是“Components”(組件),其中顯示了不同的FSP模塊并可對模塊進行選擇。它還列出了可用的RA CMSIS軟件組件。不過,最好通過“Stacks”(棧)頁面在當前項目中添加或刪除模塊,因為還可以在其中進行配置。
對于我們的項目,無需在FSP配置器中進行任何更改,因為項目配置器已經為我們進行了所有必要的設置。最后,需要創建基于當前配置的附加源代碼。單擊FSP配置器右上角的“Generate Project Content”(生成項目內容)按鈕。此操作將從FSP中提取所需文件,將其調整為在配置器中進行的設置,然后將其添加到項目中。
審核編輯:湯梓紅
評論