课程培训
Linux开发培训课程(选修)

Linux开发培训课程体系(选修)

 

专题一:C/C++开发环境与工具链

专题二:Linux系统编程核心(文件I/O与进程线程)

专题三:Linux高级系统编程(IPC与信号)

专题四:Linux网络编程实战

专题五:Linux内核编程入门

专题六:Linux设备驱动开发

专题七:Linux内核深度定制与性能优化

专题八:嵌入式Linux开发实战


 

专题一:C/C++开发环境与工具链培训课程

课程名称:C/C++开发环境与工具链培训课程

培训对象

  • 掌握C/C++基础语法但未在Linux环境开发的程序员

  • 从Windows开发转向Linux开发的软件工程师

  • 需要掌握Linux开发工具链的嵌入式/后端开发者

  • 计算机相关专业学生

培训目标
使学员熟练掌握Linux平台下的C/C++开发全流程,包括编辑器(Vim/VS Code)、编译器(GCC)、构建工具(Make/CMake)、调试器(GDB)、版本控制(Git)等核心工具的使用;理解编译链接原理与程序内存布局;具备独立配置开发环境、构建多文件项目、调试程序、性能分析的能力,为后续系统编程打下坚实基础。

培训内容介绍

  1. Linux开发环境搭建
    开发环境需求分析;虚拟机/VSCode远程开发配置;编译器(GCC/Clang)安装与验证;调试器(GDB)安装;构建工具(make/cmake)安装;版本控制(Git)配置;代码编辑器选择与配置(Vim/VS Code插件)。

  2. GCC编译器深度使用
    GCC编译流程:预处理/编译/汇编/链接;常用编译选项:-Wall -Wextra -O -g -I -L -l;静态库与共享库的创建与使用;多文件项目编译;交叉编译基础;GCC与Clang对比。

  3. Makefile构建工具
    Makefile基本规则:目标/依赖/命令;变量定义与使用;自动变量与隐含规则;函数使用;条件判断;多目录项目管理;Makefile调试技巧;Autotools简介。

  4. CMake现代构建系统
    CMake优势与哲学;CMakeLists.txt编写基础;目标(target)概念;变量与缓存;生成器表达式;查找依赖包;多目录项目组织;安装配置;CMake Presets。

  5. GDB调试艺术
    GDB启动与退出;断点管理:break/watch/catch;程序执行控制:run/continue/next/step;变量查看与修改:print/display/set;堆栈回溯:backtrace/frame;条件断点与断点命令;调试多进程多线程程序;Core Dump分析;图形化前端(DDD/VS Code)集成。

  6. Git版本控制
    Git工作原理与数据模型;常用命令:init/clone/add/commit/push/pull/branch/merge;分支管理策略;冲突解决;标签与版本发布;Git Hook基础;.gitignore配置;Git Flow工作流。

  7. 静态代码分析
    代码规范与风格检查:indent/uncrustify/clang-format;静态分析工具:splint/cppcheck/clang-tidy;覆盖率工具:gcov/lcov;代码复杂度分析;在构建流程中集成静态检查。

  8. 动态分析与性能剖析
    内存错误检测:Valgrind memcheck;内存泄漏检测:Valgrind massif/heap profiling;性能剖析:gprof/perf;系统调用追踪:strace;库函数追踪:ltrace;动态分析在调试中的应用。

  9. 文档生成与代码阅读
    Doxygen注释规范与文档生成;代码阅读工具:ctags/cscope;代码结构可视化;Linux内核源码阅读环境配置;头文件依赖分析。

  10. 链接原理与内存布局
    编译链接过程回顾;目标文件格式(ELF);符号解析与重定位;静态链接与动态链接;运行时内存布局:text/data/bss/heap/stack;库搜索路径与运行时链接;动态链接器与LD_LIBRARY_PATH。

  11. C/C++混合编程
    extern "C"作用与使用;C调用C++库;C++调用C库;混合编程注意事项;命名空间与符号修饰;封装C库为C++接口。

  12. 综合实战:完整项目开发环境搭建
    从零开始搭建一个完整的C项目开发环境:

    • 项目初始化:Git仓库创建,.gitignore配置

    • 目录结构:src/include/lib/test/doc规范

    • 构建系统:CMake构建多目录项目

    • 单元测试:集成CUnit/Check测试框架

    • 静态分析:集成cppcheck到构建流程

    • 文档生成:Doxygen配置与文档生成

    • 调试验证:GDB调试典型问题

    • 性能分析:使用gprof/valgrind优化热点函数

    • 最终产出:可重复使用的项目模板与构建脚本

 

