# 🥚 PRO1 Kompilowanie jądra Linux - sterowniki portu szeregowego

**URL:** https://ai-speaker.discourse.group/t/pro1-kompilowanie-jadra-linux-sterowniki-portu-szeregowego/3524
**Category:** faq
**Created:** [14 Sierpień 2023 15:42 UTC](https://ai-speaker.discourse.group/t/pro1-kompilowanie-jadra-linux-sterowniki-portu-szeregowego/3524 "2023-08-14T15:42:31Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Autor: ![jolka](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/jolka/32/5_2.png) [@jolka](https://ai-speaker.discourse.group/u/jolka)
#### Data publikacji: [14 Sierpień 2023 15:42 UTC](https://ai-speaker.discourse.group/t/pro1-kompilowanie-jadra-linux-sterowniki-portu-szeregowego/3524/1 "2023-08-14T15:42:31Z")

</div>

# 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](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:

```auto
docker run -it aispro/sdk_pro_1:v1

```

po pobraniu obrazu zostanie automatycznie uruchomiony kontener i automatycznie przejdziemy do jego powłoki bash:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/8e0777ea3810d261a3d420d5d88e8c5d2d743d00.png)

przechodzimy do folderu z SDK

```auto
cd /home/sdk

```

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/1/168778c28919d9cf1f593c8504a6e698e4982848.png)

## Uruchamiamy konfiguracje jądra w kontenerze

```auto
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`

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/5/5e80e98b44beff73875c96b7f4daf07d8512b06c.png)

wybieramy `USB support`

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/7/7fc8e15fb70690033d239d7da36c89506163e8bb.png)

w `USB Serial Converter support` wybieramy interesujące nas sterowniki

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/f/f08add757516bb6cc01ef03d8bff9ff135b159ae.png)

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/3/39119b15ba4836cfb27b412356c5c71713abac8f.png)

zapisujemy konfiguracje

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/6/6c32dcbb2c1e0ad223bdefa770278164418083ef.png)

## Uruchamiamy kompilacje jądra z naszą konfiguracją

```auto
./s922x_ddr4

```

po pomyślnym zakończeniu konfiguraji nasze nowe jądro znajduje się w lokalizacji `out/target/product/galilei/boot.img`

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/8/8102b04c8d3ce0f9e63aac7b4fa7815273f24a7b.png)

## 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:

```auto
adb connect <IP-BRAMKI> 

```

uruchamiamy bramkę w trybie fastboot:

```auto
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)

```auto
fastboot boot ./new-boot.img

```

jeżeli system się uruchamia poprawnie to po adb możemy sprawdzić interesujące nas flagi jądra:

```auto
adb shell zcat /proc/config.gz | grep CONFIG_USB_SERIAL_C

```

```auto
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

```auto
adb shell reboot fastboot

```

i programujemy nowe jądro na stałe:

```auto
fastboot flash boot ./new-boot.img
fastboot reboot

```

🎉

### Ta procedura może początkowo wydawać się trudna, ale kiedy ją wykonasz, zobaczysz, że tak naprawdę trudne to nie jest 🙂 potrzeba tylko mocnej maszyny, sporo miejsca na dysku i oczywiście troszkę cierpliwości…
