課程目錄:Embedded GNU/Linux Kernel Internals and Device Drivers培訓
        4401 人關注
        (78637/99817)
        課程大綱:

          Embedded GNU/Linux Kernel Internals and Device Drivers培訓

         

         

         

        Introduction
        quick history of GNU/Linux
        licensing
        kernel versioning
        release cycle
        kernel trees
        mainline
        kernel vs. user space
        mechanism vs. policy
        kernel driver alternatives
        RTOS vs. Linux
        Memory Management
        Virtual memory vs. physical memory
        memory allocation in kernel
        pages
        zones
        API
        slab
        Kernel Patch
        life cycle
        git
        kernel source
        create patch
        check patch
        fix patch
        ship patch
        audited code
        Kernel Modules
        get kernel sources
        configure/build/install
        device drivers (statically linked, loaded at runtime)
        init/exit
        licensing
        EXPORT SYMBOL GPL
        out of tree makefile
        module-init-tools
        module in kernel tree
        Kconfig
        parameter passing
        sparse
        Char Drivers
        architecture
        user/kernel interface
        I/O subsystem
        VFS
        sysfs (devices, bus, drivers, classes),
        kobject/ktype/kset
        linux kernel driver model
        device files
        char driver
        initialization
        registration
        open, release
        cdev, cdev add, cdev del,...
        major/minor numbers
        udev, udevmonitor, udevadm
        Advanced Charachter Driver Operations
        ioctl
        unlocked ioctl
        compat ioctl
        user space API
        kernel space API
        process lifecycle
        sleeping/blocking
        sleeping/waking up
        wait queue
        thundering herd
        poll/select
        Kernel Debugging
        bug
        debugging
        debugging the kernel
        binary search with git
        debug support from kernel
        printk syslogd, klogd, loglevels, rate limit, debug levels, debug selective subsystems
        debugging by querying debugfs
        oops debugging, asserting oops
        Magic SysRq Key
        kgdb/kdb
        JTAG
        Tracing
        gcov
        lcov
        oprofile
        ftrace
        nop tracer
        function tracer
        sched switch tracer
        function graph tracer
        dynamic tracer
        trace-cmd/kernelshark
        perf
        LTTng
        Interrupts
        interrupts vs. polling
        interrupt
        program sections
        reentrancy
        events
        interrupt handler
        shared interrupt handler
        interrupt flow
        interrupt control
        Deferring Work
        top/bottom halves
        softirqs
        tasklets
        work queues
        threaded interrrupts
        Concurrency
        critical region/section
        atomic
        race condition
        synchronization
        locking
        locking solutions
        deadlock
        contention
        what to lock?
        what can be used?
        atomic operations
        spin locks
        reader-writer spin locks
        semaphore
        binary semaphore
        mutex
        reader-writer semaphore
        completion variables
        sequential locks
        disable preemption
        orderig and barriers
        Time
        HZ
        Jiffies
        big/small delays
        kernel timers
        Hardware I/O
        I/O Ports
        I/O Memory
        How to deal with side effects accessing registers?
        User-Kernel Communication
        put(get)_user()
        copy to(from)_user()
        Kernel I/O
        memory mapping
        procfs
        sysfs
        debugfs
        relayfs
        netlink
        ioctl
        Portability
        word size
        opaque types
        signed/unsigned char
        data alignment
        integral promotion
        code reuse
        endianess
        system tick
        page size
        instruction ordering
        SMP/preemption/high memory
        Except where otherwise noted content and this course outline are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).