CoM-T536产品特性:
- 采用Allwinner公司Cortex-A55四核T536处理器,最高速度为1.6GHZ;
- 支持2TOPS NPU,仅特定型号支持;
- 支持4K/25fps H.264视频编码,支持4K/15fps MJPEG编码;
- 支持1-4G Bytes LPDDR4 SDRAM;
- 支持EMMC 4G-64G大容量电子盘,可启动;或支持SPI NAND启动;
- 支持双通道LVDS,分辨率最高1920x1080@60fps;支持MIPI DSI显示, 分辨率最高1920x1020@60fps;
- 支持PCIE2.1;支持最多17路UART;支持四路CANFD;支持双路千兆以太网;
- 稳定的操作系统的支持,可预装LINUX 5.10/Ubuntu 20.04
- 邮票孔198POS设计, 尺寸为:53.5*45MM
CoM-T536功能图:

STK-T536评估板功能图:

Camera摄像头测试
STK-T536评估板支持两个CSI接口的摄像头,它们分别是CN27和CN28。其中CN27支持OV5645摄像头,该接口使用的是MCSI/C信号(2Lanes);CN28支持OV1385X摄像头该接口使用的是MCSI/A/B信号(4Lanes)。原理和接口位置见下图:

按照下图接好摄像头,注意摄像头的1脚与接口件的1脚对应:

