概况
开发板采用的是T41芯片, 目标产品是"低头检测", 使用"头部姿态检测算法", 把此算法部署到开发板中.flowchart TB title(T41发板) --> con(连接) con --> ser(串口连接) con --> net(网口连接) title --> ev(环境搭建) ev --> mv(安装虚拟机) ev --> sdk(复制SDK文件) ev --> cr(配置交叉编译工具链) ev --> set(编译应用程序) title --> open(OpenCV环境搭建) open --> dl(下载OpenCV) open --> mk(安装cmake) open --> mks(cmake配置) open --> mkse(编译)
flowchart TB title(T41发板) title --> dlib(DLIB环境搭建) dlib --> ref(参考) title --> debug(调试环境搭建) debug --> nfs(安装nfs服务) title --> go(运行程序) go --> go_mv(在虚拟机目录) go --> mem(修改内存大小) go --> bord(在开发板上执行) title --> orther(其他调试)
连接
按T41 TOMCAT开发板使用指南连接开发板。
串口连接
通过串口电脑连接开发板, 波特率115200.网口连接
也可通过网络telnet连接开发板, 但要注意需要在相同IP网段,例如开发板IP为192.168.207.235,电脑增加IP为192.168.207.61,虚拟机IP为192.168.207.128. 开发板默认IP地址修改路径:/system/init/app_init.sh, 修改后的脚本如下.#!/bin/sh #udhcpc #ifconfig eth0 10.3.33.235 #原IP地址 #route add default gw 10.3.33.1 #原网关 ifconfig eth0 192.168.207.235 #修改后IP地址 route add default gw 192.168.207.1 #修改后网关设置电脑增加IP.

调试软件:SecureCRT