专题二:Linux系统编程核心培训课程(文件I/O与进程线程)

课程名称:Linux系统编程核心培训课程(文件I/O与进程线程)

培训对象

  • 掌握C语言基础但未接触过Linux系统调用的开发者

  • 需要编写高性能服务器程序的后端工程师

  • 嵌入式Linux应用开发者

  • 操作系统课程学习者

培训目标
使学员系统掌握Linux系统编程的核心知识,深入理解文件I/O、进程管理、线程管理的系统调用接口与实现原理;熟练使用文件描述符、进程控制、线程同步等核心技术;理解用户态与内核态的切换机制;具备编写高效、稳定的Linux系统程序的能力,能够解决实际开发中的常见问题

培训内容介绍

  1. 系统编程概述
    用户态与内核态;系统调用与库函数的区别;系统调用开销与优化;errno错误处理;系统编程环境准备;man手册使用技巧。

  2. 文件I/O基础
    文件描述符概念;标准文件描述符:STDIN_FILENO/STDOUT_FILENO/STDERR_FILENO;基本I/O系统调用:open/close/read/write/lseek;文件打开模式与权限;文件读写缓冲区问题;I/O效率测量。

  3. 文件I/O高级特性
    原子操作与竞争条件;文件共享与dup/dup2;fcntl文件控制;非阻塞I/O;记录锁(fcntl文件锁);I/O多路复用前驱:select/poll基础。

  4. 文件系统与目录操作
    获取文件信息:stat/fstat/lstat;文件权限与所有权;修改文件时间戳:utime;目录操作:opendir/readdir/closedir;当前工作目录:getcwd/chdir;创建与删除目录:mkdir/rmdir;硬链接与符号链接:link/symlink/readlink;文件系统挂载信息获取

  5. 进程管理基础
    进程ID与父进程ID;进程内存布局;进程环境变量;获取进程信息:/proc文件系统;进程资源限制:getrlimit/setrlimit;系统日志:syslog。

  6. 进程控制
    创建进程:fork系统调用;写时拷贝技术;fork之后的文件描述符继承;区分父子进程;终止进程:exit/_exit;等待子进程:wait/waitpid;孤儿进程与僵尸进程;exec族函数:execl/execlp/execle/execv/execvp;在进程中运行新程序

  7. 守护进程编写
    守护进程概念与特征;创建守护进程步骤:fork->setsid->chdir->umask->关闭文件描述符;守护进程的单实例运行;SIGHUP信号处理;使用pidfile记录进程ID;守护进程日志记录。

  8. 线程基础
    线程概念与优势;线程vs进程;POSIX线程库(pthread);线程创建:pthread_create;线程终止:pthread_exit/pthread_cancel;线程等待:pthread_join;线程分离:pthread_detach;线程属性设置

  9. 线程同步(上)
    线程同步的必要性;竞争条件;互斥锁(mutex):pthread_mutex_init/lock/unlock/destroy;死锁产生与预防;互斥锁类型;线程私有数据。

  10. 线程同步(下)
    条件变量:pthread_cond_init/wait/signal/broadcast;生产者消费者模型;读写锁:pthread_rwlock;自旋锁;屏障(barrier);一次性初始化:pthread_once。

  11. 线程高级特性
    线程与信号;线程与fork;线程取消机制;取消点与取消类型;清理处理程序:pthread_cleanup_push/pop;线程本地存储(TLS)。

  12. 综合实战:多线程文件服务器
    开发一个支持多客户端并发访问的文件服务器:

    • 需求分析:支持文件列表查看、文件下载、上传功能

    • 架构设计:主线程监听+工作线程池处理请求

    • 文件I/O:使用标准文件操作实现文件传输

    • 线程同步:互斥锁保护共享资源(连接计数/日志)

    • 守护进程:实现后台运行与日志记录

    • 性能测试:压测并发连接数与传输速率

    • 调试排错:处理僵尸进程与资源泄漏问题

 

