本系列整理一系列嵌入式Linux学习和开发中应用的技术,按照功能划分为SDK平台构建、嵌入式Linux运行平台构建、驱动开发技术和应用开发技术;涉及嵌入式Linux开发中的主要技术。
- SDK平台构建,包含Linux平台安装(Ubuntu、Arch Linux、centos等)、软件和支持库安装、交叉编译、shell语法等,以及如何在这些基础上快速部署SDK方案。
- 嵌入式Linux运行平台构建,包含u-boot移植和框架、kernel移植和框架、rootfs文件系统构建方法qemu实用虚拟机启动Linux平台等。
- 驱动开发技术,包含Linux内核驱动接口、设备树语法和设备树接口、字符设备、块设备和网络设备等的实现。
- 应用开发技术,Linu应用层接口、C/C++应用开发、Linux平台调试方法、Linux平台GUI开发技术以及Web应用开发等。
因为本系列涉及知识点较多,来自于个人实践和理解,难免有纰漏和不足之处,欢迎各位批评指正。
如果有疑问,请提issue或加**微信:"sxc123456zc"**进行讨论,更多资料分享,可关注微信公众号: <嵌入式技术总结>。
目录如下所示。
-
- ch02-01.makefile脚本语法
- ch02-02.menuconfig界面管理
- ch02-03.uboot移植
- ch02-04.uboot环境和命令
- ch02-05.uboot执行流程分析
- ch02-06.linux-kernel移植方法
- ch02-07.内核执行流程分析
- ch02-08.文件系统构建综述
- ch02-09.基于busybox构建文件系统
- ch02-10.基于buildroot构建文件系统
- ch02-11.基于Debian构建文件系统
- ch02-12.基于ubuntu构建文件系统
- ch02-13.支持qt的linux文件系统构建
- ch02-14.基于openwrt构建系统平台
- ch02-15.基于armbian构建系统平台
- ch02-16.安卓sdk构建
- ch02-17.u-boot spl和TF-A机制
- ch02-18.异构多核芯片功能应用
- ch02-19.虚拟机和沙箱启动
- ch02-x1.imx6ull芯片平台编译方法
- ch02-x2.瑞芯微rk3568平台编译方法
- ch02-x3.全志t113i平台编译方法
- ch02-x4.全志h618平台编译方法
- ch02-x5.从stm32移植u-boot理解启动流程
- ch02-x6.uboot命令行脚本和设备树overlay实现
- ch02-xz.系统平台常见问题总结
-
- ch03-01.设备树说明
- ch03-02.arm内核和硬件分析
- ch03-03.字符设备驱动说明
- ch03-04.pinctrl和gpio子系统
- ch03-05.input输入子系统
- ch03-06.驱动中断管理
- ch03-07.i2c设备和驱动管理框架
- ch03-08.spi设备和驱动管理框架
- ch03-09.iio子系统驱动框架和ADC模块驱动
- ch03-10.regmap驱动框架说明
- ch03-11.rtc硬件管理框架
- ch03-12.pwm子系统设备框架
- ch03-13.背光驱动管理框架
- ch03-14.系统温控驱动管理框架
- ch03-15.watchdog设备管理框架
- ch03-16.random随机数模块
- ch03-17.regulator电源管理
- ch03-18.串口tty管理框架
- ch03-19.nvmem子系统管理框架
- ch03-20.摄像头CSI接口管理驱动
- ch03-21.usb驱动管理框架
- ch03-22.can网络管理框架
- ch03-23.网络设备驱动实现
- ch03-24.图形显示FrameBuffer和DRM管理框架
- ch03-25.音频audio codec输出模块
- ch03-26.hdmi输出设备驱动说明
- ch03-27.pcie设备接口驱动
- ch03-28.系统时钟和opp管理模块
- ch03-29.系统模块时钟管理接口
- ch03-30.npu驱动应用说明
- ch03-31.块设备驱动和RAM模拟实现
- ch03-32.块设备驱动和内核中SD卡驱动解析
- ch03-x1.驱动基础接口
- ch03-x2.驱动设备树接口
- ch03-x3.驱动基础devm接口
- ch03-x4.驱动扩展devm接口
- ch03-x5.驱动并发接口
- ch03-x6.imx6ull设备树分析
- ch03-x7.t113i设备树分析
- ch03-x8.rk3568设备树分析
- ch03-x9.设备驱动中的并发控制
- ch03-xa.多核异构芯片驱动开发
- ch03-xz.驱动问题分析和解决
-
- ch04-01.c++语法说明
- ch04-02.使用gdb进行本地和远程调试
- ch04-03.时间time处理接口
- ch04-04.socket常用接口实现
- ch04-05.进程间通讯方法
- ch04-06.linux应用硬件访问方法
- ch04-07.基于C++实现web服务器操作硬件
- ch04-08.framebuffer应用实现
- ch04-09.QT应用界面功能说明
- ch04-10.LVGL移植和图形应用开发
- ch04-11.ffmpeg网络推流应用实现
- ch04-12.mqtt组网和客户端应用实现
- ch04-13.modbus应用开发实现
- ch04-14.Python应用开发
- ch04-15.基于v4l2的摄像头开发
- ch04-16.综合应用开发项目
- ch04-x1.Linux应用基础接口整理
- ch04-x2.Linux应用进程交互接口整理
- ch04-x3.基于cmake构建软件项目
本系列主要按照如何构建一个完整嵌入Linux产品应用的开发流程来说明,而不是以难易度进行先后顺序的整理。如果在学习和理解中遇到难题,可以跳过直接进行后续的学习,从简单的入手,熟悉基础知识后可能更高效。另外嵌入式Linux系统是用于设计产品的技术,只依靠文档学习是远远不够的,需要在实际硬件平台调试验证,理解源码,自己设计开发应用,才能够深入理解掌握。可以看到本系列文章涉及内容广泛,限于篇幅部分技术只能浅尝辄止,在讲解相应章节时也会列出我在整理以及开发时涉及的书籍,可以同步去学习。
# github地址
git clone https://github.com/zc110747/build_embed_linux_system.git另外本项目也配合产品应用项目用于验证相关技术知识,具体如下。
# 用于验证此文档配套的嵌入式Linux应用项目
git clone http://github.com/zc110747/remote_manage.git主要目标:
- 能够安装Linux系统,并熟悉命令基本操作
- 掌握Linux下软件安装方法(apt-get或yum),效率类工具应用
- 理解环境变量的基本概念,交叉编译的基础
主要内容:
- 虚拟机使用以及安装Linux系统
- 常用指令熟悉(cd, mv, cp, echo, rm, chmod...)
- 常用软件查询,安装和应用(ssh, tftp, nfs, samba...)
- 能够使用gcc和Makefile构建应用
主要目标:
- 能够完成嵌入式Linux系统构建,并更新到硬件中实际运行
- 熟悉在U-Boot和Linux下的环境变量参数和命令操作
- 理解驱动的框架,参考例程实现字符型设备驱动
- 处理理解设备树的概念,并应用到驱动开发中
主要内容:
- 熟悉U-Boot,Kernel和rootfs基本概念
- 掌握menuconfig配置修改方法及Makefile编译
- 熟悉至少一款芯片的下载更新方法(包含不限于sdcard, tftp,nfs等)
- 尝试至少一种文件系统的编译构建过程(busybox, buildroot, yocto, Debian, ubuntu或android)
- 掌握U-Boot和Linux平台中的主要环境变量和系统命令
- 参考源码实现字符型设备驱动,完成驱动加载,移除, 设备的创建过程
主要目标:
- 掌握Linux平台下应用的常见接口
- 能够构建嵌入式Linux应用,模块化和Makefile构建
- 常见软件和库的交叉编译方法,添加应用支持
- 掌握Linux平台下的代码调试能力
- 基于C++实现Linux平台应用开发
主要内容:
- Linux应用层API接口掌握
- Makefile语法和项目构建方法
- 基于gcc实现Linux平台应用
- Linux平台下库的交叉编译和应用(json, mqtt, asio, fmt...)
主要目标:
- 掌握Linux主要驱动的开发方法, 内核提供驱动的接口
- 理解SOC结构,包含core,clock,peripheral等.
- 理解中断机制,掌握内核常用中断相关接口使用
- 能够实现大部分字符型驱动,掌握主要硬件框架的驱动开发方法
- 能够基于常用子系统开发驱动
- 掌握并发控制相关接口应用
主要内容:
- Linux内核接口功能和使用说明
- Linux内核并发控制接口说明
- 中断机制和相关接口实现
- Cortex-A芯片设计和内核资源说明
- spi, i2c框架下的驱动开发
- iio, rtc子系统下的驱动开发
主要目标:
- APP功能框架构建和代码实现
- 实现基于Qt C++的应用实现
- 基于node和vue的web应用构建
- 系统快速部署和编译命令实现
主要内容:
- 应用需求分析,实现APP功能框架,分解模块
- 基于Qt C++的方法实现
- 基于node和vue的前后端框架实现
- 熟练掌握shell语法,基础上构建快速部署方案
- 基于打印或gdb的调试方法学习
主要目标:
- 掌握块设备,网络设备的驱动开发
- 实现基于DRM框架的驱动开发
- U-Boot移植,理解U-Boot执行流程
- Kernel移植过程,理解Kernel执行流程
- 完成至少一款芯片的bringup完整流程
- 支持文件系统构建,busybox, debian, ubuntu和android.
- 基于qemu的仿真环境构建系统
主要内容:
- 块设备和网络设备驱动
- drm框架驱动设备开发
- U-Boot移植方法
- U-Boot执行流程分析
- Kernel移植方法
- Kernel执行流程分析
- 文件系统移植和构建方法
- qemu虚拟机模拟嵌入式Linux系统运行