8. Hello World! – Hi Blinky!
您將在本章中學(xué)到以下內(nèi)容:
如何從頭開始為EK-RA6M4評(píng)估板創(chuàng)建項(xiàng)目。
如何在FSP配置器中更改靈活配置軟件包的設(shè)置。
如何編寫代碼以切換EK上的用戶LED。
如何下載和測(cè)試程序。
大多數(shù)編程語言新手曾編寫的第一個(gè)程序(現(xiàn)在仍是)就是將字符串“Hello World”輸出到標(biāo)準(zhǔn)輸出設(shè)備的程序。對(duì)我而言,就是在編輯器中鍵入“Writeln(‘Hello World’)”,如同我開始學(xué)習(xí)Pascal一樣。從那時(shí)起,我用其他幾種語言編寫了類似的代碼行,主要是為了對(duì)新開發(fā)環(huán)境的安裝進(jìn)行完整性檢查。
20世紀(jì)80年代末,當(dāng)我開始編寫嵌入式系統(tǒng)時(shí),沒有可以接收字符串的屏幕。那么,如何指示處理器發(fā)出正常工作的信號(hào)?在這些應(yīng)用中幾乎找不到LED,因此,必須要切換僅有的I/O引腳之一并用示波器觀察波形。
這些年來,LED成為了一種商品,我們?cè)陔娐钒迳戏胖昧舜罅康腖ED,將它們的閃爍作為新的“Hello World”。
這也是本章的目標(biāo):使用您在之前章節(jié)中學(xué)到的所有知識(shí),切換RA6M4系列器件的評(píng)估板(EK)上的LED:您將(幾乎)從頭開始編寫代碼,使用配置器創(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)參見第4章),您應(yīng)當(dāng)已驗(yàn)證設(shè)置是否如第7章中所述工作。對(duì)于之前進(jìn)行過動(dòng)手實(shí)驗(yàn)的人員:請(qǐng)理解一下作者,因?yàn)樽髡邲Q定再次介紹先前已經(jīng)探討過的一些主題,以方便直接從目錄轉(zhuǎn)到本章的讀者。
在本練習(xí)中,我們將再次使用EK-RA6M4,它允許您立即探究RA6M4單片機(jī)及其所有外設(shè),因此非常適合此類任務(wù)。可以輕松連接外部硬件,因?yàn)榇蠖鄶?shù)引腳均可通過MCU引腳訪問區(qū)域中的公頭引腳插針或電路板的系統(tǒng)控制和生態(tài)系統(tǒng)訪問區(qū)域中的生態(tài)系統(tǒng)連接器進(jì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)境
編寫前幾行代碼
編譯第一個(gè)項(xiàng)目
下載和調(diào)試第一個(gè)項(xiàng)目
8.1 使用項(xiàng)目配置器創(chuàng)建項(xiàng)目
如果尚未啟動(dòng)e2 studio,請(qǐng)從Windows工作站的“Start”(開始)菜單中打開e2 studio。開發(fā)環(huán)境啟動(dòng)并運(yùn)行后,請(qǐng)關(guān)閉“Welcome”(歡迎)屏幕(如果它在顯示),因?yàn)樗鼤?huì)擋住其他窗口。
由于在e2 studio中為單片機(jī)編寫新程序始終需要?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)目)。兩種方式都將打開一個(gè)對(duì)話框,詢問要使用的模板。在左側(cè)欄中選擇Renesas RA,再從主窗口中選擇“Renesas RA C/C++ Project”(瑞薩RA C/C++ 項(xiàng)目)(請(qǐng)參見圖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è)屏幕主要詢問項(xiàng)目的名稱和位置
在“Device Selection”(器件選擇)下,查找名為“FSP Version”(FSP版本)的字段:它應(yīng)顯示與之前下載的靈活配置軟件包相同的版本。從“Board”(電路板)下的下拉列表中選擇EK-RA6M4,因?yàn)檫@是我們用于小型“Hello World”程序的硬件。該列表通常將包含RA產(chǎn)品家族的評(píng)估板以及“Custom User Board”(定制用戶板)條目,并通過為所選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:可以在此頁面中選擇項(xiàng)目的電路板和器件
如果一切正常,請(qǐng)單擊“Next”(下一步),打開“Project Type Selection”(項(xiàng)目類型選擇)屏幕。在此處,可以選擇您的項(xiàng)目應(yīng)當(dāng)為所謂的“扁平化項(xiàng)目”(即無需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)行選擇
下一頁是“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)代碼庫的“Static Library”(靜態(tài)庫)以及用于創(chuàng)建配置為與靜態(tài)庫一起使用的應(yīng)用程序項(xiàng)目的“Executable using an RA Static Library”(使用RA靜態(tài)庫的可執(zhí)行文件)。在頁面右側(cè)的下拉列表中,為項(xiàng)目選擇可選的實(shí)時(shí)操作系統(tǒng)RTOS)。
圖8-6:我們要編譯一個(gè)沒有RTOS的可執(zhí)行項(xiàng)目
圖8-7:“Project Template Selection Page”(項(xiàng)目模板選擇頁面)將顯示適合項(xiàng)目最初內(nèi)容的模板
對(duì)于小型動(dòng)手實(shí)驗(yàn),請(qǐng)選擇“Executable”(可執(zhí)行文件)和“No RTOS”(無RTOS),然后單擊“Next”(下一步)。
這將打開“Project Template Selection”(項(xiàng)目模板選擇)頁面,可以在其中選擇初始項(xiàng)目內(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ì)話框,詢問您是否要打開“FSP Configuration”(FSP配置)透視圖。選擇“Open Perspective”(打開透視圖)。
8.2 使用FSP配置器設(shè)置運(yùn)行環(huán)境
FSP配置器啟動(dòng)后,將為您提供項(xiàng)目的只讀摘要和所選軟件組件的簡短概述。此外,它還提供了快捷方式,可方便地訪問視頻網(wǎng)站上的瑞薩RA頻道、瑞薩官網(wǎng)上的瑞薩設(shè)計(jì)與支持頁面(可在其中訪問文檔、知識(shí)庫和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í)鐘配置。任何潛在的問題都將以紅色突出顯示,將鼠標(biāo)懸停在突出顯示的位置上將出現(xiàn)有關(guān)沖突或設(shè)置不完整的說明。
第四個(gè)選項(xiàng)卡“Pins”(引腳)涵蓋了RA MCU的引腳分配。可以根據(jù)端口或外設(shè)列出引腳。如果設(shè)置不兼容或缺失,則配置器右側(cè)的“Package View”(封裝視圖)會(huì)顯示器件的封裝,突出顯示所配置的引腳并標(biāo)記錯(cuò)誤。“Problems”(問題)視圖以及“Pin Conflicts”(引腳沖突)視圖中也會(huì)顯示這些內(nèi)容。這樣,便可將可能的錯(cuò)誤減少到最低限度。
接下來是“Interrupts”(中斷)選項(xiàng)卡。可以在此處指定用戶定義的(即非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)程序可能通過一組外設(shè)功能產(chǎn)生一組ELC事件或使用一組ELC事件。
需要花費(fèi)大部分時(shí)間的頁面為“Stacks”(棧)頁面,可以在其中創(chuàng)建RTOS線程和內(nèi)核對(duì)象,以及FSP軟件棧。可以添加不同的對(duì)象和模塊,并且可以在“Properties”(屬性)視圖中修改其屬性。所有這些對(duì)象和模塊都將自動(dòng)插入,直到降至需要用戶干預(yù)的程度為止。在這種情況下,一旦鼠標(biāo)懸停在模塊上,便會(huì)將需要注意的模塊標(biāo)記為紅色,同時(shí)給出必要設(shè)置或問題的說明。如果問題解決,模塊將恢復(fù)為標(biāo)準(zhǔn)顏色。“Stacks”(棧)視圖本身以圖形方式顯示各種棧,可讓您輕松跟蹤不同的模塊。在我們的示例中,僅顯示了一個(gè)具有一個(gè)模塊的線程:在r_ioport上使用g_ioport I/O端口驅(qū)動(dòng)程序的HAL/通用線程。它是由項(xiàng)目配置器自動(dòng)插入的,允許我們僅用幾行代碼便可編寫讓LED閃爍的程序。
最后一個(gè)選項(xiàng)卡的名稱是“Components”(組件),其中顯示了不同的FSP模塊并可對(duì)模塊進(jìn)行選擇。它還列出了可用的RA CMSIS軟件組件。不過,最好通過“Stacks”(棧)頁面在當(dāng)前項(xiàng)目中添加或刪除模塊,因?yàn)檫€可以在其中進(jìn)行配置。
對(duì)于我們的項(xiàng)目,無需在FSP配置器中進(jìn)行任何更改,因?yàn)轫?xiàng)目配置器已經(jīng)為我們進(jìn)行了所有必要的設(shè)置。最后,需要?jiǎng)?chuàng)建基于當(dāng)前配置的附加源代碼。單擊FSP配置器右上角的“Generate Project Content”(生成項(xiàng)目內(nèi)容)按鈕。此操作將從FSP中提取所需文件,將其調(diào)整為在配置器中進(jìn)行的設(shè)置,然后將其添加到項(xiàng)目中。
審核編輯:湯梓紅
評(píng)論
查看更多