专题三:Linux高级系统编程培训课程(IPC与信号)

课程名称:Linux高级系统编程培训课程(IPC与信号)

培训对象

  • 已掌握基础系统编程的开发者

  • 需要设计多进程协作系统的架构师

  • 中间件/数据库内核开发者

  • 对进程间通信机制有深入需求的技术人员

培训目标
使学员深入理解Linux进程间通信(IPC)的各种机制,包括管道、信号、共享内存、消息队列、信号量等;掌握不同IPC机制的适用场景与性能特点;深入理解信号的处理机制与高级用法;具备设计多进程协作系统、解决复杂通信问题的能力,能够根据业务需求选择最合适的IPC方式

培训内容介绍

  1. 信号基础
    信号概念与作用;常见信号列表:SIGINT/SIGTERM/SIGKILL/SIGUSR1等;信号的生命周期:产生、注册、递送、处理;信号与中断的区别;信号的默认处理行为。

  2. 信号处理
    signal函数使用与限制;sigaction高级信号处理;信号集操作:sigemptyset/sigfillset/sigaddset/sigdelset/sigismember;信号阻塞与未决信号;sigprocmask与sigsuspend;可重入函数与异步信号安全

  3. 信号高级特性
    实时信号与标准信号区别;排队与顺序保证;sigqueue发送带数据的信号;定时器信号:alarm/setitimer;信号在进程间通信中的应用;信号与线程。

  4. 管道通信
    匿名管道:pipe函数;管道读写规则与阻塞行为;管道容量与原子性;父子进程管道通信;管道重定向实现;popen函数;管道在shell命令中的实现原理

  5. 命名管道(FIFO)
    FIFO概念与创建:mkfifo;FIFO的打开规则;FIFO读写特性;阻塞与非阻塞模式;使用FIFO实现无亲缘关系进程通信;FIFO与管道对比

  6. System V IPC概述
    System V IPC共同特性:key_t与ftok;ipcs/ipcrm命令;权限结构;IPC标识符与键;System V vs POSIX IPC对比。

  7. 共享内存
    共享内存原理与优势;shmget创建/获取共享内存;shmat附加共享内存;shmdt分离;shmctl控制与销毁;共享内存同步问题;共享内存与互斥锁结合

  8. 消息队列
    消息队列概念;msgget创建/获取;msgsnd发送消息;msgrcv接收消息;msgctl控制;消息类型与优先级;消息队列vs管道

  9. 信号量集
    信号量概念与二元/计数信号量;semget创建/获取;semop操作(P/V操作);sembuf结构;semctl控制;使用信号量解决哲学家就餐问题;POSIX信号量(无名/有名)

  10. POSIX IPC
    POSIX消息队列:mq_open/mq_send/mq_receive/mq_close/mq_unlink;POSIX共享内存:shm_open/mmap;POSIX信号量:sem_open/sem_wait/sem_post;POSIX IPC与System V对比。

  11. 内存映射(mmap)
    mmap原理;文件映射与匿名映射;共享映射与私有映射;mmap实现父子进程通信;mmap实现大文件快速读写;mmap与共享内存关系。

  12. 综合实战:多进程协作任务系统
    设计一个多进程协作的任务处理系统:

    • 系统架构:主控进程+多个工作进程

    • 通信设计:主控→工作:消息队列分发任务;工作→主控:共享内存上报结果

    • 同步机制:信号量控制任务队列访问

    • 信号处理:优雅停止(SIGTERM)、状态查询(SIGUSR1)

    • 性能监控:共享内存维护实时统计信息

    • 完整实现:编码实现、调试测试、性能对比分析

 

专题四:Linux网络编程实战培训课程

课程名称:Linux网络编程实战培训课程

培训对象

  • 需要开发网络服务端/客户端程序的开发者

  • 后端工程师/中间件开发者

  • 嵌入式网络应用开发者

  • 协议栈实现与优化人员

