“ELADCMSecondEdition”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) |
2019年12月17日 (二) 09:40的版本
__NOTITLE__
__NOTITLE__
目录
《嵌入式Linux应用开发完全手册第2版 韦东山全系列视频文档全集》目录索引
第一篇 韦东山全系列视频介绍及资料下载
- 1. 全系列视频介绍
- 1.1 嵌入式Linux发展迅速,学习方法要与时俱进
- 1.1.1 嵌入式Linux变化巨大
- 1.1.1.1 基本系统能用
- 1.1.1.2 基础驱动弱化;高级驱动专业化
- 1.1.1.3 项目为王
- 1.1.1.4 调试很重要
- 1.1.2 嵌入式 Linux 的学习方法要与时俱进
- 1.1.1 嵌入式Linux变化巨大
- 1.2 快速入门
- 1.3 实战项目
- 1.4 驱动大全
- 1.5 专题
- 1.1 嵌入式Linux发展迅速,学习方法要与时俱进
- 2. 资源下载方法
- 2.1 GIT使用简明教程
- 2.1.1 安装git
- 2.1.2 使用示例:获得全部源码
- 2.2 百度网盘使用教程
- 2.3 本教程所有资料介绍
- 2.3.1 录制视频过程中编写的文档、源码
- 2.3.2 录制的视频 和 开发板的 BSP 包
- 2.4 手册、文档、源码的下载与更新
- 2.1 GIT使用简明教程
第二篇 Linux 基本操作与开发工具使用
- 1. 介绍与引导
- 2. Linux基本操作
- 2.1 Ubuntu桌面简单操作
- 2.1.1 Ubuntu和Windows的最大差别:目录
- 2.1.2 启动终端
- 2.1.3 设置屏幕
- 2.1.4 设置网络
- 2.2 Linux命令
- 2.2.1 Linux命令的提示符
- 2.2.2 Linux命令的格式
- 2.2.3 记住命令并不难, 先背几个单词
- 2.2.4 绝对路径和相对路径
- 2.2.5 目录/文件操作命令
- 2.2.6 查找/搜索命令
- 2.2.7 压缩/解压命令
- 2.2.8 网络命令
- 2.2.9 其他命令
- 2.3 vi编辑器
- 2.1 Ubuntu桌面简单操作
- 3. 虚拟机和Ubuntu的网络设置
- 3.1 Windows通过WIFI上网,开发板离无线路由器很近
- 3.1.1 连接网线
- 3.1.2 VMWare里选择WIFI网卡
- 3.1.3 设置IP
- 3.1.3.1 设置Windows IP
- 3.1.3.2 设置Ubuntu IP
- 3.1.3.3 设置开发板IP
- 3.1.4 验证
- 3.2 Windows通过WIFI上网,开发板离无线路由器很远
- 3.2.1 连接网线
- 3.2.1.1 Windows电脑和开发板的网线,都接到另一个集线器或路由器
- 3.2.1.2 电脑和开发板用网线直连(绝对不建议)
- 3.2.2 VMWare里选择有线网卡
- 3.2.3 设置IP
- 3.2.3.1 设置Windows IP
- 3.2.3.2 设置Ubuntu IP
- 3.2.3.3 设置开发板IP
- 3.2.4 验证
- 3.2.1 连接网线
- 3.3 Windows不使用WIFI网卡
- 3.3.1 连接网线
- 3.3.1.1 Windows通过有线网卡接路由器上网,开发板离路由器很近
- 3.3.1.2 Windows通过有线网卡接路由器上网,开发板离路由器很远
- 3.3.1.3 不上网,Windows电脑和开发板的网线,都接到集线器或路由器
- 3.3.1.4 电脑和开发板用网线直连(不建议)
- 3.3.2 VMWare里选择有线网卡
- 3.3.3 设置IP
- 3.3.3.2 设置Windows IP
- 3.3.3.3 设置Ubuntu IP
- 3.3.3.4 设置开发板IP
- 3.3.4 验证
- 3.3.1 连接网线
- 3.3.4 只想让Ubuntu能上网、能跟Windows互联(校园网必看)
- 3.3.4.1 VMWare的3种网络模式简介
- 3.3.4.2 NAT模式适用情况
- 3.3.4.3 NAT模式的使用:VMWare和Ubuntu的设置
- 3.3.4.4 测试
- 3.5 Windows和Ubuntu之间远程操作
- 3.5.1 使用MobaXterm登录Ubuntu
- 3.5.2 使用FileZilla与Ubuntu传输文件
- 3.6 开发板和Ubuntu之间传文件
- 3.6.1 开发板通过NFS挂载Ubuntu的目录
- 3.6.1.1 在Ubuntu上安装、配置NFS服务
- 3.6.1.2 在开发板上挂载Ubuntu的NFS文件系统
- 3.6.1 开发板通过NFS挂载Ubuntu的目录
- 3.7 常见问题
- 3.1 Windows通过WIFI上网,开发板离无线路由器很近
- 4. 开发工具的使用
- 4.1 MobaXterm的使用
- 4.1.1 安装及获取ubuntuIP地址
- 4.1.2 新建SSH连接
- 4.1.3 新建串口连接
- 4.1.3.1 安装USB串口模块驱动
- 4.1.3.2 连接串口线
- 4.1.3.3 设置使用MobaXterm
- 4.3 使用FileZilla在Windows和Ubuntu之间传文件
- 4.4 使用SourceInsight阅读、编辑源码
- 4.4.1 安装并新建项目
- 4.4.2 Source Insight操作示例
- 4.4.3 Source Insight快捷键
- 4.1 MobaXterm的使用
第三篇 开发板快速上手
- 1. 资料下载
- 2. 接线与启动
- 2.1 100ASK_AM335X开发板
- 2.2 Firefly-rk3288开发板
- 2.3 roc-rk3399-pc开发板
- 2.4 IMX6ULL开发板
- 3. 系统烧写
- 3.1 100ASK_AM335X开发板
- 3.2 Firefly-rk3288开发板
- 3.3 roc-rk3399-pc 开发板
- 3.4 IMX6ULL开发板
- 4 部件实验
- 4.1 100ASK_AM335X开发板
- 4.1.1 网卡接口测试
- 4.1.2 USBhost接口测试
- 4.1.3 OTG接口测试
- 4.1.3.1 otg device模式测试
- 4.1.3.2 otg host模式
- 4.1.4 耳机接口测试
- 4.1.5 LCD显示测试
- 4.1.6 触摸屏校准测试
- 4.1.7 屏幕背光调节
- 4.1.8 RTC测试
- 4.1.9 按键测试
- 4.1.10 LED灯测试
- 4.1.11 串口测试
- 4.1.12 RS485测试
- 4.1.13 Can功能测试
- 4.2 Firefly-rk3288开发板
- 4.2.1 网卡接口测试
- 4.2.2 4.2.2 USB Host接口测试
- 4.2.3 OTG接口测试
- 4.2.3.1 otg device模式测试:
- 4.2.3.2 otg host模式:
- 4.2.4 耳机接口测试
- 4.2.5 RTC测试
- 4.2.6 按键测试
- 4.2.7 LED灯测试
- 4.2.8 串口测试
- 4.3 roc-rk3399-pc 开发板
- 4.3.1 网卡接口测试
- 4.3.2 USB Host接口测试
- 4.3.3 OTG接口测试
- 4.3.3.1 otg device模式测试
- 4.3.3.2 otg host模式
- 4.3.4 RTC测试
- 4.3.5 按键测试
- 4.3.6 LED灯测试
- 4.3.7 串口测试
- 4.1 100ASK_AM335X开发板
- 5. 后续开发准备工作:准备交叉编译工具链、编译内核
- 5.1 100ASK_AM335X开发板
- 5.2 Firefly-rk3288 开发板
- 5.3 Roc-rk3399-pc 开发板
- 5.4 IMX6ULL开发板
第四篇 嵌入式 Linux 应用开发基础知识
- 1. HelloWorld背后没那么简单
- 1.1 交叉编译hello.c
- 1.2 请回答这几个问题
- 1.3 演示
- 2 GCC编译器的使用
- 2.1 配套视频内容大纲
- 2.1 GCC编译过程
- 2.2 GCC总体选项(Overall Option)
- 2.3 警告选项(Warning Option)
- 2.4 调试选项(Debugging Option)
- 2.5 优化选项(Optimization Option)
- 2.5 链接器选项(Linker Option)
- 2.7 目录选项(Directory Option)
- 2.8 ld/objdump/objcopy选项
- 3. Makefile的使用
- 3.1 配套视频内容大纲
- 3.1.1 Makefile规则与示例
- 3.1.2 ① 为什么需要Makefile
- 3.1.3 ② Makefile其实挺简单
- 3.1.3 ③ 先介绍Makefile的2个函数
- 3.1.4 ④ 一步一步完善Makefile
- 3.1.2 通用Makefile的使用
- 3.1.3 通用Makefile的解析
- 3.1.1 Makefile规则与示例
- 3.1 Makefile规则
- 3.2 Makefile文件里的赋值方法
- 3.3 Makefile常用函数
- 3.1.1 字符串替换和分析函数
- 3.1.2 文件名函数
- 3.1.3 其他函数
- 3.1 配套视频内容大纲
- 4. 文件IO
- 4.1 文件从哪来?
- 4.2 怎么访问文件?
- 4.3 怎么知道这些函数的用法?
- 4.4 系统调用函数怎么进入内核?
- 4.5 内核的sys_open、sys_read会做什么?
第五篇 嵌入式 Linux 驱动开发基础知识
- 1. 嵌入式后Linux驱动开发基础知识的引导与说明
- 1.1 打算讲什么、怎么讲?
- 1.2 需要做什么准备工作
- 2. Hello驱动(不涉及硬件操作)
- 2.1 APP打开的文件在内核中如何表示
- 2.2 打开字符设备节点时,内核中也有对应的struct file
- 2.3 请猜猜怎么编写驱动程序
- 2.4 请不要啰嗦,表演你的代码吧
- 2.5 Hello驱动中的一些补充知识
- 2.5.1 module_init/module_exit的实现
- 2.5.2 register_chrdev的内部实现
- 2.5.3 class_destroy/device_create浅析
- 3. 硬件知识_LED原理图
- 3.1 先来讲讲怎么看原理图
- 4. 普适的GPIO引脚操作方法
- 4.1 GPIO模块一般结构
- 4.2 GPIO寄存器操作
- 4.3 GPIO的其他功能:防抖动、中断、唤醒
- 5. 具体单板的GPIO操作方法
- 5.1 AM335X的GPIO操作方法
- 5.1.1 AM335X的GPIO模块结构
- 5.1.2 AM335X的GPIO相关寄存器
- 5.1.3 set-and-clear协议
- 5.2 RK3288的GPIO操作方法
- 5.2.1 RK3288的GPIO模块结构
- 5.2.2 RK3288的GPIO相关寄存器
- 5.3 RK3399的GPIO操作方法
- 5.3.1 RK3399的GPIO模块结构
- 5.3.2 RK3399的GPIO相关寄存器
- 5.4 IMX6ULL的GPIO操作方法
- 5.4.1 IMX6ULL的GPIO模块结构
- 5.4.2 CCM用于设置是否向GPIO模块提供时钟
- 5.4.3 IOMUXC:引脚的模式(Mode、功能)
- 5.4.4 GPIO模块内部
- 5.4.5 怎么编程
- 5.1 AM335X的GPIO操作方法
- 6. LED驱动程序框架
- 6.1 回顾字符设备驱动程序框架
- 6.2 对于LED驱动,我们想要什么样的接口?
- 6.3 LED驱动要怎么写,才能支持多个板子?分层。
- 6.4 写代码
- 6.4.1 驱动程序
- 6.4.1.1 把LED的操作抽象出一个led_operations结构体
- 6.4.1.2 驱动程序的上层:file_operations结构体
- 6.4.2 测试程序
- 6.4.3 上机测试
- 6.4.1 驱动程序
- 6.5 课后作业
- 7. 具体单板的LED驱动程序
- 7.1 怎么写LED驱动程序?
- 7.2 AM335X的LED驱动程序
- 7.1.1 原理图
- 7.1.2 所涉及的寄存器操作
- 7.1.3 写程序
- 7.1.4 配置内核去掉原有LED驱动
- 7.1.5 课后作业
- 7.3 RK3288和RK3399的LED驱动程序
- 7.3.1 原理图
- 7.3.1.1 fireflye RK3288的LED原理图
- 7.3.1.2 firefly RK3399的LED原理图
- 7.3.2 所涉及的寄存器操作
- 7.3.2.1 RK3288的GPIO8_A1引脚
- 7.3.2.2 RK3399的GPIO2_D3引脚
- 7.3.3 写程序
- 7.3.4 上机实验
- 7.3.5 课后作业
- 7.3.1 原理图
- 7.4 野火/正点原子IMX6ULL的LED驱动程序
- 7.4.1 原理图
- 7.4.1.1 野火fire_imx6ull-pro开发板
- 7.4.1.2 正点原子Atk_imx6ull-alpha开发板
- 7.4.2 所涉及的寄存器操作
- 7.4.2.1 野火fire_imx6ull-pro 开发板
- 7.4.2.2 正点原子Atk_imx6ull-alpha开发板
- 7.4.3 写程序
- 7.4.3.1 野火fire_imx6ull-pro开发板
- 7.4.3.2 正点原子Atk_imx6ull-alpha开发板
- 7.4.4 上机实验
- 7.4.4.1 野火fire_imx6ull-pro 开发板
- 7.4.4.2 正点原子Atk_imx6ull-alpha开发板
- 7.4.5 课后作业
- 7.4.1 原理图
- 7.5 百问网IMX6ULL-QEMU的LED驱动程序
- 7.5.1 看原理图确定引脚及操作方法
- 7.5.2 所涉及的寄存器操作
- 7.5.3 写程序
- 7.5.4 上机实验
- 7.5.5 课后作业
- 8 驱动设计的思想:面向对象/分层/分离
- 9. 驱动进化之路:总线设备驱动模型
- 9.1 驱动编写的3种方法
- 9.2 在Linux中实现“分离”:Bus/Dev/Drv模型
- 9.3 匹配规则
- 9.4 常用函数
- 9.5 怎么写程序
- 9.5.1 分配/设置/注册platform_device结构体
- 9.5.2 分配/设置/注册platform_driver结构体
- 9.6 课后作业
- 10. LED模板驱动程序的改造:总线设备驱动模型
- 10.1 原来的框架
- 10.2 要实现的框架
- 10.3 写代码
- 10.3.1 注意事项
- 10.3.2 实现platform_device结构体
- 10.3.3 实现platform_driver结构体
- 10.4 课后作业
- 11. 驱动进化之路:设备树的引入及简明教程
- 11.1 设备树的引入与作用
- 11.2 设备树的语法
- 11.2.1 Devicetree格式
- 11.2.1.1 DTS文件的格式
- 11.2.1.2 node的格式
- 11.2.1.3 properties的格式
- 11.2.2 dts文件包含dtsi文件
- 11.2.3 常用的属性
- 11.2.3.1 #address-cells、#size-cells
- 11.2.3.2 compatible
- 11.2.3.3 model
- 11.2.3.4 status
- 11.2.3.5 reg
- 11.2.3.6 name(过时了,建议不用)
- 11.2.3.7 device_type(过时了,建议不用)
- 11.2.4 常用的节点(node)
- 11.2.1 Devicetree格式
- 11.3 编译、更换设备树
- 11.3.1 在内核中直接make
- 11.3.2 手工编译
- 11.3.3 给开发板更换设备树文件
- 11.3.3.1 对于100ask-am335x 单板
- 11.3.3.2 对于firefly-rk3288
- 11.3.3.3 对于firefly的roc-rk3399-pc
- 11.3.3.4 对于百问网使用QEMU模拟的IMX6ULL板子
- 11.3.3.5 对于野火imx6ull-pro
- 11.3.3.6 对于正点原子imx6ull-alpha
- 11.3.4 板子启动后查看设备树
- 11.4 内核对设备树的处理
- 11.4.1 dtb中每一个节点都被转换为device_node结构体
- 11.4.2 哪些设备树节点会被转换为platform_device
- 11.4.3 怎么转换为platform_device
- 11.5 platform_device如何与platform_driver配对
- 11.5.1 最先比较:是否强制选择某个driver
- 11.5.2 然后比较:设备树信息
- 11.5.3 接下来比较:platform_device_id
- 11.5.4 最后比较:platform_device.name和platform_driver.driver.name
- 11.5.5 一个图概括所有的配对过程
- 11.6 没有转换为platform_device的节点,如何使用
- 11.7 内核里操作设备树的常用函数
- 11.7.1 内核中设备树相关的头文件介绍
- 11.7.1.1 处理DTB
- 11.7.1.2 处理device_node
- 11.7.1.3 处理 platform_device
- 11.7.2 platform_device相关的函数
- 11.7.2.1 of_find_device_by_node
- 11.7.2.2 platform_get_resource
- 11.7.3 有些节点不会生成platform_device,怎么访问它们
- 11.7.1 内核中设备树相关的头文件介绍
- 11.8 怎么修改设备树文件
- 11.8.1 使用芯片厂家提供的工具
- 11.8.2 看绑定文档
- 11.8.3 参考同类型单板的设备树文件
- 11.8.4 网上搜索
- 11.8.5 实在没办法时, 只能去研究驱动源码
- 12. LED模板驱动程序的改造:设备树
- 12.1 总结3种写驱动程序的方法
- 12.2 怎么使用设备树写驱动程序
- 12.2.1 设备树节点要与platform_driver能匹配
- 12.2.2 设备树节点指定资源,platform_driver获得资源
- 12.3 开始编程
- 12.3.1 修改设备树添加led设备节点
- 12.3.1.1 对于100ask-am335x 单板
- 12.3.1.2 对于firefly-rk3288
- 12.3.1.3 对于firefly的roc-rk3399-pc
- 12.3.1.4 对于百问网使用QEMU模拟的IMX6ULL板子
- 12.3.1.5 对于野火imx6ull-pro
- 12.3.1.6 对于正点原子imx6ull-alpha
- 12.3.2 修改platform_driver的源码=
- 12.3.1 修改设备树添加led设备节点
- 12.4 上机实验
- 12.5 调试技巧
- 12.5.1 设备树的信息
- 12.5.2 platform_device的信息
- 12.5.3 platform_driver的信息
- 12.6 课后作业
- 13. APP怎么读取按键值
- 13.1 妈妈怎么知道孩子醒了
- 13.2 APP读取按键的4种方法
- 13.2.1 查询方式
- 13.2.2 休眠-唤醒方式
- 13.2.3 poll方式
- 13.2.4 异步通知方式
- 13.2.4.1 异步通知的原理:发信号
- 13.2.4.2 应用程序之间发信号示例代码
- 13.2.5 驱动程序提供能力,不提供策略
- 14. 查询方式的按键驱动程序_编写框架
- 14.1 LED驱动回顾
- 14.2 按键驱动编写思路
- 14.3 编程:先写框架
- 14.3.1 把按键的操作抽象出一个button_operations结构体
- 14.3.2 驱动程序的上层:file_operations结构体
- 14.4 测试
- 14.5 课后怎业
- 15. 具体单板的按键驱动程序(查询方式)
- 15.1 GPIO操作回顾
- 15.2 AM335X的按键驱动程序(查询方式)
- 15.2.1 先看原理图确定引脚及操作方法
- 15.2.2 再看芯片手册确定寄存器及操作方法
- 15.2.3 编程
- 15.2.4 测试
- 15.2.5 课后作业
- 15.3 RK3288的按键驱动程序(查询方式)
- 15.3.1 先看原理图确定引脚及操作方法
- 15.3.2 再看芯片手册确定寄存器及操作方法
- 15.3.3 编程
- 15.3.4 测试
- 15.3.5 课后作业
- 15.4 RK3399的按键驱动程序(查询方式)
- 15.4.1 先看原理图确定引脚及操作方法
- 15.4.2 再看芯片手册确定寄存器及操作方法
- 15.4.3 编程
- 15.4.4 测试
- 15.4.5 课后作业
- 15.5 百问网IMX6ULL-QEMU的按键驱动程序(查询方式)
- 15.5.1 先看原理图确定引脚及操作方法
- 15.5.2 再看芯片手册确定寄存器及操作方法
- 15.5.3 编程
- 15.5.4 测试
- 15.5.5 课后作业
- 16. 异常与中断的概念及处理流程
- 16.1 中断的引入
- 16.1.1 妈妈怎么知道孩子醒了
- 16.1.2 嵌入系统中也有类似的情况
- 16.2 中断的处理流程
- 16.3 异常向量表
- 16.4 参考资料
- 16.1 中断的引入
- 17 常见问题