文章目錄
- 1、板子上手體驗
- 2、板載硬件
- 3、系統信息
- 4、 驅動測試
- 5、編譯linux三大件
- 7、攝像頭測試
- 9、總結
1、板子上手體驗
首先非常感謝芯查查給了這樣一個機會來測評這樣一款性能十分強大的開發板,我拿到手的是MYC-Y6ULX-V2核心板及開發板,這塊板子具有如下特點:
- 1、高性能i.MX6UL/i.MX6ULL系列處理器、內核Cortex-A7 主頻900Mhz;主頻還可以,已經接近1ghz了。
- 2、郵票孔140Pin引腳;工業級:-40~85℃,這使得這塊板子非常適合開發,利于形成產品開發。
- 3、外設資源豐富:LCD接口、 雙網口、CSI接口、USB OTG2、UART8 I2S,SPI,CAN;強大的外設接口使得這塊板子可以用來做很多事情,不用去專門找一些其他的板子來當作外接的接口。
下面貼幾張開箱的圖片,下面是包裝外觀:(米爾電子的大log)
開發板正面(大大的郵票孔)
附贈的電源還有網線,以及用來調試的USB線,給的還是很充足的,不用專門去額外購買了。
2、板載硬件
板子的資料可以從官網獲取,網址如下:
https://www.myir.cn/shows/78/26.html
資料網站:
https://www.myir-tech.com/product/myc_y6ulx.htm
一些編譯的資料下載網站:
https://down.myir-tech.com/MYD-Y6ULX/
我拿到的是這一款
接口信息如下:
對應如下:
板載系統的適配情況如下:
3、系統信息
接上串口就可以用了,默認已經刷好了軟件,上電就可以使用,首先是確認啟動方式:
這里我設置位eMMC啟動也就是0010撥碼狀態,狀態如下所示:
信息查看的話我這里用的是串口,對著絲印接一下即可,如下所示:
之后打開就能看到系統啟動的信息了
系統是無密碼的,可以直接進入,當然不想用串口的話也可以ssh遠程登陸,先查看一下設備ip地址:
之后使用ssh直接登陸就行
可以看到板子默認的系統是已經安裝了ssh工具的,可以直接進去
用ssh的好處是傳文件會方便很多,直接在右側的窗口拖放文件就行了,真的不要太方便。
下面來看一下板子的基本信息吧:
查看CPU型號,性能等信息,核心芯片是 i.MX6ULx 系列是基于高性能、超低功率 ARM Cortex-A7核心處理器,處理器運行速度高達 900MHz,包含 128 KB L2 高速緩存和 16 位DDR3/LPDDR2 支持。其內部集成了電源管理、安全單元和豐富的互聯接口。
查看CPU的頻率,溫度等相關的信息
查看CPU占用情況如下(這個一般評估某個模塊是否過度占用資源)
總體情況看最上面一排就行,相關參數說明如下:
- %us:表示用戶空間程序的 cpu 使用率(沒有通過 nice 調度)
- %sy:表示系統空間的 cpu 使用率,主要是內核程序。
- %ni:表示用戶空間且通過 nice 調度過的程序的 cpu 使用率。
- %id:空閑 cpu
下面還可以進行一下cpu的壓力測試,cpu壓力測試的方案比較多,我大概了解了一下,可以用下面的方式:
- stress命令:stress是一個Linux工具,可以用來模擬CPU、內存、磁盤等資源的壓力,用來測試系統的穩定性和性能。
- sysbench工具:sysbench是一個多功能的基準測試工具,可以用來測試CPU、內存、數據庫性能等方面。
但是都沒跑起來,因此這里用官方推薦的計算圓周率的方案來測試,輸入echo "scale=5000; 4*a(1)" | bc -l -q &
,之后會打印一個進程號出來,輸入top可以看到
這個進程在測試cpu占用情況,并且占用率很高
幾分鐘后會輸出一個計算結果:
查看內存占用情況(這個一般運行程序的時候看一下有沒有內存泄漏用的比較多)
相關字段的含義如下:
- MemTotal :所有可用的 RAM 大小,物理內存減去預留位和內核使用
- MemFree :LowFree + HighFree
- Buffers :用來給塊設備做緩存的大小
- Cached :文件的緩沖區大小
- SwapCached :已經被交換出來的內存。與 I/O 相關
當然通過free -h命令也可以獲取內存信息,我們是512mb+4gb內存的方案,這樣看起來也沒什么問題了
查看內存信息,可以看到大概就是4gb了
插入一個u盤看看,這個系統已經做了自動掛載,可以看到比較順利的掛載了,輸入fdisk -l也可以看到掛載的u盤的信息。
4、 驅動測試
首先是GPIO接口,這塊板子的gpio接口引腳是有一個對應關系,在這個文件里面
打開如下:
在linux上(也就是應用層驅動gpio),操作gpio的步驟如下:
輸入下面命令導出GPIO echo 24 > /sys/class/gpio/export
設置GPIO方向:
設置為輸出
echo "out" > /sys/class/gpio/gpio24/direction
設置為輸入
echo "in" > /sys/class/gpio/gpio24/direction
查看gpio方向
cat /sys/class/gpio/gpio24/direction
之后就可以設置gpio的高低電平了
設置輸出低電平
echo "0" > /sys/class/gpio/gpio24/value
設置輸出高電平
echo "1" > /sys/class/gpio/gpio24/value
針對led,還設置了專門的驅動:
可以通過下面的命令讀取led狀態
cat /sys/class/leds/cpu/brightness
0就是關閉,這個led是pwm驅動的,這個數值在0-255之間
led的操作匯總如下:
echo 0 > /sys/class/leds/cpu/brightness 熄滅led
echo 0 > /sys/class/leds/cpu/brightness 點亮led
echo "heartbeat" > /sys/class/leds/cpu/trigger 開啟led心跳
設置為心跳的效果如下:
gpio還可以引申出來按鍵,按鍵的效果如下:
這里我們看一下設備樹的信息:
這里用的是一個腳本來測試的按鍵,在串口輸入evtest
,之后按下按鍵,就可以看到打印的信息,如下所示
除了上面測試的這些,這塊板子接口豐富,由于時間原因我沒有一一測試,這里僅是淺淺的測試了一下。
5、編譯linux三大件
終于到了大頭了,下面開始看一下這個板子的系統構建框架部分,簡單來說就是linux三大件的部分了,這里主要參考這個文檔
一開始我以為也是常規的buildroot
的那一套,結果不是,他這里用的是Yocto
的方式,這個我之前是從來沒有接觸過的,關于yocto,介紹是這樣的:
- Yocto 不僅僅是一個制做文件系統工具,同時提供整套的基于 Linux 的開發和維護工作流程,使底層嵌入式開發者和上層應用開發者在統一的框架下開發,解決了傳統開發方式下零散和無管理的開發形態。
下面來體驗一下,這里我用的是windows上的wsl來開發,這個的好吃是可以榨干你電腦的性能,我覺得用起來還是很爽的。
把需要的文件導入,準備編譯
首先還是安裝必要的庫
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib
build-essential chrpath socat cpio python python3 python3-pip python3-pexpect
xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-
dev pylint3 xterm
設置環境變量,這里要求用個人賬號,不能用root
mkdir -p ~/MYD-Y6ULX-devel
export DEV_ROOT=~/MYD-Y6ULX-devel
cp -r <DVDROM>/02_Images $DEV_ROOT
cp -r <DVDROM>/03_Tools $DEV_ROOT
cp -r <DVDROM>/04_Sources $DEV_ROOT
接下來是安裝編譯器,進入sdk目錄,輸入下面命令這個工具鏈要你自己用官方給的資料里面拷貝過來,有下面兩種:
安裝編譯工具的命令
./fsl-imx-fb-glibc-x86_64-myir-image-fullcortexa7t2hf-neon-myd-y6ull14x14-toolchain-5.10-gatesgarth.sh
使用下面命令測試是否安裝完成:
source /opt/test5.10/environment-setupcortexa7t2hf-neon-poky-linux-gnueabi
$CC -v
看到如下輸出,說明OK了
之后就可以編譯了(構建鏡像)
進入源碼目錄,開始解壓
cd $DEV_ROOT/04_Sources
tar -xzf MYiR-i.MX6UL-Yocto.tar.gz
大概是這些內容:
然后官方教程讓你去網上拉更新下代碼,這也太慢了,還好他給了替代方案,就是這個10幾個g的大包,直接解壓他就完事了
回到上一級新建一個路徑,之后去這個路徑下面解壓
cd imx6ulx-yoctotar -xvf downloads.tar.gz -C ./
搞完是這樣的
之后就可以開始編譯了(我只能說確實方便)
bitbake myir-image-full 帶gui的版本
bitbake myir-image-core 不帶gui版本
編譯開始后就會自動去尋找匹配,然后下載,之后就是瘋狂占用cpu編譯了
編譯好了是這樣的,編譯產物在這個路徑下:tmp/deploy/ima ges/myd-y6ull14x14/
這些就是三大件了,不得不說這個構建方式確實方便啊
然后關于這個構建我總結下吧:
- 1、網絡要好,要能連外網那種,不然總會有超時什么的拉不下來,很麻煩這樣搞得
- 2、失敗了就再來一次,我也是失敗了兩三次才行的,但是只要成功了一次后面就沒失敗過了
- 3、有一個小問題,是下面這個報錯
最后解決方案是參考的這里
https://community.nxp.com/t5/i-MX-Processors/Yocto-Error-when-generating-the-SDK-for-imx-linux-5-10/m-p/1261377
具體改動的話參考我這里吧:
之后就是燒錄固件了,不得不說這個燒錄固件是真的方便了,這里我用的是usb更新(前面不是提到官方送了一個USB數據線嗎,沒想到這里用到了,真是貼心哦,爽歪歪了)
更新固件步驟如下:
- 切換啟動撥碼開關(SW1)的第三位位 OFF,第四位為 ON
- 使用 USB 轉接線(Type-A 轉 Micro-B)連接 PC 機 USB 端口與開發板 Micro USB OTG 端口(J26)
- 使用 DC 12V 電源適配器連接至開發板的電源座(J22)
- 以管理員權限打開 cmd 窗口,進入 MYD-i.MX6ULX_UUU_v1.1 目錄,輸入:
uuu.exe myd-y6ulx-y2-4e512d-qt.auto 開始燒寫系統
刷寫過程如下:
進度條走完重啟:
啟動
如果用sd卡來更新,用下面的方式制作sd卡鏡像,之后插卡更新即可
之后啟動
三大件這里限于篇幅就到這里了,怎么說呢,感覺這個新的工具還是很方便,然后官方提供的這些下載工具也都很給力,用起來還是很爽的。
7、攝像頭測試
因為最近在做攝像頭相關的工作,所以就來測試一下攝像頭相關的功能吧:
首先給板子接上USB攝像頭,下面查看攝像頭信息
查看dev信息
查看攝像頭信息
可以用下面的命令來查看視頻流
視頻顯示出來如下所示:
也可以直接用v4l2來查看:
v4l2-ctl --device=/dev/video2 --stream-mmap=3 --stream-to=video_output.yuv --stream-count=100
會輸出一個yuv文件,打開就能看
之后嘗試使用mjpg_streamer
來實現一次推流,但是我發現輸出gcc用不了,因為我用的這個是精簡版本的系統,所以就比較小了
那么就只能用交叉編譯了
先把這個庫拉下來:
https://github.com/jacksonliam/mjpg-streamer/archive/refs/heads/master.zip
之后上傳到我們的wsl里面,然后unzip解壓一下
按照上面的命令(前面章節)配置一下交叉編譯器:
因為現在make是用的gcc,所以需要先替換原來makefile里面的gcc為cc,使用下面的命令:
find -name "Makefile" -exec sed -i "s/CC = gcc/#CC = gcc/g" {} \;
grep -rn 'CC = gcc' * 這個是檢查效果的
結果如下,有四處被替換
之后make編譯一下:
生成這些庫和可執行文件
拖到開發板里面
運行測試
v4l2-ctl --device=/dev/video2 --stream-mmap=3 --stream-to=video_output.yuv --stream-count=100
打印如下:
使用vlc拉流:(延遲一般,但是說實話對于這種板子來說還可以)
http://192.168.1.4:8080/?action=stream
9、總結
限于時間原因,本次僅測評了這些內容,總的來說,這款開發板還是很不錯的,他給我眼前一亮的地方在域廠家對他的配套生態做的很好,這使得開發者上手起來會很方便。特別是系統構建這塊,其他家還在用老式的方式,這邊已經在用yocto了,非常給力,讓我學到了很多東西。廠家的文檔是十分詳細,非常適合入門學習,給深入學習也留足的空間,真想多擁有一段時間啊。