培训目标
使学员系统掌握Linux平台下的TCP/IP网络编程核心技术,从基础的socket编程到高级I/O复用,从TCP协议原理到高性能服务器模型;深入理解TCP状态转移、拥塞控制、数据包捕获等机制;熟练掌握epoll等高性能I/O事件处理技术;具备独立开发高并发网络服务器、自定义协议应用、网络工具的能力

培训内容介绍

  1. TCP/IP协议族回顾
    TCP/IP协议栈分层;数据封装与分用;TCP协议特点:面向连接/可靠/流式;UDP协议特点:无连接/不可靠/报文;端口与套接字;网络字节序与主机字节序转换

  2. Socket编程基础
    socket函数;三种socket类型:SOCK_STREAM/SOCK_DGRAM/SOCK_RAW;地址结构:sockaddr_in/sockaddr_in6;bind绑定地址;listen监听;accept接受连接;connect发起连接;TCP三次握手与socket函数对应关系

  3. TCP客户/服务器模型
    迭代服务器模型;并发服务器模型(每客户一进程/线程);close与shutdown区别;TCP四次挥手与socket函数对应;TIME_WAIT状态与解决策略。

  4. UDP编程
    UDP的recvfrom/sendto函数;UDP服务器模型;UDP丢包处理;UDP与TCP选择依据;UDP广播与组播

  5. 套接字选项
    getsockopt/setsockopt;通用套接字选项:SO_REUSEADDR/SO_KEEPALIVE/SO_LINGER;TCP专用选项:TCP_NODELAY/TCP_CORK;IP选项:IP_TTL/IP_MULTICAST_TTL;选项设置时机。

  6. I/O多路复用
    I/O模型对比:阻塞/非阻塞/I/O多路复用/信号驱动/异步;select函数与限制;poll函数与改进;epoll核心优势:事件驱动/无轮询/O(1);epoll的LT与ET模式;epoll边缘触发注意事项

  7. Reactor与Proactor模式
    事件驱动设计思想;Reactor模式组件与流程;基于epoll的Reactor实现;Proactor模式与异步I/O;libevent/libev/libuv框架简介。

  8. 非阻塞I/O与超时控制
    设置非阻塞模式;非阻塞connect实现;非阻塞accept陷阱;超时控制方法:alarm+信号、select超时、setsockopt超时;超时重传机制实现。

  9. 高级I/O函数
    readv/writev分散聚合I/O;sendfile零拷贝;mmap与内存映射文件;splice管道数据搬移;tee-duplicate管道内容;fcntl高级控制。

  10. 原始套接字
    原始套接字创建与能力;IP_HDRINCL选项;数据包构造与发送;数据包捕获与分析;基于原始套接字的ping实现;基于原始套接字的traceroute实现

  11. 网络性能优化
    连接池技术;缓冲区优化;减少数据拷贝;零拷贝技术应用;内核参数调优(TCP相关);Nagle算法与延迟确认;TIME_WAIT重用与快速回收;网卡多队列与RPS。

  12. SSL/TLS安全编程
    OpenSSL库简介;SSL上下文创建;SSL握手与证书验证;加密传输实现;生成自签名证书;HTTPS服务器实现;安全编程注意事项。

  13. 综合实战:高性能Web服务器开发
    从零实现一个类Nginx的高性能Web服务器:

    • 架构设计:Reactor模式 + 线程池

    • I/O处理:epoll边缘触发 + 非阻塞I/O

    • 协议解析:HTTP请求解析(支持GET/POST)

    • 静态文件服务:文件发送、目录列表、MIME类型

    • 动态请求:CGI支持

    • 连接管理:连接池、超时处理、优雅关闭

    • 性能优化:sendfile零拷贝、内存池

    • 压力测试:对比标准服务器性能

    • 最终成果:可运行的Web服务器,支持并发访问

 

专题五:Linux内核编程入门培训课程

课程名称:Linux内核编程入门培训课程

培训对象

  • 具备C语言和系统编程基础的开发者

  • 希望进入内核开发领域的工程师

  • 驱动开发/嵌入式开发预备者

  • 对操作系统实现有浓厚兴趣的技术爱好者

