特別感謝北京理工大學(xué)的李海老師提供以下文章,供大家學(xué)習(xí)與參考。
?
RK-3506開發(fā)板開箱
ELF-RK3506開發(fā)板的核心板與底板通過郵票孔方式連接,其核心板搭載基于ARM架構(gòu)的低功耗高性能處理器RK3506。該處理器集成3核 Cortex-A7配備獨(dú)立的NEON協(xié)處理器可廣泛適用于計(jì)算機(jī)、手機(jī)、個(gè) 人移動(dòng)互聯(lián)網(wǎng)以及數(shù)字多媒體設(shè)備。飛凌嵌入式推出這款板子顯然是吸引單片機(jī)開發(fā)者進(jìn)入Linux開發(fā)領(lǐng)域。

串口連接
ELF-RK3506供電電源和調(diào)試串口功能共同使用一根USB typeC線。連接PC機(jī)的USB接口和板卡的typeC口(絲印DEBUG),就可以通過串口登錄開發(fā)板,用戶名是root,無密碼。登錄后,使用uname命令可以查看操作系統(tǒng)的版本。
root@elf3506-buildroot:~# uname -aLinux?elf3506-buildroot?6.1.99+ #1?SMP PREEMPT Fri Nov ?7?10:16:11?HKT?2025?armv7l GNU/Linux
?
網(wǎng)口連接
?ELF-RK3506開發(fā)板沒有WiFi模塊,提供了一個(gè)網(wǎng)口和一根網(wǎng)線,可以直接連接到家里的路由器上。默認(rèn)該網(wǎng)口是固定IP,需要改成DHCP以獲得路由器分配的IP地址。
root@elf3506-buildroot:~# udhcpcudhcpc: started, v1.36.1udhcpc: broadcasting discoverudhcpc: broadcasting select for?192.168.1.122, server?192.168.1.1udhcpc: lease of?192.168.1.122?obtained from?192.168.1.1, lease time?86400deleting?routersadding?dns?192.168.1.1root@elf3506-buildroot:~#
?
配置WSL編譯環(huán)境
廠商提供了用于編譯的VMWare環(huán)境,不過我沒有用,還是喜歡使用Windows自帶的WSL2。下面介紹一下如何配置WSL編譯環(huán)境。首先從廠商的資料云盤上下載兩個(gè)軟件包:http://www.51meinv.cn/information/detail.html?id=8

將上述交叉編譯工具拷貝到開發(fā)環(huán)境/home/test/(這里假設(shè)用戶是test)目錄下,并在該目錄下解壓。
test@Star:~$?tar -vxf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.bz2test@Star:~$?tar -vxf?3506-toolchain.tar.bz2
?
解壓后執(zhí)行一下下面的命令測試是否正常:
gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc -v

?
TRAE環(huán)境構(gòu)建
接下來就要進(jìn)入AI編程工具TRAE的環(huán)境構(gòu)建了。TRAE是豆包推出的一個(gè)AI編程工具,它提供完整的IDE核心能力,支持多種主流編程語言與熱門開發(fā)框架,集成代碼編輯、智能補(bǔ)全、調(diào)試運(yùn)行、版本控制等一體化工具鏈。適用于獨(dú)立開發(fā)者、學(xué)生及自由職業(yè)者,用于項(xiàng)目開發(fā)、技術(shù)學(xué)習(xí)與實(shí)踐探索。國內(nèi)用戶可以從下面網(wǎng)站下載最新版本:https://www.trae.cn/
?
TRAE的遠(yuǎn)程開發(fā)功可以支持WSL,使你能夠像連接遠(yuǎn)程服務(wù)器一樣,直接在本地WSL環(huán)境中編寫、調(diào)試和運(yùn)行代碼。在TRAE的官方文檔中對這部分有詳細(xì)的介紹,直接安裝步驟進(jìn)行即可:https://docs.trae.cn/ide/wsl
?

?
連接成功之后,就可以打開一個(gè)WSL中目錄,假定是simple。

?
生成測試程序
我們采用TRAE的默認(rèn)配置,模型是Auto,采用Builder方式工作,輸入如下提示詞:
完成如下任務(wù):1. 創(chuàng)建一個(gè)基于Linux控制臺(tái)的測試程序,驗(yàn)證編譯工具鏈,簡短有趣2. 創(chuàng)建vscode中進(jìn)行編譯的任務(wù)文件,交叉編譯命令為~/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc3. 創(chuàng)建vscode中進(jìn)行SSH連接的任務(wù),服務(wù)器IP為192.168.1.122,拷貝編譯得到的可執(zhí)行文件到服務(wù)器上,并進(jìn)行執(zhí)行。
?
在上面的提示詞,使用的是vscode,而不是TRAE IDE,一是因?yàn)門RAE IDE本身就是基于VSCode,二是因?yàn)槿绻肨RAE IDE,則模型不能很好地處理。
?
TRAE開始勤奮的工作,開始生成C程序代碼(test_program.c)和任務(wù)代碼(task.json)。


