作者ID:VR小杰
本次開箱的 D133CBS KunLun Pi 開發板,正面配備了一塊 4.3 寸的電容觸摸屏,開機即用,系統內置主菜單和豐富的 demo 演示程序,方便用戶快速體驗各項功能。
開發板開箱及介紹

開發板背面有豐富的接口和模塊布局,便于擴展和調試。

主控芯片為D133CBS,是ArtInChip 推出的高性能RISC-V MCU,具備強大的 2D 圖形加速、豐富的顯示接口和多媒體處理能力,適合工業 HMI、智慧家居等場景。

音頻播放部分采用了 LM4831 音頻功放芯片,能夠為外接喇叭提供高質量音頻輸出。

外置存儲為 Winbond(華邦)25Q128JVSQ 16MB NOR FLASH,支持大容量數據存儲和系統固件升級。

簡介
D13x是ArtInChip一款基于 RISC-V 的高性能、國產自主、工業級全高清顯示與智能控制 MCU,配備強大的2D圖形加速處理器、PNG解碼、JPEG編解碼引擎、豐富的屏接口,支持工業寬溫,具有高可靠性、高開放性,可廣泛應用于工業HMI、 網關、串口屏等泛工業和智慧家居領域。
D133CBS RISC-V KunLun Pi V1.0 是一款基于 D13x 芯片的人機交互應用開發板,配備 4.3 寸 LCD 顯示屏以及電容觸摸屏,支持DVP攝像頭。開發板集成了USB燒錄、TF-Card 升級燒錄、JTAG、串口打印等調試接口,方便調試開發。開發板集成 16MB NOR FLASH并可兼容NAND,同時引出RS485、RS232/TTL、喇叭、SDIO WIFI等功能,方便用戶快速進行技術預研與產品開發,滿足用戶對不同人機交互場景的開發需求。

開發板功能特性
開發板主控為D133CBS (8M PSRAM),可Pin to Pin兼容D133CCS(16M PSRAM);
片上1MB SRAM,片上8MB PSRAM(視主控型號決定);
NOR FLASH 16MB,可兼容NAND FLASH;
RTC 實時時鐘;
1xUSB2.0 Device燒錄,支持OTG;
1xUART0串口打印,1xJTAG單步調試;
1xTF-Card 接口;
標配4.3寸RGB顯示屏,支持通過排針擴展LVDS、MIPI、I8080、QSPI屏等接口;
配電容式觸摸屏,支持電阻式觸摸屏;
1x喇叭、1xDVP攝像頭接口;
1xRS485、1xUART TTL,可兼容RS232;
1xSDIO WIFI;
5V單電源供電(Type-C接口)。
功能框圖
下圖為D133CBS KunLun Pi開發板的功能框圖,展示了主控芯片與各類外設( LCD顯示屏、觸摸排線、音頻、攝像頭、存儲、通信接口等)之間的連接關系,便于理解整體架構和功能分布。

開發板資源
下圖為開發板資源分布圖,詳細標注了各個接口、芯片、模塊在PCB上的位置,包括主控、存儲、音頻、顯示、調試接口等,方便用戶查找和連接。