培训目标
使学员初步掌握Linux内核开发的基本概念与方法,理解内核与用户空间的差异;熟练编写内核模块,掌握模块加载/卸载机制;了解内核内存管理、进程调度、中断处理等核心子系统;具备内核打印、调试、追踪的基本技能;能够开发简单的内核模块进行功能验证

培训内容介绍

  1. 内核开发环境准备
    内核源码获取与版本选择;内核源码目录结构;内核编译配置系统(Kconfig);编译内核(make);内核模块编译环境准备;搭建内核调试环境(QEMU + gdb)。

  2. 内核模块基础
    模块概念与优势;最简单的Hello模块编写;模块入口与出口:module_init/module_exit;模块信息声明:MODULE_LICENSE/MODULE_AUTHOR/MODULE_DESCRIPTION;模块参数传递:module_param;模块编译Makefile编写;insmod/rmmod/lsmod/modinfo命令

  3. 内核编程特性
    内核空间与用户空间区别;内核API使用注意事项;并发与并行在内核中;内核栈与用户栈;内核中的内存分配;内核打印:printk与日志级别;/proc与/sysfs文件系统基本使用。

  4. 内核内存管理基础
    内核内存分配API:kmalloc/kfree/vmalloc/vfree;kmalloc与vmalloc区别;GFP标志;内存池(mempool);slab分配器概念;内存泄漏检测基础。

  5. 内核进程管理基础
    内核线程创建:kthread_create/kthread_run;内核线程终止;进程上下文与中断上下文;工作队列(workqueue)基础;内核定时器使用

  6. 内核并发控制基础
    内核同步必要性;原子操作;自旋锁(spinlock)使用与场景;信号量(semaphore)与互斥锁(mutex)在内核中;读写锁;RCU机制简介

  7. 中断处理基础
    中断概念与类型;注册中断处理函数:request_irq/free_irq;中断处理函数编写规则;上半部与下半部;软中断/tasklet/工作队列对比

  8. 内核调试技术
    printk调试与日志级别;动态调试(dynamic debug);oops分析与定位;Magic SysRq键;kgdb/kdb调试;ftrace追踪;内核探测:kprobe/jprobe基础

  9. 设备模型基础
    Linux设备模型层次;总线/设备/驱动模型;kobject/ktype/kset;sysfs文件系统与设备模型关系;platform设备与驱动基础

  10. 字符设备驱动框架
    字符设备概念;设备号注册:register_chrdev_region/alloc_chrdev_region;cdev结构初始化与添加;文件操作集:file_operations实现;设备节点创建(手动/udev)

  11. 内核与用户空间通信
    copy_from_user/copy_to_user;通过/proc文件系统通信;通过ioctl命令通信;通过netlink套接字;mmap实现共享内存。

  12. 综合实战:简单字符设备驱动开发
    从零开发一个完整的字符设备驱动:

    • 功能定义:实现一个简单的消息缓存设备

    • 设备注册:动态分配设备号,创建cdev

    • 文件操作:实现open/release/read/write/ioctl

    • 数据管理:内核缓冲区管理

    • 并发控制:使用互斥锁保护数据

    • 用户测试:编写用户空间测试程序

    • 调试验证:printk跟踪,验证读写功能

    • 最终成果:可加载的字符设备驱动与测试程序

 

专题六:Linux设备驱动开发培训课程

课程名称:Linux设备驱动开发培训课程

培训对象

  • 具备内核模块开发基础的嵌入式工程师

  • 硬件驱动开发工程师

  • 物联网/智能设备开发者

  • 需要编写真实硬件驱动的技术人员

培训目标
使学员系统掌握Linux设备驱动开发的核心技术,深入理解设备驱动模型(platform/i2c/spi/pci等);掌握字符设备、块设备、网络设备驱动开发方法;熟悉设备树的使用与配置;具备中断处理、DMA、硬件访问等高级驱动技术;能够为常见外设(LED/按键/I2C传感器/SPI屏/网卡)编写稳定的驱动程序

