20230413 Configurer le programme de démarrage automatique sur la plate-forme CV1826
2023/4/13 10:51
1. Exigences du projet : le matériel doit mesurer la tension/le signal d'horloge de la caméra après sa mise sous tension, mais je ne veux pas me connecter au cv1826 via adb pour allumer la caméra à chaque fois que je l'allume.
C:\Users\Sun>adb shell
/ #
/ # cd /mnt/
/mnt #
/mnt # ls -l
total 28816
drwxr-xr-x 3 root root 4096 Jan 1 00:01 data
drwx------ 2 Racine Racine 4096 Jan 100:00 LOST+FOUND
-RW-RW-1 ROOT ROOT 24250004 AVR 11 2023 SAMPLE_VIO
-RW-R-- 1 ROOT ROOT 5242880 AVR 11 2023 Secure.img
DRWXRWXR- x 2 racine racine 4096 11 avril 2023 tmp_secure
/mnt # chmod 777 sample_vio
/mnt #
/mnt # ./sample_vio 0
2. C'est facile à savoir : le script /etc/init.d/rcS exécutera récursivement tous les scripts commençant par un grand S au démarrage.
Microsoft Windows [Version 10.0.19045.2728]
(c) Microsoft Corporation. tous les droits sont réservés.
C:\Users\Sun>adb shell
/ #
/ # cd /etc/init.d/
/etc/init.d #
/etc/init.d # ls -l
total 21
-rwxr-xr-x 1 root root 1630 28 mars 2023 S01panel
-rwxr-xr-x 1 racine racine 1012 13 avril 2023 S01syslogd
-rwxr-xr-x 1 racine racine 1004 13 avril 2023 S02klogd -rwxr-xr-x
1 racine racine 2804 13 avril 2023 S02sysctl
-rwxr- xr -x 1 racine racine 843 13 avril 2023 S10auto_mount
-rwxr-xr-x 1 racine racine 1594 13 avril 2023 S10udev
-rwxr-xr-x 1 racine racine 1684 13 avril 2023 S20urandom
-rwxr-xr-x 1 racine racine 1619 13 avril 2023 S30dbus
-rwxr-xr-x 1 racine racine 1001 13 avril 2023 S40bluetooth
-rwxr-xr-x 1 racine racine 438 13 avril 2023 S40network
-rwxr-xr-x 1 racine racine 452 28 mars 2023 S98wlan
-rwxr-xr-x 1 racine racine 563 28 mars 2023 S99adbd
-rwxr-xr-x 1 racine racine 578 28 mars 2023 S99mcu
-rwxr-xr-x 1 racine racine 423 13 avril 2023 rcK
-rwxr-xr-x 1 racine racine 408 13 avril 2023 rcS
/etc /init.d #
/etc/init.d # cat rcS
#!/bin/sh
# Démarrez tous les scripts d'initialisation dans /etc/init.d
# en les exécutant dans l'ordre numérique.
#
pour je dans /etc/init.d/S??* ;faire
# Ignorer les liens symboliques pendants (le cas échéant).
[ ! -f "$i" ] && continuer
case "$i" dans
*.sh)
# Script shell source pour la vitesse.
(
trap - INT QUIT TSTP
set start
. $i
)
;;
*)
# Pas d'extension sh, donc sous-processus fork.
$je commence
;;
esac
terminé
/etc/init.d #
3. Ajoutez une caméra de démarrage à S99mcu :
Microsoft Windows [Version 10.0.19045.2728]
(c) Microsoft Corporation. tous les droits sont réservés.
C:\Users\Sun>adb shell
/ #
/ #
/ # cd /etc/init.d/
/etc/init.d #
/etc/init.d # ls -l
total 21
-rwxr-xr-x 1 root racine 1630 28 mars 2023 S01panel
-rwxr-xr-x 1 racine racine 1012 13 avril 2023 S01syslogd
-rwxr-xr-x 1 racine racine 1004 13 avril 2023 S02klogd -rwxr-xr-x 1 racine racine 2804 13 avril 2023
S02sysctl
-rwxr -xr-x 1 racine racine 843 13 avril 2023 S10auto_mount
-rwxr-xr-x 1 racine racine 1594 13 avril 2023 S10udev
-rwxr-xr-x 1 racine racine 1684 13 avril 2023 S20urandom
-rwxr-xr-x 1 racine racine 1619 13 avril 2023 S30dbus
-rwxr-xr-x 1 racine racine 1001 13 avril 2023 S40bluetooth
-rwxr-xr-x 1 racine racine 438 13 avril 2023 S40network
-rwxr-xr-x 1 racine racine 452 28 mars 2023 S98wlan
-rwxr-xr-x 1 racine racine 563 28 mars 2023 S99adbd
-rwxr-xr-x 1 racine racine 606 1 janvier 00:04 S99mcu
-rwxr-xr-x 1 racine racine 423 13 avril 2023 rcK
-rwxr-xr-x 1 racine racine 408 13 avril 2023 rcS
/etc/init.d #
/etc/init.d # chat S99mcu
#!/bin/sh
case "$1" dans
start)
printf "MCU de démarrage : "
/usr/bin/cvi_mv_fw ;
devmem 0x03000248 32 0x1;
devmem 0x05025020 32 0xC01E02D;
devmem 0x05025018 32 0x8107ffff;
## séquence d'écriture suspendue 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;
;;
stop)
;;
*)
echo "Utilisation : $0 {démarrer|arrêter}"
esac
sommeil 10
/mnt/sample_vio 0
exit $?/etc/init.d # redémarrage
4. Confirmez que sample_vio a démarré automatiquement :
[Mesure réelle :] Après 30 secondes, environ 60 secondes/1 minute, l'AVDD/DVDD de la caméra est sous tension !
Microsoft Windows [Version 10.0.19045.2728]
(c) Microsoft Corporation. tous les droits sont réservés.
C:\Users\Sun>adb shell
/ # ps -e
PID USER COMMAND
1 root {linuxrc} init
2 root [kthreadd]
3 root [rcu_gp]
4 root [rcu_par_gp]
5 root [kworker/0:0-eve]
6 racine [kworker/0:0H-mm]
7 racine [kworker/u2:0-ev]
8 racine [mm_percpu_wq]
9 racine [ksoftirqd/0]
10 racine [rcu_preempt]
11 racine [rcu_sched]
12 racine [rcu_bh]
13 racine [migration/0]
14 racine [cpuhp/0]
15 racine [kdevtmpfs]
16 racine [netns]
17 racine [rcu_tasks_kthre]
18 racine [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 racine [cfg80211]
29 racine [kswapd0]
30 racine [nfsiod]
58 racine [irq/178-axp2101]
59 racine [irq/97-cviusb-o]
60 racine [uas]
61 racine [axp2101]
62 racine [kworker/0 :2]
63 racine [kworker/0:3]
64 racine [btfwwork]
65 racine [irq/41-mmc0]
66 racine [irq/42-mmc1]
67 racine [ion_system_heap]
68 racine [mmc_complete]
69 racine [kworker/0:1H-mm]
70 racine [ipv6_addrconf]
71 racine [krfcommd]
73 racine [kworker/u2:1-ev]
78 racine [kworker/0:2H -mm]
79 racine [jbd2/mmcblk0p5-]
80 racine [ext4-rsv-conver]
91 racine {rcS} /bin/sh /etc/init.d/rcS
102 racine [cvitask_tpu_wor]
119 racine /sbin/syslogd -n
123 racine /sbin/klogd -n
139 racine [jbd2/mmcblk0p7-]
140 racine [ext4-rsv-conver]
144 racine /sbin/udevd -d
158 racine [kworker/0:3H-mm]
170 racine [kworker/u2 :2-ev]
171 racine [kworker/u2:3]
187 dbus dbus-daemon --system
192 racine /usr/libexec/bluetooth/bluetoothd -n
267 racine [f_mtp]
327 racine mtp-server
331 racine /usr/bin//adbd
333 racine {S99mcu} /bin/sh /etc/init.d/S99mcu start
361 root /bin/sh -
367 root /mnt/sample_vio 0
369 root [cvitask_isp_pre]
370 root [cvitask_isp_pos]
371 root [cvitask_isp_err]
382 root /bin/ sh -
384 racine /sbin/udevd -d
385 racine ps -e
/ #
5. Défaut mineur :
si sample_vio s'exécute au premier plan, exécutez le redémarrage, cv1826 ne redémarrera pas. Il existe deux solutions :
(1) Si votre APP peut s'exécuter en arrière-plan, vous pouvez utiliser :
sleep 10
/mnt/sample_vio 0 &
(2) Si votre application ne peut pas s'exécuter en arrière-plan, tuez-la, puis redémarrez
kill -9 367
kill -9 333
333 racine {S99mcu} /bin/sh /etc/init.d/S99mcu start
361 racine /bin/sh -
367 racine /mnt/sample_vio 0
(3) Solution universelle : éteignez ! (Retirez la batterie/ou réinsérez l'interface TYPE-C ^ _)