嵌入式Linux应用开发工程师、物联网应用开发人员、需要掌握Linux环境下嵌入式开发的软件工程师。
理解嵌入式Linux系统的组成(引导程序、内核、根文件系统)。
掌握Linux环境下C/C++应用程序开发方法与交叉编译技术。
能够独立完成基于嵌入式Linux的应用程序开发与调试。
嵌入式Linux概述:嵌入式操作系统的分类(RTOS vs GPOS);Linux在嵌入式领域的优势(开源、可裁剪、驱动丰富);嵌入式Linux的应用领域(消费电子、工业控制、网络设备、汽车电子);主流嵌入式Linux发行版(Yocto、Buildroot、OpenWrt)。
开发环境搭建:开发主机与目标板的配置;交叉编译工具链的安装与配置;串口终端(Minicom、Putty)的使用;网络文件系统(NFS)的搭建;TFTP服务器的配置。
Linux基础命令:文件操作命令(ls、cd、cp、mv、rm、cat、vi);权限管理命令(chmod、chown、chgrp);进程管理命令(ps、top、kill);网络命令(ifconfig、ping、netstat)。
交叉编译:交叉编译的概念(宿主机-目标机);交叉编译器的命名规则(arm-linux-gnueabihf-gcc);Makefile的编写;静态编译与动态编译的区别;交叉编译常用库(zlib、openssl、sqlite)。
Shell脚本编程:Shell脚本的基本结构;变量与数组;控制结构(if、case、for、while);函数定义与调用;正则表达式与文本处理(grep、sed、awk);脚本的调试方法。
文件I/O编程:Linux文件I/O与标准C库文件I/O的对比;文件描述符的概念;open、read、write、lseek、close函数的使用;文件的阻塞与非阻塞操作;文件锁的应用。
进程管理:进程的概念与进程控制块(PCB);进程的创建(fork、vfork、clone);进程的退出与等待(exit、wait、waitpid);exec函数族的使用;守护进程的编写。
进程间通信(IPC):管道(匿名管道、命名管道FIFO);信号(signal、sigaction);消息队列;共享内存;信号量;Socket通信基础(本地Socket、网络Socket)。
多线程编程:线程的概念与线程模型;POSIX线程库(pthread)的使用;线程的创建、终止与同步(互斥锁、条件变量、读写锁、信号量);线程安全与可重入函数。
网络编程:TCP/IP协议栈基础;Socket编程接口(socket、bind、listen、accept、connect、send、recv);TCP服务器/客户端的实现;UDP通信的实现;并发服务器的设计(多进程、多线程、select/poll/epoll)。
嵌入式数据库:嵌入式数据库的选择(SQLite);SQLite的安装与交叉编译;SQLite的C语言API(sqlite3_open、sqlite3_exec、sqlite3_prepare_v2);数据库在嵌入式应用中的数据管理。
综合实战项目:典型嵌入式Linux应用项目(如网络摄像头服务器、智能家居网关、工业数据采集器)的完整开发流程,包含开发环境搭建、应用程序编写、交叉编译、目标板调试与功能验证。