培训内容介绍

  1. 驱动开发概述与硬件基础
    驱动程序角色与位置;内核与硬件交互方式;I/O端口与I/O内存访问(ioread/iowrite);GPIO控制基础;查看硬件信息(lspci/lsusb);开发板环境搭建(ARM开发板/QEMU模拟)

  2. 设备驱动模型深入
    设备驱动模型三要素:总线/设备/驱动;bus_type结构;device与device_driver;匹配过程;platform总线详解;platform_device与platform_driver;设备树与platform驱动关系

  3. 设备树(Device Tree)
    设备树起源与作用;dts/dtsi/dt文件;设备树语法;节点与属性;reg/interrupts/compatible属性;设备树编译与传递;在驱动中解析设备树;绑定文档编写

  4. 字符设备驱动进阶
    次设备号管理;私有数据(private_data)使用;阻塞I/O实现:等待队列;非阻塞I/O与poll机制;异步通知:fasync;llseek实现;ioctl命令编码规范

  5. 并发控制高级技术
    驱动中的并发场景;原子变量操作;自旋锁深入:读写自旋锁/顺序锁;互斥锁深入:实时互斥锁;完成量(completion);无锁编程简介;死锁检测与预防

  6. 中断处理深入
    中断上下文限制;中断共享;中断线探测;中断控制器;顶半部与底半部选择策略;软中断与tasklet实现;工作队列深入; threaded中断处理;中断性能优化

  7. 时间测量与定时
    内核时间测量;jiffies与HZ;获取当前时间;高精度定时器(hrtimer);延迟函数:udelay/mdelay/msleep;内核定时器使用;定时器精度与开销

  8. 内存管理与DMA
    DMA概念与原理;一致性DMA与流式DMA;DMA API使用:dma_alloc_coherent/dma_map_single;DMA池;DMA约束;Scatter/gather I/O;内核内存检测工具(Kmemleak)

  9. I2C驱动开发
    I2C协议回顾;I2C核心架构;I2C设备驱动编写(客户端);I2C控制器驱动编写(适配器);通过i2c-dev用户空间访问;实战:I2C温湿度传感器驱动

  10. SPI驱动开发
    SPI协议回顾;SPI核心架构;SPI设备驱动编写;SPI控制器驱动编写;SPI消息队列;实战:SPI LCD屏驱动

  11. 网络设备驱动
    网络驱动架构;net_device结构;sk_buff缓冲区管理;数据包发送与接收;NAPI机制;中断合并;以太网驱动示例;实战:虚拟网卡驱动

  12. 驱动调试与优化
    动态调试使用;ftrace跟踪驱动函数;perf性能分析;内存错误检测(KASAN/KMEMLEAK);锁定调试(LOCKDEP);驱动热插拔支持;电源管理基础;驱动稳定性测试

  13. 综合实战:多功能设备驱动开发
    为开发板(如IMX6ULL/Raspberry Pi)开发完整的多功能设备驱动:

    • 硬件平台:选定开发板与外设(LED/按键/GPIO/I2C传感器)

    • 设备树:编写设备树节点描述外设

    • platform驱动:实现驱动匹配与初始化

    • LED驱动:通过sysfs控制LED亮灭

    • 按键驱动:中断方式检测按键,上报事件

    • 传感器驱动:I2C接口读取温湿度数据

    • 并发控制:互斥锁保护共享资源

    • 调试验证:使用动态调试/ftrace分析驱动行为

    • 最终成果:完整的驱动代码、设备树、测试程序

 

专题七:Linux内核深度定制与性能优化培训课程

课程名称:Linux内核深度定制与性能优化培训课程

培训对象

  • 资深内核/驱动开发者

  • 系统架构师/SRE

  • 需要深度优化系统性能的工程师

  • 嵌入式系统裁剪与定制人员

培训目标
使学员深入理解Linux内核关键子系统的实现原理,掌握内核裁剪与定制方法;熟练使用perf/eBPF等高级性能分析工具;具备内核参数调优、调度策略选择、内存管理优化、I/O栈优化等性能调优能力;能够针对特定场景(高并发/实时性/低功耗)进行内核深度定制

