本篇測(cè)評(píng)由電子工程世界的優(yōu)秀測(cè)評(píng)者“qinyunti”提供。此次板卡的測(cè)試,是Linux C開(kāi)發(fā)環(huán)境下按鍵控制LED的操作實(shí)錄。
前言
對(duì)于核心板或者開(kāi)發(fā)板的選型我們一樣會(huì)考慮二次開(kāi)發(fā)的便捷性,開(kāi)發(fā)環(huán)境,手冊(cè)等的易用性和完整性。下面我們就從開(kāi)發(fā)者的角度體驗(yàn),從Linux C開(kāi)發(fā),Qt開(kāi)發(fā),python開(kāi)發(fā)等常見(jiàn)開(kāi)發(fā)入手進(jìn)行體驗(yàn)?,F(xiàn)在開(kāi)始第一部分Linux C開(kāi)發(fā)環(huán)境的簡(jiǎn)單體驗(yàn)。這里使用WIN11+WSL2+Ubuntu 20.04進(jìn)行開(kāi)發(fā)。Ubuntu單獨(dú)安裝在E盤(pán),而不是直接從應(yīng)用商店下載安裝(具體安裝方法可以網(wǎng)絡(luò)搜索,這里不再贅述),因?yàn)殚_(kāi)發(fā)環(huán)境需要的空間較大,直接應(yīng)用商店安裝默認(rèn)位于C盤(pán)會(huì)導(dǎo)致C盤(pán)空間不夠,所以獨(dú)立安裝在空間較大的盤(pán)。
試用視頻戳這里
準(zhǔn)備
串口登錄絲印Debug對(duì)應(yīng)的Type-C USB口為調(diào)試串口,接到電腦。設(shè)置串口終端,我這里使用crt。參數(shù)為115200-8-N-1。如果找不到COM則先網(wǎng)上搜索下載FTD21XX的驅(qū)動(dòng)安裝。登錄到開(kāi)發(fā)板。 用戶(hù)名為root無(wú)需密碼[root@myir:/]#SSH登錄網(wǎng)口接到絲印ENET2的網(wǎng)口串口終端中ifconfig查看IP 開(kāi)發(fā)板IP地址為169.254.127.228我們將電腦的IP設(shè)置為同一網(wǎng)段169.254.127.227 開(kāi)發(fā)板中ping電腦 電腦中ping開(kāi)發(fā)板 如果ping不通可以關(guān)閉電腦的防火墻 修改root用戶(hù)密碼串口終端中輸入passwd回車(chē)輸入123回車(chē)?yán)^續(xù)輸入123回車(chē)將密碼設(shè)置為了123
使用CRT SSH登錄密碼為剛才設(shè)置的123
安裝必備包
進(jìn)入WSL打開(kāi)終端sudo apt-get updatesudo apt-get install build-essential gcc libncurses5-dev bison flex texinfosudo apt-get install zlib1g-dev gettext libssl-dev autoconfsudo apt-get install autoconfsudo apt-get install automakesudo apt-get install libtoolsudo apt-get install linux-libc-dev:i386sudo apt-get install gitsudo apt-get install gnupgsudo apt-get install flexsudo apt-get install bisonsudo apt-get install gperfsudo apt-get install build-essentialsudo apt-get install zipsudo apt-get install curlsudo apt-get install libc6-devsudo apt-get install libncurses5-dev:i386sudo apt-get install x11proto-core-devsudo apt-get install libx11-dev:i386sudo apt-get install libreadline6-dev:i386sudo apt-get install libgl1-mesa-glx:i386sudo apt-get install libgl1-mesa-devsudo apt-get install g++-multilibsudo apt-get install mingw32sudo apt-get install tofrodossudo apt-get install python-markdownsudo apt-get install libxml2-utilssudo apt-get install xsltprocsudo apt-get install zlib1g-dev:i386sudo apt-get install gawksudo apt-get install texinfosudo apt-get install gettext sudo dpkg-reconfigure dash #選擇 nosudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.sosudo apt-get install zlib1g-dev # 缺失 libz.so 時(shí)安裝sudo apt-get install uboot-mkimage # 缺失 mkimge 時(shí)安裝或者安裝 u-boot-tools
交叉編譯環(huán)境安裝
windows下從http://down.myir-tech.com/MYD-YT507H/下載資料,其中03_Tools.zip解壓;我這里解壓后為E:\BOARD\MYC-YT507\03_Tools將文件夾Complie Toolchain名字改為Complie_Toolchain,因?yàn)長(zhǎng)inux中命令行文件名不能有空格。 wsl中cd ~mkdir MYD-YT507Hcd MYD-YT507H/ 直接將windows下的文件解壓到WSL中:tar -xvf /mnt/e/BOARD/MYC-YT507/03_Tools/Complie_Toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz -C . export PATH=$PATH:~/MYD-YT507H/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin aarch64-linux-gnu-gcc -v能看到打印信息說(shuō)明安裝成功。
測(cè)試
編寫(xiě)代碼以下代碼實(shí)現(xiàn)按鍵控制LED的亮滅。 led.c#include #include #include #include #include #include #include #include #include /* ./key_led /dev/input/event0 noblock */ intmain(intargc, char**argv){ intfd,bg_fd; interr, len, i; unsignedcharflag; unsignedintdata[1]; char*bg= "/sys/class/leds/blue/brightness"; structinput_eventevent; if(argc< 2) ? ?{ ? ? ? ?printf("Usage: %s ?[noblock]\n", argv[0]); ? ? ? ?return?-1; ? ?} ? ?if?(argc?== 3?&& !strcmp(argv[2], "noblock")) ? ?{ ? ? ? ?fd?= open(argv[1], O_RDWR?| O_NONBLOCK); ? ?} ? ?else ? ? { ? ? ? ?fd?= open(argv[1], O_RDWR); ? ?} ? ?if?(fd?< 0) ? ?{ ? ? ? ?printf("open %s?err\n", argv[1]); ? ? ? ?return?-1; ? ?} ? ?while?(1) ? ?{ ? ? ? ?len?= read(fd, &event, sizeof(event)); ? ? ? ?if?(event.type?== EV_KEY) ? ? ? ?{ ? ? ? ? ? ?if?(event.value?== 1)//key down and up ? ? ? ? ? ?{ ? ? ? ? ? ? ? ?printf("key test \n"); ? ? ? ? ? ? ? ?bg_fd?= open(bg, O_RDWR); ? ? ? ? ? ? ? ?if?(bg_fd?< 0) ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ?printf("open %d?err\n", bg_fd); ? ? ? ? ? ? ? ? ? ?return?-1; ? ? ? ? ? ? ? ?} ? ? ? ? ? ? ? ?read(bg_fd,&flag,1); ? ? ? ? ? ? ? ?if(flag?== '0') ? ? ? ? ? ? ? ? ? ?system("echo 1 > /sys/class/leds/blue/brightness");//l ed off - 62 - elsesystem("echo 0 > /sys/class/leds/blue/brightness ");//led on } } } return0;} 編譯aarch64-linux-gnu-gcc led.c -o led
導(dǎo)入到開(kāi)發(fā)板將編譯后的程序led拷貝到windows下,再拷貝到開(kāi)發(fā)板中cp led /mnt/e SSH登陸后輸入rz回車(chē)選擇程序文件led點(diǎn)擊Add點(diǎn)擊確定 運(yùn)行chmod +x led./led /dev/input/event1noblock 按下開(kāi)發(fā)板上絲印ON/OFF的按鍵則對(duì)應(yīng)的藍(lán)色的LED亮和滅。
總結(jié)
米爾的資料是比較友好和全面的,手冊(cè),開(kāi)發(fā)環(huán)境等都比較詳盡,能方便用戶(hù)快速熟悉開(kāi)發(fā)環(huán)境進(jìn)行二次開(kāi)發(fā)。
另外參考文檔中《MYD-YT507H_Linux軟件開(kāi)發(fā)指南V1.1.pdf》中相關(guān)信息有誤,比如:
/dev/input/event0應(yīng)該為/dev/input/event1;代碼中/sys/class/leds/blue/brightness應(yīng)該為/sys/class/leds/heartbeat/brightness等,也沒(méi)明確按鍵對(duì)應(yīng)關(guān)系。文檔中也沒(méi)有用戶(hù)名密碼等描述,所以需要手動(dòng)修改root的密碼等等。文檔整體比較詳細(xì),但是一些細(xì)節(jié)還是需要盡可能描述清楚,并且保持更新。參考http://down.myir-tech.com/MYD-YT507H/MYD-YT507H_Linux軟件開(kāi)發(fā)指南V1.1.pdf
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
4907瀏覽量
97078
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論