环境搭建
开发板运行Linux操作系统, 只能执行Linux下的程序. Windows电脑应安装虚拟机运行Linux系统来编译Linux的应用程序.安装虚拟机
参考T41 BSP开发参考.项目 | 说明 |
---|---|
虚拟机 | VMware Workstation Pro |
Linux | Ubuntu 24.04 LTS |
虚拟机分配内存 | 4G |
复制SDK文件
参考T41 软件资源编译指南, 把供应商提供的SDK文件复制进虚拟机并解压缩. flowchart LR s(\ISVP\ISVP-T41-1.2.3-20240308\software\zh\Ingenic-SDK-T41-1.2.3-20240308-zh.7z) --> d(复制到虚拟机/opt/) --> u(解压缩)目录 | 说明 |
---|---|
opensource | uboot、内核、驱动、busybox源码 |
resource | 开发板镜像、文件系统、交叉编译工具链、工具等 |
sdk | 应用程序源码 |
配置交叉编译工具链
复制文件到指定目录然后解压. flowchart LR s(/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/resource/toolchain/mips-gcc720-glibc229-r5.1.9.tar.bz2) --复制--> d(虚拟机/opt/) --解压--> u(本地) 在虚拟机中执行以下指令, 即可使用mips-linux-gnu-gcc.
export PATH=/opt/mips-gcc720-glibc229-r5.1.9/bin:$PATH
编译应用程序
进入以下路径, 执行make, 即可编译目录下的例程.
/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/samples/libimp-samples
OpenCV环境搭建
下载OpenCV
开发板使用的是OpenCV3.3, 因此需要下载此版本的OpenCV, 下载到虚拟机/opt目录下并解压,在该目录下创建两个文件夹build与lib.flowchart LR dl(下载OpenCV3.3) --> mv(虚拟机/opt/) --> un(解压缩) --> cf(创建文件夹build与lib)
安装cmake与cmake-gui
sudo apt-get install cmake cmake-guicmake配置
执行cmake-gui命令, 进入编译配置界面, 选择opencv与build目录.Operating System 填写 Linux
Processor 填写mips
C Compilers 填写交叉编译器(mips-linux-gnu-gcc)的路径
C++ Compilers 填写交叉编译器(mips-linux-gnu-g++)的路径
Target Root 填写交叉编译器所在目录
参考opencv移植到mips开发板的完整过程——及测试样例
编译
执行make -j4 ,没报错再执行make install.编译成功后,/opt/opencv-3.3.0/lib/lib 目录下即为OpenCV的交叉编译动态库.
DLIB环境搭建
与OpenCV的搭建类似, 版本找最新的19.24即可.参考海思交叉编译Dlib
若编译过程出现std::round等类似报错,改成::round即可.
调试环境搭建
虚拟机安装nfs服务:apt-get install nfs-kernel-server.修改/etc/exports文件,如下图.
重启nfs服务:systemctl restart nfs-kernel-server
通过SecureCRT访问开发板
执行mkdir /tmp/h;mount -t nfs -o nolock 192.168.207.128:/opt /tmp/h;cd /tmp/h;
成功后,开发板可访问虚拟机nfs目录
运行程序
在虚拟机目录运行
/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/samples/libimp-samples中编写代码demo.cpp
虚拟机执行:export PATH=/opt/mips-gcc720-glibc229-r5.1.9/bin:$PATH
编译命令
mips-linux-gnu-g++ -O2 -muclibc -march=mips32r2 \ -I/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/samples/libimp-samples\ -I/opt/uclibc/include/opencv4 \ -I/opt/uclibc/include \ -I/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/include \ -L/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/lib/uclibc \ -L/opt/uclibc/lib \ -lopencv_core -lopencv_video -lopencv_dnn -lopencv_features2d -lopencv_highgui \ -lopencv_videoio -lopencv_flann -lopencv_imgcodecs -lopencv_imgproc -lopencv_imgcodecs \ -lopencv_calib3d -lopencv_ml -lopencv_objdetect \ -ldlib \ -lpthread -lm -lrt \ -limp -lalog \ -o demo demo.cpp sample-common.o编译成功后,demo即为运行程序。
修改内存大小
由于人脸特征点模型较大,因此需要分配较大内存给系统(系统分配54M + 图像分配10M)。在uboot模式下执行,setenv bootargs 'console=ttyS1,115200n8 mem=54M@0x0 rmem=10M@0x3600000 init=/linuxrc rootfstype=squashfs root=/dev/mtdblock2 rw mtdparts=sfc0_nor:256k(boot),2560k(kernel),2560k(root),-(appfs) lpj=11968512'; saveenv;
在开发板上执行
mkdir /tmp/h;mount -t nfs -o nolock 192.168.207.128:/opt /tmp/h;cd /tmp/h; export LD_LIBRARY_PATH=/tmp/h/uclibc/lib/:/lib:/tmp/h/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/lib/uclibc/ cd /tmp/h/Ingenic-SDK-T41-1.2.3-20240308-zh/sdk/libimp-samples/ ./demo
其他调试
uboot编译
进入目录/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/opensource/uboot虚拟机执行:export PATH=/opt/mips-gcc720-glibc229-r5.1.9/bin:$PATH
根据开发板情况,执行make Isvp_tlq_msc0后,该目录下生成文件:u-boot.bin
内核编译
进入目录/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/opensource/kernel-4.4.94虚拟机执行:export PATH=/opt/mips-gcc720-glibc229-r5.1.9/bin:$PATH
如无修改项,直接执行make uImage后,在路径
/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/opensource/kernel-4.4.94/arch/mips/boot
生成文件:uImage
报错处理
若存在报错,则参考: 报错:multiple definition of `yylloc'
Ubuntu版本太高导致,需要降为16.xx
另一种方法,在scripts/dtc目录中将dtc-lexer.lex.c中yylloc加上extern
报错:"mkimage" command not found - U-Boot images will not be built
安装apt-get install u-boot-tools
报错:/bin/sh: 1: lzop: not found
安装apt-get install lzop
若内核需要修改功能,则执行make menuconfig打开或配置功能。
DTS文件路径,
/opt/Ingenic-SDK-T41-1.2.3-20240308-zh/opensource/kernel-4.4.94/arch/mips/boot/dts/ingenic
烧录内核
文件系统烧录方式也一样,不过大小和地址需要匹配a、在Windows上打开tftpd64.exe,并放入uImage文件
b、Windows访问开发板串口,在开发板上电时马上按下电脑Ctrl-C键,让开发板进入uboot模式
c、进入uboot模式后,
Hit any key to stop autoboot: 0
isvp_t41#
d、配置好ip及tftp服务器,再ping通tftp服务器
set ipaddr 192.168.207.235;set serverip 192.168.207.61;set gatewayip 192.168.207.1 ping 192.168.207.61
c、执行
mw.b 0x80600000 0xff 0x280000
tftpboot 0x80600000 uImage
sf0 probe;sf0 erase 0x40000 0x280000;sf0 write 0x80600000 0x40000 0x280000
(注意内核大小及保存地址)
magik调试
技术支持提供的资料:git clone
http://magik:crMbZ6cyXjzqbm405JDx0vu27GAl8Y+2ZCQ4cciWaw@60.173.195.78:8083/gerrit/magik/magik-toolkit
其中人形检测例程编译成功后,
/magik/Models/post/yolov5s/venus_sample_yolov5s/venus_yolov5s_bin_ulibc_release
yolov5例程运行前需要配置nmem内存,在uboot模式下执行
setenv bootargs 'console=ttyS1,115200n8 mem=28M@0x0 nmem=36M@0x1C00000 rmem=0M@0x400000 init=/linuxrc rootfstype=squashfs root=/dev/mtdblock2 rw mtdparts=sfc0_nor:256k(boot),2560k(kernel),2048k(root),-(appfs) lpj=11968512';saveenv;
配置完动态库后,运行成功
./venus_yolov5s_bin_uclibc_release ./yolov5s_t4ik.bin ./f_1054_sys.jpg
开发板
开发板拿到后即有完整的固件,默认运行carrier-server程序参考资料:《T41 TOMCAT开发板使用指南》
用VLC可直接播放rtsp流:rtsp://10.3.33.235:8554/main
GPIO设置
echo 49 > /sys/class/gpio/exportcd /sys/class/gpio/gpio49
#设置低电平
echo 0 > value
#设置高电平
echo 1 > value
一些命令
查看内存情况命令:cat /proc/meminfo系统进程运行情况:top
查看系统分区表:cat /proc/mtd