20230413 Configurar el programa de arranque automático en la plataforma CV1826
13/4/2023 10:51
1. Requisitos del proyecto: el hardware necesita medir la señal de voltaje/reloj de la cámara después de encenderla, pero no quiero conectarme a la cv1826 a través de adb para encender la cámara cada vez que la enciendo.
C:\Users\Sun>adb shell
/ #
/ # cd /mnt/
/mnt #
/mnt # ls -l
total 28816
drwxr-xr-x 3 raíz raíz 4096 1 de enero 00:01 datos
drwx------ 2 Root Root 4096 Ene 100:00 LOST+FOUND
-RW-RW-1 ROOT ROOT 24250004 ABR 11 2023 SAMPLE_VIO
-RW-R-- 1 ROOT ROOT 5242880 ABR 11 2023 Secure.img
DRWXRWXR- x 2 root root 4096 Abr 11 2023 tmp_secure
/mnt # chmod 777 muestra_vio
/mnt #
/mnt # ./muestra_vio 0
2. Es fácil saberlo: el script /etc/init.d/rcS ejecutará recursivamente todos los scripts que comiencen con una gran S al arrancar.
Microsoft Windows [Versión 10.0.19045.2728]
(c) Microsoft Corporation. reservados todos los derechos.
C:\Users\Sun>adb shell
/ #
/ # cd /etc/init.d/
/etc/init.d #
/etc/init.d # ls -l
total 21
-rwxr-xr-x 1 raíz raíz 1630 28 de marzo de 2023 S01panel
-rwxr-xr-x 1 raíz raíz 1012 13 de abril de 2023 S01syslogd
-rwxr-xr-x 1 raíz raíz 1004 13 de abril de 2023 S02klogd
-rwxr-xr-x 1 raíz raíz 2804 13 de abril de 2023 S02sysctl
-rwxr- xr -x 1 raíz raíz 843 13 de abril de 2023 S10auto_mount
-rwxr-xr-x 1 raíz raíz 1594 13 de abril de 2023 S10udev
-rwxr-xr-x 1 raíz raíz 1684 13 de abril de 2023 S20urandom
-rwxr-xr-x 1 raíz raíz 1619 13 de abril 2023 S30dbus
-rwxr-xr-x 1 raíz raíz 1001 13 de abril de 2023 S40bluetooth
-rwxr-xr-x 1 raíz raíz 438 13 de abril de 2023 S40network
-rwxr-xr-x 1 raíz raíz 452 28 de marzo de 2023 S98wlan
-rwxr-xr-x 1 raíz raíz 563 28 de marzo de 2023 S99adbd
-rwxr-xr-x 1 raíz raíz 578 28 de marzo de 2023 S99mcu
-rwxr-xr-x 1 raíz raíz 423 13 de abril de 2023 rcK
-rwxr-xr-x 1 raíz raíz 408 13 de abril de 2023 rcS
/etc /init.d #
/etc/init.d # cat rcS
#!/bin/sh
# Inicie todos los scripts de inicio en /etc/init.d
# ejecutándolos en orden numérico.
#
para i en /etc/init.d/S??* ;hacer
# Ignora los enlaces simbólicos colgantes (si los hay).
[ ! -f "$i" ] && continuar
case "$i" en
*.sh)
# Script de shell fuente para velocidad.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# Sin extensión sh, por lo que se bifurca el subproceso.
$ empiezo
;;
esac
hecho
/etc/init.d #
3. Agregar cámara de arranque a S99mcu:
Microsoft Windows [Versión 10.0.19045.2728]
(c) Microsoft Corporation. reservados todos los derechos.
C:\Users\Sun>adb shell
/ #
/ #
/ # cd /etc/init.d/
/etc/init.d #
/etc/init.d # ls -l
total 21
-rwxr-xr-x 1 raíz raíz 1630 28 de marzo de 2023 S01panel
-rwxr-xr-x 1 raíz raíz 1012 13 de abril de 2023 S01syslogd
-rwxr-xr-x 1 raíz raíz 1004 13 de abril de 2023 S02klogd -rwxr-xr-x 1 raíz raíz 2804 13 de abril de 2023
S02sysctl
-rwxr -xr-x 1 raíz raíz 843 13 de abril de 2023 S10auto_mount
-rwxr-xr-x 1 raíz raíz 1594 13 de abril de 2023 S10udev
-rwxr-xr-x 1 raíz raíz 1684 13 de abril de 2023 S20urandom
-rwxr-xr-x 1 raíz raíz 1619 13 de abril de 2023 S30dbus
-rwxr-xr-x 1 raíz raíz 1001 13 de abril de 2023 S40bluetooth
-rwxr-xr-x 1 raíz raíz 438 13 de abril de 2023 S40network
-rwxr-xr-x 1 raíz raíz 452 28 de marzo de 2023 S98wlan
-rwxr-xr-x 1 raíz raíz 563 28 de marzo de 2023 S99adbd
-rwxr-xr-x 1 raíz raíz 606 1 de enero 00:04 S99mcu
-rwxr-xr-x 1 raíz raíz 423 13 de abril de 2023 rcK
-rwxr-xr-x 1 raíz raíz 408 13 de abril de 2023 rcS
/etc/init.d #
/etc/init.d # gato S99mcu
#!/bin/sh
case "$1" en
inicio)
printf "Iniciando MCU: "
/usr/bin/cvi_mv_fw;
devmem 0x03000248 32 0x1;
devmem 0x05025020 32 0xC01E02D;
devmem 0x05025018 32 0x8107ffff;
## secuencia de escritura de suspensión pmic
## (0x26, 0x1D); -> 0x05026F04[31:16]
## (0x80, 0x14); -> 0x05026F04[15:0]
## (0x90, 0x10); -> 0x05026F08[31:16]
## (0x91, 0x00); -> 0x05026F08[15:0]
devmem 0x05026F04 32 0x261D8014;
devmem 0x05026F08 32 0x90109100;
devmem 0x05026020 32 0x5;
;;
detener)
;;
*)
echo "Uso: $0 {iniciar|detener}"
esac
dormir 10
/mnt/sample_vio 0
salir $?/etc/init.d # reiniciar
4. Confirme que sample_vio se haya iniciado automáticamente:
[Medición real:] Después de 30 segundos, aproximadamente 60 segundos/1 minuto, ¡el AVDD/DVDD de la cámara tiene voltaje!
Microsoft Windows [Versión 10.0.19045.2728]
(c) Microsoft Corporation. reservados todos los derechos.
C:\Users\Sun>adb shell
/ # ps -e
COMANDO DE USUARIO PID
1 root {linuxrc} init
2 root [kthreadd]
3 root [rcu_gp]
4 root [rcu_par_gp]
5 root [kworker/0:0-eve]
6 raíz [kworker/0:0H-mm]
7 raíz [kworker/u2:0-ev]
8 raíz [mm_percpu_wq]
9 raíz [ksoftirqd/0]
10 raíz [rcu_preempt]
11 raíz [rcu_sched]
12 raíz [rcu_bh]
13 raíz [migración/0]
14 raíz [cpuhp/0]
15 raíz [kdevtmpfs]
16 raíz [netns]
17 raíz [rcu_tasks_kthre]
18 raíz [kworker/0:1-eve]
19 root [oom_reaper]
20 root [writeback]
21 root [kcompactd0]
22 root [crypto]
23 root [kblockd]
24 root [watchdogd]
25 root [rpciod]
26 root [kworker/u3:0]
27 root [xprtiod]
28 raíz [cfg80211]
29 raíz [kswapd0]
30 raíz [nfsiod]
58 raíz [irq/178-axp2101]
59 raíz [irq/97-cviusb-o]
60 raíz [uas]
61 raíz [axp2101]
62 raíz [kworker/0 :2]
63 raíz [kworker/0:3]
64 raíz [btfwwork]
65 raíz [irq/41-mmc0]
66 raíz [irq/42-mmc1]
67 raíz [ion_system_heap]
68 raíz [mmc_complete]
69 raíz [kworker/0:1H-mm]
70 raíz [ipv6_addrconf]
71 raíz [krfcommd]
73 raíz [kworker/u2:1-ev]
78 raíz [kworker/0:2H -mm]
79 raíz [jbd2/mmcblk0p5-]
80 raíz [ext4-rsv-conver]
91 raíz {rcS} /bin/sh /etc/init.d/rcS
102 raíz [cvitask_tpu_wor]
119 raíz /sbin/syslogd -n
123 raíz /sbin/klogd -n
139 raíz [jbd2/mmcblk0p7-]
140 raíz [ext4-rsv-conver]
144 raíz /sbin/udevd -d
158 raíz [kworker/0:3H-mm]
170 raíz [kworker/u2 :2-ev]
171 root [kworker/u2:3]
187 dbus dbus-daemon --system
192 root /usr/libexec/bluetooth/bluetoothd -n
267 root [f_mtp]
327 root mtp-server
331 root /usr/bin//adbd
333 root {S99mcu} /bin/sh /etc/init.d/S99mcu start
361 raíz /bin/sh -
367 raíz /mnt/sample_vio 0
369 raíz [cvitask_isp_pre]
370 raíz [cvitask_isp_pos]
371 raíz [cvitask_isp_err]
382 raíz /bin/ sh -
384 raíz /sbin/udevd -d
385 raíz ps -e
/ #
5. Defecto menor:
si sample_vio se ejecuta en primer plano, ejecute reiniciar, cv1826 no se reiniciará. Hay dos soluciones:
(1) Si su aplicación puede ejecutarse en segundo plano, puede usar:
sleep 10
/mnt/sample_vio 0 &
(2) Si su aplicación no puede ejecutarse en segundo plano, elimínela y luego reiníciela
kill -9 367
kill -9 333
333 raíz {S99mcu} /bin/sh /etc/init.d/S99mcu inicio
361 raíz /bin/sh -
367 raíz /mnt/sample_vio 0
(3) Solución universal: ¡apagar! (Extraiga la batería o vuelva a insertar la interfaz TYPE-C^_)