?
現(xiàn)在使用TRAE IDE菜單上的“終端→運(yùn)行生成任務(wù)”,就可以交叉編譯生成可執(zhí)行文件test_program了。

?
接下來使用TRAE IDE菜單上的“終端→運(yùn)行任務(wù)..”,然后選擇“Deploy and Run via SSH”就可以將文件拷貝到開發(fā)板上了。

?
在運(yùn)行程序時(shí)遇到一個(gè)問題,就是chmod命令執(zhí)行失敗,導(dǎo)致整個(gè)任務(wù)失敗。

?
把錯(cuò)誤信息反饋給TRAE,它很快分析出來是對JSON中轉(zhuǎn)義字符處理不當(dāng)導(dǎo)致錯(cuò)誤,并進(jìn)行了修正。
?
再次運(yùn)行修改之后的代碼,就可以得到正確的結(jié)果了(帶有彩色的文字輸出)。

?
貼一下最終的代碼供大家參考。
test_program.c代碼如下:
#include?#include?int?main() {? ??//?彩色ASCII藝術(shù):笑臉? ? const char *colors[] = {? ? ? ??"\033[31m", ?//?紅色? ? ? ??"\033[33m", ?//?黃色? ? ? ??"\033[32m", ?//?綠色? ? ? ??"\033[34m", ?//?藍(lán)色? ? ? ??"\033[35m", ?//?紫色? ? ? ??"\033[36m"? ?// 青色? ? };? ? const char *reset?=?"\033[0m";? ??printf("\n");? ??printf("%s? ************************** ?%s\n", colors[0],?reset);? ??printf("%s?* ? ? ? ? ? ? ? ? ? ? ? ? ?*?%s\n", colors[1],?reset);? ??printf("%s?* ? ?Hello from Console! ? *?%s\n", colors[2],?reset);? ??printf("%s?* ? ? ? ? ? ? ? ? ? ? ? ? ?*?%s\n", colors[3],?reset);? ??printf("%s * ? ?\033[1m ?ASCII Art! \033[0m ? * %s\n", colors[4],?reset);? ??printf("%s?* ? ? ? ? ? ? ? ? ? ? ? ? ?*?%s\n", colors[5],?reset);? ??printf("%s? ************************** ?%s\n", colors[0],?reset);? ??printf("\n");? ??//?簡單的動(dòng)畫效果? ??printf("%sLoading", colors[2]);? ? fflush(stdout);? ??for?(int?i =?0; i 3; i++) {? ? ? ? usleep(500000);?//?500ms? ? ? ??printf(".");? ? ? ? fflush(stdout);? ? }? ??printf("%s?Done!?%s\n\n", colors[3],?reset);? ??//?系統(tǒng)信息? ??printf("%sSystem?Info:?%s\n", colors[1],?reset);? ??printf("- Architecture: ARM\n");? ??printf("- OS: Linux\n");? ??printf("- Compiler: GCC\n\n");? ??printf("%sTest?completed successfully!?%s\n\n", colors[5],?reset);? ??return?0;}
?
vscode/task.json文件如下:
{??"version":?"2.0.0",??"tasks": [? ? {? ? ??"label":?"Build (ARM Cross-Compile)",? ? ??"type":?"shell",? ? ??"command":?"~/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc",? ? ??"args": [? ? ? ??"-o",? ? ? ??"test_program",? ? ? ??"test_program.c"? ? ? ],? ? ??"group": {? ? ? ??"kind":?"build",? ? ? ??"isDefault":?true? ? ? },? ? ??"presentation": {? ? ? ??"echo":?true,? ? ? ??"reveal":?"always",? ? ? ??"focus":?false,? ? ? ??"panel":?"shared",? ? ? ??"showReuseMessage":?true,? ? ? ??"clear":?false? ? ? },? ? ??"problemMatcher": [? ? ? ??"$gcc"? ? ? ]? ? },? ? {? ? ??"label":?"Clean",? ? ??"type":?"shell",? ? ??"command":?"rm",? ? ??"args": [? ? ? ??"-f",? ? ? ??"test_program"? ? ? ],? ? ??"presentation": {? ? ? ??"echo":?true,? ? ? ??"reveal":?"always",? ? ? ??"focus":?false,? ? ? ??"panel":?"shared",? ? ? ??"showReuseMessage":?true,? ? ? ??"clear":?false? ? ? },? ? ??"problemMatcher": []? ? },? ? {? ? ??"label":?"Deploy and Run via SSH",? ? ??"type":?"shell",? ? ??"dependsOn": ["Build (ARM Cross-Compile)"],? ? ??"command":?"bash",? ? ??"args": [? ? ? ??"-c",? ? ? ??"scp test_program root@192.168.1.122:/tmp/ && ssh root@192.168.1.122?\"chmod +x /tmp/test_program && /tmp/test_program\""? ? ? ],? ? ??"presentation": {? ? ? ??"echo":?true,? ? ? ??"reveal":?"always",? ? ? ??"focus":?true,? ? ? ??"panel":?"shared",? ? ? ??"showReuseMessage":?true,? ? ? ??"clear":?false? ? ? },? ? ??"problemMatcher": []? ? }? ]}
?
