Opis jak skonfigurować jądro Linux
dla bramki PRO1 na przykładzie dodania sterowników portu szeregowego
Dla bramki PRO1 udostępniamy cały pakiet SDK z kodem źródłowym w kontenerze dockera:
https://hub.docker.com/repository/docker/aispro/sdk_pro_1/general
Popularne sterowniki portu szeregowe są już włączone w jądrze PRO1, ten opis pokazuje w jaki sposób to zostało wykonane.
Uruchamiamy kontener z SDK
w konnsoli na swoim PC wpisujemy:
docker run -it aispro/sdk_pro_1:v1
po pobraniu obrazu zostanie automatycznie uruchomiony kontener i automatycznie przejdziemy do jego powłoki bash:
przechodzimy do folderu z SDK
cd /home/sdk
Uruchamiamy konfiguracje jądra w kontenerze
env KCONFIG_CONFIG=/home/sdk/common/arch/arm/configs/meson64_a32_defconfig make -j8 -C common O=../out/target/product/galilei/obj/KERNEL_OBJ ARCH=arm menuconfig
przechodzimy do menu sterowników urządzenia Device Drivers
wybieramy USB support
w USB Serial Converter support
wybieramy interesujące nas sterowniki
zapisujemy konfiguracje
Uruchamiamy kompilacje jądra z naszą konfiguracją
./s922x_ddr4
po pomyślnym zakończeniu konfiguraji nasze nowe jądro znajduje się w lokalizacji out/target/product/galilei/boot.img
Testowe uruchomienie bramki na nowym jądrze
Pobieramy jądro z kontenera
sudo docker cp <id-kontenera>:/home/sdk/out/target/product/galilei/boot.img new-boot.im
Łączymy się z bramką po adb:
adb connect <IP-BRAMKI>
uruchamiamy bramkę w trybie fastboot:
adb shell reboot fastboot
uruchamiany system na nowym jądrze (jeszcze nie flashując, więc w przypadku problemu wystarczy ponownie uruchomić bramkę aby przywrócić go poprzedniej konfiguracji jądra)
fastboot boot ./new-boot.img
jeżeli system się uruchamia poprawnie to po adb możemy sprawdzić interesujące nas flagi jądra:
adb shell zcat /proc/config.gz | grep CONFIG_USB_SERIAL_C
CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_SERIAL_CH341=y
CONFIG_USB_SERIAL_CP210X=y
# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set
Zmieniamy jądro na bramce
Jeśli bramka działa pomyślnie z nowym obrazem rozruchowym, to wracamy do trybu fastboot
adb shell reboot fastboot
i programujemy nowe jądro na stałe:
fastboot flash boot ./new-boot.img
fastboot reboot