陳宏銘, 王宜懷, 楊 勇, 施連敏, 彭 彤
1(浙江海洋大學(xué) 信息工程學(xué)院, 舟山 316022)
2(蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 蘇州 215006)
3(南京沁恒微電子股份有限公司, 南京 210012)
嵌入式計(jì)算機(jī)系統(tǒng)最初源于傳統(tǒng)測(cè)控系統(tǒng)對(duì)計(jì)算機(jī)的需求, 隨著以微處理器(mini processor unit, MPU)為內(nèi)核的微控制器(microcontroller unit, MCU)制造技術(shù)不斷進(jìn)步, 計(jì)算機(jī)領(lǐng)域在通用計(jì)算機(jī)系統(tǒng)與嵌入式計(jì)算機(jī)系統(tǒng)這兩大分支分別得以發(fā)展. 通用計(jì)算機(jī)已經(jīng)在科學(xué)計(jì)算、通信、日常生活等各個(gè)領(lǐng)域產(chǎn)生重要影響. 在后 PC 時(shí)代, 嵌入式系統(tǒng)的廣闊應(yīng)用是計(jì)算機(jī)發(fā)展的重要特征. 嵌入式系統(tǒng)的技術(shù)基礎(chǔ)是要完成一個(gè)嵌入式系統(tǒng)產(chǎn)品的設(shè)計(jì), 需要有硬件、軟件及行業(yè)領(lǐng)域相關(guān)知識(shí). 但是, 隨著嵌入式系統(tǒng)中軟件規(guī)模日益增大, 對(duì)嵌入式底層驅(qū)動(dòng)軟件的封裝提出了更高的要求, 可復(fù)用性與可移植性受到特別的關(guān)注, 嵌入式軟硬件構(gòu)件化開發(fā)方法逐步被業(yè)界所重視[1].
2015 年以來, RISC-V 架構(gòu)處理器在我國快速發(fā)展[2-5], 基于沁恒微電子 RISC-V 架構(gòu) CH32V307 微控制器構(gòu)建通用嵌入式計(jì)算機(jī)(general embedded computer,GEC)生態(tài)系統(tǒng), 形成相對(duì)完備的教學(xué)及實(shí)踐系統(tǒng). 配合可以直接實(shí)踐的硬件系統(tǒng) AHL-CH32V307, 具備簡捷、便利、邊學(xué)邊實(shí)踐等優(yōu)點(diǎn), 克服了實(shí)驗(yàn)箱模式的冗余、不方便帶出實(shí)驗(yàn)室、不易升級(jí)等缺點(diǎn), 逐步探索嵌入式教學(xué)新模式[6].
智能終端及系統(tǒng)開發(fā)具有較高技術(shù)門檻. 芯片生產(chǎn)廠家往往提供用戶一份長篇幅的參考手冊(cè), 少則幾百頁, 多則可達(dá)近千頁. 許多廠家也給出龐大軟件開發(fā)工具包(software development kit, SDK), 但設(shè)計(jì)人員需要花費(fèi)許多精力從中提取出所需要的信息. 智能終端開發(fā)人員通?;ㄙM(fèi)太多的精力在基于芯片級(jí)硬件設(shè)計(jì)及基于寄存器級(jí)的底層驅(qū)動(dòng)設(shè)計(jì)上, 開發(fā)方式存在軟硬件開發(fā)顆粒度低、可移植性弱等問題.
特別是系統(tǒng)開發(fā)時(shí), 會(huì)涉及到許多復(fù)雜技術(shù)問題,如傳感器應(yīng)用設(shè)計(jì)、微控制器編程、終端(user equipment, UE)通信、數(shù)據(jù)庫系統(tǒng)、個(gè)人計(jì)算機(jī)(personal computer, PC)的程序設(shè)計(jì)、人機(jī)交互系統(tǒng)(human computer interaction, HCI)的軟件設(shè)計(jì)等, 具有較高技術(shù)門檻, 是許多中小企業(yè)技術(shù)轉(zhuǎn)型的重要瓶頸之一.
遵循人的認(rèn)識(shí)過程由研究共性技術(shù), 實(shí)現(xiàn)降低門檻之目標(biāo). 為此, 需要深入研究3個(gè)提高的方法:
(1)提高硬件設(shè)計(jì)的顆粒度. 需要把硬件設(shè)計(jì)元件級(jí)過渡到硬件構(gòu)件級(jí)為主的設(shè)計(jì)場(chǎng)景.
(2)提高軟件編程顆粒度. 需要把軟件編程顆粒度從寄存器級(jí)提高到知識(shí)要素級(jí).
(3)提高軟硬件可移植性. 需要把嵌入式軟件工程基本原理應(yīng)用其中, 提高軟硬件的可移植性.
在此基礎(chǔ)上, 建立其相應(yīng)的生態(tài)系統(tǒng), 就可有效降低嵌入式開發(fā)的技術(shù)門檻.
1.3.1 如何完成3個(gè)提高
(1)如何提高硬件設(shè)計(jì)的顆粒度? 若能將MCU硬件最小系統(tǒng)及面向領(lǐng)域應(yīng)用的共性電路封裝成一個(gè)整體, 則可提高UE的硬件設(shè)計(jì)顆粒度. 硬件設(shè)計(jì)則可從元件級(jí)過渡到硬件構(gòu)件級(jí)為主的場(chǎng)景.
(2)如何提高軟件編程顆粒度? 若能設(shè)計(jì)出基于模塊共性知識(shí)要素的構(gòu)件, 屏蔽寄存器級(jí)之差異, 則可把軟件編程顆粒度從寄存器級(jí)提高到知識(shí)要素級(jí).
(3)如何提高軟硬件可移植性? 若能從共性知識(shí)要素角度研究可移植性問題, 屏蔽芯片生產(chǎn)廠家、編譯器類型等因素, 遵循軟硬件構(gòu)件的設(shè)計(jì)原則, 則可提高軟硬件的可移植性.
1.3.2 提出GEC概念的時(shí)機(jī)
GEC概念的實(shí)質(zhì)是把面向寄存器編程提高到面向知識(shí)要素編程, 提高了編程顆粒度. 但是, 這樣做也會(huì)降低實(shí)時(shí)性. 彌補(bǔ)實(shí)時(shí)性降低的方法是提高芯片的運(yùn)行時(shí)鐘頻率. 目前MCU的總線頻率是早期MCU總線頻率幾十倍, 因此, 更高的總線頻率給提高編程顆粒度提供了物理支撐.
另一方面是軟件構(gòu)件技術(shù)的發(fā)展與認(rèn)識(shí)的普及,也為提出GEC概念提供了機(jī)遇. 嵌入式軟件開發(fā)人員越來越認(rèn)識(shí)到軟件工程對(duì)軟件開發(fā)的重要支撐作用,也意識(shí)到掌握和應(yīng)用軟件工程的基本原理對(duì)嵌入式軟件的設(shè)計(jì)、升級(jí)、芯片迭代與維護(hù)等方面, 具有不可或缺的作用. 因此, 從“零”開始的編程, 將逐步分化為構(gòu)件制作與構(gòu)件使用兩個(gè)不同層次, 也為嵌入式人工智能提供先導(dǎo)基礎(chǔ).
1.3.3 GEC概念的特點(diǎn)
與MCU相比, GEC具有硬件可測(cè)性、編程快捷性與可移植性等基本特點(diǎn).
(1)硬件直接可測(cè)性. 與一般MCU不同, GEC類似PC機(jī), 通電后可直接可運(yùn)行內(nèi)部基本輸入輸出系統(tǒng)(basic input output system, BIOS)程序, user框架程序中包含類似于PC程序調(diào)試的printf語句, 通過串口向PC機(jī)輸出信息, 實(shí)現(xiàn)了GEC硬件的直接可測(cè)性.
(2)用戶軟件編程快捷性. 與一般MCU不同, GEC內(nèi)部駐留的BIOS與PC機(jī)上電過程類似, BIOS內(nèi)駐留了嵌入式常用驅(qū)動(dòng)及RTOS, 并提供了函數(shù)原型級(jí)調(diào)用接口. 利用user程序不同框架, 用戶軟件不需要從“零”編起, 而是在相應(yīng)框架基礎(chǔ)上, 充分應(yīng)用BIOS資源, 實(shí)現(xiàn)快捷編程.
(3)用戶軟件可移植性. 與一般MCU不同, GEC的BIOS軟件由GEC提供者研發(fā)完成, 隨GEC芯片而提供給用戶, 即軟件被硬件化了, 具有通用性. 在此基礎(chǔ)上, 只要遵循軟件工程基本原則, GEC用戶軟件則具有較高的可移植性.
這里提到解決的問題是第2節(jié)的基礎(chǔ)技術(shù), 有了這些技術(shù)才能實(shí)現(xiàn)第2節(jié)的通用編程框架. 這也是符合軟件工程原理的框架, 為實(shí)現(xiàn)嵌入式產(chǎn)品的應(yīng)用層軟件可移植性提供了技術(shù)基礎(chǔ).
1.4.1 解決GEC硬件共性結(jié)構(gòu)及BIOS駐留機(jī)制
(1)解決基于硬件構(gòu)件概念研究GEC硬件設(shè)計(jì)方法, 結(jié)合BIOS駐留, 為將來GEC流片提供技術(shù)基礎(chǔ).
(2)解決BIOS功能定位, 即確定內(nèi)核時(shí)鐘與總線時(shí)鐘、啟動(dòng)一個(gè)定時(shí)器, 提供時(shí)間函數(shù)調(diào)用接口、給出面向知識(shí)要素的常用底層驅(qū)動(dòng)駐留與調(diào)用方式、啟動(dòng)RTOS及其他功能.
(3)解決從BIOS轉(zhuǎn)入user程序執(zhí)行, 在user正常運(yùn)行情況下, 轉(zhuǎn)入BIOS的機(jī)制.
(4)解決實(shí)時(shí)操作系統(tǒng)(real-time operating system,RTOS)的駐留方法、映射接口模式及統(tǒng)一(application programming interface, API)接口格式 , 為實(shí)現(xiàn)不同RTOS下程序可移植提供技術(shù)支撐.
1.4.2 解決基于串口的下載與調(diào)試方法
為實(shí)現(xiàn)類PC機(jī)程序的開發(fā)模式, 需要:
(1)解決基于串口的下載、調(diào)式模式, 同時(shí)提出類似PC機(jī)程序開發(fā)中的printf語句功能, 從而實(shí)現(xiàn)類PC機(jī)程序的開發(fā)模式. 這里涉及中斷繼承與重定位機(jī)制、內(nèi)存分割機(jī)制等. 探索基于串口的斷點(diǎn)調(diào)試模式方法.
(2)解決動(dòng)態(tài)命令機(jī)制, 為user功能的在線擴(kuò)展提供支撐. 研究多通信模式下的程序更新機(jī)制及遠(yuǎn)程調(diào)試方法. 動(dòng)態(tài)命令機(jī)制(dynamic command mechanism, DCM)機(jī)制是指在不影響嵌入式終端正常運(yùn)行的前提下, 將一段具有特定功能的機(jī)器碼通過一定的通信方式臨時(shí)注入至指定存儲(chǔ)區(qū)域并運(yùn)行的機(jī)制.這一段臨時(shí)的、具有一定功能的機(jī)器碼就稱為動(dòng)態(tài)命令.
(3)解決針對(duì)NB-IoT、Cat1、4G、5G、WSN、WiFi等無線通信方式下的程序更新方法.
1.4.3 解決GEC開發(fā)生態(tài)系統(tǒng)
針對(duì)國外IDE的芯片相關(guān)性:
(1)解決面向不同MCU內(nèi)核的統(tǒng)一編譯模式的集成開發(fā)環(huán)境的設(shè)計(jì)方法, 研究基于軟件工程基本原理的user程序框架, 使得用戶程序可移植.
(2)解決面向NB-IoT、Cat1、4G、5G、WSN、WiFi通信的共性編程框架, 形成基于GEC體系面向物聯(lián)網(wǎng)的快速開發(fā)生態(tài)系統(tǒng), 為降低開發(fā)門檻、節(jié)約開發(fā)成本、縮短開發(fā)時(shí)間提供技術(shù)支撐.
(3)解決面基于GEC體系面向嵌入式人工智能的快速開發(fā)方法, 實(shí)現(xiàn)嵌入式人工智能的敏捷開發(fā)生態(tài)系統(tǒng).
嵌入式系統(tǒng)不單獨(dú)以通用計(jì)算機(jī)面目出現(xiàn), 而是隱含在各類具體的智能產(chǎn)品中, 如手機(jī)、機(jī)器人、自動(dòng)駕駛系統(tǒng)等. 嵌入式系統(tǒng)在嵌入式人工智能、物聯(lián)網(wǎng)、工廠智能化等產(chǎn)品中起核心作用.
由于嵌入式系統(tǒng)是一門理論與實(shí)踐密切結(jié)合的課程, 教學(xué)配合基于RISC-V 架構(gòu) AHL- CH32V307 嵌入式開發(fā)套件(圖1). AHL-CH32V307體積很小, 學(xué)員可以利用這個(gè)套件的硬件、軟件、文檔、開發(fā)環(huán)境等資源, 用于嵌入式系統(tǒng)入門學(xué)習(xí).
圖1 AHL-CH32V307嵌入式開發(fā)套件
本文所設(shè)計(jì)的嵌入式教學(xué)系統(tǒng), 通過通用嵌入式計(jì)算GEC概念, 將RISC-V指令集計(jì)算機(jī)銜接到打造多年的ARM體系. 可以復(fù)用ARM體系的生態(tài)資源,實(shí)現(xiàn)RISC-V指令集生態(tài)系統(tǒng)的快速建立與推廣應(yīng)用.同時(shí), 給出了適應(yīng)RISC-V指令集的匯編程序框架、操作系統(tǒng)的移植與駐留、prinft函數(shù)打樁調(diào)試等快速實(shí)現(xiàn). 因此, 所設(shè)計(jì)的嵌入式教學(xué)系統(tǒng)體現(xiàn)RISC-V指令集的特點(diǎn)與優(yōu)勢(shì).
AHL-CH32V307 以CH32V307VCT6 微控制器為核心, 輔以硬件最小系統(tǒng)集成紅、綠、藍(lán)三色燈, 復(fù)位按鈕, 二路 TTL-USB 串口, 外接 Type-C 線, 從而形成完整的通用嵌入式計(jì)算機(jī). 為了滿足學(xué)校實(shí)驗(yàn)室建設(shè)要求, 還制作增強(qiáng)型套件, 增加了 9 個(gè)外接組件, 包括聲音傳感器、加速度傳感器、人體紅外傳感器、循跡傳感器、振動(dòng)馬達(dá)、蜂鳴器、四按鈕模塊、彩燈及數(shù)碼管等, 可完成物聯(lián)網(wǎng)相關(guān)實(shí)驗(yàn). 亦可通過主板上的開放式外圍引腳, 外接其他接口模塊進(jìn)行創(chuàng)新性實(shí)驗(yàn). 該開發(fā)套件與一般嵌入式系統(tǒng)實(shí)驗(yàn)箱不同, 不僅可以作為嵌入式系統(tǒng)教學(xué)使用, 還是一套較為完備的嵌入式微型計(jì)算機(jī)應(yīng)用開發(fā)系統(tǒng).
因?yàn)槌鰪S時(shí)已經(jīng)將測(cè)試程序燒錄到嵌入式計(jì)算機(jī)內(nèi), 只要給供電嵌入式開發(fā)套件內(nèi)的程序就可以運(yùn)行,從運(yùn)行效果可以體會(huì)到小小嵌入式計(jì)算機(jī)的功能.
步驟 1. 使用 Type-C 數(shù)據(jù)線給主板供電. 將 Type-C 數(shù)據(jù)線的小端連接主板, 另外一端接可以是筆記本電腦或個(gè)人計(jì)算機(jī) PC的工具機(jī) USB 接口.
步驟 2. 觀察程序運(yùn)行效果. 現(xiàn)象如下: 紅、綠、藍(lán)各燈每 5 s、10 s、20 s 狀態(tài)變化, 對(duì)外表現(xiàn)為三色燈的合成色, 其實(shí)際效果如圖2 所示. 即開始時(shí)為暗, 依次變化為紅、綠、 黃(紅+綠)、藍(lán)、紫(紅+藍(lán))、青(藍(lán)+綠)、白(紅+藍(lán)+綠), 周而復(fù)始.
圖2 三色燈實(shí)際效果
嵌入式軟件開發(fā)有別于個(gè)人計(jì)算機(jī)(PC), 軟件開發(fā)的一個(gè)顯著的特點(diǎn)在于需要一個(gè)交叉編譯和調(diào)試環(huán)境, 即工程的編輯和編譯所使用的工具軟件通常在 PC 上運(yùn)行, 這個(gè)工具軟件通常稱為集成開發(fā)環(huán)境(integrated development environment, IDE), 而編譯生成的嵌入式軟件的機(jī)器碼文件則需要通過寫入工具下載到目標(biāo)機(jī)上執(zhí)行, 本文的目標(biāo)機(jī)就是AHL-CH32V307 開發(fā)套件.
本文介紹的集成開發(fā)環(huán)境為AHL-GEC-IDE, 具有編輯、編譯、鏈接等功能. 配合硬件可直接運(yùn)行、調(diào)試程序, 根據(jù)芯片型號(hào)不同兼容常用嵌入式集成開發(fā)環(huán)境.
在正確安裝 AHL-GEC-IDE可以進(jìn)行第一個(gè)嵌入式程序編譯、下載與運(yùn)行, 以便直觀體會(huì)嵌入式程序的運(yùn)行.
步驟 1. 硬件接線. 將 Type-C 數(shù)據(jù)線的小端連接主板的 Type-C 接口, 另外一端接通用計(jì)算機(jī)的 USB 接口.
步驟 2. 打開環(huán)境, 導(dǎo)入工程. 打開集成開發(fā)環(huán)境AHL-GEC-IDE, 單擊菜單“文件”→“導(dǎo)入工程”, 選擇“AHL-CH32V307-Test”. 導(dǎo)入工程后, 左側(cè)為工程樹形目錄, 右側(cè)為文件內(nèi)容編輯區(qū), 初始顯示 main.c 文件內(nèi)容, 如圖3 所示.
圖3 IDE界面及編譯結(jié)果
步驟 3. 編譯工程. 單擊菜單“編譯”→“編譯工程”,就開始編譯. 正常情況下, 編譯后會(huì)顯示“編譯成功!”.
步驟 4. 連接 GEC. 單擊菜單“下載”→“串口更新”,將進(jìn)入更新窗體界面. 單擊 “連接 GEC”查找目標(biāo)GEC, 若提示“成功連接…”, 可進(jìn)行下一步操作.
步驟 5. 下載機(jī)器碼. 單擊“選擇文件”按鈕, 導(dǎo)入被編譯工程目錄下 Debug 中的.hex文件, 然后單擊“一鍵自動(dòng)更新”按鈕, 等待程序自動(dòng)更新完成. 當(dāng)更新完成之后, 程序?qū)⒆詣?dòng)運(yùn)行.
步驟 6. 通過串口觀察運(yùn)行情況.
① 觀察程序運(yùn)行過程. 在 IDE 的頂部菜單欄目,單擊“工具”→“串口工具”, 選擇其中一個(gè)串口, 波特率設(shè)為 115 200 并打開, 串口調(diào)試工具頁面會(huì)顯示三色燈的狀態(tài)、溫度等信息;
② 驗(yàn)證串口收發(fā). 關(guān)閉已經(jīng)打開的串口, 打開另一個(gè)串口, 波特率選擇默認(rèn)參數(shù), 在“發(fā)送數(shù)據(jù)框”中輸入字符串, 單擊“發(fā)送數(shù)據(jù)”按鈕. 正常情況下, 主板會(huì)回送數(shù)據(jù)給 PC, 并在接收框中顯示, 效果如圖4 所示.
圖4 IDE內(nèi)嵌的串口調(diào)試工具
對(duì)應(yīng)AHL-CH32V307 開發(fā)套件的硬件系統(tǒng), 以下給出一些常見嵌入式系統(tǒng)被控單元(傳感器)的基本原理、電路接法和編程實(shí)踐.
3.1.1 彩燈
彩燈的控制電路與RGB芯片集成在一個(gè)5050封裝的元器件中, 構(gòu)成了一個(gè)完整的外控像素點(diǎn), 每個(gè)像素點(diǎn)的三基色顏色可實(shí)現(xiàn)256級(jí)亮度顯示.
像素點(diǎn)內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號(hào)整形放大驅(qū)動(dòng)電路、高精度的內(nèi)部振蕩器和可編程定電流控制部分, 有效保證像素點(diǎn)光的顏色高度一致, 數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式, 通過發(fā)送具有特定占空比的高電平和低電平來控制彩燈的亮暗.
如圖5所示, 彩燈使用串行級(jí)聯(lián)接口, 能夠通過一根信號(hào)線完成數(shù)據(jù)的接收與解碼. VDD是電源端, 用于供電; DOUT是數(shù)據(jù)輸出端, 用于控制數(shù)據(jù)信號(hào)輸出;VSS接地; DIN控制數(shù)據(jù)信號(hào)的輸入端.
圖5 彩燈電路原理
3.1.2 人體紅外傳感器
任何發(fā)熱體都會(huì)產(chǎn)生紅外線, 輻射的紅外線波長跟物體溫度有關(guān), 表面溫度越高, 輻射能量越強(qiáng). 人體都有恒定的體溫, 所以會(huì)發(fā)出特定波長10 μm左右的紅外線, 人體紅外傳感器通過檢測(cè)人體釋放的紅外信號(hào), 判斷一定范圍內(nèi)是否有人體活動(dòng)[7,8]. 默認(rèn)輸出是低電平, 當(dāng)傳感器檢測(cè)到人體運(yùn)動(dòng)時(shí), 會(huì)觸發(fā)高電平輸出,小燈亮有3 s左右延遲.
如圖6所示, V_PIR1用于供電; REF為輸出引腳;實(shí)驗(yàn)現(xiàn)象: 當(dāng)用手靠近靠近人體紅外傳感器, 紅燈亮;遠(yuǎn)離, 延遲3 s左右, 紅燈滅.
圖6 人體紅外傳感器電路原理
3.1.3 第一個(gè)匯編語言工程: 控制小燈閃爍
GPIO匯編程序是一個(gè)有RISC-V特色的實(shí)驗(yàn), 相對(duì)于 C 語言編程, 匯編在編程的直觀性、 編程效率以及可讀性等方面都有所欠缺, 控制小燈閃爍的匯編語言編程方法在開發(fā)環(huán)境中, 程序是通過工程的方式組織起來的. 匯編工程通常包含芯片相關(guān)的程序框架文件、軟件構(gòu)件文件、工程設(shè)置文件、主程序文件及抽象構(gòu)件文件等.
圖7 給出小燈閃爍匯編工程的樹型結(jié)構(gòu), 主要包括 MCU 相關(guān)頭文件夾、底層驅(qū)動(dòng)構(gòu)件文件夾、Debug工程輸出文件夾、程序文件夾等. 匯編工程僅包含一個(gè)匯編主程序文件, 該文件名固定為 main.s, 包含有以下內(nèi)容:
圖7 小燈閃爍匯編工程的樹型結(jié)構(gòu)
(1)工程描述. 工程名、程序描述、版本、日期等.
(2)包含總頭文件. 聲明全局變量和包含主程序文件中需要的頭文件、宏定義等.
(3)主程序. 主程序一般包括初始化與主循環(huán)兩大部分. 初始化包括堆棧初始化、 系統(tǒng)初始化、I/O 端口初始化、中斷初始化等.
(4)內(nèi)部直接調(diào)用子程序.
嵌入式人工智能是指將人工智能的基本學(xué)習(xí)或推理算法應(yīng)用于嵌入式產(chǎn)品, 利用CH32V307 微控制器設(shè)計(jì)了一套成本低、原理清晰、簡單實(shí)用, 基于圖像識(shí)別的嵌入式物體認(rèn)知系統(tǒng), 可作為人工智能的快速入門系統(tǒng). 本文實(shí)現(xiàn)的嵌入式人工智能教學(xué)平臺(tái)總體結(jié)構(gòu)如圖8所示. 在整體系統(tǒng)中以微控制器為核心, 通過硬件最小系統(tǒng)保證能夠基本運(yùn)行, 使用攝像頭模塊采集圖像數(shù)據(jù), 并使用通信模組提供遠(yuǎn)程通信功能, 并與電源轉(zhuǎn)換電路等模塊共同構(gòu)成了硬件平臺(tái). 識(shí)別終端同時(shí)也提供其他不同的外設(shè)傳感器等輸入輸出設(shè)備使用接口, 實(shí)現(xiàn)不同執(zhí)行機(jī)制的并行使用, 完成對(duì)物體的認(rèn)知以及結(jié)果輸出[9,10].
圖8 嵌入式人工智能教學(xué)平臺(tái)總體結(jié)構(gòu)
基于圖像識(shí)別的嵌入式物體認(rèn)知系統(tǒng)是利用嵌入式計(jì)算機(jī)通過攝像頭采集物體圖像, 利用圖像識(shí)別相關(guān)算法進(jìn)行訓(xùn)練、標(biāo)記, 可進(jìn)行推理來完成對(duì)圖像的識(shí)別. AHL-EORS主要目標(biāo)用于嵌入式人工智能入門教學(xué), 試圖把復(fù)雜問題簡單化, 利用最小的資源、最清晰的流程體現(xiàn)人工智能中“標(biāo)記、訓(xùn)練、推理”的基本知識(shí)要素. 同時(shí), 提供完整源碼、編譯及調(diào)試環(huán)境, 期望達(dá)到“學(xué)習(xí)漢語拼音從啊(a)、喔(o)、鵝(e)開始,學(xué)習(xí)英語從A、B、C開始, 學(xué)習(xí)嵌入式人工智能從物體認(rèn)知系統(tǒng)開始”之目標(biāo).
學(xué)員可以將測(cè)試工程下載到MCU芯片中, 進(jìn)行0-9十個(gè)數(shù)字識(shí)別, 測(cè)試步驟如下:
步驟1. 通電. 電壓為5 V, 可選擇計(jì)算機(jī)、充電寶等.
步驟2. 測(cè)試. 上電后, 正常情況下, 如圖9所示,LCD彩色屏幕會(huì)顯示出圖像, 可識(shí)別0-9數(shù)字.
圖9 LCD彩色屏幕顯示數(shù)字3圖像
近年來, 由于嵌入式技術(shù)的飛速發(fā)展和廣泛應(yīng)用,我國的許多高等院校和職業(yè)技術(shù)培訓(xùn)機(jī)構(gòu)也開設(shè)了嵌入式系統(tǒng)實(shí)驗(yàn)教學(xué)的課程, 使得實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)開發(fā)成為嵌入式領(lǐng)域教學(xué)急需解決的問題. 本文首先介紹所實(shí)現(xiàn)的通用嵌入式計(jì)算機(jī)GEC, 主要解決GEC硬件共性結(jié)構(gòu)及BIOS駐留機(jī)制、基于串口的下載與調(diào)試方法、GEC開發(fā)生態(tài)系統(tǒng)等問題, 并提出AHLCH32V307 嵌入式實(shí)驗(yàn)教學(xué)解決方案. 基于RISC-V 架構(gòu)的高性價(jià)比教學(xué)實(shí)驗(yàn)系統(tǒng)通過合理應(yīng)用資源搭建性價(jià)比高的系統(tǒng)平臺(tái), 在這一平臺(tái)上編寫大量教學(xué)性實(shí)驗(yàn). 這些實(shí)驗(yàn)針對(duì)性強(qiáng), 層次清晰, 易于學(xué)習(xí)并進(jìn)行二次開發(fā).
實(shí)驗(yàn)教學(xué)是本文最重要的設(shè)計(jì)部分, 配套開發(fā)與硬件模塊結(jié)合緊密的兩個(gè)層次實(shí)驗(yàn), 第1個(gè)層次是外接傳感器及執(zhí)行部件編程方法的教學(xué)實(shí)驗(yàn). 第2個(gè)層次嵌入式人工智能簡明實(shí)例. 接下來的研究工作是基于套件開發(fā)更多貼近現(xiàn)實(shí)生活中的物聯(lián)網(wǎng)應(yīng)用. 如此既能推廣RISC-V處理器的技術(shù), 又能增加學(xué)員的學(xué)習(xí)興趣. 甚至適用于GEC SoC芯片的加密方法來提高數(shù)據(jù)傳輸?shù)陌踩? 也是有價(jià)值的研究方向 .