總結:本次評測的D133CBS KunLun Pi開發板集成度高,接口豐富,適合工業控制、智能家居等多種應用場景。開箱體驗良好,配套資源齊全,便于開發者快速上手和功能驗證,是一款極具性價比和實用性的國產 RISC-V 開發平臺。
SDK下載+環境搭建
Luban-Lite SDK介紹
Luban-Lite是ArtInChip基于RT-Thread系統深度優化的RTOS SDK。本次評測就只使用該SDK進行開發。
準備代碼
使用git客戶端下載代碼(https://gitee.com/artinchip/luban-lite.git)。
安裝VSCode擴展-LubanLite
在VSCode中打開剛剛下載的Luban-Lite文件夾;
在VSCode的插件商店搜索LubanLite,安裝。

左側會出現匠芯創的LOGO,點開它,就有了一堆快捷操作。

創建項目
點擊Open Project,可以按標簽進行篩選Defconfig配置文件。

最終我們選擇這個:d13x_kunlunpi88-nor_rt-thread_helloworld_defconfig

配置項目文件
點擊config project

首次打開 Menuconfig 時,界面加載速度可能較慢,導致頁面長時間停留在 “Loading Project Configuration ...”,需要耐心等待加載完成。加載速度與機器性能相關。

我們可以修改配置文件,但現在暫時不改,需要先把編譯下載流程跑通后,在下一個實驗任務中再進行修改。
編譯
接下來編譯,點擊側邊欄的 Build Project 圖標。

編譯開始后,等待片刻,出現【Image file is generated:】表示生成鏡像,可以下載到開發板了。

下載鏡像
不知道什么原因,VSCode插件的燒錄按鈕,點完了之后并不能開始下載,因此我使用的是AiBurn燒錄工具。
AiBurn工具下載:
https://aicdoc.artinchip.com/topics/product/download-doc-tool-zip.html
將開發板通過USB數據線連接電腦,按住開發板背面的BOOT按鍵,然后按下RESET按鍵,等待電腦端有設備接入的提示,松開BOOT按鍵,此時開發板進入了燒寫模式。先選擇文件,再點擊開始。

燒錄中

燒錄完成

運行LVGL Benchmark Demo
LVGL簡介:LVGL是一個C語言編寫的免費的開源圖形庫,提供了用于嵌入式GUI的各種元素。用戶可以利用豐富的圖形庫資源,在消耗極低內存的情況下構建視覺效果豐富多彩的GUI。
配置項目Config
打開上次實驗創建好的測試工程,點擊工具欄的Config,按下面幾張圖來進行配置。

選用LVGL V9

這里我想跑個Benchmark測一下性能,所以將LVGL Demo選擇為LVGL Demo Benchmark,其他的保持默認即可。

最后記得點擊下面的Save按鈕保存,并關閉Config頁面。
分析報錯原因
如果修改好了上面的配置文件,直接編譯,會報如下錯誤。

花了點時間,自己研究了下,大概弄明白了配置文件的運作邏輯。
在aic_ui.c中的 aic_ui_init() 函數內,定義了這三句:
lvgl_data_check();externvoidui_init(void);ui_init();
通過查找ui_init()的引用能發現,如果我們運行的LVGL Demo是匠芯創官方寫好的,那么會通過ui_init()調用【packages\artinchip\lvgl-ui\aic_demo*】下特定Demo的源代碼。
例如elevate_ui中就有實現了ui_init()

當我們切換到LVGL官方的Demo時,例如我們這里使用的是Benchmark Demo,那么在Config中CONFIG_AIC_LVGL_ELEVATOR_DEMO就會被注釋掉,而CONFIG_AIC_LVGL_DEMO_ BENCHMARK被啟用。

對應著在rtconfig.h中就沒有定義AIC_LVGL_ELEVATOR_DEMO ,取而代之的是AIC_LVGL_DEMO_BENCHMARK,如下圖所示。

問題來了,編譯的時候是如何來進行條件編譯的呢?
這里就用到了SConscript 文件,SCons 是一套由 Python 語言編寫的開源構建系統,類似于 GNU Make。
每個Demo文件夾下都有SConscript,例如在elevator_demo目錄下就能看到。

對照著文件解釋一下
src+= Glob('./elevator_ui.c')
這行把 elevator_ui.c 文件加入源碼列表 src。

group=group+DefineGroup('LVGL-port',src,depend= ['AIC_LVGL_ELEVATOR_DEMO'], CPPPATH = CPPPATH, INSTALL = install)
這行用 DefineGroup 定義了一個源碼組,名字叫 LVGL-port,包含 src 里的所有源碼文件。
重點是 Depend 參數:depend = ['AIC_LVGL_ELEVATOR_DEMO']

Depend 的作用是:只有當 AIC_LVGL_ELEVATOR_DEMO 這個宏(或配置項)被打開時,這個源碼組才會被編譯。如果在 config 里把 AIC_LVGL_ELEVATOR_DEMO 關掉了,這個源碼組就不會被加入編譯流程,elevator_ui.c 也就不會被編譯。
自然地,現在就能回答最開始的問題了,ui_init()找不到引用的原因正是沒有任何一個aic_demo(即匠芯創官方寫的LVGL Demo)被編譯進來。
修改aic_ui.c代碼
將aic_ui_init()函數的下面這兩行注釋掉
// extern void ui_init(void);// ui_init();
新增一行
lv_demo_benchmark();
在aic_ui.c文件包含部分之后,新增代碼
#ifdefAIC_LVGL_DEMO_BENCHMARK#include"lvgl_v9/lvgl/demos/benchmark/lv_demo_benchmark.h"#endif
啟用CPU監視
要跑Benchmark,需要給系統一個性能監視器,否則會在跑Benchmark時,屏幕顯示LV_USE_PERF_MONITOR is not enabled提示,結果頁面也不會顯示FPS和CPU占用率。
在packages\artinchip\lvgl-ui\lvgl_v9\lv_conf.h 找到【LV_USE_PERF_MONITOR】,將值改為1。

實驗結果:編譯、下載,進入系統后就能看到正在運行的benchmark了。

可以看到大部分場景穩定60FPS以上,而且CPU占用率都不高。
新建LVGL應用-控制顯示屏亮度
匠芯創AiUIBuilder簡介
AiUIBuilder是基于LVGL(Light and Versatile Embedded Graphics Library) 開發的UI設計工具,可以通過拖拽的方式進行UI界面的設計,能夠加速基于ArtInChip嵌入式平臺的圖形應用的開發。
使用UiBuilder進行設計的流程如下

用AiUIbuilder在電腦上進行UI設計,并模擬運行,可以反復的對設計進行修改;
AiUIbuilder設計導出的代碼也可以在VSCode環境下進行代碼的修改,并可以在電腦上單步調試;
AiUIbuilder導出的UI代碼或者經過在VSCode環境下修改過的UI代碼,放在SDK編譯環境相應目錄下進行編譯,然后燒錄固件,在真實硬件環境下運行。
下載安裝AiUIbuilder
前往官網下載安裝:
https://aicdoc.artinchip.com/topics/product/download-doc-tool-zip.html
創建UI工程
在AiUiBuilder工具中,新建一個名為【test1】的項目,注意選擇顏色深度為16bit,分辨率為【480*272】。

設計UI
這個實驗是為了通過UI調整屏幕亮度,所以需要一個滑動條組件,如下圖:

調整滑動條的范圍為10~100,默認值70。

還要兩個標簽組件

label_2標簽是用于顯示滑動條的數值。
滑動條事件設置
滑動條組件介紹
參考LVGL文檔:
https://lvgl.100ask.net/9.1/widgets/slider.html
滑動條對象看起來像是在進度條增加了一個可以調節的旋鈕,使用時可以通過拖動旋鈕來設置一個值。就像進度條(bar)一樣,Slider可以是垂直的或水平的(當設置進度條的寬度小于其高度,就可以創建出垂直擺放的滑動條)。
使用事件LV_EVENT_VALUE_CHANGED,它是在拖動滑塊或使用按鍵更改滑塊時,會發送事件,拖動滑塊時,會連續發送事件。
設置滑動事件
右鍵點擊滑動條,選擇設置事件。

打開的窗口中,選擇事件Value changed-自定義代碼-勾選方法名右側的復選框。

設置screen加載事件
右鍵screen,選擇【設置事件】。

事件名為 load start,方法名右側的復選框打勾。

編寫自定義代碼
打開項目文件夾下的 ui_builder/custom/custom.c文件,新增代碼如下:
#ifndefSIMULATOR#include"lv_tpc_run.h"voidbacklight_pwm_config(unsignedint channel, unsignedint level){structrt_device_pwm *pwm_dev;pwm_dev = (structrt_device_pwm *)rt_device_find("pwm");/* pwm frequency: 1KHz = 1000000ns */rt_pwm_set(pwm_dev, channel,1000000,10000* level);}#endifvoidscreen_slider_1_custom_value_changed(){screen_t*scr =screen_get(&ui_manager);intvalue =lv_slider_get_value(scr->slider_1);charbuf[8];snprintf(buf,sizeof(buf),"%d%%", value);lv_label_set_text(scr->label_2, buf);#ifndefSIMULATORbacklight_pwm_config(2, value);#endif}voidscreen_custom_load_start(){screen_t*scr =screen_get(&ui_manager);intvalue =lv_slider_get_value(scr->slider_1);charbuf[8];snprintf(buf,sizeof(buf),"%d%%", value);lv_label_set_text(scr->label_2, buf);}
其中【screen_slider_1_custom_value_changed】是滑動條事件回調函數,【screen_custom_load_start】是屏幕加載回調函數。它們都先獲取了屏幕的對象,然后讀取滑動條當前值,再將該數值格式化為字符串,設置為標簽label_2的顯示文本。
【backlight_pwm_config】用于設置背光的 PWM(脈寬調制)參數,實現調節屏幕亮度的功能。
【#ifndefSIMULATOR ...#endif】,在模擬器環境下,是找不到lv_tpc_run.h頭文件及其他函數的,這些是在luban-lite SDK中使用的,因此需要注釋掉,避免編譯報錯,在模擬器下只需要關心UI設計和基本邏輯是否正確即可。
導出AiUiBuilder生成的代碼
在UiBuilder的右上角,點擊生成代碼。

代碼生成在項目目錄下的ui_builder目錄內。

先記住該路徑,這部分文件代碼等會要用到。
搭建VSCode編譯仿真環境
在VSCode中,安裝如下插件:
C/C++
C/C++ Extension Pack
CMake
CMake Tools
使用VSCode打開AiUiBuilder項目工程test1文件夾下的simulator.code-workspace文件,這是vscode的工作區文件。
編譯時,會讓我們選編譯器,這里選擇未指定,因為在工作區配置文件中已經自動指定好了。

點擊工具欄的build按鈕,進行編譯。完成后點擊調試或運行,即可查看仿真效果。
新增LVGL應用配置
首先需要在application/Kconfig 中下方所示部分添加代碼:
...config AIC_LVGL_USB_OSD_DEMObool"LVGL usb osd demo"selectLPKG_LVGL_USING_DEMOSselectLPKG_USING_CJSONselectAIC_PWM_BACKLIGHT_BYPASSifAIC_PWM_BACKLIGHTconfig AIC_LVGL_IMAGE_DEMObool"LVGL image demo"config AIC_LVGL_TEST1_DEMO# 添加 AIC_LVGL_TEST1_DEMO,以便在 menuconfig 菜單中選擇bool"LVGL demo of test1"...
在項目配置中,【select LVGL Demo】選擇剛剛的【LVGL demo of test1】,保存。

導入代碼
在【packages\artinchip\lvgl-ui\aic_demo】下新建【test_demo_1】文件夾,將導出的代碼全部復制到這里。

配置SConscript
在test_demo_1目錄下新建SConscript文件,添加如下代碼:
frombuilding import *import oscwd = GetCurrentDir()group= []# 源文件路徑src = Glob('*.c')src += Glob('./custom/*.c')# 頭文件路徑CPPPATH = [cwd]CPPPATH.append(cwd+'/custom')list = os.listdir(cwd)fordinlist:path = os.path.join(cwd, d)ifos.path.isfile(os.path.join(path,'SConscript')):group=group+ SConscript(os.path.join(d,'SConscript'))# 資源安裝的目標路徑ins_dst='rodata/lvgl_data'# 資源安裝的源路徑為當前SConscript所在路徑的相對路徑ins_src ='assets'install = [(ins_src +'/font/', ins_dst +'/font/'),]# AIC_LVGL_TEST1_DEMO 宏需要與 application/Kconfig 中添加的宏一致group=group+ DefineGroup('LVGL-port', src, depend = ['AIC_LVGL_TEST1_DEMO'], CPPPATH = CPPPATH,INSTALL = install)Return('group')
實驗結果:通過觸摸屏拉拽滑動條,實現了屏幕亮度的調節。
以上內容來源:電子發燒友論壇
-
嵌入式
+關注
關注
5184文章
20116瀏覽量
327891 -
開發板
+關注
關注
25文章
6092瀏覽量
112356 -
匠芯創
+關注
關注
0文章
41瀏覽量
108
發布評論請先 登錄
【匠芯創科技】D13X-DOC
匠芯創D133CBS RISC-V KunLun Pi V1.0開發板開發資料
【匠芯創D133CBS KunLun Pi開發板試用體驗】《匠芯創D133CBS RISC-V KunLun Pi 》 開箱及搭建vscode開發環境
【匠芯創D133CBS KunLun Pi開發板試用體驗】1、開發板開箱及介紹
【匠芯創D133CBS KunLun Pi開發板試用體驗】2、SDK下載+環境搭建
【匠芯創D133CBS KunLun Pi開發板試用體驗】匠芯創D133CBS KunLun Pi開發板串口使用
匠芯創D13x系列通過工業和信息化部重點實驗室測試
賦能兩輪車新國標 | 匠芯創D13x系列芯片為手機無線投屏與導航提供核心支持
探索KunLun Pi | 基于匠芯創D13x系列開發板分享

探索 KunLun Pi | 基于匠芯創D13x系列開發板分享(三)
評論