一、硬件环境
硬件板卡使用幸狐的luckfox pico ultra,其参数如下:
使用幸狐的sdk(不确定是从官方的哪个sdk修改而来),幸狐SDk的emmc非fastboot使用是正常的,同时也部署和优化了yolov5s,功能达到了我的需求。但是使用幸狐SDK的emmc fastboot配置,编译有失败,主要原因是编译的文件大小限制问题,通过修改设备树中ramdisk_r和ramdisk_c大小,可以使编译通过,但是运行报错。幸狐提供了编译后的emmc fastboot烧录文件,可以正常运行,说明这个板子的硬件状态是可以实现fastboot的。
1、官方SDK对幸狐的板卡emmc非fastboot使用
系统正常,应用程序功能正常。
2、官方SDK对幸狐的板卡emmc fastboot使用
因此转而使用官方的SDK版本为rv1106_rv1103_240813.tgz。
1)./build.sh lunch选择如下:
2)编译正常
3)下载到板卡运行如下:
DDR 306b9977f5 wesley.yao 23/12/21-09:28:37,fwver: v1.15
S5P1
4x
f967
rgef1
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=14 CS=1 Size=256MB
924MHz
DDR bin out
U-Boot SPL board init
U-Boot SPL 2017.09-gf39aacfaa9-240430 #f (May 07 2025 - 14:19:08)
Trying to boot from MMC1
MMC error: The cmd index is 7, ret is -110
mmc_init: -22, time 10
spl: mmc init failed with error: -22
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
# Reset the board to bootrom #
4)通过uboot打印调试
在uboot的配置文件rv1106-emmc-tb-nofastae_defconfig中(在boardconfig.mk文件中确认使用的是上述deconfig),注释掉CONFIG_MMC_USE_PRE_CONFIG,再次编译,烧写后打印如下:
DDR 306b9977f5 wesley.yao 23/12/21-09:28:37,fwver: v1.15
S5P1
4x
f967
rgef1
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=14 CS=1 Size=256MB
924MHz
DDR bin out
U-Boot SPL board init
U-Boot SPL 2017.09-gf39aacfaa9-240430-dirty #f (May 08 2025 - 14:11:49)
Trying to boot from MMC1
Best phase range 0-270 (25 len)
Successfully tuned phase to 135, used 1ms
ENVF: Primary 0x00000000 - 0x00008000
ENVF: Primary 0x00000000 - 0x00008000
No load cfg image.
## Verified-boot: 0
## Checking mcu1 0xff6fe000 ... sha256(7c6c18c711...) + OK
## Checking fdt 0x007e0000 ... sha256-skipped + OK
ENVF: Primary 0x00000000 - 0x00008000
## Checking kernel 0x00208000 (gzip @0x02d00000) ... sha256-skipped + + OK
## Preload the image OK.
Jumping to Kernel(0x00208000)
Total: 389.931/398.579 ms
之后无任何打印,且串口不能输入,板子也无法进入boot状态,无法烧写程序。
5)板卡无法进入boot状态
通过短接emmc的数据线到地,再开机则直接进入boot,然后不要再短接,usb烧录可以正常。
三、自行修改尝试:
1、修改kernel中设备树文件rv1106-tb-nofastae-emmc.dtsi
修改文中
&emmc {
memory-region-ecsd = <&mmc_ecsd>;
post-power-on-delay-ms = <0>;
};
为
&emmc {
memory-region-ecsd = <&mmc_ecsd>;
post-power-on-delay-ms = <100>;
};
2、修改kernel中设备树文件rv1106g-evb1-v11.dts
修改文中
&sfc {
status = "okay";
为
&sfc {
status = "disabled";
运行后无改善,代码还原。
四、参考幸狐最新的sdk,在官方SDK尝试
官方SDK版本:rv1106_rv1103_240813。
调试好多天未果,后来就优先调试应用功能,包括模型训练、转模部署、性能优化完成后又再来调试fastboot了,无意中发现幸狐有更新sdk,其中也是关于emmc的相关,所以才来尝试性修改官方sdk。
1)在sysdrv\source\uboot\u-boot\common\spl\spl_mmc.c中
增加红色字段。
int spl_mmc_load_image(struct spl_image_info *spl_image,
struct spl_boot_device *bootdev)
{
struct mmc *mmc = NULL;
u32 boot_mode;
int err = 0;
__maybe_unused int part;
err = spl_mmc_find_device(&mmc, bootdev->boot_device);
if (err)
return err;
err = mmc_init(mmc);
if (err)
err = mmc_init(mmc);
2)在sysdrv\source\uboot\u-boot\drivers\mmc\mmc.c中
修改
int mmc_start_init(struct mmc *mmc)
{
/*
* We use the MMC config set by the bootrom.
* So it is no need to reset the eMMC device.
*/
mmc_set_bus_width(mmc, 8);
为mmc_set_bus_width(mmc, 1);
注意不要修改错了,有两个mmc_start_init函数!!!
注意不要修改错了,有两个mmc_start_init函数!!!
注意不要修改错了,有两个mmc_start_init函数!!!
系统运行正常打印如下:
DDR 306b9977f5 wesley.yao 23/12/21-09:28:37,fwver: v1.15
S5P1
4x
f967
F
DDRConf2
DDR3, BW=16 Col=10 Bk=8 CS0 Row=14 CS=1 Size=256MB
924MHz
DDR bin out
U-Boot SPL board init
U-Boot SPL 2017.09-gf39aacfaa9-240430-dirty #f (May 14 2025 - 10:17:50)
Trying to boot from MMC1
MMC error: The cmd index is 7, ret is -110
mmc_init: -22, time 11
MMC error: The cmd index is 7, ret is -110
Best phase range 270-237 (30 len)
Successfully tuned phase to 79, used 1ms
ENVF: Primary 0x00000000 - 0x00008000
ENVF: Primary 0x00000000 - 0x00008000
No load cfg image.
## Verified-boot: 0
## Checking mcu1 0xff6fe000 ... sha256(7c6c18c711...) + OK
## Checking fdt 0x007e0000 ... sha256-skipped + OK
ENVF: Primary 0x00000000 - 0x00008000
## Checking kernel 0x00208000 (gzip @0x02d00000) ... sha256-skipped + + OK
## Preload the image OK.
Jumping to Kernel(0x00208000)
Total: 84.791/92.418 ms
# #CodecName:H264
#Resolution: 1920x1080
#CameraIdx: 0
#Frame Count to save: -1
ISP IQ file path: /etc/iqfiles
rkaiq log level ff1
XCORE:K:rk_aiq_init_lib, ISP HW ver: 32
XCORE:K:
************************** VERSION INFOS **************************
version release date: 2024-2-18
AIQ: AIQ v5.0x5.0
git logs:
25bd14e RV1106: smart_door: release rga/isp/mpp for V1.3.0
99d080a RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.2
6458e2a RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.1
e8dab39 RV1106: CVR: release rga/isp/mpp for V1.1.0
a021b32 RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.0
************************ VERSION INFOS END ************************
ID: 0, sensor_name is m00_b_sc3336 4-0030-1, iqfiles is /etc/iqfiles
XCORE:E:access /etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.json && /etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.bin failed!
XCORE:E:_rkAiqManager init error!
CAMHW:E:can't find sensor
XCORE:E:camhw deinit error -7
IPCSERVER:K:cid[-1] Deinit success
MessageParser process loop exit!
XCORE:K:cid[0] rk_aiq_uapi_sysctl_deinit_locked success.
SIMPLE_COMM_ISP_Run : CamId is over 3 or not init
[INFO rtsp_demo.c:280:rtsp_new_demo] rtsp server demo starting on port 554
[DEBUG rtsp_demo.c:480:rtsp_new_session] add session path: /live/0
rtsp streamq_alloc size is 1753484
rockit log path (null), log_size = 0, can use export rt_log_path=, export rt_log_size= change
log_file = (nil)
RTVersion 00:00:00-367 {dump :064} ---------------------------------------------------------
RTVersion 00:00:00-367 {dump :065} rockit version: git-4720dc10a Tue Apr 30 15:47:55 2024 +0800
RTVersion 00:00:00-367 {dump :066} rockit building: built- 2024-04-30 15:53:43
RTVersion 00:00:00-367 {dump :067} ---------------------------------------------------------
rockit default level 4, can use export rt_log_level=x, x=0,1,2,3,4,5,6 change
(null) 00:00:00-368 {read_log_level :098} text is all=4
(null) 00:00:00-368 {read_log_level :100} module is all, log_level is 4
(null) 00:00:00-370 {monitor_log_level :149} #Start monitor_log_level thread, arg:(nil)
RKSockServer 00:00:00-370 {initNetServer :088} bind failed, reason: Cannot assign requested address
vi_dev_init
RKViDev 00:00:00-377 {vi_set_dev_attr :612} VI_DEV_ATTR_S all parameter reserved
RTIsp3x 00:00:00-381 {ispInitDevice :591} sensor name = m00_b_sc3336 4-0030-1
RTDeviceSensorV4 00:00:00-460 {ispOpenDevice :502} v4l2_open(/dev/video0), handler=17
RTDeviceSensorV4 00:00:00-460 {ispOpenDevice :502} v4l2_open(/dev/v4l-subdev2), handler=19
RTDeviceSensorV4 00:00:00-461 {close :112} do RTDeviceSensorV4L2 close
RTDeviceSensorV4 00:00:00-461 {close :112} do RTDeviceSensorV4L2 close
RKViChn 00:00:00-501 {prepareRuntime :354} ---------------------------------------------------------
RKViChn 00:00:00-501 {prepareRuntime :356} vi version: 1.22, name:vvi
RKViChn 00:00:00-501 {prepareRuntime :357} rockit-ko version: vmpi:28ee389dbc33
RKViChn 00:00:00-501 {prepareRuntime :358} rockit-ko building: -2024-05-24-16:21:01
RKViChn 00:00:00-501 {prepareRuntime :359} ---------------------------------------------------------
cmpi 00:00:00-502 {prepareRuntime :378} mb pool create success, MBCnt= 2
RTIsp3x 00:00:00-505 {ispInitDevice :591} sensor name = m00_b_sc3336 4-0030-1
cmpi 00:00:00-507 {createRuntime :634} >>>>>>>>> Sensor link info dump: <<<<<<<<<
cmpi 00:00:00-507 {createRuntime :636} vicap media name : /dev/media0
cmpi 00:00:00-508 {createRuntime :637} vicap model name : rkcif-mipi-lvds
cmpi 00:00:00-508 {createRuntime :638} camera id : 0
cmpi 00:00:00-508 {createRuntime :639} sensor name : m00_b_sc3336 4-0030-1
cmpi 00:00:00-508 {createRuntime :641} stream_cif_mipi_id0 video name: /dev/video0
cmpi 00:00:00-508 {createRuntime :642} stream_cif_mipi_id1 video name: /dev/video1
cmpi 00:00:00-508 {createRuntime :643} stream_cif_mipi_id2 video name: /dev/video2
cmpi 00:00:00-508 {createRuntime :644} stream_cif_mipi_id3 video name: /dev/video3
cmpi 00:00:00-508 {createRuntime :646} sensor raw width : 2304
cmpi 00:00:00-508 {createRuntime :647} sensor raw height : 1296
cmpi 00:00:00-508 {createRuntime :648} ---------------------------------------------------------
cmpi 00:00:00-508 {createRuntime :654} isp media name : /dev/media1
cmpi 00:00:00-509 {createRuntime :655} isp model name : rkisp0
cmpi 00:00:00-509 {createRuntime :656} isp driver name : rkisp-vir0
cmpi 00:00:00-509 {createRuntime :657} isp dev name : /dev/v4l-subdev3
cmpi 00:00:00-509 {createRuntime :659} isp rawrd0_m_path : /dev/video17
cmpi 00:00:00-509 {createRuntime :660} isp rawrd1_l_path :
cmpi 00:00:00-509 {createRuntime :661} isp rawrd2_s_path : /dev/video18
cmpi 00:00:00-509 {createRuntime :664} mainpath video name : /dev/video11
cmpi 00:00:00-509 {createRuntime :665} selfpath video name : /dev/video12
cmpi 00:00:00-509 {createRuntime :666} bypasspath video name : /dev/video13
cmpi 00:00:00-509 {createRuntime :667} sensor link type : 2
cmpi 00:00:00-509 {createRuntime :668} sensor is united : 0
cmpi 00:00:00-510 {createRuntime :672} ---------------------------------------------------------
cmpi 00:00:00-510 {createRuntime :711} [non-WRAP MODE]: buff size = 3133440
RTIsp3x 00:00:00-524 {ispInitDevice :591} sensor name = m00_b_sc3336 4-0030-1
RTDeviceV4L2 00:00:00-525 {open :137} cameraIndex:0, entityName:rkisp_mainpath
RTDeviceV4L2 00:00:00-525 {open :143} open video name(/dev/video11)
RKViChn 00:00:00-525 {setFrameRate :1469} [vi] dev(0) ch(0) illegal param s32SrcFrameRate(0) s32DstFrameRate(0)
RTDeviceV4L2 00:00:00-525 {ispCameraInfo :567} current device:/dev/video11 isn't compatible(cap:0x84201000) device,memoryType:4, retry:0
RTDeviceV4L2 00:00:00-525 {ispInitFormat :767} ioctl VIDIOC_S_FMT OK
cmpi 00:00:00-526 {start :1093} =========== vi Start startRuntime ===========
RTDeviceV4L2 00:00:00-526 {ispStreamOn :458} do ispStreamOn start
RTDeviceV4L2 00:00:00-549 {ispStreamOn :511} do ispStreamOn done
========test_venc_init========
MpiAdapterEncode 00:00:00-550 {ma_encode_create :1743} ringbuf buf_size 3112960
MpiAdapterEncode 00:00:00-558 {ma_encode_create :1782} mem_fd = 24
====RK_MPI_SYS_Bind vi0 to venc0====
========GetMediaBuffer0========
MpiAdapterEncode 00:00:00-600 {ma_encode_get_pack:2079} map ptr: 0xa5c4f000, fd 25
[DEBUG utils.c:134:rtsp_codec_data_parse_from_user_h264] sps 30
[DEBUG utils.c:142:rtsp_codec_data_parse_from_user_h264] pps 4
但是,app运行有点问题,貌似是相机的配置文件没找到,如上打印:
ID: 0, sensor_name is m00_b_sc3336 4-0030-1, iqfiles is /etc/iqfiles
XCORE:E:access /etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.json && /etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.bin failed!
XCORE:E:_rkAiqManager init error!
CAMHW:E:can't find sensor
XCORE:E:camhw deinit error -7。
五、配置app
在文件project/cfg/BoardConfig_IPC/BoardConfig-EMMC-NONE-RV1106_EVB1_V11_V13-IPC_FASTBOOT.mk中
修改:
# app config
#export RK_APP_TYPE=RK_WIFI_APP
export RK_APP_TYPE=RKIPC_RV1106_BATTERY_IPC
六、解决相机的配置文件问题
在文件project/cfg/BoardConfig_IPC/BoardConfig-EMMC-NONE-RV1106_EVB1_V11_V13-IPC_FASTBOOT.mk中
把
export RK_CAMERA_SENSOR_IQFILES="sc4336_OT01_40IRC_F16.bin sc3336_CMK-OT2119-PC1_30IRC-F16.bin sc530ai_CMK-OT2115-PC1_30IRC-F16.bin"
# Config sensor lens CAC calibrattion bin file
export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc4336_OT01_40IRC_F16 CAC_sc530ai_CMK-OT2115-PC1_30IRC-F16"
改为
export RK_CAMERA_SENSOR_IQFILES="sc3336_CMK-OT2119-PC1_30IRC-F16.bin"
# Config sensor lens CAC calibrattion bin file
export RK_CAMERA_SENSOR_CAC_BIN="CAC_sc3336_CMK-OT2119-PC1_30IRC-F16"
编译后验证:
OK!!!启动打印可以看到,相机文件加载是正常的!
ID: 0, sensor_name is m00_b_sc3336 4-0030-1, iqfiles is /etc/iqfiles
XCORE:K:AIQ run with iq bin, iq bin version: IQBIN Version: v1.0.0
IPCSERVER:K:cid[0] Process path:/tmp/UNIX.domain0, sockfd:13
XCORE:K:cid[0] rk_aiq_uapi_sysctl_init success. iq:/etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.json
XCORE:K:cid[0] rk_aiq_uapi_sysctl_prepare success. mode:0
rk_aiq_uapi2_sysctl_init/prepare succeed
CAMHW:K:cid[0] start success. isGroup:0, isOnline:1, isMultiIsp:0, init_ens:0x1bfc0ffc4739
XCORE:K:cid[0] rk_aiq_uapi_sysctl_start success.
七、配置自己的程序运行
1)修改设备树志气支持更大的程序空间
在mk文件中可得:
# Kernel dts
export RK_KERNEL_DTS=rv1106g-evb1-v11-fastboot-emmc.dts
所以在kernel目录下sysdrv/source/kernel/arch/arm/boot/dts修改文件rv1106g-evb1-v11-fastboot-emmc.dts如下:
把
&ramdisk_r {
reg = <0x800000 (25 * 0x00100000)>;
};
&ramdisk_c {
reg = <0x2100000 (12 * 0x00100000)>;
};
修改为
&ramdisk_r {
reg = <0x800000 (40 * 0x00100000)>;
};
&ramdisk_c {
reg = <0x3000000 (20 * 0x00100000)>;
};
在mk中修改:
把
export RK_PARTITION_CMD_IN_ENV="32K(env),128K@32K(idblock),192K(uboot),15M(boot),2G(userdata),-(reserve)"
修改为
export RK_PARTITION_CMD_IN_ENV="32K(env),128K@32K(idblock),192K(uboot),40M(boot),2G(userdata)"
其他的不改,编译后系统看是否可以运行正常,一次来验证这个ramdisk 的大小改动是否正常!!!
经验证,改动是正常的,可以去增加自己的文件到系统中!!!!!!!
经验证,改动是正常的,可以去增加自己的文件到系统中!!!!!!!
经验证,改动是正常的,可以去增加自己的文件到系统中!!!!!!!
2)修改目录project/cfg/BoardConfig_IPC下的文件rv1106-nofastae-simple-post.sh。
最终的修改如下:
#!/bin/bash
echo "fzk : enter!!!"
PARTITION_MOUNT_SCRIPT=_S20linkmount
cd $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/bin/
shopt -s extglob
rm !(simple_vi_bind_venc_rtsp|rk_mpi_uvc|usb_config.sh)
shopt -u extglob
cd -
mv $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/librkaiq.so $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib
mv $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/librockit.so $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib
mv $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/lib*mpp* $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib
mv $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/librga.so $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/*.so*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/*.md
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/flash*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/services
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/protocols
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/lib/libstdc++.so.6.0.25-gdb.py
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/lib/libitm.so*
mv $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/S20linkmount $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/${PARTITION_MOUNT_SCRIPT}
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/S21appinit*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/rkipc
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/iqfiles/*.json
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/iqfiles/*.bin
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/hpmcu_wrap.bin
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/*.data
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_cli
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_cli_rtk
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_supplicant
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_supplicant_nl80211_rtk
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/wpa_supplicant_rtk
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/wpa_supplicant.conf
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/libwpa_client.so
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/lib/libdrm.so*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/bin/modetest
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib/libwpa_client.so
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib/libintl.so*
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/iperf
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/hostapd
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/bin/dnsmasq
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/insmod_ko.sh
# delete nouse ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/gcm.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/ccm.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/sha256_generic.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/libaes.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/libsha256.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/gf128mul.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/cmac.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/rve.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/libarc4.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/aes_generic.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/ctr.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/mac80211.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/atmb_iot_supplicant_demo
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/rk_vendor_storage.ko
rm $RK_PROJECT_PACKAGE_ROOTFS_DIR/oem/usr/ko/mtd_vendor_storage.ko
cp $RK_PROJECT_PATH_MEDIA/isp_iqfiles/$RK_CAMERA_SENSOR_IQFILES $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/iqfiles/
####fzk--------------------------
rm -R $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk
sleep 1
mkdir -p $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk
mkdir -p $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk/model
cp /home/f/Desktop/work/AI/AI-bomb/code/luckfox_pico_rkmpi_example/lib/*.so $RK_PROJECT_PACKAGE_ROOTFS_DIR/usr/lib/
cp /home/f/Desktop/work/AI/AI-bomb/code/luckfox_pico_rkmpi_example/build/luckfox_pico_rtsp_yolov5 $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk/
cp /home/f/Desktop/work/AI/AI-bomb/code/model/yolov5.rknn $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk/model/
cp /home/f/Desktop/work/AI/AI-bomb/code/model/coco_80_labels_list.txt $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk/model/
cp /home/f/Desktop/work/AI/AI-bomb/code/model/anchors_yolov5.txt $RK_PROJECT_PACKAGE_ROOTFS_DIR/0_fzk/model/
###----------------------------------
cat > $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/rcS <<EOF
#!/bin/sh
export PATH=\$PATH:/oem/usr/ko/
echo "start service" > /dev/kmsg
###/oem/usr/bin/simple_vi_bind_venc_rtsp &
###------------------
insmod /oem/usr/ko/rknpu.ko
###chmod -R 777 /0_fzk
cd /0_fzk/
./luckfox_pico_rtsp_yolov5&
###sh /etc/init.d/${PARTITION_MOUNT_SCRIPT} linkdev &
function run_delay_task(){
cd /oem/usr/ko
test ! -f jbd2.ko || insmod jbd2.ko
test ! -f crc16.ko || insmod crc16.ko
test ! -f mbcache.ko|| insmod mbcache.ko
test ! -f ext4.ko || insmod ext4.ko
test ! -f dw_mmc.ko || insmod dw_mmc.ko
test ! -f dw_mmc-pltfm.ko || insmod dw_mmc-pltfm.ko
test ! -f dw_mmc-rockchip.ko || insmod dw_mmc-rockchip.ko
test ! -f mmc_block.ko ||insmod mmc_block.ko
test ! -f mtd_blkdevs.ko || insmod mtd_blkdevs.ko
test ! -f mtdblock.ko || insmod mtdblock.ko
test ! -f spi-nor.ko || insmod spi-nor.ko
test ! -f dw_mmc.ko || insmod dw_mmc.ko
test ! -f dw_mmc-pltfm.ko || insmod dw_mmc-pltfm.ko
test ! -f dw_mmc-rockchip.ko || insmod dw_mmc-rockchip.ko
sh /etc/init.d/${PARTITION_MOUNT_SCRIPT} start &
test ! -f snd-soc-simple-card-utils.ko || insmod snd-soc-simple-card-utils.ko
test ! -f snd-soc-simple-card.ko || insmod snd-soc-simple-card.ko
test ! -f snd-soc-rockchip-i2s-tdm.ko || insmod snd-soc-rockchip-i2s-tdm.ko
test ! -f snd-soc-rv1106.ko || insmod snd-soc-rv1106.ko
test ! -f mmc_block.ko || insmod mmc_block.ko
test ! -f nls_cp936.ko || insmod nls_cp936.ko
test ! -f fat.ko || insmod fat.ko
test ! -f vfat.ko || insmod vfat.ko
test ! -f /etc/init.d/S80idb_bootconfig || /etc/init.d/S80idb_bootconfig start
test ! -f /oem/usr/ko/insmod_wifi.sh || /oem/usr/ko/insmod_wifi.sh ${RK_ENABLE_FASTBOOT} ${RK_ENABLE_WIFI_CHIP}
# Just for test
(sleep 5 && test ! -f /data/do-test.sh || sh /data/do-test.sh) &
}
###(sleep 3 && run_delay_task) &
EOF
chmod +x $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/rcS
cat > $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/rcK <<EOF
#!/bin/sh
echo "Start to killall task!!!"
while true
do
if ps |grep -v grep |grep rkipc;then
echo "killall -9 rkipc"
killall -9 rkipc
elif ps |grep -v grep |grep fastboot_client;then
echo "killall -9 fastboot_client"
killall -9 fastboot_client
elif ps |grep -v grep |grep fastboot_server;then
echo "killall -9 fastboot_server"
killall -9 fastboot_server
else
break
fi
sleep .5
done
killall rkwifi_server
umount /data
echo "rcK done"
EOF
chmod +x $RK_PROJECT_PACKAGE_ROOTFS_DIR/etc/init.d/rcK
八、fastboot时间
1、启动日志
DDR 306b9977f5 wesley.yao 23/12/21-09:28:37,fwver: v1.15[2025-05-15 06:24:58.732]
S5P1[2025-05-15 06:24:58.732]
4x[2025-05-15 06:24:58.734]
f967[2025-05-15 06:24:58.734]
F[2025-05-15 06:24:58.734]
DDRConf2[2025-05-15 06:24:58.734]
DDR3, BW=16 Col=10 Bk=8 CS0 Row=14 CS=1 Size=256MB[2025-05-15 06:24:58.736]
924MHz[2025-05-15 06:24:58.736]
DDR bin out[2025-05-15 06:24:58.736]
[2025-05-15 06:24:58.736]
U-Boot SPL board init[2025-05-15 06:24:58.742]
U-Boot SPL 2017.09-gf39aacfaa9-240430-dirty #f (May 15 2025 - 18:22:43)[2025-05-15 06:24:58.742]
Trying to boot from MMC1[2025-05-15 06:24:58.747]
MMC error: The cmd index is 7, ret is -110[2025-05-15 06:24:58.754]
mmc_init: -22, time 11[2025-05-15 06:24:58.757]
MMC error: The cmd index is 7, ret is -110[2025-05-15 06:24:58.765]
Best phase range 270-248 (31 len)[2025-05-15 06:24:58.768]
Successfully tuned phase to 79, used 1ms[2025-05-15 06:24:58.772]
ENVF: Primary 0x00000000 - 0x00008000[2025-05-15 06:24:58.772]
ENVF: Primary 0x00000000 - 0x00008000[2025-05-15 06:24:58.772]
No load cfg image.[2025-05-15 06:24:58.772]
## Verified-boot: 0[2025-05-15 06:24:58.772]
[2025-05-15 06:24:58.772]
## Checking mcu1 0xff6fe000 ... sha256(7c6c18c711...) + OK[2025-05-15 06:24:58.781]
[2025-05-15 06:24:58.781]
## Checking fdt 0x007e0000 ... sha256-skipped + OK[2025-05-15 06:24:58.781]
ENVF: Primary 0x00000000 - 0x00008000[2025-05-15 06:24:58.781]
## Checking kernel 0x00208000 (gzip @0x04400000) ... sha256-skipped + + OK[2025-05-15 06:24:58.809]
## Preload the image OK.[2025-05-15 06:24:58.809]
Jumping to Kernel(0x00208000)[2025-05-15 06:24:58.814]
Total: 84.908/92.720 ms[2025-05-15 06:24:58.825]
[2025-05-15 06:24:58.825]
# --------------------enter main![2025-05-15 06:24:59.291]
model input: fmt=NHWC, h=320, w=320, chn=3[2025-05-15 06:24:59.332]
--------------------init model![2025-05-15 06:24:59.332]
--------------------Create Pool success ![2025-05-15 06:24:59.344]
--------------------frame buffer init ![2025-05-15 06:24:59.344]
rkaiq log level ff1[2025-05-15 06:24:59.344]
XCORE:K:rk_aiq_init_lib, ISP HW ver: 32[2025-05-15 06:24:59.365]
XCORE:K:[2025-05-15 06:24:59.374]
************************** VERSION INFOS **************************[2025-05-15 06:24:59.387]
version release date: 2024-2-18[2025-05-15 06:24:59.387]
AIQ: AIQ v5.0x5.0[2025-05-15 06:24:59.387]
[2025-05-15 06:24:59.387]
git logs:[2025-05-15 06:24:59.387]
25bd14e RV1106: smart_door: release rga/isp/mpp for V1.3.0[2025-05-15 06:24:59.406]
99d080a RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.2[2025-05-15 06:24:59.417]
6458e2a RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.1[2025-05-15 06:24:59.417]
e8dab39 RV1106: CVR: release rga/isp/mpp for V1.1.0[2025-05-15 06:24:59.422]
a021b32 RV1106/RV1103: Battery/Doorbell: release kmpp/rockit-ko for V1.3.0[2025-05-15 06:24:59.436]
[2025-05-15 06:24:59.436]
************************ VERSION INFOS END ************************[2025-05-15 06:24:59.448]
[2025-05-15 06:24:59.448]
ID: 0, sensor_name is m00_b_sc3336 4-0030-1, iqfiles is /etc/iqfiles[2025-05-15 06:24:59.461]
XCORE:K:rk_aiq_uapi_sysctl_preInit_devBufCnt: dev_ent:rkraw_rx, buf_cnt:2[2025-05-15 06:24:59.468]
XCORE:K:AIQ run with iq bin, iq bin version: IQBIN Version: v1.0.0[2025-05-15 06:24:59.477]
IPCSERVER:K:cid[0] Process path:/tmp/UNIX.domain0, sockfd:22[2025-05-15 06:24:59.486]
XCORE:K:cid[0] rk_aiq_uapi_sysctl_init success. iq:/etc/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.json[2025-05-15 06:24:59.497]
--------------------after isp init![2025-05-15 06:24:59.505]
XCORE:K:cid[0] rk_aiq_uapi_sysctl_prepare success. mode:0 [2025-05-15 06:24:59.520]
rk_aiq_uapi2_sysctl_init/prepare succeed[2025-05-15 06:24:59.531]
CAMHW:K:cid[0] start success. isGroup:0, isOnline:1, isMultiIsp:0, init_ens:0x1bfc0ffc4739[2025-05-15 06:24:59.531]
XCORE:K:cid[0] rk_aiq_uapi_sysctl_start success.[2025-05-15 06:24:59.540]
rk_aiq_uapi2_sysctl_start succeed[2025-05-15 06:24:59.540]
--------------------after isp run![2025-05-15 06:24:59.551]
[32m[1mrockit log path (null), log_size = 0, can use export rt_log_path=, export rt_log_size= change[0m[2025-05-15 06:24:59.559]
log_file = (nil) [2025-05-15 06:24:59.571]
RTVersion 00:00:00-566 {dump :064} ---------------------------------------------------------[2025-05-15 06:24:59.581]
[2025-05-15 06:24:59.581]
RTVersion 00:00:00-566 {dump :065} rockit version: git-4720dc10a Tue Apr 30 15:47:55 2024 +0800[2025-05-15 06:24:59.597]
[2025-05-15 06:24:59.597]
RTVersion 00:00:00-566 {dump :066} rockit building: built- 2024-04-30 15:53:43[2025-05-15 06:24:59.613]
[2025-05-15 06:24:59.613]
RTVersion 00:00:00-566 {dump :067} ---------------------------------------------------------[2025-05-15 06:24:59.635]
[2025-05-15 06:24:59.635]
[32m[1mrockit default level 4, can use export rt_log_level=x, x=0,1,2,3,4,5,6 change[0m[2025-05-15 06:24:59.646]
(null) 00:00:00-567 {read_log_level :098} text is all=4[2025-05-15 06:24:59.656]
[2025-05-15 06:24:59.656]
(null) 00:00:00-567 {read_log_level :100} module is all, log_level is 4[2025-05-15 06:24:59.672]
[2025-05-15 06:24:59.672]
RKSockServer 00:00:00-568 {initNetServer :088} [33m[1mbind failed, reason: Cannot assign requested address[0m[2025-05-15 06:24:59.687]
[2025-05-15 06:24:59.687]
(null) 00:00:00-570 {monitor_log_level :149} #Start monitor_log_level thread, arg:(nil)[2025-05-15 06:24:59.698]
[2025-05-15 06:24:59.698]
--------------------after rkmpi init ![2025-05-15 06:24:59.698]
vi_dev_init[2025-05-15 06:24:59.716]
RKViDev 00:00:00-573 {vi_set_dev_attr :612} [33m[1mVI_DEV_ATTR_S all parameter reserved[0m[2025-05-15 06:24:59.732]
[2025-05-15 06:24:59.732]
RTIsp3x 00:00:00-574 {ispInitDevice :591} [32m[1msensor name = m00_b_sc3336 4-0030-1[0m[2025-05-15 06:24:59.749]
[2025-05-15 06:24:59.749]
RTDeviceSensorV4 00:00:00-576 {ispOpenDevice :502} [32m[1mv4l2_open(/dev/video0), handler=53[0m[2025-05-15 06:24:59.749]
[2025-05-15 06:24:59.749]
RTDeviceSensorV4 00:00:00-576 {ispOpenDevice :502} [32m[1mv4l2_open(/dev/v4l-subdev2), handler=55[0m[2025-05-15 06:24:59.766]
[2025-05-15 06:24:59.766]
RTDeviceSensorV4 00:00:00-576 {close :112} [32m[1mdo RTDeviceSensorV4L2 close[0m[2025-05-15 06:24:59.780]
[2025-05-15 06:24:59.780]
RTDeviceSensorV4 00:00:00-576 {close :112} [32m[1mdo RTDeviceSensorV4L2 close[0m[2025-05-15 06:24:59.799]
[2025-05-15 06:24:59.799]
RKViChn 00:00:00-577 {prepareRuntime :354} ---------------------------------------------------------[2025-05-15 06:24:59.816]
[2025-05-15 06:24:59.816]
RKViChn 00:00:00-577 {prepareRuntime :356} vi version: 1.22, name:vvi[2025-05-15 06:24:59.832]
[2025-05-15 06:24:59.832]
RKViChn 00:00:00-577 {prepareRuntime :357} rockit-ko version: vmpi:28ee389dbc33[2025-05-15 06:24:59.847]
[2025-05-15 06:24:59.847]
RKViChn 00:00:00-577 {prepareRuntime :358} rockit-ko building: -2024-05-24-16:21:01[2025-05-15 06:24:59.847]
[2025-05-15 06:24:59.847]
RKViChn 00:00:00-577 {prepareRuntime :359} ---------------------------------------------------------[2025-05-15 06:24:59.873]
[2025-05-15 06:24:59.873]
cmpi 00:00:00-577 {prepareRuntime :378} [32m[1mmb pool create success, MBCnt= 2[0m[2025-05-15 06:24:59.891]
[2025-05-15 06:24:59.891]
RTIsp3x 00:00:00-578 {ispInitDevice :591} [32m[1msensor name = m00_b_sc3336 4-0030-1[0m[2025-05-15 06:24:59.922]
[2025-05-15 06:24:59.922]
cmpi 00:00:00-579 {createRuntime :634} [32m[1m>>>>>>>>> Sensor link info dump: <<<<<<<<<[0m[2025-05-15 06:24:59.922]
[2025-05-15 06:24:59.922]
cmpi 00:00:00-580 {createRuntime :636} [32m[1m vicap media name : /dev/media0[0m[2025-05-15 06:24:59.940]
[2025-05-15 06:24:59.940]
cmpi 00:00:00-580 {createRuntime :637} [32m[1m vicap model name : rkcif-mipi-lvds[0m[2025-05-15 06:24:59.940]
[2025-05-15 06:24:59.940]
cmpi 00:00:00-580 {createRuntime :638} [32m[1m camera id : 0[0m[2025-05-15 06:24:59.965]
[2025-05-15 06:24:59.965]
cmpi 00:00:00-580 {createRuntime :639} [32m[1m sensor name : m00_b_sc3336 4-0030-1[0m[2025-05-15 06:24:59.982]
[2025-05-15 06:24:59.982]
cmpi 00:00:00-580 {createRuntime :641} [32m[1m stream_cif_mipi_id0 video name: /dev/video0[0m[2025-05-15 06:25:00.001]
[2025-05-15 06:25:00.001]
cmpi 00:00:00-580 {createRuntime :642} [32m[1m stream_cif_mipi_id1 video name: /dev/video1[0m[2025-05-15 06:25:00.020]
[2025-05-15 06:25:00.020]
cmpi 00:00:00-580 {createRuntime :643} [32m[1m stream_cif_mipi_id2 video name: /dev/video2[0m[2025-05-15 06:25:00.047]
[2025-05-15 06:25:00.047]
cmpi 00:00:00-580 {createRuntime :644} [32m[1m stream_cif_mipi_id3 video name: /dev/video3[0m[2025-05-15 06:25:00.047]
[2025-05-15 06:25:00.047]
cmpi 00:00:00-580 {createRuntime :646} [32m[1m sensor raw width : 2304[0m[2025-05-15 06:25:00.069]
[2025-05-15 06:25:00.069]
cmpi 00:00:00-580 {createRuntime :647} [32m[1m sensor raw height : 1296[0m[2025-05-15 06:25:00.069]
[2025-05-15 06:25:00.069]
cmpi 00:00:00-580 {createRuntime :648} [32m[1m---------------------------------------------------------[0m[2025-05-15 06:25:00.090]
[2025-05-15 06:25:00.090]
cmpi 00:00:00-580 {createRuntime :654} [32m[1m isp media name : /dev/media1[0m[2025-05-15 06:25:00.115]
[2025-05-15 06:25:00.115]
cmpi 00:00:00-580 {createRuntime :655} [32m[1m isp model name : rkisp0[0m[2025-05-15 06:25:00.143]
[2025-05-15 06:25:00.143]
cmpi 00:00:00-580 {createRuntime :656} [32m[1m isp driver name : rkisp-vir0[0m[2025-05-15 06:25:00.143]
[2025-05-15 06:25:00.143]
cmpi 00:00:00-580 {createRuntime :657} [32m[1m isp dev name : /dev/v4l-subdev3[0m[2025-05-15 06:25:00.168]
[2025-05-15 06:25:00.168]
cmpi 00:00:00-581 {createRuntime :659} [32m[1m isp rawrd0_m_path : /dev/video17[0m[2025-05-15 06:25:00.168]
[2025-05-15 06:25:00.168]
cmpi 00:00:00-581 {createRuntime :660} [32m[1m isp rawrd1_l_path : [0m[2025-05-15 06:25:00.198]
[2025-05-15 06:25:00.198]
cmpi 00:00:00-581 {createRuntime :661} [32m[1m isp rawrd2_s_path : /dev/video18[0m[2025-05-15 06:25:00.198]
[2025-05-15 06:25:00.198]
cmpi 00:00:00-581 {createRuntime :664} [32m[1m mainpath video name : /dev/video11[0m[2025-05-15 06:25:00.224]
[2025-05-15 06:25:00.224]
cmpi 00:00:00-581 {createRuntime :665} [32m[1m selfpath video name : /dev/video12[0m[2025-05-15 06:25:00.253]
[2025-05-15 06:25:00.253]
cmpi 00:00:00-581 {createRuntime :666} [32m[1m bypasspath video name : /dev/video13[0m[2025-05-15 06:25:00.253]
[2025-05-15 06:25:00.253]
cmpi 00:00:00-581 {createRuntime :667} [32m[1m sensor link type : 2[0m[2025-05-15 06:25:00.284]
[2025-05-15 06:25:00.284]
cmpi 00:00:00-581 {createRuntime :668} [32m[1m sensor is united : 0[0m[2025-05-15 06:25:00.284]
[2025-05-15 06:25:00.284]
cmpi 00:00:00-581 {createRuntime :672} [32m[1m---------------------------------------------------------[0m[2025-05-15 06:25:00.316]
[2025-05-15 06:25:00.316]
cmpi 00:00:00-581 {createRuntime :711} [32m[1m[non-WRAP MODE]: buff size = 518400[0m[2025-05-15 06:25:00.316]
[2025-05-15 06:25:00.316]
RTIsp3x 00:00:00-583 {ispInitDevice :591} [32m[1msensor name = m00_b_sc3336 4-0030-1[0m[2025-05-15 06:25:00.352]
[2025-05-15 06:25:00.352]
RTDeviceV4L2 00:00:00-584 {open :137} [32m[1mcameraIndex:0, entityName:rkisp_mainpath[0m[2025-05-15 06:25:00.352]
[2025-05-15 06:25:00.352]
RTDeviceV4L2 00:00:00-584 {open :143} [32m[1mopen video name(/dev/video11)[0m[2025-05-15 06:25:00.352]
[2025-05-15 06:25:00.352]
RKViChn 00:00:00-584 {setFrameRate :1469} [33m[1m[vi] dev(0) ch(0) illegal param s32SrcFrameRate(0) s32DstFrameRate(0)[0m[2025-05-15 06:25:00.391]
[2025-05-15 06:25:00.391]
RTDeviceV4L2 00:00:00-584 {ispCameraInfo :567} [33m[1mcurrent device:/dev/video11 isn't compatible(cap:0x84201000) device,memoryType:4, retry:0[0m[2025-05-15 06:25:00.391]
[2025-05-15 06:25:00.391]
RTDeviceV4L2 00:00:00-585 {ispInitFormat :767} [32m[1mioctl VIDIOC_S_FMT OK[0m[2025-05-15 06:25:00.428]
[2025-05-15 06:25:00.428]
cmpi 00:00:00-585 {start :1093} [32m[1m=========== vi Start startRuntime ===========[0m[2025-05-15 06:25:00.428]
[2025-05-15 06:25:00.428]
RTDeviceV4L2 00:00:00-585 {ispStreamOn :458} [32m[1mdo ispStreamOn start[0m[2025-05-15 06:25:00.465]
[2025-05-15 06:25:00.465]
CAMHW:K:camId:0, notify_isp_stream_status on[2025-05-15 06:25:00.465]
RTDeviceV4L2 00:00:00-606 {ispStreamOn :511} [32m[1mdo ispStreamOn done[0m[2025-05-15 06:25:00.465]
[2025-05-15 06:25:00.465]
--------------------after vi&chn init ![2025-05-15 06:25:00.465]
rv1106-user-ai version : 2025/05/15 18:21:35[2025-05-15 06:25:00.500]
app init : 172.46 ms[2025-05-15 06:25:00.500]
--------------------enter while[2025-05-15 06:25:00.500]
=== 0 ===[2025-05-15 06:25:00.500]
cmpi 00:00:00-646 {mb_get_buffer_by_i:433} [32m[1mallocated buffer(this=0x3857b8, data=(nil), size=0, id=-1)[0m[2025-05-15 06:25:00.500]
[2025-05-15 06:25:00.500]
cmpi 00:00:00-647 {getFrameRuntime :1347} [32m[1m-------------------------------vviBuf->buf_size: 520192[0m[2025-05-15 06:25:00.534]
[2025-05-15 06:25:00.534]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.534]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.534]
=== 1 ===[2025-05-15 06:25:00.534]
inference_yolov5_model : 55.89 ms[2025-05-15 06:25:00.534]
--------------------enter while[2025-05-15 06:25:00.534]
cmpi 00:00:00-705 {mb_get_buffer_by_i:433} [32m[1mallocated buffer(this=0x384a48, data=(nil), size=0, id=-1)[0m[2025-05-15 06:25:00.572]
[2025-05-15 06:25:00.572]
cmpi 00:00:00-705 {getFrameRuntime :1347} [32m[1m-------------------------------vviBuf->buf_size: 520192[0m[2025-05-15 06:25:00.572]
[2025-05-15 06:25:00.572]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.572]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.606]
inference_yolov5_model : 44.64 ms[2025-05-15 06:25:00.606]
--------------------enter while[2025-05-15 06:25:00.606]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.606]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.606]
inference_yolov5_model : 48.44 ms[2025-05-15 06:25:00.606]
--------------------enter while[2025-05-15 06:25:00.636]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.636]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.636]
inference_yolov5_model : 44.88 ms[2025-05-15 06:25:00.636]
--------------------enter while[2025-05-15 06:25:00.636]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.636]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.636]
inference_yolov5_model : 50.81 ms[2025-05-15 06:25:00.668]
--------------------enter while[2025-05-15 06:25:00.668]
after RK_MPI_VI_GetChnFrame[2025-05-15 06:25:00.668]
after RK_MPI_MB_Handle2VirAddr[2025-05-15 06:25:00.668]
inference_yolov5_model : 45.17 ms[2025-05-15 06:25:00.668]
2、时间分析
时间戳 | 阶段 | 关键事件描述 | 耗时/关联事件 |
2025-05-15 06:24:58.732 | DDR初始化 | DDR配置完成(DDR3 256MB,924MHz) | 硬件初始化阶段 |
2025-05-15 06:24:58.742 | U-Boot SPL启动 | U-Boot SPL 2017.09-gf39aacfaa9启动 | |
2025-05-15 06:24:58.781 | U-Boot安全验证 | 校验MCU1、FDT、Kernel镜像(SHA256通过) | 安全启动流程 |
2025-05-15 06:24:58.814 | Kernel启动 | 跳转至内核(地址0x00208000) | U-Boot到Kernel总耗时84.9ms |
2025-05-15 06:24:58.825 | Kernel初始化 | 内核初始化完成(Total: 84.908/92.720 ms) | 内核加载 |
2025-05-15 06:24:59.291 | 用户程序入口 |
| 用户空间程序启动 |
2025-05-15 06:24:59.332 | 模型初始化 |
| |
2025-05-15 06:24:59.344 | 内存管理 |
| 关键资源就绪 |
2025-05-15 06:24:59.505 | ISP驱动初始化完成 |
| 耗时173ms |
2025-05-15 06:24:59.551 | ISP运行状态 |
| |
2025-05-15 06:24:59.698 | 多媒体框架初始化 |
| Rockit框架就绪 |
2025-05-15 06:25:00.465 | 视频输入就绪 |
| VI初始化总耗时1,019ms |
2025-05-15 06:25:00.500 | 主循环启动 |
| 应用总初始化耗时172.46ms |
2025-05-15 06:25:00.534 | 首次推理完成 |
| 模型实时性能基准 |
3、结论
1)上电启动到uboot加载kernel,用时93ms
2)kernel启动到进入用户程序入口,用时461ms
3)用户程序中加载yolov5s模型完成,用时41ms
4)用户程序中buffer初始化完成,用时12ms
5)用户程序中isp init完成,用时161ms
6)用户程序中isp run完成,用时46ms
7)用户程序中rkmpi init完成,用时147ms
8)用户程序中vi&chn init完成,用时700ms
9)用户程序中进入while循环,用时32ms
阶段划分 | 时间范围 | 计算方式 | 耗时 |
DDR初始化到U-Boot跳转内核 | 06:24:58.732 → 06:24:58.814 | 814ms - 732ms = 82ms | 82ms |
内核启动到用户程序入口 | 06:24:58.814 → 06:24:59.291 | 1,291ms - 814ms = 477ms | 477ms |
用户程序初始化到主循环 | 06:24:59.291 → 06:25:00.500 | 2,500ms - 1,291ms = 1,209ms | 1,209ms |
总计 | 82 + 477 + 1,209 | 1,768ms |
这个启动时间接近1.8s未能达到我的预期1s内,所以还要继续优化。