软件文档
目录
前言
本文将通过若干个实验,帮助读者快速掌握嵌入式Linux BSP开发基本知识 本文并非按顺序讲解,读者可以按兴趣选择阅读。
实验环境:
设施 | 型号 |
---|---|
NINJAR-lite |
F1C200s ARM9 64MB DDR1 |
Linux |
6.5.1 stable |
uboot |
v2023.07.02 |
传送门
裸机
【未完】第一个裸机程序:blink
【待添加】初始化时钟: 程序跑的更快了
外设
【待添加】初始化UART: 跟pc打个招呼吧
【待添加】初始化I2C: 连接更多的设备
【待添加】初始化SPI: 连接更多的设备
进阶
Bring Up
【待添加】Bring Up: 如何适配主线linux
【待添加】Bring Up: 如何适配主线uboot
【待添加】Bring Up: 如何适配主线buildroot
【待添加】Bring Up: 如何适配主线yocto
uboot
SPL
【待添加】uboot: 如何添加一个command
【待添加】uboot: 如何编写一个驱动
驱动实战
【未完】 uboot驱动实战: 为SPI TFT添加显示支持
linux
应用开发
【待添加】linux应用开发: LVGL : 移植
【未完】linux应用开发: Rust : 环境搭建
【未完】linux应用开发: 通过 i2c-dev 节点访问设备
【未完】linux应用开发: v4l2 数据获取流程
内核开发
【未完】linux内核开发: 神奇的initcall调用
【待添加】linux内核开发: reboot & poweroff 流程修改
【待添加】linux内核开发: 添加一个系统调用
【待添加】linux内核开发: 中断流程
内核接口
【待添加】linux内核接口: ioctl
【待添加】linux内核接口: procfs
【待添加】linux内核接口: sysfs
【待添加】linux内核接口: 中断 interrupt
【待添加】linux内核接口: 等待队列 waitqueue
【待添加】linux内核接口: 工作队列 workqueue
【待添加】linux内核接口: 链表 link list
【待添加】linux内核接口: 内核线程 kernel thread
【待添加】linux内核接口: 小任务 tasklet
【待添加】linux内核接口: 自旋锁 spinlock
【待添加】linux内核接口: 互斥体 mutex
【待添加】linux内核接口: 原子量 atom
【待添加】linux内核接口: 定时器 timer
【待添加】linux内核接口: 完成 completion
内核配置
内核子系统
【待添加】Clock 子系统
【待添加】Interrupt 子系统
【待添加】电源管理 子系统
【待添加】GPIO 子系统
【待添加】Pinctrl 子系统
【待添加】Display 子系统
【待添加】V4L2 子系统
【待添加】ALSA 子系统
【待添加】Input 子系统
【待添加】I2C 子系统
【待添加】SPI 子系统
【待添加】IIO 子系统
【待添加】Regmap 子系统
驱动接口
【待添加】linux驱动接口: poll
【待添加】linux驱动接口: e-poll
【待添加】linux驱动接口: select
【待添加】linux驱动接口: softirq
【待添加】linux驱动接口: threaded irq
驱动适配
【待添加】linux驱动适配: i2c: iio: bmp280
【待添加】linux驱动适配: fbtft: ssd1306
【待添加】linux驱动适配: fbtft: st7735r
【未完】linux驱动适配: fbtft: st7789v
【待添加】linux驱动适配: fbtft: ssd1327
【待添加】linux驱动适配: fbtft: nv3030b
【未完】linux驱动适配: sun4i-lradc-keys
【未完】linux驱动适配: rtl8188eus
【未完】linux驱动适配: USB Gadget g_ether
驱动开发
【待添加】linux驱动开发: 编写一个 cpufreq 驱动
【待添加】linux驱动开发: 编写一个 字符设备驱动
【待添加】linux驱动开发: 编写一个 Misc设备驱动
【待添加】linux驱动开发: 编写一个 led 驱动
【待添加】linux驱动开发: 编写一个 按键 驱动
【待添加】linux驱动开发: 编写一个 I2C 控制器驱动
【待添加】linux驱动开发: 编写一个 I2C 设备驱动
【待添加】linux驱动开发: 编写一个 SPI 控制器驱动
【待添加】linux驱动开发: 编写一个 SPI 设备驱动
【待添加】linux驱动开发: 编写一个 DMA 控制器驱动
【待添加】linux驱动开发: 编写一个 FrameBuffer 设备驱动
【待添加】linux驱动开发: 编写一个 USB 设备驱动
电源管理
杂项
【未完】linux杂项: 命令行邮箱开发环境配置
【未完】linux杂项: 向社区贡献代码
【未完】linux杂项: 修改控制台字体
【未完】linux杂项: 修改控制台光标行为
rootfs
Raw
【待添加】rootfs: jffs2 的使用
【未完】rootfs: UBIFS 的使用
【未完】rootfs: SquashFS 的使用
【未完】rootfs: overlayfs 的使用
Buildroot
Yocto
【待添加】Yocto: 什么是Yocto?
【待添加】Yocto: 新建一个Yocto工程
【待添加】Yocto: 如何在现有的工程上开发
【未完】Yocto: 如何添加一个layer
【待添加】Yocto: 如何编写一个Recipe
【未完】Yocto: 修改SDK环境加载脚本中的flags
debian
【未完】使用debootstrap构建debian根文件系统
【待添加】使用multistrap构建emdebian文件系统
打包
【待添加】手动: 将固件打包成SPI-Nor格式
【待添加】手动: 将固件打包成SPI-Nand格式
【待添加】手动: 将固件打包成sdcard/eMMC格式