人工智慧與機器學習是目前最火熱的話題。而其運用於智慧家庭中,最重要的為智慧門鎖之應用。此篇博文,將介紹"在i.MX8M mini上運行eIQ的低功耗智能門鎖之運用":
門鎖要達到低功耗,就必須在平時不使用時候,將門鎖相關功能都關閉,達到省電原則。將使用者進出時,才將門鎖功能喚醒,進行識別,解鎖。
演示概念如下:
1. 智慧門鎖識別功能關閉時,使用語音喚醒功能
2. 智慧門鎖識別功能開啟時,使用人臉識別功能,進行解鎖
在i.MX8M mini平台上:
Cortex A53使用eIQ OpenCV執行"人臉識別" 。 Cortex M4使用eIQ CMSIS-NN執行"關鍵字喚醒"
場景如下:Cortex A內核和連接的外圍設備處於低功耗模式。 Cortex M處於活動狀態,正在等待關鍵字“ GO”。
當檢測到單詞時,Cortex M將一個MU中斷發送到Cortex A,系統喚醒。現在,Cortex A執行人臉識別並允許註冊用戶訪問。
運行在Cortex A上的人臉識別算法和運行在Cortex M上的關鍵詞發現算法均使用eIQ來實現。
對於MPU,Yocto中集成了eIQ支持。對於該MCU,出於演示目的,已將支持從MCU Expresso SDK移植到了i.MX8。
軟件環境 :
1. Ubuntu 16主機
2. 帶有Yocto BSP 4.14.98 / sumo 2.0.0 GA的SD卡映像檔,用於帶有eIQ OpenCV和eIQ異構演示的i.MX8MMini平台。
3. 神經網絡 (CMSIS-NN)
4. 適用於i.MX8MMini的MCUXpresso SDK版本2.6.0(SDK_2.6.0_EVK-MIMX8MM-ARMGCC)。
硬件環境 :
1. i.MX 8MMini套件
2. 觸摸屏顯示(首選分辨率1920x1080)。 經過HDMI與開發板連接測試。注意:如果顯示器不支持觸摸,則可以將鼠標連接到板上並代替使用
3. MIPI-CSI攝像頭模塊
4. 麥克風:Synaptics CONEXANT AudioSmart DS20921。帶狀,4條母-母線和60針連接器,用於將麥克風連接到板
5.主機PC,用於遠程訪問演示應用程序(使用的Chrome瀏覽器)注意:開發板和主機PC應該在同一網絡中才能進行通信。
Build Yocto image:
第一步: Project initialization:
==================
$: mkdir imx-linux-bsp
$: cd imx-linux-bsp-bsp
$: repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-sumo -m imx-4.14.98-2.0.0_machinelearning.xml
$: repo sync
==================
第二步: Setup Project build:
==================
$: MACHINE=imx8mmevk DISTRO=fsl-imx-xwayland source ./fsl-setup-release.sh -b bld-xwayland
==================
第三步: Download project layer in ${BSPDIR}/sources/:
==================
$: git clone https://source.codeaurora.org/external/imxsupport/meta-eiq-heterogenousc
==================
第四步: Add project layer into bblayers:
Add the following line into ${BSPDIR}/sources/base/conf/bblayers.conf:
==================
BBLAYERS += " ${BSPDIR}/sources/meta-eiq-heterogenous "
==================
第五步: Enable eIQ and other dependencies. Add the following lines into conf/local.conf:
==================
EXTRA_IMAGE_FEATURES = " dev-pkgs debug-tweaks tools-debug \
tools-sdk ssh-server-openssh"
IMAGE_INSTALL_append = " net-tools iputils dhcpcd which gzip \
python3 python3-pip wget cmake gtest \
git zlib patchelf nano grep vim tmux \
swig tar unzip parted \
e2fsprogs e2fsprogs-resize2fs"
IMAGE_INSTALL_append = " python3-pytz python3-django-cors-headers"
IMAGE_INSTALL_append = " opencv python3-opencv"
PACKAGECONFIG_append_pn-opencv_mx8 = " dnn python3 qt5 jasper \
openmp test neon"
PACKAGECONFIG_remove_pn-opencv_mx8 = "opencl"
TOOLCHAIN_HOST_TASK_append = " nativesdk-cmake nativesdk-make"
PREFERRED_VERSION_opencv = "4.0.1%"
PREFERRED_VERSION_python3-django = "2.1%"
IMAGE_ROOTFS_EXTRA_SPACE = "20971520"
==================
第六步: Bake the image:
==================
$: bitbake image-eiq-hetero
==================
Build Cortex M4 executable:
1. 下載適用於i.MX8MMini的MCUXpresso SDK版本2.6.0(SDK_2.6.0_EVK-MIMX8MM-ARMGCC)
。OS: Linux, Toolchain: GCC ARM Embedded
。Components: Amazon-FreeRTOS, CMSIS DSP Library, multicore
。SDK Version: 2.6.0 (2019-06-14)
。SDK Tag: REL_2.6.0_REL10_RFP_RC3_4
2. 下載CMIS NN並將“ CMSIS \ NN”文件夾複製到“ $ MCUXpressoSDK_ROOT \ CMSIS”
3. 到“ $ MCUXpressoSDK_ROOT \ boards \ evkmimx8mm \ demo_apps \”
4. 從CAF獲取M4應用:
git clone https://source.codeaurora.org/external/imxsupport/eiq-heterogenous-cortexm4
5. [Win]:打開ARM GCC控制台,然後到“ $ MCUXpressoSDK_ROOT \ boards \ evkmimx8mm \ demo_apps \ eiq-heterogenous-cortexm4 \ armgcc \”
6. [Win]:調用“ build_ddr_release.bat”獲得“ eiq-kws.bin”。
7. 將“ eiq-kws.bin”部署到上的Yocto映像黨中啟動分區。
演示準備
1. 將12V電源連接到板上,開關SW101接通板上電
2. 在主機PC和目標板上的J901 USB端口之間連接USB電纜。
3. 使用以下設置打開兩個用於A53內核和M4內核的串行端子:
- 115200 baud rate
- 8 data bits
- No parity
- One stop bit
- No flow control
4. 將顯示器連接到板(使用IMX-MIPI-HDMI適配器將1920x1080 HDMI顯示器連接到板)。
注意:根據顯示,您可能需要在“ /etc/xdg/weston/weston.ini”中更改配置。 該演示已通過取消註釋此文件中的以下部分進行了測試:
[output]
name=HDMI-A-1
mode=1920x1080@60
transform=90
5. 將MIPI-CSI攝像機連接到板上。
6.使用帶有彩帶的60針連接器將Synaptics麥克風連接到板上。 SAI3用於在Cortex M4上進行記錄和回放。 使用以下引腳:
針腳44(連接器) I2S_TX_Data1(麥克風板)
針腳43(連接器) I2S_TX_LRCLK(麥克風板)
針腳41(連接器) I2S_TX_CLK(麥克風板)
引腳60(連接器) GND(麥克風板)
7. 使用U-Boot命令運行demo.bin文件。 有關詳細信息,請參閱“適用於i.MX 8M Mini.pdf的MCUXpresso SDK入門”。
8. 運行demo.bin之後,使用“ boot”命令在A核心終端上引導內核;
9. 內核啟動後,使用“ root”登錄。
10. 登錄後,確保已插入(xsmod)imx_rpmsg_pingpong內核模塊或將其插入(modprobe imx_rpmsg_pingpong)。
1. 在Cortex M4上啟動關鍵詞發現: 在u-boot中停止並在DDR中運行eiq-kws.bin可執行文件:
u-boot=>fatload mmc 0 0x80000000 eiq-kws.bin
u-boot=>dcache flush
u-boot=>bootaux 0x80000000
u-boot=>boot
2. 引導過程成功後,ARM Cortex-M4終端顯示以下信息:
RPMSG Ping-Pong FreeRTOS RTOS API Demo...
RPMSG Share Base Addr is 0xb8000000
3. 在啟動內核期間,ARM Cortex-M4終端顯示以下信息:
Link is up!
Nameservice announce sent.
4. 在Cortex-A上開始人臉識別:插入更新的rpmsg驅動程序:
$: modprobe imx_rpmsg_pingpong
5. 安裝Linux RPMsg乒乓模塊後,ARM Cortex-M4終端顯示以下信息:
Looping forever...
Waiting for ping...
Sending pong...
96% go
6. 僅限第一次:
$: cd ~/eiq-heterogenous-cortexa
$: python3 wrap_migrate.py
$: python3 wrap_createsuperuser.py
7. 開始:
$: cd ~/eiq-heterogenous-cortexa
$: python3 manage.py runserver 0.0.0.0:8000 --noreload &
$: /opt/src/bin/src
注意:第一條指令將啟動django服務器,第二條指令將在顯示屏上顯示鍵盤。
從HOST PC訪問瀏覽器:
- http://$BOARD_IP:8000/dashboard/): Dashboard that facilitates managing users and view access logs
- http://$BOARD_IP:8000/admin/: manage users database
評論