使用csi_test_mplane进行摄像头测试
摄像头接入后,评估板上电,正常的终端信息如下:
[ 12.560404] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor0_cameravdd supply, setting it to NULL!
[ 12.571434] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor0_iovdd supply, setting it to NULL!
[ 12.582211] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor0_avdd supply, setting it to NULL!
[ 12.592790] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor0_dvdd supply, setting it to NULL!
[ 12.603477] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor1_cameravdd supply, setting it to NULL!
[ 12.614487] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor1_iovdd supply, setting it to NULL!
[ 12.625043] [drm] skip fbdev plane update because plane used by userspace
[ 12.625059] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor1_avdd supply, setting it to NULL!
[ 12.643127] sunxi:vin:[WARN]: sensor_helper_probe: cannot get sensor1_dvdd supply, setting it to NULL!
[ 12.686390] vin_isp 5900000.isp: Adding to iommu group 0
[ 12.695062] vin_isp 5800800.vind:isp@4: Adding to iommu group 0
[ 12.704469] vin_isp 5800800.vind:isp@5: Adding to iommu group 0
[ 12.725980] vin_scaler 5910000.scaler: Adding to iommu group 0
[ 12.733253] vin_scaler 5910400.scaler: Adding to iommu group 0
[ 12.740529] vin_scaler 5910800.scaler: Adding to iommu group 0
[ 12.747427] [drm] skip fbdev plane update because plane used by userspace
[ 12.747824] vin_scaler 5910c00.scaler: Adding to iommu group 0
[ 12.762801] sunxi-vin-core 5830000.vinc: Adding to iommu group 0
[ 12.770188] sunxi-vin-core 5831000.vinc: Adding to iommu group 0
[ 12.777559] sunxi-vin-core 5832000.vinc: Adding to iommu group 0
[ 12.787505] sunxi:vin:[WARN]: get csi mipi clk fail
[ 12.793041] sunxi:vin:[WARN]: get csi mipi src clk fail
[ 12.804898] PWR_ON!
[ 12.837818] sensor_init
[ 12.840758] eRet:0, 0x300a:0x0, times_out:3
[ 13.065696] eRet:0, 0x300b:0xd8, times_out:3
[ 13.270531] PWR_OFF!
[ 13.397954] ov5645 id:5645
[ 13.404621] sunxi:vin:[INFO]: vinc1 is null
[ 13.409376] sunxi:vin:[INFO]: vinc2 is null
[ 13.414129] sunxi:vin:[INFO]: vinc3 is null
[ 13.419237] sunxi:vin:[INFO]: vinc5 is null
[ 13.424019] sunxi:vin:[INFO]: vinc6 is null
[ 13.428850] sunxi:vin:[INFO]: vinc7 is null
[ 13.433584] sunxi:vin:[INFO]: vinc9 is null
[ 13.438292] sunxi:vin:[INFO]: vinc10 is null
[ 13.443101] sunxi:vin:[INFO]: vinc11 is null
[ 13.447989] sunxi:vin:[INFO]: vinc12 is null
[ 13.452816] sunxi:vin:[INFO]: vinc13 is null
[ 13.457628] sunxi:vin:[INFO]: vinc14 is null
[ 13.462483] sunxi:vin:[INFO]: vinc15 is null
如果摄像头接入不正确,会出现I2c通信错误,信息如下:
[ 11.636894] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.645459] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 11.654911] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 11.663173] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.671734] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 11.681090] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 11.689351] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.697912] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 11.707250] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 11.715397] sunxi:vin:[INFO]: [VIN_DEV_I2C]ov13855_mipi read retry 3, read addr is 0x300a
[ 11.724600] eRet:-22, 0x300a:0x0, times_out:3
[ 11.932405] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.940984] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 11.950234] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 11.958614] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.967185] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 11.976432] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 11.984846] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 11.993415] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.002658] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 12.011232] sunxi:vin:[INFO]: [VIN_DEV_I2C]ov13855_mipi read retry 3, read addr is 0x300a
[ 12.020477] eRet:-22, 0x300a:0x0, times_out:2
[ 12.231950] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.240525] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.249769] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 12.257979] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.266547] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.275790] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 12.284100] sunxi:twi-2512000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.292668] sunxi:twi-2512000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.301986] sunxi:twi-2512000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x36)
[ 12.310142] sunxi:vin:[INFO]: [VIN_DEV_I2C]ov13855_mipi read retry 3, read addr is 0x300a
[ 12.319494] eRet:-22, 0x300a:0x0, times_out:1
[ 12.544328] chip found is not an target chip.
[ 12.549304] PWR_OFF!
[ 12.579805] sunxi:vin:[ERR]: registering ov13855_mipi, No such device!
[ 12.616632] Bluetooth: HCI UART driver ver 2.3
[ 12.621683] Bluetooth: HCI UART protocol H4 registered
[ 12.648340] sunxi:twi-2513000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.656915] sunxi:twi-2513000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.666160] sunxi:twi-2513000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x3c)
[ 12.674487] sunxi:vin:[ERR]: [VIN_DEV_I2C_ERR]sensor_write error!
[ 12.681347] sunxi:vin:[ERR]: [VIN_DEV_I2C_ERR]ov5645_mipi sensor write array error, array_size 243!
[ 12.692836] sunxi:twi-2513000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.701409] sunxi:twi-2513000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.710652] sunxi:twi-2513000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x3c)
[ 12.718820] sunxi:twi-2513000.twi:[ERR]: drv-mode: Timeout when sending 9th SCL clk
[ 12.727388] sunxi:twi-2513000.twi:[ERR]: drv mode: TWI BUS error state is drv:0x1 eng:0x20
[ 12.736633] sunxi:twi-2513000.twi:[ERR]: drv-mode: xfer failed (dev addr:0x3c)
摄像头连接正确后,执行如下命令可查看到生成2个节点video0和video4表示正常。
Target# ls dev/video*
这些节点对应的接口如下:
|
节点 |
接口 |
备注 |
|
video0 |
CN28 |
OV13850摄像头 |
|
video4 |
CN27 |
OV5645摄像头 |
csi_test_mplane是全志提供验证摄像头的软件, csi_test_mplane指令介绍如下:
./csi_test_mplane 0 0 640 480 ./ 1 20 30 0
@arg1: video节点号
@arg2: rear/front(默认:0)
@arg3: out_width
@arg4: out_height
@arg5: 数据保存路径
@arg6: 数据格式(数据格式如下图所示)
@arg7: 数据保存帧数
@arg8: 帧率
@arg9: WDR模式(0:normal 1:wdr)
接下来我们以video0为例,通过video0节点获取摄像头视频数据并存放在指定目录/tmp/,对于1080P的摄像头来说,指令如下;
Target#./csi_test_mplane 0 0 1920 1080 /media/sda1 2 100
指令执行终端信息如下:
root@T536-embfly:/extra_test# ./csi_test_mplane 0 0 1920 1080 /tmp 2 100
open /dev/video0 fd = 3
[ 120.311589] PWR_ON!
[ 120.346053] sensor_init
[ 120.349077] eRet:0, 0x300a:0x0, times_out:3
[ 120.574257] eRet:0, 0x300b:0xd8, times_out:3
resolution got from sensor = 1920*1080 num_planes = 1
[ 120.811714] sensor_s_stream on = 1, 2112*1568 fps: 30 code: 3007
VIDIOC_STREAMON ok
[ 153.963718] sensor_s_stream on = 0, 2112*1568 fps: 30 code: 3007
VIDIOC_STREAMOFF ok
mode 2 test done at the 0 time!![ 153.979179] PWR_OFF!
指令执行后,如果指令执行执行正常,可以看到/tmp目录下保存二进制的图像数据 fb0_yuv1_1920_1080.bin 文件(如果是针对video4节点,那文件是fb4_yuv1_1920_1080.bin)。最后可通过RawViewer 等软件查看图像数据,注意看图时,看图软件中所设置的分辨率需注意按16字节进行对齐(向上取整),如使用 RawViewer 查看 1920x1080 图像时,需将看图尺寸设置为1920x1088,否则可能会看到花屏或抖动的图像。

