This shows you the differences between two versions of the page.
|
si:laboratoare:2025:11 [2026/01/11 20:30] florin.stancu created |
si:laboratoare:2025:11 [2026/01/11 20:37] (current) florin.stancu |
||
|---|---|---|---|
| Line 162: | Line 162: | ||
| 0. **Pregătirea** imaginii de kernel si a header-elor de kernel | 0. **Pregătirea** imaginii de kernel si a header-elor de kernel | ||
| - | În cadrul laboratorul de astăzi, vom lucra cu module de kernel Out-of-Tree, pe un Raspberry PI fizic. Compilarea modulelor se va face in afara RPi-ului. Va fi nevoie de kernel-ul compilat in [[https://ocw.cs.pub.ro/courses/si/laboratoare/08|laboratorul 8]], care trebuie sa fie instalat pe Raspberry PI. | + | În cadrul laboratorul de astăzi, vom lucra cu module de kernel Out-of-Tree, pe un Raspberry PI fizic. Compilarea modulelor se va face in afara RPi-ului. Va fi nevoie de kernel-ul compilat in [[https://ocw.cs.pub.ro/courses/si/laboratoare/2025/09|laboratorul 9]], care trebuie sa fie instalat pe Raspberry PI. |
| Codul modulelor de kernel se afla [[https://github.com/cs-pub-ro/embedded-systems/tree/master/lab09|aici]]. | Codul modulelor de kernel se afla [[https://github.com/cs-pub-ro/embedded-systems/tree/master/lab09|aici]]. | ||
| Line 172: | Line 172: | ||
| <code>KDIR=<locatia_kernel-ului_linux> CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 make</code> | <code>KDIR=<locatia_kernel-ului_linux> CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 make</code> | ||
| - | <note>Revizitați [[https://ocw.cs.pub.ro/courses/si/laboratoare/05|laboratorul 05]] pentru a va reaminti despre cross-compiling.</note> | + | <note>Revizitați [[https://ocw.cs.pub.ro/courses/si/laboratoare/2025/06|laboratorul 06]] pentru a va reaminti despre cross-compiling.</note> |
| Copiați și incărcați modulul hello.ko pe RPi și verificați că mesajele sunt afișate. | Copiați și incărcați modulul hello.ko pe RPi și verificați că mesajele sunt afișate. | ||
| Line 248: | Line 248: | ||
| ===== Character driver ===== | ===== Character driver ===== | ||
| - | Implementarea unui character driver pentru Linux presupune scrierea unui modul care urmărește aceeași [[https://ocw.cs.pub.ro/courses/si/laboratoare/09#modulul_hello_world| structură]] folosită și în laboratorul 9. Pentru a putea folosi însă interfața de comunicare specifică unui character driver este necesar ca modulul să se înregistreze ca un character driver și să implementeze anumite operații. | + | Implementarea unui character driver pentru Linux presupune scrierea unui modul de kernel. Pentru a putea folosi însă interfața de comunicare specifică unui character driver este necesar ca modulul să se înregistreze ca un character driver și să implementeze anumite operații. |
| ==== Înregistrare ==== | ==== Înregistrare ==== | ||
| Line 454: | Line 454: | ||
| * Header-ele de kernel (identice cu cele de la laboratorul 9) le găsiți [[https://drive.google.com/file/d/1SSSs4UAVU74yyW5j3t2m7OpS0un5Mby5/view?usp=sharing|aici]] | * Header-ele de kernel (identice cu cele de la laboratorul 9) le găsiți [[https://drive.google.com/file/d/1SSSs4UAVU74yyW5j3t2m7OpS0un5Mby5/view?usp=sharing|aici]] | ||
| - | Porniți noul kernel cu vechea imagine (.img-ul) de RaspberryPi de la [[https://ocw.cs.pub.ro/courses/si/laboratoare/03|laboratorul 03]]. | + | Porniți noul kernel cu vechea imagine (.img-ul) de RaspberryPi de la [[https://ocw.cs.pub.ro/courses/si/laboratoare/2025/10|laboratorul 10]]. |
| **Ex. 1** - Compilați modulul de kernel pentru **driver-ul de GPIO PL061** de {{:si:laboratoare:pl061.tgz|aici}} | **Ex. 1** - Compilați modulul de kernel pentru **driver-ul de GPIO PL061** de {{:si:laboratoare:pl061.tgz|aici}} | ||