培训内容介绍

  1. 内核源码分析环境
    内核源码获取与版本管理;源码阅读工具(Vim+ctags/VSCode+clangd);内核文档体系;Kconfig与Makefile深入;内核邮件列表与补丁流程;内核开发社区规范。

  2. 内核配置与裁剪
    内核配置选项详解;内核模块依赖分析;内核裁剪方法论;编译优化选项;内核镜像大小优化;启动时间优化;实时内核(PREEMPT_RT)配置。

  3. 进程调度器深入
    CFS调度器原理;调度类(dl_sched_class/rt_sched_class/fair_sched_class/idle_sched_class);调度策略与优先级;组调度(cgroup);负载均衡算法;NUMA调度优化;实时性优化策略。

  4. 内存管理深入
    物理内存管理:伙伴系统与页分配;slab分配器实现(SLUB/SLAB);虚拟内存管理:VMA操作;缺页异常处理;内存回收机制(kswapd);透明大页(THP);内存规整(compaction);内存热插拔

  5. 文件系统与块层
    VFS核心数据结构;文件系统挂载流程;页缓存与回写机制;块I/O层(BIO);I/O调度器算法与选型(CFQ/Deadline/NOOP);块设备多队列(blk-mq);直接I/O与异步I/O。

  6. 网络协议栈深入
    套接字缓冲区(sk_buff)结构;协议栈接收路径(NAPI);TCP拥塞控制算法(Reno/Cubic/BBR);网络命名空间;netfilter钩子与iptables实现;网络性能调优参数。

  7. eBPF与追踪技术
    eBPF架构与原理;bpftool工具;bcc工具集使用;编写eBPF程序;kprobe/uprobe/tracepoint;性能监控与追踪;网络过滤(XDP)

  8. perf性能分析
    perf子系统架构;perf stat/c记录与分析;perf report/annotate;perf top实时监控;perf probe动态探针;perf与火焰图生成;性能瓶颈定位方法。

  9. 内核同步与锁优化
    锁竞争分析;锁粒度优化;RCU机制深入;无锁数据结构;读写锁vs互斥锁性能对比;缓存行对齐与伪共享;percpu变量使用。

  10. 实时性优化
    实时内核特性;PREEMPT_RT补丁;实时任务调度;高精度定时器;中断线程化;锁定延迟优化;实时性测试工具(cyclictest);硬实时与软实时场景。

  11. 功耗与能效优化
    电源管理框架(PM);cpuidle与cpufreq调控器;设备运行时电源管理(runtime PM);suspend-to-ram/resume流程;能源感知调度(EAS);功耗测量工具。

  12. 安全加固与漏洞缓解
    内核安全特性:KASLR/stack protector/fortify;SELinux/AppArmor配置;内核地址空间布局随机化;控制流完整性(CFI);内核模块签名;常见漏洞类型与防护。

  13. 综合实战:定制高并发服务器内核
    针对高并发网络服务器场景进行内核深度定制:

    • 场景分析:百万并发、低延迟、高吞吐

    • 内核裁剪:移除不必要功能(文件系统/驱动)

    • 调度优化:设置CFS调度延迟,优化负载均衡

    • 内存优化:调整虚拟内存参数,配置大页

    • 网络优化:定制TCP/IP参数,启用XDP

    • I/O优化:选择合适I/O调度器,配置blk-mq

    • 追踪分析:使用perf/eBPF定位瓶颈

    • 基准测试:对比优化前后性能指标

    • 最终交付:定制内核镜像与优化报告

 

专题八:嵌入式Linux开发实战培训课程

课程名称:嵌入式Linux开发实战培训课程

培训对象

  • 嵌入式系统工程师

  • 物联网设备开发者

  • 智能硬件产品研发人员

  • 希望从应用开发转向底层系统开发的工程师

培训目标
使学员系统掌握嵌入式Linux开发的完整流程,包括交叉编译环境搭建、bootloader移植、内核配置、根文件系统构建、驱动开发、应用开发等全栈技能;熟悉主流嵌入式硬件平台(ARM Cortex-A系列);具备独立完成嵌入式产品从0到1的开发能力,能够解决实际开发中的硬件-软件协同问题

