Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Kursplan
Introduksjon
- rask historie med GNU/Linux lisensiering kjerneversjonsutgivelsessyklus kjernetrær hovedlinjekjerne vs. brukerplassmekanisme vs. policykjernedriveralternativer RTOS vs. Linux
Minne Management
- Virtuelt minne vs fysisk minne minnetildeling i kjernesider soner API-plate
Kjernelapp
- livssyklus git kjernekilde opprette patch check patch fix patch skip patch revidert kode
Kjernemoduler
- få kjernekilder konfigurere/bygge/installere enhetsdrivere (statisk koblet, lastet ved kjøretid) init/exit lisensiering EKSPORTER SYMBOL GPL ut av treet makefile modul-init-tools-modul i kjernetreet Kconfig-parameteren passerer sparsomt
Char-drivere
- arkitektur bruker/kjernegrensesnitt I/O-undersystem VFS sysfs (enheter, buss, drivere, klasser), kobject/ktype/kset linux kjerne driver modell enhetsfiler char driver initialisering registrering åpen, release cdev, cdev add, cdev del,... dur/moll tall udev, udevmonitor, udevadm
Avanserte Charachter-driveroperasjoner
- ioctl ulåst ioctl compat ioctl brukerplass API kjerneplass API prosess livssyklus sove/blokkering sove/våkne opp vente kø dundrende flokk poll/velg
Kjernefeilsøking
- feilsøking feilsøking av kjernen binært søk med git debug-støtte fra kjerne printk syslogd, klogd, loglevels, rate limit, feilsøkingsnivåer, feilsøking av selektive undersystemer feilsøking ved å spørre debugfs oops feilsøking, påstå oops Magic SysRq Key kgdb/kdb JTAG
Sporing
- gcov lcov oprofile ftrace nop tracer funksjon tracer sched switch tracer funksjon graf tracer dynamisk tracer
avbrudd vs. polling avbrudd programseksjoner reentrancy hendelser avbrudd behandler delt avbrudd behandler avbrudd flyt avbrudd kontroll
- Utsettelse av arbeid
topp/bunn halvdeler softirqs tasklets arbeidskøer gjenget avbrudd
- Samtidighet
kritisk region/seksjon atomkappløp tilstand synkronisering låsing låseløsninger vranglås konflikt hva skal låses? hva kan brukes? atomoperasjoner spinnlåser leser-skriver spinnlåser semafor binær semafor mutex leser-skriver semafor fullføringsvariabler sekvensielle låser deaktiverer preemption orderig og barrierer
- Tid
HZ Jiffies store/små forsinkelser kjernetidtakere
- Maskinvare I/O
I/O-porter I/O-minne Hvordan håndtere bivirkninger ved å få tilgang til registre?
- Brukerkjerne Communication
put(get)_user() copy to(from)_user() Kjerne I/O-minnekartlegging procfs sysfs debugfs relayfs netlink ioctl
- Bærbarhet
ordstørrelse ugjennomsiktig typer signert/usignert char datajustering integral kampanjekode gjenbruk endianess system tick sidestørrelse instruksjon bestilling SMP/preemption/high memory
- Med mindre annet er angitt innhold og denne kursoversikten er lisensiert under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Krav
- Grunnleggende kjennskap til å bruke et GNU/Linux-system som sluttbruker
- Grunnleggende kjennskap til et kommandolinjeskall
- Grunnleggende kunnskap om brukerrom / applikasjonsutvikling
- Middels C-programmeringskunnskap
- Burde ha deltatt på Embedded GNU/Linux Systems Architecture før (anbefales på det sterkeste!) og/eller ha en god forståelse av emnene som er skissert der
35 timer
Testimonials (4)
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurs - The Yocto Project - An Overview - hands-on
At det var mange øvelser.
Katarzyna Straszewska - Swiss AviationSoftware Ltd.
Kurs - Build Native iOS and Android Apps with Flutter
Machine Translated
Mer om laboratoriet.
Sarbin - Cagayan Electric Power And Light Co., Inc.
Kurs - Flutter Development Bootcamp with Dart
Machine Translated
On time, training resources is readily available