点击“打开文件”按钮后,再点击“播放”按钮后进行视频播放。
使用camera_test_dual (QT)程序进行摄像头测试
camera_test_dual程序是qt图形界面程序,它最多可以预览两路摄像头,只要在运行时指定摄像头即可。
1)预览一路摄像头的指令和运行终端信息如下:
root@T536-embfly:/root# camera_test_dual /dev/video0
QStandardPaths: wrong permissions on runtime directory /dev/shm, 0755 instead of 0700
Unable to query physical screen size, defaulting to 100 dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSIC
AL_HEIGHT (in millimeters). fmt.type: 9
fmt.fmt.pix.width: 1280
fmt.fmt.pix.height: 720
fmt.fmt.pix.pixelformat: 842093913
fmt.fmt.pix.colorspace: 1920
fmt.fmt.pix.quantization: 0
fmt.fmt.pix.xfer_func: 0
fmt.fmt.pix.ycbcr_enc: 0
csi预览画面会显示在屏幕上,如图所示:

2)预览双路摄像头的指令如下:
root@T536-embfly:/root# camera_test_dual /dev/video0 /dev/video4
另外,我们的固件已经把camera_test_dual程序设置为自启动,以下是启动camera_test_dual的脚本S98_app_demo.sh:
#!/bin/sh
. /etc/qtenv_capx.sh && ./extra_test/camera_test_dual /dev/video0 /dev/video4 &
#lv_examples 0 &
其中qtenv_capx.sh脚本是电容触摸屏识别和QT运行环境配置脚本,脚本内容如下:
export QTDIR=/usr/lib
if [ -d $QTDIR ];then
export QT_ROOT=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/qt/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/fonts
export QML_IMPORT_PATH=$QTDIR/qml
export QML2_IMPORT_PATH=$QTDIR/qml
#TouchDevice=gt9xxnew_ts
for InputDevices in /sys/class/input/event*
do
DeviceName=`cat $InputDevices/device/name`
# USB ILITEK
if [[ "$DeviceName" == "ILITEK ILITEK-TP" ]];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
# I2C Goodix
elif [ "$DeviceName" == "gt9xxnew_ts" ];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
#for hid-multi-touch(wks)
elif [[ "$DeviceName" == "wch.cn USB2IIC_CTP_CONTROL" ]];then
TouchDeviceNum=${InputDevices##*event}
# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
# echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
break
fi
done
if [ ! -n "$TouchDeviceNum" ]; then
export QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
echo "Error:Input device $TouchDevice can not be found,plz use mouse & keyboard!"
else
#config for lvgl touchscreen lv_drv_conf.h
ln -sf /dev/input/event$TouchDeviceNum /dev/input/touchscreen
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event$TouchDeviceNum
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event$TouchDeviceNum,evdevmouse,evdevkeyboard
echo "add "/dev/input/event$TouchDeviceNum "to Qt Application."
fi
export QT_QPA_PLATFORM=linuxfb
# export QT_QPA_GENERIC_PLUGINS=evdevtouch
#export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QT_QPA_FB_NO_LIBINPUT=1
#export QT_QPA_PLATFORM=eglfs
#export QT_QPA_GENERIC_PLUGINS=evdevtouch
#export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90
export QWS_MOUSE_PROTO=
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`
mkdir -p /dev/shm
ulimit -c unlimited
echo "find qt5 installed done"
fi
246



被折叠的 条评论
为什么被折叠?