培训内容介绍

  1. 嵌入式系统概述
    嵌入式系统定义与特点;嵌入式Linux vs RTOS;常见嵌入式硬件平台(ARM/RISC-V/MIPS);开发板选型(IMX6ULL/Raspberry Pi/STM32MP1);嵌入式开发流程概览。

  2. 交叉编译环境搭建
    交叉编译概念;工具链选择:Linaro/Buildroot/Yocto;安装交叉编译工具链;配置环境变量;验证交叉编译;构建Hello程序并运行。

  3. Bootloader移植与配置
    Bootloader作用;U-Boot概述;U-Boot源码结构;U-Boot配置与编译;U-Boot常用命令;U-Boot环境变量;内核启动参数设置;设备树传递;启动介质选择(SD卡/eMMC/NAND)。

  4. 内核移植与配置
    获取内核源码;内核配置选项;设备树编写与修改(时钟/引脚复用/外设节点);内核编译;内核烧写与启动;内核启动日志分析;启动过程优化。

  5. 根文件系统构建
    根文件系统目录结构;BusyBox构建最小根文件系统;交叉编译常用库(glibc/uClibc/musl);设备节点创建;init进程与inittab;配置文件(fstab/profile);使用Buildroot构建完整系统;Yocto项目简介

  6. 嵌入式驱动开发基础
    硬件外设访问方式;GPIO控制驱动与sysfs接口;LED驱动实战;按键驱动(中断方式);PWM驱动(背光/电机);LCD显示驱动基础

  7. 嵌入式应用开发
    嵌入式应用特点;内存限制与优化;文件I/O与数据存储;多线程编程;网络编程(Socket/HTTP/MQTT);看门狗应用;日志记录与调试

  8. 物联网通信协议
    MQTT协议原理;Mosquitto部署;MQTT客户端编程;CoAP协议;HTTP/HTTPS通信;BLE与WiFi配置;NB-IoT/4G模块控制;云平台接入(阿里云IoT/OneNET/AWS IoT)。

  9. 实时性增强
    PREEMPT_RT实时内核配置;RT任务设计;实时性测试;避免优先级反转;锁延迟优化;中断响应时间测量。

  10. 功耗管理
    嵌入式设备功耗挑战;CPU频率动态调整(cpufreq);设备运行时电源管理;休眠与唤醒;唤醒源配置;电池管理;功耗测量工具。

  11. 安全启动与固件升级
    安全启动链;签名与验证;可信执行环境;固件升级方案设计(OTA);差分升级;回滚保护;加密存储。

  12. 调试与性能分析
    嵌入式调试手段;JTAG/SWD调试;内核日志分析;应用程序调试(gdbserver);性能剖析(perf on embedded);内存使用分析;系统稳定性测试。

  13. 综合实战:智能家居网关开发
    基于ARM开发板(如IMX6ULL/Raspberry Pi)开发完整的智能家居网关:

    • 硬件平台:选定开发板,外接Zigbee/WiFi模块、LCD屏、按键、LED

    • 系统构建:U-Boot配置+内核定制+Buildroot根文件系统

    • 驱动开发:GPIO按键/LED驱动,SPI LCD驱动

    • 协议接入:MQTT协议接入,CoAP本地设备发现

    • 云平台:接入阿里云IoT平台,实现设备管理

    • 应用开发:多线程(网络监听+本地控制+LCD显示)

    • OTA升级:实现网络固件升级功能

    • 安全设计:安全启动配置,通信加密

    • 调试优化:性能测试、稳定性测试、功耗优化

    • 最终交付:完整系统镜像、源代码、设计文档





如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训
除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916
技术服务需求表点击在线申请

服务特点:
海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。

专家力量:
中国科学院软件研究所,计算研究所高级研究人员
oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家
中科信软培训中心,资深专家或讲师
大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富
多年实际项目经历,大型项目实战案例,热情,乐于技术分享
针对客户实际需求,案例教学,互动式沟通,学有所获
报名表下载
联系我们 更多>>

咨询电话010-62883247

                4007991916

咨询邮箱:soft@info-soft.cn  

 

  微信咨询

随时听讲课

聚焦技术实践

订制培训 更多>>