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