Sommario:

Compilazione del kernel RT a 64 bit per Raspberry Pi 4B .: 5 passaggi
Compilazione del kernel RT a 64 bit per Raspberry Pi 4B .: 5 passaggi

Video: Compilazione del kernel RT a 64 bit per Raspberry Pi 4B .: 5 passaggi

Video: Compilazione del kernel RT a 64 bit per Raspberry Pi 4B .: 5 passaggi
Video: Raspberry Pi 5 - Compile FFMPEG on Raspberry PI OS 2024, Luglio
Anonim
Compilazione del kernel RT a 64 bit per Raspberry Pi 4B
Compilazione del kernel RT a 64 bit per Raspberry Pi 4B

Questo tutorial tratterà il processo di creazione e installazione di Real Time Kernel a 64 bit su Raspberry Pi. RT Kernel è fondamentale per la piena funzionalità di ROS2 e altre soluzioni IOT in tempo reale.

Il kernel è stato installato su Raspbian basato su x64 che può essere ottenuto qui

Nota. Questo tutorial, sebbene semplice, richiede una conoscenza di base del sistema operativo Linux.

Inoltre, a causa delle limitazioni di questa piattaforma, tutti i collegamenti http mancano di h. Per risolverli, aggiungi semplicemente "h" nella parte anteriore del collegamento

Forniture

PC basato su x64 con Linux

Raspberry Pi 4B con Raspbian 64 già installato

Connessione a Internet.

Passaggio 1: ottenere gli strumenti necessari

Per prima cosa dobbiamo ottenere gli strumenti di sviluppo necessari.

Possono essere ottenuti eseguendo i seguenti comandi nel terminale Linux

sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev libncurses5-dev bc git-core bison flexsudo apt-get install libncurses-dev libssl-dev

Passaggio 2: compilazione di strumenti di compilazione nativi per la compilazione incrociata

Il prossimo passo è preparare e compilare strumenti per la compilazione incrociata del nostro kernel.

Il primo strumento che installeremo è Binutils, questo tutorial è stato testato con binutils versione 2.35.

cd ~/Downloadswget ttps://ftp.gnu.org/gnu/binutils/binutils-2.35.tar.bz2tar xf binutils-2.35.tar.bz2cd binutils-2.35/./configure --prefix=/opt/aarch64 -- --disable-nls

Al termine della configurazione, è necessario compilare il programma utilizzando i seguenti comandi

make -jx

sudo make install

dove -jx significa quanti lavori vuoi eseguire i parrarell. La regola generale è di metterlo non più alto della quantità di thread che il tuo sistema ha. (ad esempio make -j16)

e infine dobbiamo esportare il percorso

export PATH=$PATH:/opt/aarch64/bin/

Quindi procediamo con la costruzione e l'installazione di GCC

cd..wget ttps://ftp.gnu.org/gnu/gcc/gcc-8.4.0/gcc-8.4.0.tar.xztar xf gcc-8.4.0.tar.xzcd gcc-8.4.0/. /contrib/download_prerequisites./configure --prefix=/opt/aarch64 --target=aarch64-linux-gnu --with-newlib --senza-intestazioni / --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float / --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic / --enable-languages=c --disable-multilib

Lo stesso di prima che creiamo e installiamo il nostro compilatore

make all-gcc -jx

sudo make install-gcc

Se tutto è andato liscio seguendo il comando

/opt/aarch64/bin/aarch64-linux-gnu-gcc -v

dovrebbe dar luogo a una risposta simile a questa.

ux-gnu-gcc -v Usando le specifiche integrate. COLLECT_GCC=/opt/aarch64/bin/aarch64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/opt/aarch64/libexec/gcc/aarch64-linux-gnu/8.4.0/lto-wrapper Target: aarch64-linux-gnu Configurato con:./configure --prefix=/opt/aarch64 --target=aarch64-linux-gnu --with-newlib --senza-intestazioni --disable-nls --disable-shared --disable-threads --disable-libssp --disable-decimal-float --disable-libquadmath --disable-libvtv --disable-libgomp --disable-libatomic --enable-languages=c --disable-multilib Modello di thread: single gcc versione 8.4.0 (GCC)

Passaggio 3: applicare le patch al kernel e configurare il kernel

Ora è il momento di ottenere il nostro kernel e la patch RT.

Questo tutorial utilizzerà il kernel rpi v 5.4 e la patch RT RT32. Questa combinazione ha funzionato bene per me. Tuttavia, tutto dovrebbe funzionare correttamente con versioni diverse.

mkdir ~/rpi-kernel

cd ~/rpi-kernel git clone ttps://github.com/raspberrypi/linux.git -b rpi-5.4.y wget ttps://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt /5.4/older/patch-5.4.54-rt32.patch.gz mkdir kernel-out cd linux

quindi decomprimere la patch.

gzip -cd../patch-5.4.54-rt32.patch.gz | patch -p1 --verbose

E inizializza la configurazione per Rpi 4B

make O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu- bcm2711_defconfig

Dopodiché dobbiamo entrare nel menuconfig

make O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=/opt/aarch64/bin/aarch64-linux-gnu-menuconfig

Quando viene avviato, abbiamo bisogno della configurazione esistente, quindi vai a

Generale -> Modello di prelazione e selezionare l'opzione in tempo reale.

quindi salviamo la nuova configurazione e usciamo dal menu.

Passaggio 4: creazione del kernel RT

Ora è il momento della compilazione. Nota che potrebbe richiedere molto tempo a seconda delle capacità del tuo PC.

make -jx O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

Come prima -jx significa numero di lavori. Dopo aver compilato con successo, dobbiamo impacchettare il nostro kernel e inviarlo a Raspberry Pi. Per fare ciò eseguiamo i seguenti comandi.

export INSTALL_MOD_PATH=~/rpi-kernel/rt-kernelexport INSTALL_DTBS_PATH=~/rpi-kernel/rt-kernelmake O=../kernel-out/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-modules_install dtbs_installcp../kernel- out/arch/arm64/boot/Image../rt-kernel/boot/kernel8.imgcd $INSTALL_MOD_PATHtar czf../rt-kernel.tgz *cd..

Ora il nostro kernel dovrebbe essere all'interno dell'archivio rt-kernel.tgz ed è pronto per essere inviato e installato.

Passaggio 5: installazione del nuovo kernel

Il modo più semplice per inviare il nostro kernel a raspbperry è usare scp.

Eseguiamo semplicemente il seguente comando.

scp rt-kernel.tgz pi@:/tmp

Ora dobbiamo accedere al nostro pi tramite ssh e decomprimere il nostro kernel.

ssh pi@

Una volta effettuato l'accesso, copiamo i nostri file utilizzando i seguenti comandi.

cd /tmptar xzf rt-kernel.tgz cd boot sudo cp -rd * /boot/ cd../lib sudo cp -dr * /lib/ cd../overlays sudo cp -dr * /boot/overlays cd../ broadcom sudo cp -dr bcm* /boot/

Dopodiché ciò che resta da fare è modificare il file /boot/config.txt e aggiungere la riga seguente.

kernel=kernel8.img

Dopo aver riavviato pi tutto dovrebbe funzionare correttamente.

Per verificare se il nuovo kernel è stato installato con successo puoi eseguire

uname -a

comando

Consigliato: