“ELADCMSecondEdition”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) (Create EmbeddedLinuxApplicationDevelopmentCompleteManualSecondEdition page) |
|||
(未显示2个用户的16个中间版本) | |||
第1行: | 第1行: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | =[[ ELADCMSecondEdition| 《嵌入式Linux应用开发完全手册第2版 韦东山全系列视频文档全集》目录索引]]= |
+ | ==[[ ELADCMSecondEditionChapterOne | 第一篇 韦东山全系列视频介绍及资料下载 ]]== | ||
+ | {{#menu: | ||
+ | * 1. [[ ELADCMSecondEditionChapterOne#.E5.85.A8.E7.B3.BB.E5.88.97.E8.A7.86.E9.A2.91.E4.BB.8B.E7.BB.8D | 全系列视频介绍 ]] | ||
+ | ** 1.1 [[ ELADCMSecondEditionChapterOne#.E5.B5.8C.E5.85.A5.E5.BC.8FLinux.E5.8F.91.E5.B1.95.E8.BF.85.E9.80.9F.EF.BC.8C.E5.AD.A6.E4.B9.A0.E6.96.B9.E6.B3.95.E8.A6.81.E4.B8.8E.E6.97.B6.E4.BF.B1.E8.BF.9B | 嵌入式Linux发展迅速,学习方法要与时俱进 ]] | ||
+ | *** 1.1.1 [[ ELADCMSecondEditionChapterOne#.E5.B5.8C.E5.85.A5.E5.BC.8FLinux.E5.8F.98.E5.8C.96.E5.B7.A8.E5.A4.A7 | 嵌入式Linux变化巨大 ]] | ||
+ | **** 1.1.1.1 [[ ELADCMSecondEditionChapterOne#.E5.9F.BA.E6.9C.AC.E7.B3.BB.E7.BB.9F.E8.83.BD.E7.94.A8 | 基本系统能用 ]] | ||
+ | **** 1.1.1.2 [[ ELADCMSecondEditionChapterOne#.E5.9F.BA.E7.A1.80.E9.A9.B1.E5.8A.A8.E5.BC.B1.E5.8C.96.EF.BC.9B.E9.AB.98.E7.BA.A7.E9.A9.B1.E5.8A.A8.E4.B8.93.E4.B8.9A.E5.8C.96 | 基础驱动弱化;高级驱动专业化 ]] | ||
+ | **** 1.1.1.3 [[ ELADCMSecondEditionChapterOne#.E9.A1.B9.E7.9B.AE.E4.B8.BA.E7.8E.8B | 项目为王 ]] | ||
+ | **** 1.1.1.4 [[ ELADCMSecondEditionChapterOne#.E8.B0.83.E8.AF.95.E5.BE.88.E9.87.8D.E8.A6.81 | 调试很重要 ]] | ||
+ | *** 1.1.2 [[ ELADCMSecondEditionChapterOne#.E5.B5.8C.E5.85.A5.E5.BC.8F_Linux_.E7.9A.84.E5.AD.A6.E4.B9.A0.E6.96.B9.E6.B3.95.E8.A6.81.E4.B8.8E.E6.97.B6.E4.BF.B1.E8.BF.9B | 嵌入式 Linux 的学习方法要与时俱进 ]] | ||
+ | ** 1.2 [[ ELADCMSecondEditionChapterOne#.E5.BF.AB.E9.80.9F.E5.85.A5.E9.97.A8 | 快速入门 ]] | ||
+ | *** 1.2.1 [[ ELADCMSecondEditionChapterOne#.E8.AE.B2.E5.93.AA.E4.BA.9B.E5.86.85.E5.AE.B9.EF.BC.9F | 讲哪些内容? ]] | ||
+ | *** 1.2.2 [[ ELADCMSecondEditionChapterOne#.E6.80.8E.E4.B9.88.E8.AE.B2.E5.91.A2.EF.BC.9F | 怎么讲呢? ]] | ||
+ | ** 1.3 [[ ELADCMSecondEditionChapterOne#.E5.AE.9E.E6.88.98.E9.A1.B9.E7.9B.AE | 实战项目 ]] | ||
+ | ** 1.4 [[ ELADCMSecondEditionChapterOne#.E9.A9.B1.E5.8A.A8.E5.A4.A7.E5.85.A8 | 驱动大全 ]] | ||
+ | ** 1.5 [[ ELADCMSecondEditionChapterOne#.E4.B8.93.E9.A2.98 | 专题 ]] | ||
+ | * 2. [[ ELADCMSecondEditionChapterOne#.E8.B5.84.E6.BA.90.E4.B8.8B.E8.BD.BD.E6.96.B9.E6.B3.95 | 资源下载方法 ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionChapterOne#.E4.BD.BF.E7.94.A8.E7.AE.80.E6.98.8E.E6.95.99.E7.A8.8B | GIT使用简明教程 ]] | ||
+ | *** 2.1.1 [[ ELADCMSecondEditionChapterOne#.E5.AE.89.E8.A3.85git | 安装git ]] | ||
+ | *** 2.1.2 [[ ELADCMSecondEditionChapterOne#.E4.BD.BF.E7.94.A8.E7.A4.BA.E4.BE.8B.EF.BC.9A.E8.8E.B7.E5.BE.97.E5.85.A8.E9.83.A8.E6.BA.90.E7.A0.81 | 使用示例:获得全部源码 ]] | ||
+ | ** 2.2 [[ ELADCMSecondEditionChapterOne#.E7.99.BE.E5.BA.A6.E7.BD.91.E7.9B.98.E4.BD.BF.E7.94.A8.E6.95.99.E7.A8.8B | 百度网盘使用教程 ]] | ||
+ | *** 2.2.1 [[ ELADCMSecondEditionChapterOne#.E6.B3.A8.E5.86.8C | 注册 ]] | ||
+ | *** 2.2.2 [[ ELADCMSecondEditionChapterOne#.E8.BD.AC.E5.AD.98 | 转存 ]] | ||
+ | *** 2.2.3 [[ ELADCMSecondEditionChapterOne#.E4.B8.8B.E8.BD.BD | 下载 ]] | ||
+ | ** 2.3 [[ ELADCMSecondEditionChapterOne#.E6.9C.AC.E6.95.99.E7.A8.8B.E6.89.80.E6.9C.89.E8.B5.84.E6.96.99.E4.BB.8B.E7.BB.8D | 本教程所有资料介绍 ]] | ||
+ | *** 2.3.1 [[ ELADCMSecondEditionChapterOne#.E5.BD.95.E5.88.B6.E8.A7.86.E9.A2.91.E8.BF.87.E7.A8.8B.E4.B8.AD.E7.BC.96.E5.86.99.E7.9A.84.E6.96.87.E6.A1.A3.E3.80.81.E6.BA.90.E7.A0.81 | 录制视频过程中编写的文档、源码 ]] | ||
+ | *** 2.3.2 [[ ELADCMSecondEditionChapterOne#.E5.BD.95.E5.88.B6.E7.9A.84.E8.A7.86.E9.A2.91_.E5.92.8C_.E5.BC.80.E5.8F.91.E6.9D.BF.E7.9A.84_BSP_.E5.8C.85 | 录制的视频 和 开发板的 BSP 包 ]] | ||
+ | ** 2.4 [[ ELADCMSecondEditionChapterOne#.E6.89.8B.E5.86.8C.E3.80.81.E6.96.87.E6.A1.A3.E3.80.81.E6.BA.90.E7.A0.81.E7.9A.84.E4.B8.8B.E8.BD.BD.E4.B8.8E.E6.9B.B4.E6.96.B0.3D | 手册、文档、源码的下载与更新 ]] | ||
+ | <br> | ||
+ | }}<br> | ||
+ | <br> | ||
− | == | + | ==[[ ELADCMSecondEditionChapterTwo | 第二篇 Linux 基本操作与开发工具使用 ]]== |
+ | {{#menu: | ||
+ | * 1. [[ ELADCMSecondEditionChapterTwo#.E4.BB.8B.E7.BB.8D.E4.B8.8E.E5.BC.95.E5.AF.BC | 介绍与引导 ]] | ||
+ | ** 1.1 [[ ELADCMSecondEditionChapterTwo#.E4.B8.8B.E8.BD.BD.E5.AE.89.E8.A3.85VMWARE.EF.BC.8C.E4.B8.8B.E8.BD.BDubuntu.E6.98.A0.E8.B1.A1.E3.80.81.E6.89.93.E5.BC.80 | 下载安装VMWARE,下载ubuntu映象、打开 ]] | ||
+ | ** 1.2 [[ ELADCMSecondEditionChapterTwo#.E5.9C.A8ubuntu.E4.B8.AD.E7.BB.83.E4.B9.A0.E5.B8.B8.E7.94.A8Linux.E5.91.BD.E4.BB.A4 | 在ubuntu中练习常用Linux命令 ]] | ||
+ | ** 1.3 [[ ELADCMSecondEditionChapterTwo#.E8.99.9A.E6.8B.9F.E6.9C.BA.E5.92.8CUbuntu.E7.9A.84.E7.BD.91.E7.BB.9C.E8.AE.BE.E7.BD.AE | 虚拟机和Ubuntu的网络设置 ]] | ||
+ | * 2. [[ ELADCMSecondEditionChapterTwo#Linux.E5.9F.BA.E6.9C.AC.E6.93.8D.E4.BD.9C | Linux基本操作 ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionChapterTwo#Ubuntu.E6.A1.8C.E9.9D.A2.E7.AE.80.E5.8D.95.E6.93.8D.E4.BD.9C | Ubuntu桌面简单操作 ]] | ||
+ | *** 2.1.1 [[ ELADCMSecondEditionChapterTwo#Ubuntu.E5.92.8CWindows.E7.9A.84.E6.9C.80.E5.A4.A7.E5.B7.AE.E5.88.AB.EF.BC.9A.E7.9B.AE.E5.BD.95 | Ubuntu和Windows的最大差别:目录 ]] | ||
+ | *** 2.1.2 [[ ELADCMSecondEditionChapterTwo#.E5.90.AF.E5.8A.A8.E7.BB.88.E7.AB.AF | 启动终端 ]] | ||
+ | *** 2.1.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E5.B1.8F.E5.B9.95 | 设置屏幕 ]] | ||
+ | *** 2.1.4 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E7.BD.91.E7.BB.9C | 设置网络 ]] | ||
+ | ** 2.2 [[ ELADCMSecondEditionChapterTwo#Linux.E5.91.BD.E4.BB.A4 | Linux命令 ]] | ||
+ | *** 2.2.1 [[ ELADCMSecondEditionChapterTwo#Linux.E5.91.BD.E4.BB.A4.E7.9A.84.E6.8F.90.E7.A4.BA.E7.AC.A6 | Linux命令的提示符 ]] | ||
+ | *** 2.2.2 [[ ELADCMSecondEditionChapterTwo#Linux.E5.91.BD.E4.BB.A4.E7.9A.84.E6.A0.BC.E5.BC.8F | Linux命令的格式 ]] | ||
+ | *** 2.2.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.B0.E4.BD.8F.E5.91.BD.E4.BB.A4.E5.B9.B6.E4.B8.8D.E9.9A.BE.2C_.E5.85.88.E8.83.8C.E5.87.A0.E4.B8.AA.E5.8D.95.E8.AF.8D | 记住命令并不难, 先背几个单词 ]] | ||
+ | *** 2.2.4 [[ ELADCMSecondEditionChapterTwo#.E7.BB.9D.E5.AF.B9.E8.B7.AF.E5.BE.84.E5.92.8C.E7.9B.B8.E5.AF.B9.E8.B7.AF.E5.BE.84 | 绝对路径和相对路径 ]] | ||
+ | *** 2.2.5 [[ ELADCMSecondEditionChapterTwo#.E7.9B.AE.E5.BD.95.2F.E6.96.87.E4.BB.B6.E6.93.8D.E4.BD.9C.E5.91.BD.E4.BB.A4 | 目录/文件操作命令 ]] | ||
+ | *** 2.2.6 [[ ELADCMSecondEditionChapterTwo#.E6.9F.A5.E6.89.BE.2F.E6.90.9C.E7.B4.A2.E5.91.BD.E4.BB.A4 | 查找/搜索命令 ]] | ||
+ | *** 2.2.7 [[ ELADCMSecondEditionChapterTwo#.E5.8E.8B.E7.BC.A9.2F.E8.A7.A3.E5.8E.8B.E5.91.BD.E4.BB.A4 | 压缩/解压命令 ]] | ||
+ | *** 2.2.8 [[ ELADCMSecondEditionChapterTwo#.E7.BD.91.E7.BB.9C.E5.91.BD.E4.BB.A4 | 网络命令 ]] | ||
+ | *** 2.2.9 [[ ELADCMSecondEditionChapterTwo#.E5.85.B6.E4.BB.96.E5.91.BD.E4.BB.A4 | 其他命令 ]] | ||
+ | ** 2.3 [[ ELADCMSecondEditionChapterTwo#vi.E7.BC.96.E8.BE.91.E5.99.A8 | vi编辑器 ]] | ||
+ | * 3. [[ ELADCMSecondEditionChapterTwo#.E8.99.9A.E6.8B.9F.E6.9C.BA.E5.92.8CUbuntu.E7.9A.84.E7.BD.91.E7.BB.9C.E8.AE.BE.E7.BD.AE_2 | 虚拟机和Ubuntu的网络设置 ]] | ||
+ | ** 3.1 [[ ELADCMSecondEditionChapterTwo#Windows.E9.80.9A.E8.BF.87WIFI.E4.B8.8A.E7.BD.91.EF.BC.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.A6.BB.E6.97.A0.E7.BA.BF.E8.B7.AF.E7.94.B1.E5.99.A8.E5.BE.88.E8.BF.91 | Windows通过WIFI上网,开发板离无线路由器很近 ]] | ||
+ | *** 3.1.1 [[ ELADCMSecondEditionChapterTwo#.E8.BF.9E.E6.8E.A5.E7.BD.91.E7.BA.BF | 连接网线 ]] | ||
+ | *** 3.1.2 [[ ELADCMSecondEditionChapterTwo#VMWare.E9.87.8C.E9.80.89.E6.8B.A9WIFI.E7.BD.91.E5.8D.A1 | VMWare里选择WIFI网卡 ]] | ||
+ | *** 3.1.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEIP | 设置IP ]] | ||
+ | **** 3.1.3.1 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEWindows_IP | 设置Windows IP ]] | ||
+ | **** 3.1.3.2 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEUbuntu_IP | 设置Ubuntu IP ]] | ||
+ | **** 3.1.3.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E5.BC.80.E5.8F.91.E6.9D.BFIP | 设置开发板IP ]] | ||
+ | *** 3.1.4 [[ ELADCMSecondEditionChapterTwo#.E9.AA.8C.E8.AF.81 | 验证 ]] | ||
+ | ** 3.2 [[ ELADCMSecondEditionChapterTwo#Windows.E9.80.9A.E8.BF.87WIFI.E4.B8.8A.E7.BD.91.EF.BC.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.A6.BB.E6.97.A0.E7.BA.BF.E8.B7.AF.E7.94.B1.E5.99.A8.E5.BE.88.E8.BF.9C | Windows通过WIFI上网,开发板离无线路由器很远 ]] | ||
+ | *** 3.2.1 [[ ELADCMSecondEditionChapterTwo#.E8.BF.9E.E6.8E.A5.E7.BD.91.E7.BA.BF_2 | 连接网线 ]] | ||
+ | **** 3.2.1.1 [[ ELADCMSecondEditionChapterTwo#Windows.E7.94.B5.E8.84.91.E5.92.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.9A.84.E7.BD.91.E7.BA.BF.EF.BC.8C.E9.83.BD.E6.8E.A5.E5.88.B0.E5.8F.A6.E4.B8.80.E4.B8.AA.E9.9B.86.E7.BA.BF.E5.99.A8.E6.88.96.E8.B7.AF.E7.94.B1.E5.99.A8 | Windows电脑和开发板的网线,都接到另一个集线器或路由器 ]] | ||
+ | **** 3.2.1.2 [[ ELADCMSecondEditionChapterTwo#.E7.94.B5.E8.84.91.E5.92.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.94.A8.E7.BD.91.E7.BA.BF.E7.9B.B4.E8.BF.9E.28.E7.BB.9D.E5.AF.B9.E4.B8.8D.E5.BB.BA.E8.AE.AE.29 | 电脑和开发板用网线直连(绝对不建议) ]] | ||
+ | *** 3.2.2 [[ ELADCMSecondEditionChapterTwo#VMWare.E9.87.8C.E9.80.89.E6.8B.A9.E6.9C.89.E7.BA.BF.E7.BD.91.E5.8D.A1 | VMWare里选择有线网卡 ]] | ||
+ | *** 3.2.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEIP_2 | 设置IP ]] | ||
+ | **** 3.2.3.1 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEWindows_IP_2 | 设置Windows IP ]] | ||
+ | **** 3.2.3.2 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEUbuntu_IP_2 | 设置Ubuntu IP ]] | ||
+ | **** 3.2.3.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E5.BC.80.E5.8F.91.E6.9D.BFIP_2 | 设置开发板IP ]] | ||
+ | *** 3.2.4 [[ ELADCMSecondEditionChapterTwo#.E9.AA.8C.E8.AF.81_2 | 验证 ]] | ||
+ | ** 3.3 [[ ELADCMSecondEditionChapterTwo#Windows.E4.B8.8D.E4.BD.BF.E7.94.A8WIFI.E7.BD.91.E5.8D.A1 | Windows不使用WIFI网卡 ]] | ||
+ | *** 3.3.1 [[ ELADCMSecondEditionChapterTwo#.E8.BF.9E.E6.8E.A5.E7.BD.91.E7.BA.BF_3 | 连接网线 ]] | ||
+ | **** 3.3.1.1 [[ ELADCMSecondEditionChapterTwo#Windows.E9.80.9A.E8.BF.87.E6.9C.89.E7.BA.BF.E7.BD.91.E5.8D.A1.E6.8E.A5.E8.B7.AF.E7.94.B1.E5.99.A8.E4.B8.8A.E7.BD.91.EF.BC.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.A6.BB.E8.B7.AF.E7.94.B1.E5.99.A8.E5.BE.88.E8.BF.91 | Windows通过有线网卡接路由器上网,开发板离路由器很近 ]] | ||
+ | **** 3.3.1.2 [[ ELADCMSecondEditionChapterTwo#Windows.E9.80.9A.E8.BF.87.E6.9C.89.E7.BA.BF.E7.BD.91.E5.8D.A1.E6.8E.A5.E8.B7.AF.E7.94.B1.E5.99.A8.E4.B8.8A.E7.BD.91.EF.BC.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.A6.BB.E8.B7.AF.E7.94.B1.E5.99.A8.E5.BE.88.E8.BF.9C | Windows通过有线网卡接路由器上网,开发板离路由器很远 ]] | ||
+ | **** 3.3.1.3 [[ ELADCMSecondEditionChapterTwo#.E4.B8.8D.E4.B8.8A.E7.BD.91.EF.BC.8CWindows.E7.94.B5.E8.84.91.E5.92.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.9A.84.E7.BD.91.E7.BA.BF.EF.BC.8C.E9.83.BD.E6.8E.A5.E5.88.B0.E9.9B.86.E7.BA.BF.E5.99.A8.E6.88.96.E8.B7.AF.E7.94.B1.E5.99.A8 | 不上网,Windows电脑和开发板的网线,都接到集线器或路由器 ]] | ||
+ | **** 3.3.1.4 [[ ELADCMSecondEditionChapterTwo#.E7.94.B5.E8.84.91.E5.92.8C.E5.BC.80.E5.8F.91.E6.9D.BF.E7.94.A8.E7.BD.91.E7.BA.BF.E7.9B.B4.E8.BF.9E.28.E4.B8.8D.E5.BB.BA.E8.AE.AE.29 | 电脑和开发板用网线直连(不建议) ]] | ||
+ | *** 3.3.2 [[ ELADCMSecondEditionChapterTwo#VMWare.E9.87.8C.E9.80.89.E6.8B.A9.E6.9C.89.E7.BA.BF.E7.BD.91.E5.8D.A1_2 | VMWare里选择有线网卡 ]] | ||
+ | *** 3.3.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEIP_3 | 设置IP ]] | ||
+ | **** 3.3.3.2 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEWindows_IP_3 | 设置Windows IP ]] | ||
+ | **** 3.3.3.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AEUbuntu_IP_3 | 设置Ubuntu IP ]] | ||
+ | **** 3.3.3.4 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E5.BC.80.E5.8F.91.E6.9D.BFIP_3 | 设置开发板IP ]] | ||
+ | *** 3.3.4 [[ ELADCMSecondEditionChapterTwo#.E9.AA.8C.E8.AF.81_3 | 验证 ]] | ||
+ | ** 3.3.4 [[ ELADCMSecondEditionChapterTwo#.E5.8F.AA.E6.83.B3.E8.AE.A9Ubuntu.E8.83.BD.E4.B8.8A.E7.BD.91.E3.80.81.E8.83.BD.E8.B7.9FWindows.E4.BA.92.E8.81.94.28.E6.A0.A1.E5.9B.AD.E7.BD.91.E5.BF.85.E7.9C.8B.29 | 只想让Ubuntu能上网、能跟Windows互联(校园网必看) ]] | ||
+ | *** 3.3.4.1 [[ ELADCMSecondEditionChapterTwo#VMWare.E7.9A.843.E7.A7.8D.E7.BD.91.E7.BB.9C.E6.A8.A1.E5.BC.8F.E7.AE.80.E4.BB.8B | VMWare的3种网络模式简介 ]] | ||
+ | *** 3.3.4.2 [[ ELADCMSecondEditionChapterTwo#NAT.E6.A8.A1.E5.BC.8F.E9.80.82.E7.94.A8.E6.83.85.E5.86.B5 | NAT模式适用情况 ]] | ||
+ | *** 3.3.4.3 [[ ELADCMSecondEditionChapterTwo#NAT.E6.A8.A1.E5.BC.8F.E7.9A.84.E4.BD.BF.E7.94.A8.EF.BC.9AVMWare.E5.92.8CUbuntu.E7.9A.84.E8.AE.BE.E7.BD.AE | NAT模式的使用:VMWare和Ubuntu的设置 ]] | ||
+ | *** 3.3.4.4 [[ ELADCMSecondEditionChapterTwo#.E6.B5.8B.E8.AF.95 | 测试 ]] | ||
+ | ** 3.5 [[ ELADCMSecondEditionChapterTwo#Windows.E5.92.8CUbuntu.E4.B9.8B.E9.97.B4.E8.BF.9C.E7.A8.8B.E6.93.8D.E4.BD.9C | Windows和Ubuntu之间远程操作 ]] | ||
+ | *** 3.5.1 [[ ELADCMSecondEditionChapterTwo#.E4.BD.BF.E7.94.A8MobaXterm.E7.99.BB.E5.BD.95Ubuntu | 使用MobaXterm登录Ubuntu ]] | ||
+ | *** 3.5.2 [[ ELADCMSecondEditionChapterTwo#.E4.BD.BF.E7.94.A8FileZilla.E4.B8.8EUbuntu.E4.BC.A0.E8.BE.93.E6.96.87.E4.BB.B6 | 使用FileZilla与Ubuntu传输文件 ]] | ||
+ | ** 3.6 [[ ELADCMSecondEditionChapterTwo#.E5.BC.80.E5.8F.91.E6.9D.BF.E5.92.8CUbuntu.E4.B9.8B.E9.97.B4.E4.BC.A0.E6.96.87.E4.BB.B6 | 开发板和Ubuntu之间传文件 ]] | ||
+ | *** 3.6.1 [[ ELADCMSecondEditionChapterTwo#.E5.BC.80.E5.8F.91.E6.9D.BF.E9.80.9A.E8.BF.87NFS.E6.8C.82.E8.BD.BDUbuntu.E7.9A.84.E7.9B.AE.E5.BD.95 | 开发板通过NFS挂载Ubuntu的目录 ]] | ||
+ | **** 3.6.1.1 [[ ELADCMSecondEditionChapterTwo#.E5.9C.A8Ubuntu.E4.B8.8A.E5.AE.89.E8.A3.85.E3.80.81.E9.85.8D.E7.BD.AENFS.E6.9C.8D.E5.8A.A1 | 在Ubuntu上安装、配置NFS服务 ]] | ||
+ | **** 3.6.1.2 [[ ELADCMSecondEditionChapterTwo#.E5.9C.A8.E5.BC.80.E5.8F.91.E6.9D.BF.E4.B8.8A.E6.8C.82.E8.BD.BDUbuntu.E7.9A.84NFS.E6.96.87.E4.BB.B6.E7.B3.BB.E7.BB.9F | 在开发板上挂载Ubuntu的NFS文件系统 ]] | ||
+ | ** 3.7 [[ ELADCMSecondEditionChapterTwo#.E5.B8.B8.E8.A7.81.E9.97.AE.E9.A2.98 | 常见问题 ]] | ||
+ | * 4. [[ ELADCMSecondEditionChapterTwo#.E5.BC.80.E5.8F.91.E5.B7.A5.E5.85.B7.E7.9A.84.E4.BD.BF.E7.94.A8 | 开发工具的使用 ]] | ||
+ | ** 4.1 [[ ELADCMSecondEditionChapterTwo#MobaXterm.E7.9A.84.E4.BD.BF.E7.94.A8 | MobaXterm的使用 ]] | ||
+ | *** 4.1.1 [[ ELADCMSecondEditionChapterTwo#.E5.AE.89.E8.A3.85.E5.8F.8A.E8.8E.B7.E5.8F.96ubuntuIP.E5.9C.B0.E5.9D.80 | 安装及获取ubuntuIP地址 ]] | ||
+ | *** 4.1.2 [[ ELADCMSecondEditionChapterTwo#.E6.96.B0.E5.BB.BASSH.E8.BF.9E.E6.8E.A5 | 新建SSH连接 ]] | ||
+ | *** 4.1.3 [[ ELADCMSecondEditionChapterTwo#.E6.96.B0.E5.BB.BA.E4.B8.B2.E5.8F.A3.E8.BF.9E.E6.8E.A5 | 新建串口连接 ]] | ||
+ | **** 4.1.3.1 [[ ELADCMSecondEditionChapterTwo#.E5.AE.89.E8.A3.85USB.E4.B8.B2.E5.8F.A3.E6.A8.A1.E5.9D.97.E9.A9.B1.E5.8A.A8 | 安装USB串口模块驱动 ]] | ||
+ | **** 4.1.3.2 [[ ELADCMSecondEditionChapterTwo#.E8.BF.9E.E6.8E.A5.E4.B8.B2.E5.8F.A3.E7.BA.BF | 连接串口线 ]] | ||
+ | **** 4.1.3.3 [[ ELADCMSecondEditionChapterTwo#.E8.AE.BE.E7.BD.AE.E4.BD.BF.E7.94.A8MobaXterm | 设置使用MobaXterm ]] | ||
+ | ** 4.3 [[ ELADCMSecondEditionChapterTwo#.E4.BD.BF.E7.94.A8FileZilla.E5.9C.A8Windows.E5.92.8CUbuntu.E4.B9.8B.E9.97.B4.E4.BC.A0.E6.96.87.E4.BB.B6 | 使用FileZilla在Windows和Ubuntu之间传文件 ]] | ||
+ | ** 4.4 [[ ELADCMSecondEditionChapterTwo#.E4.BD.BF.E7.94.A8SourceInsight.E9.98.85.E8.AF.BB.E3.80.81.E7.BC.96.E8.BE.91.E6.BA.90.E7.A0.81 | 使用SourceInsight阅读、编辑源码 ]] | ||
+ | *** 4.4.1 [[ ELADCMSecondEditionChapterTwo#.E5.AE.89.E8.A3.85.E5.B9.B6.E6.96.B0.E5.BB.BA.E9.A1.B9.E7.9B.AE | 安装并新建项目 ]] | ||
+ | *** 4.4.2 [[ ELADCMSecondEditionChapterTwo#Source_Insight.E6.93.8D.E4.BD.9C.E7.A4.BA.E4.BE.8B | Source Insight操作示例 ]] | ||
+ | *** 4.4.3 [[ ELADCMSecondEditionChapterTwo#Source_Insight.E5.BF.AB.E6.8D.B7.E9.94.AE | Source Insight快捷键 ]] | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | }}<br> | ||
+ | <br> | ||
− | ==第五篇 嵌入式 Linux 驱动开发基础知识== | + | ==[[ ELADCMSecondEditionThirdChapter| 第三篇 开发板快速上手 ]]== |
+ | {{#menu: | ||
+ | * 1. [[ ELADCMSecondEditionThirdChapter#.E8.B5.84.E6.96.99.E4.B8.8B.E8.BD.BD | 资料下载 ]] | ||
+ | * 2. [[ ELADCMSecondEditionThirdChapter#.E6.8E.A5.E7.BA.BF.E4.B8.8E.E5.90.AF.E5.8A.A8 | 接线与启动 ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionThirdChapter#100ASK_AM335X.E5.BC.80.E5.8F.91.E6.9D.BF | 100ASK_AM335X开发板 ]] | ||
+ | *** 2.1.1 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E8.BF.9E.E6.8E.A5 | 串口连接 ]] | ||
+ | *** 2.1.2 [[ ELADCMSecondEditionThirdChapter#.E5.90.AF.E5.8A.A8.E6.96.B9.E5.BC.8F.E9.80.89.E6.8B.A9 | 启动方式选择 ]] | ||
+ | ** 2.2 [[ ELADCMSecondEditionThirdChapter#Firefly-rk3288.E5.BC.80.E5.8F.91.E6.9D.BF | Firefly-rk3288开发板 ]] | ||
+ | *** 2.2.1 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E8.BF.9E.E6.8E.A5_2 | 串口连接 ]] | ||
+ | *** 2.2.2 [[ ELADCMSecondEditionThirdChapter#.E5.90.AF.E5.8A.A8.E6.96.B9.E5.BC.8F.E9.80.89.E6.8B.A9_2 | 启动方式选择 ]] | ||
+ | ** 2.3 [[ ELADCMSecondEditionThirdChapter#roc-rk3399-pc.E5.BC.80.E5.8F.91.E6.9D.BF | roc-rk3399-pc开发板 ]] | ||
+ | *** 2.3.1 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E8.BF.9E.E6.8E.A5_3 | 串口连接 ]] | ||
+ | *** 2.3.2 [[ ELADCMSecondEditionThirdChapter#.E5.90.AF.E5.8A.A8.E6.96.B9.E5.BC.8F.E9.80.89.E6.8B.A9_3 | 启动方式选择 ]] | ||
+ | ** 2.4 [[ ELADCMSecondEditionThirdChapter#IMX6ULL.E5.BC.80.E5.8F.91.E6.9D.BF | IMX6ULL开发板 ]] | ||
+ | * 3. [[ ELADCMSecondEditionThirdChapter#.E7.B3.BB.E7.BB.9F.E7.83.A7.E5.86.99 | 系统烧写 ]] | ||
+ | ** 3.1 [[ ELADCMSecondEditionThirdChapter#100ASK_AM335X.E5.BC.80.E5.8F.91.E6.9D.BF_2 | 100ASK_AM335X开发板 ]] | ||
+ | *** 3.1.1 [[ ELADCMSecondEditionThirdChapter#NandFlash.E5.90.AF.E5.8A.A8.2F.E6.9B.B4.E6.96.B0.E7.B3.BB.E7.BB.9F | NandFlash启动/更新系统 ]] | ||
+ | **** 3.1.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.A0.BC.E5.BC.8F.E5.8C.96SD.E5.8D.A1 | 格式化SD卡 ]] | ||
+ | **** 3.1.1.2 [[ ELADCMSecondEditionThirdChapter#.E6.9B.B4.E6.96.B0.E7.B3.BB.E7.BB.9F | 更新系统 ]] | ||
+ | *** 3.1.2 [[ ELADCMSecondEditionThirdChapter#SD.E5.8D.A1.E5.90.AF.E5.8A.A8 | SD卡启动 ]] | ||
+ | **** 3.1.2.1 [[ ELADCMSecondEditionThirdChapter#.E6.A0.BC.E5.BC.8F.E5.8C.96sd.E5.8D.A1_2 | 格式化sd卡 ]] | ||
+ | **** 3.1.2.2 [[ ELADCMSecondEditionThirdChapter#.E7.83.A7.E5.86.99sd.E5.8D.A1.E7.B3.BB.E7.BB.9F.E9.95.9C.E5.83.8F | 烧写sd卡系统镜像 ]] | ||
+ | ** 3.2 [[ ELADCMSecondEditionThirdChapter#Firefly-rk3288.E5.BC.80.E5.8F.91.E6.9D.BF_2 | Firefly-rk3288开发板 ]] | ||
+ | *** 3.2.1 [[ ELADCMSecondEditionThirdChapter#SD.E5.8D.A1.E5.90.AF.E5.8A.A8_2 | SD卡启动 ]] | ||
+ | **** 3.2.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.A0.BC.E5.BC.8F.E5.8C.96sd.E5.8D.A1_3 | 格式化sd卡 ]] | ||
+ | **** 3.2.1.2 [[ ELADCMSecondEditionThirdChapter#.E7.83.A7.E5.86.99sd.E5.8D.A1.E7.B3.BB.E7.BB.9F.E9.95.9C.E5.83.8F_2 | 烧写sd卡系统镜像 ]] | ||
+ | ** 3.3 [[ ELADCMSecondEditionThirdChapter#roc-rk3399-pc_.E5.BC.80.E5.8F.91.E6.9D.BF | roc-rk3399-pc 开发板 ]] | ||
+ | *** 3.3.1 [[ ELADCMSecondEditionThirdChapter#SD.E5.8D.A1.E5.90.AF.E5.8A.A8_3 | SD卡启动 ]] | ||
+ | **** 3.3.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.A0.BC.E5.BC.8F.E5.8C.96sd.E5.8D.A1_4 | 格式化sd卡 ]] | ||
+ | **** 3.3.1.2 [[ ELADCMSecondEditionThirdChapter#.E7.83.A7.E5.86.99sd.E5.8D.A1.E7.B3.BB.E7.BB.9F.E9.95.9C.E5.83.8F_3 | 烧写sd卡系统镜像 ]] | ||
+ | ** 3.4 [[ ELADCMSecondEditionThirdChapter#IMX6ULL.E5.BC.80.E5.8F.91.E6.9D.BF_2 | IMX6ULL开发板 ]] | ||
+ | * 4 [[ ELADCMSecondEditionThirdChapter#.E9.83.A8.E4.BB.B6.E5.AE.9E.E9.AA.8C | 部件实验 ]] | ||
+ | ** 4.1 [[ ELADCMSecondEditionThirdChapter#100ASK_AM335X.E5.BC.80.E5.8F.91.E6.9D.BF_3 | 100ASK_AM335X开发板 ]] | ||
+ | *** 4.1.1 [[ ELADCMSecondEditionThirdChapter#.E7.BD.91.E5.8D.A1.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | 网卡接口测试 ]] | ||
+ | *** 4.1.2 [[ ELADCMSecondEditionThirdChapter#USBhost.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | USBhost接口测试 ]] | ||
+ | *** 4.1.3 [[ ELADCMSecondEditionThirdChapter#OTG.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | OTG接口测试 ]] | ||
+ | **** 4.1.3.1 [[ ELADCMSecondEditionThirdChapter#otg_device.E6.A8.A1.E5.BC.8F.E6.B5.8B.E8.AF.95 | otg device模式测试 ]] | ||
+ | **** 4.1.3.2 [[ ELADCMSecondEditionThirdChapter#otg_host.E6.A8.A1.E5.BC.8F | otg host模式 ]] | ||
+ | *** 4.1.4 [[ ELADCMSecondEditionThirdChapter#.E8.80.B3.E6.9C.BA.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | 耳机接口测试 ]] | ||
+ | **** 4.1.4.1 [[ ELADCMSecondEditionThirdChapter#.E5.BD.95.E5.88.B6.E9.9F.B3.E9.A2.91.E6.B5.8B.E8.AF.95 | 录制音频测试 ]] | ||
+ | **** 4.1.4.2 [[ ELADCMSecondEditionThirdChapter#.E6.92.AD.E6.94.BE.E9.9F.B3.E9.A2.91.E6.B5.8B.E8.AF.95 | 播放音频测试 ]] | ||
+ | *** 4.1.5 [[ ELADCMSecondEditionThirdChapter#LCD.E6.98.BE.E7.A4.BA.E6.B5.8B.E8.AF.95 | LCD显示测试 ]] | ||
+ | **** 4.1.5.1 [[ ELADCMSecondEditionThirdChapter#lcd.E6.98.BE.E7.A4.BA.E7.BA.A2.E8.89.B2 | lcd显示红色 ]] | ||
+ | **** 4.1.5.2 [[ ELADCMSecondEditionThirdChapter#lcd.E6.98.BE.E7.A4.BA.E6.89.80.E6.9C.89 | lcd显示所有 ]] | ||
+ | *** 4.1.6 [[ ELADCMSecondEditionThirdChapter#.E8.A7.A6.E6.91.B8.E5.B1.8F.E6.A0.A1.E5.87.86.E6.B5.8B.E8.AF.95 | 触摸屏校准测试 ]] | ||
+ | *** 4.1.7 [[ ELADCMSecondEditionThirdChapter#.E5.B1.8F.E5.B9.95.E8.83.8C.E5.85.89.E8.B0.83.E8.8A.82 | 屏幕背光调节 ]] | ||
+ | *** 4.1.8 [[ ELADCMSecondEditionThirdChapter#RTC.E6.B5.8B.E8.AF.95 | RTC测试 ]] | ||
+ | *** 4.1.9 [[ ELADCMSecondEditionThirdChapter#.E6.8C.89.E9.94.AE.E6.B5.8B.E8.AF.95 | 按键测试 ]] | ||
+ | *** 4.1.10 [[ ELADCMSecondEditionThirdChapter#LED.E7.81.AF.E6.B5.8B.E8.AF.95 | LED灯测试 ]] | ||
+ | *** 4.1.11 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E6.B5.8B.E8.AF.95 | 串口测试 ]] | ||
+ | **** 4.1.11.1 [[ ELADCMSecondEditionThirdChapter#.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95 | 压力测试 ]] | ||
+ | **** 4.1.11.2 [[ ELADCMSecondEditionThirdChapter#.E5.85.A8.E9.80.9F.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95 | 全速压力测试 ]] | ||
+ | *** 4.1.12 [[ ELADCMSecondEditionThirdChapter#RS485.E6.B5.8B.E8.AF.95 | RS485测试 ]] | ||
+ | **** 4.1.12.1 [[ ELADCMSecondEditionThirdChapter#.E6.8E.A5.E6.94.B6.E7.AB.AF | 接收端 ]] | ||
+ | **** 4.1.12.2 [[ ELADCMSecondEditionThirdChapter#.E5.8F.91.E9.80.81.E7.AB.AF | 发送端 ]] | ||
+ | *** 4.1.13 [[ ELADCMSecondEditionThirdChapter#Can.E5.8A.9F.E8.83.BD.E6.B5.8B.E8.AF.95 | Can功能测试 ]] | ||
+ | **** 4.1.13.1 [[ ELADCMSecondEditionThirdChapter#.E5.8F.91.E9.80.81.E7.AB.AF_2 | 发送端 ]] | ||
+ | **** 4.1.13.2 [[ ELADCMSecondEditionThirdChapter#.E6.8E.A5.E6.94.B6.E7.AB.AF_2 | 接收端 ]] | ||
+ | ** 4.2 [[ ELADCMSecondEditionThirdChapter#Firefly-rk3288.E5.BC.80.E5.8F.91.E6.9D.BF_3 | Firefly-rk3288开发板 ]] | ||
+ | *** 4.2.1 [[ ELADCMSecondEditionThirdChapter#.E7.BD.91.E5.8D.A1.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95_2 | 网卡接口测试 ]] | ||
+ | *** 4.2.2 [[ ELADCMSecondEditionThirdChapter#4.2.2_USB_Host.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | 4.2.2 USB Host接口测试 ]] | ||
+ | *** 4.2.3 [[ ELADCMSecondEditionThirdChapter#OTG.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95_2 | OTG接口测试 ]] | ||
+ | **** 4.2.3.1 [[ ELADCMSecondEditionThirdChapter#otg_device.E6.A8.A1.E5.BC.8F.E6.B5.8B.E8.AF.95.EF.BC.9A | otg device模式测试: ]] | ||
+ | **** 4.2.3.2 [[ ELADCMSecondEditionThirdChapter#otg_host.E6.A8.A1.E5.BC.8F.EF.BC.9A | otg host模式: ]] | ||
+ | *** 4.2.4 [[ ELADCMSecondEditionThirdChapter#.E8.80.B3.E6.9C.BA.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95_2 | 耳机接口测试 ]] | ||
+ | **** 4.2.4.1 [[ ELADCMSecondEditionThirdChapter#.E6.92.AD.E6.94.BE.E9.9F.B3.E9.A2.91.EF.BC.9A | 播放音频: ]] | ||
+ | **** 4.2.4.2 [[ ELADCMSecondEditionThirdChapter#.E5.BD.95.E5.88.B6.E9.9F.B3.E9.A2.91.EF.BC.9A | 录制音频: ]] | ||
+ | *** 4.2.5 [[ ELADCMSecondEditionThirdChapter#RTC.E6.B5.8B.E8.AF.95_2 | RTC测试 ]] | ||
+ | *** 4.2.6 [[ ELADCMSecondEditionThirdChapter#.E6.8C.89.E9.94.AE.E6.B5.8B.E8.AF.95_2 | 按键测试 ]] | ||
+ | *** 4.2.7 [[ ELADCMSecondEditionThirdChapter#LED.E7.81.AF.E6.B5.8B.E8.AF.95_2 | LED灯测试 ]] | ||
+ | *** 4.2.8 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E6.B5.8B.E8.AF.95_2 | 串口测试 ]] | ||
+ | **** 4.2.8.1 [[ ELADCMSecondEditionThirdChapter#.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95.EF.BC.9A | 压力测试: ]] | ||
+ | **** 4.2.8.2 [[ ELADCMSecondEditionThirdChapter#.E5.85.A8.E9.80.9F.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95_2 | 全速压力测试 ]] | ||
+ | ** 4.3 [[ ELADCMSecondEditionThirdChapter#roc-rk3399-pc_.E5.BC.80.E5.8F.91.E6.9D.BF_2 | roc-rk3399-pc 开发板 ]] | ||
+ | *** 4.3.1 [[ ELADCMSecondEditionThirdChapter#.E7.BD.91.E5.8D.A1.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95_3 | 网卡接口测试 ]] | ||
+ | *** 4.3.2 [[ ELADCMSecondEditionThirdChapter#USB_Host.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95 | USB Host接口测试 ]] | ||
+ | *** 4.3.3 [[ ELADCMSecondEditionThirdChapter#OTG.E6.8E.A5.E5.8F.A3.E6.B5.8B.E8.AF.95_3 | OTG接口测试 ]] | ||
+ | **** 4.3.3.1 [[ ELADCMSecondEditionThirdChapter#otg_device.E6.A8.A1.E5.BC.8F.E6.B5.8B.E8.AF.95_2 | otg device模式测试 ]] | ||
+ | **** 4.3.3.2 [[ ELADCMSecondEditionThirdChapter#otg_host.E6.A8.A1.E5.BC.8F_2 | otg host模式 ]] | ||
+ | *** 4.3.4 [[ ELADCMSecondEditionThirdChapter#RTC.E6.B5.8B.E8.AF.95_3 | RTC测试 ]] | ||
+ | *** 4.3.5 [[ ELADCMSecondEditionThirdChapter#.E6.8C.89.E9.94.AE.E6.B5.8B.E8.AF.95_3 | 按键测试 ]] | ||
+ | *** 4.3.6 [[ ELADCMSecondEditionThirdChapter#LED.E7.81.AF.E6.B5.8B.E8.AF.95_3 | LED灯测试 ]] | ||
+ | *** 4.3.7 [[ ELADCMSecondEditionThirdChapter#.E4.B8.B2.E5.8F.A3.E6.B5.8B.E8.AF.95_3 | 串口测试 ]] | ||
+ | **** 4.3.7.1 [[ ELADCMSecondEditionThirdChapter#.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95_2 | 压力测试 ]] | ||
+ | **** 4.3.7.2 [[ ELADCMSecondEditionThirdChapter#.E5.85.A8.E9.80.9F.E5.8E.8B.E5.8A.9B.E6.B5.8B.E8.AF.95_3 | 全速压力测试 ]] | ||
+ | * 5. [[ ELADCMSecondEditionThirdChapter#.E5.90.8E.E7.BB.AD.E5.BC.80.E5.8F.91.E5.87.86.E5.A4.87.E5.B7.A5.E4.BD.9C.EF.BC.9A.E5.87.86.E5.A4.87.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE.E3.80.81.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8 | 后续开发准备工作:准备交叉编译工具链、编译内核 ]] | ||
+ | ** 5.1 [[ ELADCMSecondEditionThirdChapter#100ASK_AM335X.E5.BC.80.E5.8F.91.E6.9D.BF_4 | 100ASK_AM335X开发板 ]] | ||
+ | *** 5.1.1 [[ ELADCMSecondEditionThirdChapter#.E8.8E.B7.E5.8F.96.E6.BA.90.E7.A0.81 | 获取源码 ]] | ||
+ | **** 5.1.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.9C.AC.E5.9C.B0.E6.8B.B7.E8.B4.9D | 本地拷贝 ]] | ||
+ | **** 5.1.1.2 [[ ELADCMSecondEditionThirdChapter#.E5.9C.A8.E7.BA.BF.E4.B8.8B.E8.BD.BD | 在线下载 ]] | ||
+ | *** 5.1.2 [[ ELADCMSecondEditionThirdChapter#.E9.85.8D.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE | 配置交叉编译工具链 ]] | ||
+ | **** 5.1.2.1 [[ ELADCMSecondEditionThirdChapter#.E8.AE.BE.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE | 设置交叉编译工具链 ]] | ||
+ | **** 5.1.2.2 [[ ELADCMSecondEditionThirdChapter#.E6.B5.8B.E8.AF.95.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE | 测试交叉编译工具链 ]] | ||
+ | *** 5.1.3 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8 | 编译内核 ]] | ||
+ | **** 5.1.3.1 [[ ELADCMSecondEditionThirdChapter#5.E5.8E.8Bkernel.E6.BA.90.E7.A0.81 | 5压kernel源码 ]] | ||
+ | **** 5.1.3.2 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_2 | 编译内核 ]] | ||
+ | ** 5.2 [[ ELADCMSecondEditionThirdChapter#Firefly-rk3288_.E5.BC.80.E5.8F.91.E6.9D.BF | Firefly-rk3288 开发板 ]] | ||
+ | *** 5.2.1 [[ ELADCMSecondEditionThirdChapter#.E8.8E.B7.E5.8F.96.E6.BA.90.E7.A0.81_2 | 获取源码 ]] | ||
+ | **** 5.2.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.9C.AC.E5.9C.B0.E6.8B.B7.E8.B4.9D_2 | 本地拷贝 ]] | ||
+ | **** 5.2.1.2 [[ ELADCMSecondEditionThirdChapter#.E5.9C.A8.E7.BA.BF.E4.B8.8B.E8.BD.BD_2 | 在线下载 ]] | ||
+ | *** 5.2.2 [[ ELADCMSecondEditionThirdChapter#.E9.85.8D.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_2 | 配置交叉编译工具链 ]] | ||
+ | **** 5.2.2.1 [[ ELADCMSecondEditionThirdChapter#.E8.AE.BE.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_2 | 设置交叉编译工具链 ]] | ||
+ | **** 5.2.2.2 [[ ELADCMSecondEditionThirdChapter#.E6.B5.8B.E8.AF.95.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_2 | 测试交叉编译工具链 ]] | ||
+ | *** 5.2.3 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_3 | 编译内核 ]] | ||
+ | **** 5.2.3.1 [[ ELADCMSecondEditionThirdChapter#.E8.A7.A3.E5.8E.8Bkernel.E6.BA.90.E7.A0.81 | 解压kernel源码 ]] | ||
+ | **** 5.2.3.2 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_4 | 编译内核 ]] | ||
+ | ** 5.3 [[ ELADCMSecondEditionThirdChapter#Roc-rk3399-pc_.E5.BC.80.E5.8F.91.E6.9D.BF_3 | Roc-rk3399-pc 开发板 ]] | ||
+ | *** 5.3.1 [[ ELADCMSecondEditionThirdChapter#.E8.8E.B7.E5.8F.96.E6.BA.90.E7.A0.81_3 | 获取源码 ]] | ||
+ | **** 5.3.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.9C.AC.E5.9C.B0.E6.8B.B7.E8.B4.9D_3 | 本地拷贝 ]] | ||
+ | **** 5.3.1.2 [[ ELADCMSecondEditionThirdChapter#.E5.9C.A8.E7.BA.BF.E4.B8.8B.E8.BD.BD_3 | 在线下载 ]] | ||
+ | *** 5.3.2 [[ ELADCMSecondEditionThirdChapter#.E9.85.8D.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_3 | 配置交叉编译工具链 ]] | ||
+ | **** 5.3.2.1 [[ ELADCMSecondEditionThirdChapter#.E8.AE.BE.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_3 | 设置交叉编译工具链 ]] | ||
+ | **** 5.3.2.2 [[ ELADCMSecondEditionThirdChapter#.E6.B5.8B.E8.AF.95.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_3 | 测试交叉编译工具链 ]] | ||
+ | *** 5.3.3 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_5 | 编译内核 ]] | ||
+ | **** 5.3.3.1 [[ ELADCMSecondEditionThirdChapter#.E8.A7.A3.E5.8E.8Bkernel.E6.BA.90.E7.A0.81_2 | 解压kernel源码 ]] | ||
+ | **** 5.3.3.2 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_6 | 编译内核 ]] | ||
+ | ** 5.4 [[ ELADCMSecondEditionThirdChapter#IMX6ULL.E5.BC.80.E5.8F.91.E6.9D.BF_3 | IMX6ULL开发板 ]] | ||
+ | *** 5.4.1 [[ ELADCMSecondEditionThirdChapter#.E8.8E.B7.E5.8F.96.E6.BA.90.E7.A0.81_4 | 获取源码 ]] | ||
+ | **** 5.4.1.1 [[ ELADCMSecondEditionThirdChapter#.E6.9C.AC.E5.9C.B0.E6.8B.B7.E8.B4.9D_4 | 本地拷贝 ]] | ||
+ | **** 5.4.1.2 [[ ELADCMSecondEditionThirdChapter#.E5.9C.A8.E7.BA.BF.E4.B8.8B.E8.BD.BD_4 | 在线下载 ]] | ||
+ | *** 5.4.2 [[ ELADCMSecondEditionThirdChapter#.E9.85.8D.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_4 | 配置交叉编译工具链 ]] | ||
+ | **** 5.4.2.1 [[ ELADCMSecondEditionThirdChapter#.E8.AE.BE.E7.BD.AE.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_4 | 设置交叉编译工具链 ]] | ||
+ | **** 5.4.2.2 [[ ELADCMSecondEditionThirdChapter#.E6.B5.8B.E8.AF.95.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91.E5.B7.A5.E5.85.B7.E9.93.BE_4 | 测试交叉编译工具链 ]] | ||
+ | *** 5.4.3 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_7 | 编译内核 ]] | ||
+ | **** 5.4.3.1 [[ ELADCMSecondEditionThirdChapter#.E8.A7.A3.E5.8E.8Bkernel.E6.BA.90.E7.A0.81_3 | 解压kernel源码 ]] | ||
+ | **** 5.4.3.2 [[ ELADCMSecondEditionThirdChapter#.E7.BC.96.E8.AF.91.E5.86.85.E6.A0.B8_8 | 编译内核 ]] | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | }}<br> | ||
+ | <br> | ||
+ | |||
+ | |||
+ | ==[[ ELADCMSecondEditionChapterFour | 第四篇 嵌入式 Linux 应用开发基础知识 ]]== | ||
+ | {{#menu: | ||
+ | * 1. [[ ELADCMSecondEditionChapterFour#HelloWorld.E8.83.8C.E5.90.8E.E6.B2.A1.E9.82.A3.E4.B9.88.E7.AE.80.E5.8D.95 | HelloWorld背后没那么简单 ]] | ||
+ | ** 1.1 [[ ELADCMSecondEditionChapterFour#.E4.BA.A4.E5.8F.89.E7.BC.96.E8.AF.91hello.c | 交叉编译hello.c ]] | ||
+ | ** 1.2 [[ ELADCMSecondEditionChapterFour#.E8.AF.B7.E5.9B.9E.E7.AD.94.E8.BF.99.E5.87.A0.E4.B8.AA.E9.97.AE.E9.A2.98 | 请回答这几个问题 ]] | ||
+ | ** 1.3 [[ ELADCMSecondEditionChapterFour#.E6.BC.94.E7.A4.BA | 演示 ]] | ||
+ | * 2 [[ ELADCMSecondEditionChapterFour#GCC.E7.BC.96.E8.AF.91.E5.99.A8.E7.9A.84.E4.BD.BF.E7.94.A8 | GCC编译器的使用 ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionChapterFour#.E9.85.8D.E5.A5.97.E8.A7.86.E9.A2.91.E5.86.85.E5.AE.B9.E5.A4.A7.E7.BA.B2 | 配套视频内容大纲 ]] | ||
+ | *** 2.1.1 [[ ELADCMSecondEditionChapterFour#GCC.E7.BC.96.E8.AF.91.E8.BF.87.E7.A8.8B.28.E7.B2.BE.E7.AE.80.E7.89.88.29 | <span>GCC编译过程</span>(精简版) ]] | ||
+ | *** 2.1.2 [[ ELADCMSecondEditionChapterFour#.E5.B8.B8.E7.94.A8.E7.BC.96.E8.AF.91.E9.80.89.E9.A1.B9 | <span>常用编译选项</span> ]] | ||
+ | *** 2.1.3 [[ ELADCMSecondEditionChapterFour#.E6.80.8E.E4.B9.88.E7.BC.96.E8.AF.91.E5.A4.9A.E4.B8.AA.E6.96.87.E4.BB.B6 | <span>怎么编译多个文件</span> ]] | ||
+ | *** 2.1.4 [[ ELADCMSecondEditionChapterFour#.E5.88.B6.E4.BD.9C.E3.80.81.E4.BD.BF.E7.94.A8.E5.8A.A8.E6.80.81.E5.BA.93 | <span>制作、使用动态库</span> ]] | ||
+ | *** 2.1.5 [[ ELADCMSecondEditionChapterFour#.E5.88.B6.E4.BD.9C.E3.80.81.E4.BD.BF.E7.94.A8.E9.9D.99.E6.80.81.E5.BA.93 | <span>制作、使用静态库</span> ]] | ||
+ | *** 2.1.6 [[ ELADCMSecondEditionChapterFour#.E5.BE.88.E6.9C.89.E7.94.A8.E7.9A.84.E9.80.89.E9.A1.B9 | <span>很有用的选项</span> ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionChapterFour#GCC.E7.BC.96.E8.AF.91.E8.BF.87.E7.A8.8B | GCC编译过程 ]] | ||
+ | ** 2.2 [[ ELADCMSecondEditionChapterFour#GCC.E6.80.BB.E4.BD.93.E9.80.89.E9.A1.B9.28Overall_Option.29 | GCC总体选项(Overall Option) ]] | ||
+ | ** 2.3 [[ ELADCMSecondEditionChapterFour#.E8.AD.A6.E5.91.8A.E9.80.89.E9.A1.B9.28Warning_Option.29 | 警告选项(Warning Option) ]] | ||
+ | ** 2.4 [[ ELADCMSecondEditionChapterFour#.E8.B0.83.E8.AF.95.E9.80.89.E9.A1.B9.28Debugging_Option.29 | 调试选项(Debugging Option) ]] | ||
+ | ** 2.5 [[ ELADCMSecondEditionChapterFour#.E4.BC.98.E5.8C.96.E9.80.89.E9.A1.B9.28Optimization_Option.29 | 优化选项(Optimization Option) ]] | ||
+ | ** 2.5 [[ ELADCMSecondEditionChapterFour#.E9.93.BE.E6.8E.A5.E5.99.A8.E9.80.89.E9.A1.B9.28Linker_Option.29 | 链接器选项(Linker Option) ]] | ||
+ | ** 2.7 [[ ELADCMSecondEditionChapterFour#.E7.9B.AE.E5.BD.95.E9.80.89.E9.A1.B9.28Directory_Option.29 | 目录选项(Directory Option) ]] | ||
+ | ** 2.8 [[ ELADCMSecondEditionChapterFour#ld.2Fobjdump.2Fobjcopy.E9.80.89.E9.A1.B9 | ld/objdump/objcopy选项 ]] | ||
+ | * 3. [[ ELADCMSecondEditionChapterFour#Makefile.E7.9A.84.E4.BD.BF.E7.94.A8 | Makefile的使用 ]] | ||
+ | ** 3.1 [[ ELADCMSecondEditionChapterFour#.E9.85.8D.E5.A5.97.E8.A7.86.E9.A2.91.E5.86.85.E5.AE.B9.E5.A4.A7.E7.BA.B2_2 | 配套视频内容大纲 ]] | ||
+ | *** 3.1.1 [[ ELADCMSecondEditionChapterFour#Makefile.E8.A7.84.E5.88.99.E4.B8.8E.E7.A4.BA.E4.BE.8B | Makefile规则与示例 ]] | ||
+ | **** 3.1.2 [[ ELADCMSecondEditionChapterFour#.E2.91.A0_.E4.B8.BA.E4.BB.80.E4.B9.88.E9.9C.80.E8.A6.81Makefile | ① 为什么需要Makefile ]] | ||
+ | **** 3.1.3 [[ ELADCMSecondEditionChapterFour#.E2.91.A1_Makefile.E5.85.B6.E5.AE.9E.E6.8C.BA.E7.AE.80.E5.8D.95 | ② Makefile其实挺简单 ]] | ||
+ | **** 3.1.3 [[ ELADCMSecondEditionChapterFour#.E2.91.A2_.E5.85.88.E4.BB.8B.E7.BB.8DMakefile.E7.9A.842.E4.B8.AA.E5.87.BD.E6.95.B0 | ③ 先介绍Makefile的2个函数 ]] | ||
+ | **** 3.1.4 [[ ELADCMSecondEditionChapterFour#.E2.91.A3_.E4.B8.80.E6.AD.A5.E4.B8.80.E6.AD.A5.E5.AE.8C.E5.96.84Makefile | ④ 一步一步完善Makefile ]] | ||
+ | *** 3.1.2 [[ ELADCMSecondEditionChapterFour#.E9.80.9A.E7.94.A8Makefile.E7.9A.84.E4.BD.BF.E7.94.A8 | 通用Makefile的使用 ]] | ||
+ | *** 3.1.3 [[ ELADCMSecondEditionChapterFour#.E9.80.9A.E7.94.A8Makefile.E7.9A.84.E8.A7.A3.E6.9E.90 | 通用Makefile的解析 ]] | ||
+ | **** [[ ELADCMSecondEditionChapterFour#.E2.91.A0_.E9.9B.B6.E6.98.9F.E7.9F.A5.E8.AF.86.E7.82.B9 | ① 零星知识点 ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#A._make.E5.91.BD.E4.BB.A4.E7.9A.84.E4.BD.BF.E7.94.A8.EF.BC.9A | A. make命令的使用: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#B._.E5.8D.B3.E6.97.B6.E5.8F.98.E9.87.8F.E3.80.81.E5.BB.B6.E6.97.B6.E5.8F.98.E9.87.8F.EF.BC.9A | B. 即时变量、延时变量: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#C._.E5.8F.98.E9.87.8F.E7.9A.84.E5.AF.BC.E5.87.BA.28export.29.EF.BC.9A | C. 变量的导出(export): ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#D._Makefile.E4.B8.AD.E5.8F.AF.E4.BB.A5.E4.BD.BF.E7.94.A8shell.E5.91.BD.E4.BB.A4.EF.BC.9A | D. Makefile中可以使用shell命令: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#E._.E5.9C.A8Makefile.E4.B8.AD.E6.80.8E.E4.B9.88.E6.94.BE.E7.BD.AE.E7.AC.AC1.E4.B8.AA.E7.9B.AE.E6.A0.87.EF.BC.9A | E. 在Makefile中怎么放置第1个目标: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#F._.E5.81.87.E6.83.B3.E7.9B.AE.E6.A0.87.EF.BC.9A | F. 假想目标: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#G._.E5.B8.B8.E7.94.A8.E7.9A.84.E5.87.BD.E6.95.B0.EF.BC.9A | G. 常用的函数: ]] | ||
+ | **** 3.1.3.2 [[ ELADCMSecondEditionChapterFour#.E2.91.A1_.E9.80.9A.E7.94.A8Makefile.E7.9A.84.E8.AE.BE.E8.AE.A1.E6.80.9D.E6.83.B3 | ② 通用Makefile的设计思想 ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#A._.E5.9C.A8Makefile.E6.96.87.E4.BB.B6.E4.B8.AD.E7.A1.AE.E5.AE.9A.E8.A6.81.E7.BC.96.E8.AF.91.E7.9A.84.E6.96.87.E4.BB.B6.E3.80.81.E7.9B.AE.E5.BD.95.EF.BC.8C.E6.AF.94.E5.A6.82.EF.BC.9A | A. 在Makefile文件中确定要编译的文件、目录,比如: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#B._.E5.9C.A8Makefile.build.E4.B8.AD.E8.AE.BE.E7.BD.AE.E7.BC.96.E8.AF.91.E8.A7.84.E5.88.99.EF.BC.8C.E6.9C.893.E6.9D.A1.E7.BC.96.E8.AF.91.E8.A7.84.E5.88.99.EF.BC.9A | B. 在Makefile.build中设置编译规则,有3条编译规则: ]] | ||
+ | ***** [[ ELADCMSecondEditionChapterFour#C._.E9.A1.B6.E5.B1.82Makefile.E4.B8.AD.E6.8A.8A.E9.A1.B6.E5.B1.82.E7.9B.AE.E5.BD.95.E7.9A.84built-in.o.E9.93.BE.E6.8E.A5.E6.88.90APP.EF.BC.9A | C. 顶层Makefile中把顶层目录的built-in.o链接成APP: ]] | ||
+ | **** 3.1.3.2 [[ ELADCMSecondEditionChapterFour#.E2.91.A2_.E6.83.85.E6.99.AF.E6.BC.94.E7.BB.8E | ③ 情景演绎 ]] | ||
+ | ** 3.1 [[ ELADCMSecondEditionChapterFour#Makefile.E8.A7.84.E5.88.99 | Makefile规则 ]] | ||
+ | ** 3.2 [[ ELADCMSecondEditionChapterFour#Makefile.E6.96.87.E4.BB.B6.E9.87.8C.E7.9A.84.E8.B5.8B.E5.80.BC.E6.96.B9.E6.B3.95 | Makefile文件里的赋值方法 ]] | ||
+ | ** 3.3 [[ ELADCMSecondEditionChapterFour#Makefile.E5.B8.B8.E7.94.A8.E5.87.BD.E6.95.B0 | Makefile常用函数 ]] | ||
+ | *** 3.1.1 [[ ELADCMSecondEditionChapterFour#.E5.AD.97.E7.AC.A6.E4.B8.B2.E6.9B.BF.E6.8D.A2.E5.92.8C.E5.88.86.E6.9E.90.E5.87.BD.E6.95.B0 | 字符串替换和分析函数 ]] | ||
+ | *** 3.1.2 [[ ELADCMSecondEditionChapterFour#.E6.96.87.E4.BB.B6.E5.90.8D.E5.87.BD.E6.95.B0 | 文件名函数 ]] | ||
+ | *** 3.1.3 [[ ELADCMSecondEditionChapterFour#.E5.85.B6.E4.BB.96.E5.87.BD.E6.95.B0 | 其他函数 ]] | ||
+ | * 4. [[ ELADCMSecondEditionChapterFour#.E6.96.87.E4.BB.B6IO | 文件IO ]] | ||
+ | ** 4.1 [[ ELADCMSecondEditionChapterFour#.E6.96.87.E4.BB.B6.E4.BB.8E.E5.93.AA.E6.9D.A5.EF.BC.9F | 文件从哪来? ]] | ||
+ | ** 4.2 [[ ELADCMSecondEditionChapterFour#.E6.80.8E.E4.B9.88.E8.AE.BF.E9.97.AE.E6.96.87.E4.BB.B6.EF.BC.9F | 怎么访问文件? ]] | ||
+ | *** 4.2.1 [[ ELADCMSecondEditionChapterFour#.E9.80.9A.E7.94.A8.E7.9A.84IO.E6.A8.A1.E5.9E.8B.EF.BC.9Aopen.2Fread.2Fwrite.2Flseek.2Fclose | 通用的IO模型:open/read/write/lseek/close ]] | ||
+ | *** 4.2.2 [[ ELADCMSecondEditionChapterFour#.E4.B8.8D.E6.98.AF.E9.80.9A.E7.94.A8.E7.9A.84.E5.87.BD.E6.95.B0.EF.BC.9Aioctl.2Fmmap | 不是通用的函数:ioctl/mmap ]] | ||
+ | ** 4.3 [[ ELADCMSecondEditionChapterFour#.E6.80.8E.E4.B9.88.E7.9F.A5.E9.81.93.E8.BF.99.E4.BA.9B.E5.87.BD.E6.95.B0.E7.9A.84.E7.94.A8.E6.B3.95.EF.BC.9F | 怎么知道这些函数的用法? ]] | ||
+ | ** 4.4 [[ ELADCMSecondEditionChapterFour#.E7.B3.BB.E7.BB.9F.E8.B0.83.E7.94.A8.E5.87.BD.E6.95.B0.E6.80.8E.E4.B9.88.E8.BF.9B.E5.85.A5.E5.86.85.E6.A0.B8.EF.BC.9F | 系统调用函数怎么进入内核? ]] | ||
+ | ** 4.5 [[ ELADCMSecondEditionChapterFour#.E5.86.85.E6.A0.B8.E7.9A.84sys_open.E3.80.81sys_read.E4.BC.9A.E5.81.9A.E4.BB.80.E4.B9.88.EF.BC.9F | 内核的sys_open、sys_read会做什么? ]] | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | }}<br> | ||
+ | <br> | ||
+ | |||
+ | ==[[ ELADCMSecondEditionChapterFive | 第五篇 嵌入式 Linux 驱动开发基础知识 ]]== | ||
+ | {{#menu: | ||
+ | * 1. [[ ELADCMSecondEditionChapterFivePartⅠ | <span>嵌入式后Linux驱动开发基础知识</span>的引导与说明 ]] | ||
+ | ** 1.1 [[ ELADCMSecondEditionChapterFive#.E6.89.93.E7.AE.97.E8.AE.B2.E4.BB.80.E4.B9.88.E3.80.81.E6.80.8E.E4.B9.88.E8.AE.B2.EF.BC.9F | 打算讲什么、怎么讲? ]] | ||
+ | ** 1.2[[ ELADCMSecondEditionChapterFive#.E9.9C.80.E8.A6.81.E5.81.9A.E4.BB.80.E4.B9.88.E5.87.86.E5.A4.87.E5.B7.A5.E4.BD.9C | 需要做什么准备工作 ]] | ||
+ | * 2. [[ ELADCMSecondEditionChapterFivePartⅡ | Hello驱动(不涉及硬件操作) ]] | ||
+ | ** 2.1 [[ ELADCMSecondEditionChapterFive#APP.E6.89.93.E5.BC.80.E7.9A.84.E6.96.87.E4.BB.B6.E5.9C.A8.E5.86.85.E6.A0.B8.E4.B8.AD.E5.A6.82.E4.BD.95.E8.A1.A8.E7.A4.BA | APP打开的文件在内核中如何表示 ]] | ||
+ | ** 2.2 [[ ELADCMSecondEditionChapterFive#.E6.89.93.E5.BC.80.E5.AD.97.E7.AC.A6.E8.AE.BE.E5.A4.87.E8.8A.82.E7.82.B9.E6.97.B6.EF.BC.8C.E5.86.85.E6.A0.B8.E4.B8.AD.E4.B9.9F.E6.9C.89.E5.AF.B9.E5.BA.94.E7.9A.84struct_file | 打开字符设备节点时,内核中也有对应的struct file ]] | ||
+ | ** 2.3 [[ ELADCMSecondEditionChapterFive#.E8.AF.B7.E7.8C.9C.E7.8C.9C.E6.80.8E.E4.B9.88.E7.BC.96.E5.86.99.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 请猜猜怎么编写驱动程序 ]] | ||
+ | ** 2.4 [[ ELADCMSecondEditionChapterFive#.E8.AF.B7.E4.B8.8D.E8.A6.81.E5.95.B0.E5.97.A6.EF.BC.8C.E8.A1.A8.E6.BC.94.E4.BD.A0.E7.9A.84.E4.BB.A3.E7.A0.81.E5.90.A7 | 请不要啰嗦,表演你的代码吧 ]] | ||
+ | *** 2.4.1 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 写驱动程序 ]] | ||
+ | *** 2.4.2 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E6.B5.8B.E8.AF.95.E7.A8.8B.E5.BA.8F | 写测试程序 ]] | ||
+ | *** 2.4.3 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95 | 测试 ]] | ||
+ | ** 2.5 [[ ELADCMSecondEditionChapterFive#Hello.E9.A9.B1.E5.8A.A8.E4.B8.AD.E7.9A.84.E4.B8.80.E4.BA.9B.E8.A1.A5.E5.85.85.E7.9F.A5.E8.AF.86 | Hello驱动中的一些补充知识 ]] | ||
+ | *** 2.5.1 [[ ELADCMSecondEditionChapterFive#module_init.2Fmodule_exit.E7.9A.84.E5.AE.9E.E7.8E.B0 | module_init/module_exit的实现 ]] | ||
+ | *** 2.5.2 [[ ELADCMSecondEditionChapterFive#register_chrdev.E7.9A.84.E5.86.85.E9.83.A8.E5.AE.9E.E7.8E.B0 | register_chrdev的内部实现 ]] | ||
+ | *** 2.5.3 [[ ELADCMSecondEditionChapterFive#class_destroy.2Fdevice_create.E6.B5.85.E6.9E.90 | class_destroy/device_create浅析 ]] | ||
+ | * 3. [[ ELADCMSecondEditionChapterFivePartⅢ | 硬件知识_LED原理图 ]] | ||
+ | ** 3.1 [[ ELADCMSecondEditionChapterFive#.E5.85.88.E6.9D.A5.E8.AE.B2.E8.AE.B2.E6.80.8E.E4.B9.88.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE | <span>先来讲讲怎么看原理图</span> ]] | ||
+ | * 4. [[ ELADCMSecondEditionChapterFivePartⅣ | 普适的GPIO引脚操作方法 ]] | ||
+ | ** 4.1 [[ ELADCMSecondEditionChapterFive#GPIO.E6.A8.A1.E5.9D.97.E4.B8.80.E8.88.AC.E7.BB.93.E6.9E.84 | GPIO模块一般结构 ]] | ||
+ | ** 4.2 [[ ELADCMSecondEditionChapterFive#GPIO.E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C | GPIO寄存器操作 ]] | ||
+ | ** 4.3 [[ ELADCMSecondEditionChapterFive#GPIO.E7.9A.84.E5.85.B6.E4.BB.96.E5.8A.9F.E8.83.BD.EF.BC.9A.E9.98.B2.E6.8A.96.E5.8A.A8.E3.80.81.E4.B8.AD.E6.96.AD.E3.80.81.E5.94.A4.E9.86.92 | GPIO的其他功能:防抖动、中断、唤醒 ]] | ||
+ | * 5. [[ ELADCMSecondEditionChapterFivePartⅤ | 具体单板的GPIO操作方法 ]] | ||
+ | ** 5.1 [[ ELADCMSecondEditionChapterFive#AM335X.E7.9A.84GPIO.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | AM335X的GPIO操作方法 ]] | ||
+ | *** 5.1.1 [[ ELADCMSecondEditionChapterFive#AM335X.E7.9A.84GPIO.E6.A8.A1.E5.9D.97.E7.BB.93.E6.9E.84 | AM335X的GPIO模块结构 ]] | ||
+ | *** 5.1.2 [[ ELADCMSecondEditionChapterFive#AM335X.E7.9A.84GPIO.E7.9B.B8.E5.85.B3.E5.AF.84.E5.AD.98.E5.99.A8 | AM335X的GPIO相关寄存器 ]] | ||
+ | *** 5.1.3 [[ ELADCMSecondEditionChapterFive#set-and-clear.E5.8D.8F.E8.AE.AE | set-and-clear协议 ]] | ||
+ | ** 5.2 [[ ELADCMSecondEditionChapterFive#RK3288.E7.9A.84GPIO.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | RK3288的GPIO操作方法 ]] | ||
+ | *** 5.2.1 [[ ELADCMSecondEditionChapterFive#RK3288.E7.9A.84GPIO.E6.A8.A1.E5.9D.97.E7.BB.93.E6.9E.84 | RK3288的GPIO模块结构 ]] | ||
+ | *** 5.2.2 [[ ELADCMSecondEditionChapterFive#RK3288.E7.9A.84GPIO.E7.9B.B8.E5.85.B3.E5.AF.84.E5.AD.98.E5.99.A8 | RK3288的GPIO相关寄存器 ]] | ||
+ | ** 5.3 [[ ELADCMSecondEditionChapterFive#RK3399.E7.9A.84GPIO.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | RK3399的GPIO操作方法 ]] | ||
+ | *** 5.3.1 [[ ELADCMSecondEditionChapterFive#RK3399.E7.9A.84GPIO.E6.A8.A1.E5.9D.97.E7.BB.93.E6.9E.84 | RK3399的GPIO模块结构 ]] | ||
+ | *** 5.3.2 [[ ELADCMSecondEditionChapterFive#RK3399.E7.9A.84GPIO.E7.9B.B8.E5.85.B3.E5.AF.84.E5.AD.98.E5.99.A8 | RK3399的GPIO相关寄存器 ]] | ||
+ | ** 5.4 [[ ELADCMSecondEditionChapterFive#IMX6ULL.E7.9A.84GPIO.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | IMX6ULL的GPIO操作方法 ]] | ||
+ | *** 5.4.1 [[ ELADCMSecondEditionChapterFive#IMX6ULL.E7.9A.84GPIO.E6.A8.A1.E5.9D.97.E7.BB.93.E6.9E.84 | IMX6ULL的GPIO模块结构 ]] | ||
+ | *** 5.4.2 [[ ELADCMSecondEditionChapterFive#CCM.E7.94.A8.E4.BA.8E.E8.AE.BE.E7.BD.AE.E6.98.AF.E5.90.A6.E5.90.91GPIO.E6.A8.A1.E5.9D.97.E6.8F.90.E4.BE.9B.E6.97.B6.E9.92.9F | CCM用于设置是否向GPIO模块提供时钟 ]] | ||
+ | *** 5.4.3 [[ ELADCMSecondEditionChapterFive#IOMUXC.EF.BC.9A.E5.BC.95.E8.84.9A.E7.9A.84.E6.A8.A1.E5.BC.8F.28Mode.E3.80.81.E5.8A.9F.E8.83.BD.29 | IOMUXC:引脚的模式(Mode、功能) ]] | ||
+ | *** 5.4.4 [[ ELADCMSecondEditionChapterFive#GPIO.E6.A8.A1.E5.9D.97.E5.86.85.E9.83.A8 | GPIO模块内部 ]] | ||
+ | *** 5.4.5 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E7.BC.96.E7.A8.8B | 怎么编程 ]] | ||
+ | **** 5.4.5.1 [[ ELADCMSecondEditionChapterFive#.E8.AF.BBGPIO | 读GPIO ]] | ||
+ | **** 5.4.5.2 [[ ELADCMSecondEditionChapterFive#.E5.86.99GPIO | 写GPIO ]] | ||
+ | * 6. [[ ELADCMSecondEditionChapterFivePartⅥ | LED驱动程序框架 ]] | ||
+ | ** 6.1 [[ ELADCMSecondEditionChapterFive#.E5.9B.9E.E9.A1.BE.E5.AD.97.E7.AC.A6.E8.AE.BE.E5.A4.87.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.E6.A1.86.E6.9E.B6 | 回顾字符设备驱动程序框架 ]] | ||
+ | ** 6.2 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8ELED.E9.A9.B1.E5.8A.A8.EF.BC.8C.E6.88.91.E4.BB.AC.E6.83.B3.E8.A6.81.E4.BB.80.E4.B9.88.E6.A0.B7.E7.9A.84.E6.8E.A5.E5.8F.A3.EF.BC.9F | 对于LED驱动,我们想要什么样的接口? ]] | ||
+ | ** 6.3 [[ ELADCMSecondEditionChapterFive#LED.E9.A9.B1.E5.8A.A8.E8.A6.81.E6.80.8E.E4.B9.88.E5.86.99.EF.BC.8C.E6.89.8D.E8.83.BD.E6.94.AF.E6.8C.81.E5.A4.9A.E4.B8.AA.E6.9D.BF.E5.AD.90.EF.BC.9F.E5.88.86.E5.B1.82.E3.80.82 | LED驱动要怎么写,才能支持多个板子?分层。 ]] | ||
+ | ** 6.4 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E4.BB.A3.E7.A0.81 | 写代码 ]] | ||
+ | *** 6.4.1 [[ ELADCMSecondEditionChapterFive#.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 驱动程序 ]] | ||
+ | **** 6.4.1.1 [[ ELADCMSecondEditionChapterFive#.E6.8A.8ALED.E7.9A.84.E6.93.8D.E4.BD.9C.E6.8A.BD.E8.B1.A1.E5.87.BA.E4.B8.80.E4.B8.AAled_operations.E7.BB.93.E6.9E.84.E4.BD.93 | 把LED的操作抽象出一个led_operations结构体 ]] | ||
+ | **** 6.4.1.2 [[ ELADCMSecondEditionChapterFive#.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.E7.9A.84.E4.B8.8A.E5.B1.82.EF.BC.9Afile_operations.E7.BB.93.E6.9E.84.E4.BD.93 | 驱动程序的上层:file_operations结构体 ]] | ||
+ | *** 6.4.2 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95.E7.A8.8B.E5.BA.8F | 测试程序 ]] | ||
+ | *** 6.4.3 [[ ELADCMSecondEditionChapterFive#.E4.B8.8A.E6.9C.BA.E6.B5.8B.E8.AF.95 | 上机测试 ]] | ||
+ | ** 6.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A | 课后作业 ]] | ||
+ | * 7. [[ ELADCMSecondEditionChapterFivePartⅦ | 具体单板的LED驱动程序 ]] | ||
+ | ** 7.1 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E5.86.99LED.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.EF.BC.9F | 怎么写LED驱动程序? ]] | ||
+ | ** 7.2 [[ ELADCMSecondEditionChapterFive#AM335X.E7.9A.84LED.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | AM335X的LED驱动程序 ]] | ||
+ | *** 7.1.1 [[ ELADCMSecondEditionChapterFive#.E5.8E.9F.E7.90.86.E5.9B.BE | 原理图 ]] | ||
+ | *** 7.1.2 [[ ELADCMSecondEditionChapterFive#.E6.89.80.E6.B6.89.E5.8F.8A.E7.9A.84.E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C | 所涉及的寄存器操作 ]] | ||
+ | *** 7.1.3 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E7.A8.8B.E5.BA.8F | 写程序 ]] | ||
+ | *** 7.1.4 [[ ELADCMSecondEditionChapterFive#.E9.85.8D.E7.BD.AE.E5.86.85.E6.A0.B8.E5.8E.BB.E6.8E.89.E5.8E.9F.E6.9C.89LED.E9.A9.B1.E5.8A.A8 | 配置内核去掉原有LED驱动 ]] | ||
+ | *** 7.1.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_2 | 课后作业 ]] | ||
+ | ** 7.3 [[ ELADCMSecondEditionChapterFive#RK3288.E5.92.8CRK3399.E7.9A.84LED.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | RK3288和RK3399的LED驱动程序 ]] | ||
+ | *** 7.3.1 [[ ELADCMSecondEditionChapterFive#.E5.8E.9F.E7.90.86.E5.9B.BE_2 | 原理图 ]] | ||
+ | **** 7.3.1.1 [[ ELADCMSecondEditionChapterFive#fireflye_RK3288.E7.9A.84LED.E5.8E.9F.E7.90.86.E5.9B.BE | fireflye RK3288的LED原理图 ]] | ||
+ | **** 7.3.1.2 [[ ELADCMSecondEditionChapterFive#firefly_RK3399.E7.9A.84LED.E5.8E.9F.E7.90.86.E5.9B.BE | firefly RK3399的LED原理图 ]] | ||
+ | *** 7.3.2 [[ ELADCMSecondEditionChapterFive#.E6.89.80.E6.B6.89.E5.8F.8A.E7.9A.84.E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C_2 | 所涉及的寄存器操作 ]] | ||
+ | **** 7.3.2.1 [[ ELADCMSecondEditionChapterFive#RK3288.E7.9A.84GPIO8_A1.E5.BC.95.E8.84.9A | RK3288的GPIO8_A1引脚 ]] | ||
+ | **** 7.3.2.2 [[ ELADCMSecondEditionChapterFive#RK3399.E7.9A.84GPIO2_D3.E5.BC.95.E8.84.9A | RK3399的GPIO2_D3引脚 ]] | ||
+ | *** 7.3.3 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E7.A8.8B.E5.BA.8F_2 | 写程序 ]] | ||
+ | **** 7.3.3.1 [[ ELADCMSecondEditionChapterFive#RK3288 | RK3288 ]] | ||
+ | **** 7.3.3.2 [[ ELADCMSecondEditionChapterFive#RK3399 | RK3399 ]] | ||
+ | *** 7.3.4 [[ ELADCMSecondEditionChapterFive#.E4.B8.8A.E6.9C.BA.E5.AE.9E.E9.AA.8C | 上机实验 ]] | ||
+ | **** 7.3.4.1 [[ ELADCMSecondEditionChapterFive#RK3288_2 | RK3288 ]] | ||
+ | **** 7.3.4.2 [[ ELADCMSecondEditionChapterFive#RK3399_2 | RK3399 ]] | ||
+ | *** 7.3.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_3 | 课后作业 ]] | ||
+ | ** 7.4 [[ ELADCMSecondEditionChapterFive#.E9.87.8E.E7.81.AB.2F.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90IMX6ULL.E7.9A.84LED.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 野火/正点原子IMX6ULL的LED驱动程序 ]] | ||
+ | *** 7.4.1 [[ ELADCMSecondEditionChapterFive#.E5.8E.9F.E7.90.86.E5.9B.BE_3 | 原理图 ]] | ||
+ | **** 7.4.1.1 [[ ELADCMSecondEditionChapterFive#.E9.87.8E.E7.81.ABfire_imx6ull-pro.E5.BC.80.E5.8F.91.E6.9D.BF | 野火fire_imx6ull-pro开发板 ]] | ||
+ | **** 7.4.1.2 [[ ELADCMSecondEditionChapterFive#.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90Atk_imx6ull-alpha.E5.BC.80.E5.8F.91.E6.9D.BF | 正点原子Atk_imx6ull-alpha开发板 ]] | ||
+ | *** 7.4.2 [[ ELADCMSecondEditionChapterFive#.E6.89.80.E6.B6.89.E5.8F.8A.E7.9A.84.E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C_3 | 所涉及的寄存器操作 ]] | ||
+ | **** 7.4.2.1 [[ ELADCMSecondEditionChapterFive#.E9.87.8E.E7.81.ABfire_imx6ull-pro_.E5.BC.80.E5.8F.91.E6.9D.BF | <span>野火fire_imx6ull-pro</span> 开发板 ]] | ||
+ | **** 7.4.2.2 [[ ELADCMSecondEditionChapterFive#.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90Atk_imx6ull-alpha.E5.BC.80.E5.8F.91.E6.9D.BF_2 | <span>正点原子Atk_imx6ull-alpha</span>开发板 ]] | ||
+ | *** 7.4.3 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E7.A8.8B.E5.BA.8F_3 | 写程序 ]] | ||
+ | **** 7.4.3.1 [[ ELADCMSecondEditionChapterFive#.E9.87.8E.E7.81.ABfire_imx6ull-pro.E5.BC.80.E5.8F.91.E6.9D.BF_2 | <span>野火fire_imx6ull-pro</span>开发板 ]] | ||
+ | **** 7.4.3.2 [[ ELADCMSecondEditionChapterFive#.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90Atk_imx6ull-alpha.E5.BC.80.E5.8F.91.E6.9D.BF_3 | <span>正点原子Atk_imx6ull-alpha</span>开发板 ]] | ||
+ | *** 7.4.4 [[ ELADCMSecondEditionChapterFive#.E4.B8.8A.E6.9C.BA.E5.AE.9E.E9.AA.8C_2 | 上机实验 ]] | ||
+ | **** 7.4.4.1 [[ ELADCMSecondEditionChapterFive#.E9.87.8E.E7.81.ABfire_imx6ull-pro_.E5.BC.80.E5.8F.91.E6.9D.BF_2 | <span>野火fire_imx6ull-pro</span> 开发板 ]] | ||
+ | **** 7.4.4.2 [[ ELADCMSecondEditionChapterFive#.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90Atk_imx6ull-alpha.E5.BC.80.E5.8F.91.E6.9D.BF_4 | <span>正点原子Atk_imx6ull-alpha</span>开发板 ]] | ||
+ | *** 7.4.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_4 | 课后作业 ]] | ||
+ | ** 7.5 [[ ELADCMSecondEditionChapterFive#.E7.99.BE.E9.97.AE.E7.BD.91IMX6ULL-QEMU.E7.9A.84LED.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 百问网IMX6ULL-QEMU的LED驱动程序 ]] | ||
+ | *** 7.5.1 [[ ELADCMSecondEditionChapterFive#.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE.E7.A1.AE.E5.AE.9A.E5.BC.95.E8.84.9A.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | 看原理图确定引脚及操作方法 ]] | ||
+ | *** 7.5.2 [[ ELADCMSecondEditionChapterFive#.E6.89.80.E6.B6.89.E5.8F.8A.E7.9A.84.E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C_4 | 所涉及的寄存器操作 ]] | ||
+ | *** 7.5.3 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E7.A8.8B.E5.BA.8F_4 | 写程序 ]] | ||
+ | *** 7.5.4 [[ ELADCMSecondEditionChapterFive#.E4.B8.8A.E6.9C.BA.E5.AE.9E.E9.AA.8C_3 | 上机实验 ]] | ||
+ | *** 7.5.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_5 | 课后作业 ]] | ||
+ | * 8 [[ ELADCMSecondEditionChapterFivePartⅧ | 驱动设计的思想:面向对象/分层/分离 ]] | ||
+ | ** 8.1 [[ ELADCMSecondEditionChapterFive#.E9.9D.A2.E5.90.91.E5.AF.B9.E8.B1.A1 | 面向对象 ]] | ||
+ | ** 8.2 [[ ELADCMSecondEditionChapterFive#.E5.88.86.E5.B1.82 | 分层 ]] | ||
+ | ** 8.3 [[ ELADCMSecondEditionChapterFive#.E5.88.86.E7.A6.BB | 分离 ]] | ||
+ | ** 8.4 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81 | 写示例代码 ]] | ||
+ | ** 8.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_6 | 课后作业 ]] | ||
+ | * 9. [[ ELADCMSecondEditionChapterFivePartⅨ | 驱动进化之路:总线设备驱动模型 ]] | ||
+ | ** 9.1 [[ ELADCMSecondEditionChapterFive#.E9.A9.B1.E5.8A.A8.E7.BC.96.E5.86.99.E7.9A.843.E7.A7.8D.E6.96.B9.E6.B3.95 | 驱动编写的3种方法 ]] | ||
+ | *** 9.1.1 [[ ELADCMSecondEditionChapterFive#.E4.BC.A0.E7.BB.9F.E5.86.99.E6.B3.95 | 传统写法 ]] | ||
+ | *** 9.1.2 [[ ELADCMSecondEditionChapterFive#.E6.80.BB.E7.BA.BF.E8.AE.BE.E5.A4.87.E9.A9.B1.E5.8A.A8.E6.A8.A1.E5.9E.8B | 总线设备驱动模型 ]] | ||
+ | *** 9.1.3 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91 | 设备树 ]] | ||
+ | ** 9.2 [[ ELADCMSecondEditionChapterFive#.E5.9C.A8Linux.E4.B8.AD.E5.AE.9E.E7.8E.B0.E2.80.9C.E5.88.86.E7.A6.BB.E2.80.9D.EF.BC.9ABus.2FDev.2FDrv.E6.A8.A1.E5.9E.8B | 在Linux中实现“分离”:Bus/Dev/Drv模型 ]] | ||
+ | ** 9.3 [[ ELADCMSecondEditionChapterFive#.E5.8C.B9.E9.85.8D.E8.A7.84.E5.88.99 | 匹配规则 ]] | ||
+ | *** 9.3.1 [[ ELADCMSecondEditionChapterFive#.E6.9C.80.E5.85.88.E6.AF.94.E8.BE.83.EF.BC.9Aplatform_device._driver_override.E5.92.8Cplatform_driver.driver.name | 最先比较:platform_device. driver_override和platform_driver.driver.name ]] | ||
+ | *** 9.3.2 [[ ELADCMSecondEditionChapterFive#.E7.84.B6.E5.90.8E.E6.AF.94.E8.BE.83.EF.BC.9Aplatform_device._name.E5.92.8Cplatform_driver.id_table.5Bi.5D.name | 然后比较:platform_device. name和platform_driver.id_table[i].name ]] | ||
+ | *** 9.3.3 [[ ELADCMSecondEditionChapterFive#.E6.9C.80.E5.90.8E.E6.AF.94.E8.BE.83.EF.BC.9Aplatform_device.name.E5.92.8Cplatform_driver.driver.name | 最后比较:platform_device.name和platform_driver.driver.name ]] | ||
+ | *** 9.3.4 [[ ELADCMSecondEditionChapterFive#.E5.87.BD.E6.95.B0.E8.B0.83.E7.94.A8.E5.85.B3.E7.B3.BB | 函数调用关系 ]] | ||
+ | ** 9.4 [[ ELADCMSecondEditionChapterFive#.E5.B8.B8.E7.94.A8.E5.87.BD.E6.95.B0 | 常用函数 ]] | ||
+ | *** 9.4.1 [[ ELADCMSecondEditionChapterFive#.E6.B3.A8.E5.86.8C.2F.E5.8F.8D.E6.B3.A8.E5.86.8C | 注册/反注册 ]] | ||
+ | *** 9.4.2 [[ ELADCMSecondEditionChapterFive#.E8.8E.B7.E5.BE.97.E8.B5.84.E6.BA.90 | 获得资源 ]] | ||
+ | ** 9.5 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E5.86.99.E7.A8.8B.E5.BA.8F | 怎么写程序 ]] | ||
+ | *** 9.5.1 [[ ELADCMSecondEditionChapterFive#.E5.88.86.E9.85.8D.2F.E8.AE.BE.E7.BD.AE.2F.E6.B3.A8.E5.86.8Cplatform_device.E7.BB.93.E6.9E.84.E4.BD.93 | 分配/设置/注册platform_device结构体 ]] | ||
+ | *** 9.5.2 [[ ELADCMSecondEditionChapterFive#.E5.88.86.E9.85.8D.2F.E8.AE.BE.E7.BD.AE.2F.E6.B3.A8.E5.86.8Cplatform_driver.E7.BB.93.E6.9E.84.E4.BD.93 | 分配/设置/注册platform_driver结构体 ]] | ||
+ | ** 9.6 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_7 | 课后作业 ]] | ||
+ | * 10. [[ ELADCMSecondEditionChapterFivePartⅩ | LED模板驱动程序的改造:总线设备驱动模型 ]] | ||
+ | ** 10.1 [[ ELADCMSecondEditionChapterFive#.E5.8E.9F.E6.9D.A5.E7.9A.84.E6.A1.86.E6.9E.B6 | 原来的框架 ]] | ||
+ | ** 10.2 [[ ELADCMSecondEditionChapterFive#.E8.A6.81.E5.AE.9E.E7.8E.B0.E7.9A.84.E6.A1.86.E6.9E.B6 | 要实现的框架 ]] | ||
+ | ** 10.3 [[ ELADCMSecondEditionChapterFive#.E5.86.99.E4.BB.A3.E7.A0.81_2 | 写代码 ]] | ||
+ | *** 10.3.1 [[ ELADCMSecondEditionChapterFive#.E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A1.B9 | 注意事项 ]] | ||
+ | *** 10.3.2 [[ ELADCMSecondEditionChapterFive#.E5.AE.9E.E7.8E.B0platform_device.E7.BB.93.E6.9E.84.E4.BD.93 | 实现platform_device结构体 ]] | ||
+ | *** 10.3.3 [[ ELADCMSecondEditionChapterFive#.E5.AE.9E.E7.8E.B0platform_driver.E7.BB.93.E6.9E.84.E4.BD.93 | 实现platform_driver结构体 ]] | ||
+ | ** 10.4 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_8 | 课后作业 ]] | ||
+ | * 11.[[ ELADCMSecondEditionChapterFivePartⅪ | 驱动进化之路:设备树的引入及简明教程 ]] | ||
+ | ** 11.1 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9A.84.E5.BC.95.E5.85.A5.E4.B8.8E.E4.BD.9C.E7.94.A8 | 设备树的引入与作用 ]] | ||
+ | ** 11.2 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9A.84.E8.AF.AD.E6.B3.95 | 设备树的语法 ]] | ||
+ | *** 11.2.1 [[ ELADCMSecondEditionChapterFive#Devicetree.E6.A0.BC.E5.BC.8F | Devicetree格式 ]] | ||
+ | **** 11.2.1.1 [[ ELADCMSecondEditionChapterFive#DTS.E6.96.87.E4.BB.B6.E7.9A.84.E6.A0.BC.E5.BC.8F | DTS文件的格式 ]] | ||
+ | **** 11.2.1.2 [[ ELADCMSecondEditionChapterFive#node.E7.9A.84.E6.A0.BC.E5.BC.8F | node的格式 ]] | ||
+ | **** 11.2.1.3 [[ ELADCMSecondEditionChapterFive#properties.E7.9A.84.E6.A0.BC.E5.BC.8F | properties的格式 ]] | ||
+ | *** 11.2.2 [[ ELADCMSecondEditionChapterFive#dts.E6.96.87.E4.BB.B6.E5.8C.85.E5.90.ABdtsi.E6.96.87.E4.BB.B6 | dts文件包含dtsi文件 ]] | ||
+ | *** 11.2.3 [[ ELADCMSecondEditionChapterFive#.E5.B8.B8.E7.94.A8.E7.9A.84.E5.B1.9E.E6.80.A7 | 常用的属性 ]] | ||
+ | **** 11.2.3.1 [[ ELADCMSecondEditionChapterFive#.23address-cells.E3.80.81.23size-cells | #address-cells、#size-cells ]] | ||
+ | **** 11.2.3.2 [[ ELADCMSecondEditionChapterFive#compatible | compatible ]] | ||
+ | **** 11.2.3.3 [[ ELADCMSecondEditionChapterFive#model | model ]] | ||
+ | **** 11.2.3.4 [[ ELADCMSecondEditionChapterFive#status | status ]] | ||
+ | **** 11.2.3.5 [[ ELADCMSecondEditionChapterFive#reg | reg ]] | ||
+ | **** 11.2.3.6 [[ ELADCMSecondEditionChapterFive#name.28.E8.BF.87.E6.97.B6.E4.BA.86.EF.BC.8C.E5.BB.BA.E8.AE.AE.E4.B8.8D.E7.94.A8.29 | name(过时了,建议不用) ]] | ||
+ | **** 11.2.3.7 [[ ELADCMSecondEditionChapterFive#device_type.28.E8.BF.87.E6.97.B6.E4.BA.86.EF.BC.8C.E5.BB.BA.E8.AE.AE.E4.B8.8D.E7.94.A8.29 | device_type(过时了,建议不用) ]] | ||
+ | *** 11.2.4 [[ ELADCMSecondEditionChapterFive#.E5.B8.B8.E7.94.A8.E7.9A.84.E8.8A.82.E7.82.B9.28node.29 | 常用的节点(node) ]] | ||
+ | **** 11.2.4.1 [[ ELADCMSecondEditionChapterFive#.E6.A0.B9.E8.8A.82.E7.82.B9 | 根节点 ]] | ||
+ | **** 11.2.4.2 [[ ELADCMSecondEditionChapterFive#CPU.E8.8A.82.E7.82.B9 | CPU节点 ]] | ||
+ | **** 11.2.4.3 [[ ELADCMSecondEditionChapterFive#memory.E8.8A.82.E7.82.B9 | memory节点 ]] | ||
+ | **** 11.2.4.4 [[ ELADCMSecondEditionChapterFive#chosen.E8.8A.82.E7.82.B9 | chosen节点 ]] | ||
+ | ** 11.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E8.AF.91.E3.80.81.E6.9B.B4.E6.8D.A2.E8.AE.BE.E5.A4.87.E6.A0.91 | 编译、更换设备树 ]] | ||
+ | *** 11.3.1 [[ ELADCMSecondEditionChapterFive#.E5.9C.A8.E5.86.85.E6.A0.B8.E4.B8.AD.E7.9B.B4.E6.8E.A5make | 在内核中直接make ]] | ||
+ | *** 11.3.2 [[ ELADCMSecondEditionChapterFive#.E6.89.8B.E5.B7.A5.E7.BC.96.E8.AF.91 | 手工编译 ]] | ||
+ | *** 11.3.3 [[ ELADCMSecondEditionChapterFive#.E7.BB.99.E5.BC.80.E5.8F.91.E6.9D.BF.E6.9B.B4.E6.8D.A2.E8.AE.BE.E5.A4.87.E6.A0.91.E6.96.87.E4.BB.B6 | 给开发板更换设备树文件 ]] | ||
+ | **** 11.3.3.1 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E100ask-am335x_.E5.8D.95.E6.9D.BF | 对于100ask-am335x 单板 ]] | ||
+ | **** 11.3.3.2 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8Efirefly-rk3288 | 对于firefly-rk3288 ]] | ||
+ | **** 11.3.3.3 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8Efirefly.E7.9A.84roc-rk3399-pc | 对于firefly的roc-rk3399-pc ]] | ||
+ | **** 11.3.3.4 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E7.99.BE.E9.97.AE.E7.BD.91.E4.BD.BF.E7.94.A8QEMU.E6.A8.A1.E6.8B.9F.E7.9A.84IMX6ULL.E6.9D.BF.E5.AD.90 | 对于百问网使用QEMU模拟的IMX6ULL板子 ]] | ||
+ | **** 11.3.3.5 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E9.87.8E.E7.81.ABimx6ull-pro | 对于野火imx6ull-pro ]] | ||
+ | **** 11.3.3.6 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90imx6ull-alpha | 对于正点原子imx6ull-alpha ]] | ||
+ | *** 11.3.4 [[ ELADCMSecondEditionChapterFive#.E6.9D.BF.E5.AD.90.E5.90.AF.E5.8A.A8.E5.90.8E.E6.9F.A5.E7.9C.8B.E8.AE.BE.E5.A4.87.E6.A0.91 | 板子启动后查看设备树 ]] | ||
+ | ** 11.4 [[ ELADCMSecondEditionChapterFive#.E5.86.85.E6.A0.B8.E5.AF.B9.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9A.84.E5.A4.84.E7.90.86 | 内核对设备树的处理 ]] | ||
+ | *** 11.4.1 [[ ELADCMSecondEditionChapterFive#dtb.E4.B8.AD.E6.AF.8F.E4.B8.80.E4.B8.AA.E8.8A.82.E7.82.B9.E9.83.BD.E8.A2.AB.E8.BD.AC.E6.8D.A2.E4.B8.BAdevice_node.E7.BB.93.E6.9E.84.E4.BD.93 | dtb中每一个节点都被转换为device_node结构体 ]] | ||
+ | *** 11.4.2 [[ ELADCMSecondEditionChapterFive#.E5.93.AA.E4.BA.9B.E8.AE.BE.E5.A4.87.E6.A0.91.E8.8A.82.E7.82.B9.E4.BC.9A.E8.A2.AB.E8.BD.AC.E6.8D.A2.E4.B8.BAplatform_device | 哪些设备树节点会被转换为platform_device ]] | ||
+ | *** 11.4.3 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E8.BD.AC.E6.8D.A2.E4.B8.BAplatform_device | 怎么转换为platform_device ]] | ||
+ | ** 11.5 [[ ELADCMSecondEditionChapterFive#platform_device.E5.A6.82.E4.BD.95.E4.B8.8Eplatform_driver.E9.85.8D.E5.AF.B9 | platform_device如何与platform_driver配对 ]] | ||
+ | *** 11.5.1 [[ ELADCMSecondEditionChapterFive#.E6.9C.80.E5.85.88.E6.AF.94.E8.BE.83.EF.BC.9A.E6.98.AF.E5.90.A6.E5.BC.BA.E5.88.B6.E9.80.89.E6.8B.A9.E6.9F.90.E4.B8.AAdriver | 最先比较:是否强制选择某个driver ]] | ||
+ | *** 11.5.2 [[ ELADCMSecondEditionChapterFive#.E7.84.B6.E5.90.8E.E6.AF.94.E8.BE.83.EF.BC.9A.E8.AE.BE.E5.A4.87.E6.A0.91.E4.BF.A1.E6.81.AF | 然后比较:设备树信息 ]] | ||
+ | *** 11.5.3 [[ ELADCMSecondEditionChapterFive#.E6.8E.A5.E4.B8.8B.E6.9D.A5.E6.AF.94.E8.BE.83.EF.BC.9Aplatform_device_id | 接下来比较:platform_device_id ]] | ||
+ | *** 11.5.4 [[ ELADCMSecondEditionChapterFive#.E6.9C.80.E5.90.8E.E6.AF.94.E8.BE.83.EF.BC.9Aplatform_device.name.E5.92.8Cplatform_driver.driver.name_2 | 最后比较:platform_device.name和platform_driver.driver.name ]] | ||
+ | *** 11.5.5 [[ ELADCMSecondEditionChapterFive#.E4.B8.80.E4.B8.AA.E5.9B.BE.E6.A6.82.E6.8B.AC.E6.89.80.E6.9C.89.E7.9A.84.E9.85.8D.E5.AF.B9.E8.BF.87.E7.A8.8B | 一个图概括所有的配对过程 ]] | ||
+ | ** 11.6 [[ ELADCMSecondEditionChapterFive#.E6.B2.A1.E6.9C.89.E8.BD.AC.E6.8D.A2.E4.B8.BAplatform_device.E7.9A.84.E8.8A.82.E7.82.B9.EF.BC.8C.E5.A6.82.E4.BD.95.E4.BD.BF.E7.94.A8 | 没有转换为platform_device的节点,如何使用 ]] | ||
+ | ** 11.7 [[ ELADCMSecondEditionChapterFive#.E5.86.85.E6.A0.B8.E9.87.8C.E6.93.8D.E4.BD.9C.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9A.84.E5.B8.B8.E7.94.A8.E5.87.BD.E6.95.B0 | 内核里操作设备树的常用函数 ]] | ||
+ | *** 11.7.1 [[ ELADCMSecondEditionChapterFive#.E5.86.85.E6.A0.B8.E4.B8.AD.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9B.B8.E5.85.B3.E7.9A.84.E5.A4.B4.E6.96.87.E4.BB.B6.E4.BB.8B.E7.BB.8D | 内核中设备树相关的头文件介绍 ]] | ||
+ | **** 11.7.1.1 [[ ELADCMSecondEditionChapterFive#.E5.A4.84.E7.90.86DTB | 处理DTB ]] | ||
+ | **** 11.7.1.2 [[ ELADCMSecondEditionChapterFive#.E5.A4.84.E7.90.86device_node | 处理device_node ]] | ||
+ | **** 11.7.1.3 [[ ELADCMSecondEditionChapterFive#.E5.A4.84.E7.90.86_platform_device | 处理 platform_device ]] | ||
+ | *** 11.7.2 [[ ELADCMSecondEditionChapterFive#platform_device.E7.9B.B8.E5.85.B3.E7.9A.84.E5.87.BD.E6.95.B0 | platform_device相关的函数 ]] | ||
+ | **** 11.7.2.1 [[ ELADCMSecondEditionChapterFive#of_find_device_by_node | of_find_device_by_node ]] | ||
+ | **** 11.7.2.2 [[ ELADCMSecondEditionChapterFive#platform_get_resource | platform_get_resource ]] | ||
+ | *** 11.7.3 [[ ELADCMSecondEditionChapterFive#.E6.9C.89.E4.BA.9B.E8.8A.82.E7.82.B9.E4.B8.8D.E4.BC.9A.E7.94.9F.E6.88.90platform_device.EF.BC.8C.E6.80.8E.E4.B9.88.E8.AE.BF.E9.97.AE.E5.AE.83.E4.BB.AC | 有些节点不会生成platform_device,怎么访问它们 ]] | ||
+ | **** 11.7.3.1 [[ ELADCMSecondEditionChapterFive#.E6.89.BE.E5.88.B0.E8.8A.82.E7.82.B9 | 找到节点 ]] | ||
+ | **** 11.7.3.2 [[ ELADCMSecondEditionChapterFive#.E6.89.BE.E5.88.B0.E5.B1.9E.E6.80.A7 | 找到属性 ]] | ||
+ | **** 11.7.3.3 [[ ELADCMSecondEditionChapterFive#.E8.8E.B7.E5.8F.96.E5.B1.9E.E6.80.A7.E7.9A.84.E5.80.BC | 获取属性的值 ]] | ||
+ | ** 11.8 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E4.BF.AE.E6.94.B9.E8.AE.BE.E5.A4.87.E6.A0.91.E6.96.87.E4.BB.B6 | 怎么修改设备树文件 ]] | ||
+ | *** 11.8.1 [[ ELADCMSecondEditionChapterFive#.E4.BD.BF.E7.94.A8.E8.8A.AF.E7.89.87.E5.8E.82.E5.AE.B6.E6.8F.90.E4.BE.9B.E7.9A.84.E5.B7.A5.E5.85.B7 | 使用芯片厂家提供的工具 ]] | ||
+ | *** 11.8.2 [[ ELADCMSecondEditionChapterFive#.E7.9C.8B.E7.BB.91.E5.AE.9A.E6.96.87.E6.A1.A3 | 看绑定文档 ]] | ||
+ | *** 11.8.3 [[ ELADCMSecondEditionChapterFive#.E5.8F.82.E8.80.83.E5.90.8C.E7.B1.BB.E5.9E.8B.E5.8D.95.E6.9D.BF.E7.9A.84.E8.AE.BE.E5.A4.87.E6.A0.91.E6.96.87.E4.BB.B6 | 参考同类型单板的设备树文件 ]] | ||
+ | *** 11.8.4 [[ ELADCMSecondEditionChapterFive#.E7.BD.91.E4.B8.8A.E6.90.9C.E7.B4.A2 | 网上搜索 ]] | ||
+ | *** 11.8.5 [[ ELADCMSecondEditionChapterFive#.E5.AE.9E.E5.9C.A8.E6.B2.A1.E5.8A.9E.E6.B3.95.E6.97.B6.2C_.E5.8F.AA.E8.83.BD.E5.8E.BB.E7.A0.94.E7.A9.B6.E9.A9.B1.E5.8A.A8.E6.BA.90.E7.A0.81 | 实在没办法时, 只能去研究驱动源码 ]] | ||
+ | * 12. [[ ELADCMSecondEditionChapterFivePartⅫ | LED模板驱动程序的改造:设备树 ]] | ||
+ | ** 12.1 [[ ELADCMSecondEditionChapterFive#.E6.80.BB.E7.BB.933.E7.A7.8D.E5.86.99.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.E7.9A.84.E6.96.B9.E6.B3.95 | 总结3种写驱动程序的方法 ]] | ||
+ | ** 12.2 [[ ELADCMSecondEditionChapterFive#.E6.80.8E.E4.B9.88.E4.BD.BF.E7.94.A8.E8.AE.BE.E5.A4.87.E6.A0.91.E5.86.99.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F | 怎么使用设备树写驱动程序 ]] | ||
+ | *** 12.2.1 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91.E8.8A.82.E7.82.B9.E8.A6.81.E4.B8.8Eplatform_driver.E8.83.BD.E5.8C.B9.E9.85.8D | 设备树节点要与platform_driver能匹配 ]] | ||
+ | *** 12.2.2 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91.E8.8A.82.E7.82.B9.E6.8C.87.E5.AE.9A.E8.B5.84.E6.BA.90.EF.BC.8Cplatform_driver.E8.8E.B7.E5.BE.97.E8.B5.84.E6.BA.90 | 设备树节点指定资源,platform_driver获得资源 ]] | ||
+ | ** 12.3 [[ ELADCMSecondEditionChapterFive#.E5.BC.80.E5.A7.8B.E7.BC.96.E7.A8.8B | 开始编程 ]] | ||
+ | *** 12.3.1 [[ ELADCMSecondEditionChapterFive#.E4.BF.AE.E6.94.B9.E8.AE.BE.E5.A4.87.E6.A0.91.E6.B7.BB.E5.8A.A0led.E8.AE.BE.E5.A4.87.E8.8A.82.E7.82.B9 | 修改设备树添加led设备节点 ]] | ||
+ | **** 12.3.1.1 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E100ask-am335x_.E5.8D.95.E6.9D.BF_2 | 对于100ask-am335x 单板 ]] | ||
+ | **** 12.3.1.2 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8Efirefly-rk3288_2 | 对于firefly-rk3288 ]] | ||
+ | **** 12.3.1.3 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8Efirefly.E7.9A.84roc-rk3399-pc_2 | 对于firefly的roc-rk3399-pc ]] | ||
+ | **** 12.3.1.4 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E7.99.BE.E9.97.AE.E7.BD.91.E4.BD.BF.E7.94.A8QEMU.E6.A8.A1.E6.8B.9F.E7.9A.84IMX6ULL.E6.9D.BF.E5.AD.90_2 | 对于百问网使用QEMU模拟的IMX6ULL板子 ]] | ||
+ | **** 12.3.1.5 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E9.87.8E.E7.81.ABimx6ull-pro_2 | 对于野火imx6ull-pro ]] | ||
+ | **** 12.3.1.6 [[ ELADCMSecondEditionChapterFive#.E5.AF.B9.E4.BA.8E.E6.AD.A3.E7.82.B9.E5.8E.9F.E5.AD.90imx6ull-alpha_2 | 对于正点原子imx6ull-alpha ]] | ||
+ | *** 12.3.2 [[ ELADCMSecondEditionChapterFive#.E4.BF.AE.E6.94.B9platform_driver.E7.9A.84.E6.BA.90.E7.A0.81.3D | 修改platform_driver的源码= ]] | ||
+ | ** 12.4 [[ ELADCMSecondEditionChapterFive#.E4.B8.8A.E6.9C.BA.E5.AE.9E.E9.AA.8C_4 | 上机实验 ]] | ||
+ | ** 12.5 [[ ELADCMSecondEditionChapterFive#.E8.B0.83.E8.AF.95.E6.8A.80.E5.B7.A7 | 调试技巧 ]] | ||
+ | *** 12.5.1 [[ ELADCMSecondEditionChapterFive#.E8.AE.BE.E5.A4.87.E6.A0.91.E7.9A.84.E4.BF.A1.E6.81.AF | 设备树的信息 ]] | ||
+ | *** 12.5.2 [[ ELADCMSecondEditionChapterFive#platform_device.E7.9A.84.E4.BF.A1.E6.81.AF | platform_device的信息 ]] | ||
+ | *** 12.5.3 [[ ELADCMSecondEditionChapterFive#platform_driver.E7.9A.84.E4.BF.A1.E6.81.AF | platform_driver的信息 ]] | ||
+ | ** 12.6 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_9 | 课后作业 ]] | ||
+ | * 13. [[ ELADCMSecondEditionChapterFivePartXIII | APP怎么读取按键值 ]] | ||
+ | ** 13.1 [[ ELADCMSecondEditionChapterFive#.E5.A6.88.E5.A6.88.E6.80.8E.E4.B9.88.E7.9F.A5.E9.81.93.E5.AD.A9.E5.AD.90.E9.86.92.E4.BA.86 | 妈妈怎么知道孩子醒了 ]] | ||
+ | ** 13.2 [[ ELADCMSecondEditionChapterFive#APP.E8.AF.BB.E5.8F.96.E6.8C.89.E9.94.AE.E7.9A.844.E7.A7.8D.E6.96.B9.E6.B3.95 | APP读取按键的4种方法 ]] | ||
+ | *** 13.2.1 [[ ELADCMSecondEditionChapterFive#.E6.9F.A5.E8.AF.A2.E6.96.B9.E5.BC.8F | 查询方式 ]] | ||
+ | *** 13.2.2 [[ ELADCMSecondEditionChapterFive#.E4.BC.91.E7.9C.A0-.E5.94.A4.E9.86.92.E6.96.B9.E5.BC.8F | 休眠-唤醒方式 ]] | ||
+ | *** 13.2.3 [[ ELADCMSecondEditionChapterFive#poll.E6.96.B9.E5.BC.8F | poll方式 ]] | ||
+ | *** 13.2.4 [[ ELADCMSecondEditionChapterFive#.E5.BC.82.E6.AD.A5.E9.80.9A.E7.9F.A5.E6.96.B9.E5.BC.8F | 异步通知方式 ]] | ||
+ | **** 13.2.4.1 [[ ELADCMSecondEditionChapterFive#.E5.BC.82.E6.AD.A5.E9.80.9A.E7.9F.A5.E7.9A.84.E5.8E.9F.E7.90.86.EF.BC.9A.E5.8F.91.E4.BF.A1.E5.8F.B7 | 异步通知的原理:发信号 ]] | ||
+ | **** 13.2.4.2 [[ ELADCMSecondEditionChapterFive#.E5.BA.94.E7.94.A8.E7.A8.8B.E5.BA.8F.E4.B9.8B.E9.97.B4.E5.8F.91.E4.BF.A1.E5.8F.B7.E7.A4.BA.E4.BE.8B.E4.BB.A3.E7.A0.81 | 应用程序之间发信号示例代码 ]] | ||
+ | *** 13.2.5 [[ ELADCMSecondEditionChapterFive#.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.E6.8F.90.E4.BE.9B.E8.83.BD.E5.8A.9B.EF.BC.8C.E4.B8.8D.E6.8F.90.E4.BE.9B.E7.AD.96.E7.95.A5 | 驱动程序提供能力,不提供策略 ]] | ||
+ | * 14. [[ ELADCMSecondEditionChapterFivePartXIV | 查询方式的按键驱动程序_编写框架 ]] | ||
+ | ** 14.1 [[ ELADCMSecondEditionChapterFive#LED.E9.A9.B1.E5.8A.A8.E5.9B.9E.E9.A1.BE | LED驱动回顾 ]] | ||
+ | ** 14.2 [[ ELADCMSecondEditionChapterFive#.E6.8C.89.E9.94.AE.E9.A9.B1.E5.8A.A8.E7.BC.96.E5.86.99.E6.80.9D.E8.B7.AF | 按键驱动编写思路 ]] | ||
+ | ** 14.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E7.A8.8B.EF.BC.9A.E5.85.88.E5.86.99.E6.A1.86.E6.9E.B6 | 编程:先写框架 ]] | ||
+ | *** 14.3.1[[ ELADCMSecondEditionChapterFive#.E6.8A.8A.E6.8C.89.E9.94.AE.E7.9A.84.E6.93.8D.E4.BD.9C.E6.8A.BD.E8.B1.A1.E5.87.BA.E4.B8.80.E4.B8.AAbutton_operations.E7.BB.93.E6.9E.84.E4.BD.93 | 把按键的操作抽象出一个button_operations结构体 ]] | ||
+ | *** 14.3.2 [[ ELADCMSecondEditionChapterFive#.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.E7.9A.84.E4.B8.8A.E5.B1.82.EF.BC.9Afile_operations.E7.BB.93.E6.9E.84.E4.BD.93_2 | 驱动程序的上层:file_operations结构体 ]] | ||
+ | ** 14.4 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95_2 | 测试 ]] | ||
+ | ** 14.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E6.80.8E.E4.B8.9A | 课后怎业 ]] | ||
+ | * 15. [[ ELADCMSecondEditionChapterFivePartXV | 具体单板的按键驱动程序(查询方式) ]] | ||
+ | ** 15.1 [[ ELADCMSecondEditionChapterFive#GPIO.E6.93.8D.E4.BD.9C.E5.9B.9E.E9.A1.BE | GPIO操作回顾 ]] | ||
+ | ** 15.2 [[ ELADCMSecondEditionChapterFive#AM335X.E7.9A.84.E6.8C.89.E9.94.AE.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.28.E6.9F.A5.E8.AF.A2.E6.96.B9.E5.BC.8F.29 | AM335X的按键驱动程序(查询方式) ]] | ||
+ | *** 15.2.1 [[ ELADCMSecondEditionChapterFive#.E5.85.88.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE.E7.A1.AE.E5.AE.9A.E5.BC.95.E8.84.9A.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | 先看原理图确定引脚及操作方法 ]] | ||
+ | *** 15.2.2 [[ ELADCMSecondEditionChapterFive#.E5.86.8D.E7.9C.8B.E8.8A.AF.E7.89.87.E6.89.8B.E5.86.8C.E7.A1.AE.E5.AE.9A.E5.AF.84.E5.AD.98.E5.99.A8.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95 | 再看芯片手册确定寄存器及操作方法 ]] | ||
+ | *** 15.2.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E7.A8.8B | 编程 ]] | ||
+ | **** 15.2.3.1 [[ ELADCMSecondEditionChapterFive#.E7.A8.8B.E5.BA.8F.E6.A1.86.E6.9E.B6 | 程序框架 ]] | ||
+ | **** 15.2.3.2 [[ ELADCMSecondEditionChapterFive#.E7.A1.AC.E4.BB.B6.E7.9B.B8.E5.85.B3.E7.9A.84.E4.BB.A3.E7.A0.81 | 硬件相关的代码 ]] | ||
+ | *** 15.2.4 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95_3 | 测试 ]] | ||
+ | *** 15.2.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_10 | 课后作业 ]] | ||
+ | ** 15.3 [[ ELADCMSecondEditionChapterFive#RK3288.E7.9A.84.E6.8C.89.E9.94.AE.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.28.E6.9F.A5.E8.AF.A2.E6.96.B9.E5.BC.8F.29 | RK3288的按键驱动程序(查询方式) ]] | ||
+ | *** 15.3.1 [[ ELADCMSecondEditionChapterFive#.E5.85.88.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE.E7.A1.AE.E5.AE.9A.E5.BC.95.E8.84.9A.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_2 | 先看原理图确定引脚及操作方法 ]] | ||
+ | *** 15.3.2 [[ ELADCMSecondEditionChapterFive#.E5.86.8D.E7.9C.8B.E8.8A.AF.E7.89.87.E6.89.8B.E5.86.8C.E7.A1.AE.E5.AE.9A.E5.AF.84.E5.AD.98.E5.99.A8.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_2 | 再看芯片手册确定寄存器及操作方法 ]] | ||
+ | *** 15.3.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E7.A8.8B_2 | 编程 ]] | ||
+ | **** 15.3.3.1 [[ ELADCMSecondEditionChapterFive#.E7.A8.8B.E5.BA.8F.E6.A1.86.E6.9E.B6_2 | 程序框架 ]] | ||
+ | **** 15.3.3.2 [[ ELADCMSecondEditionChapterFive#.E7.A1.AC.E4.BB.B6.E7.9B.B8.E5.85.B3.E7.9A.84.E4.BB.A3.E7.A0.81_2 | 硬件相关的代码 ]] | ||
+ | *** 15.3.4 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95_4 | 测试 ]] | ||
+ | *** 15.3.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_11 | 课后作业 ]] | ||
+ | ** 15.4 [[ ELADCMSecondEditionChapterFive#RK3399.E7.9A.84.E6.8C.89.E9.94.AE.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.28.E6.9F.A5.E8.AF.A2.E6.96.B9.E5.BC.8F.29 | RK3399的按键驱动程序(查询方式) ]] | ||
+ | *** 15.4.1 [[ ELADCMSecondEditionChapterFive#.E5.85.88.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE.E7.A1.AE.E5.AE.9A.E5.BC.95.E8.84.9A.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_3 | 先看原理图确定引脚及操作方法 ]] | ||
+ | *** 15.4.2 [[ ELADCMSecondEditionChapterFive#.E5.86.8D.E7.9C.8B.E8.8A.AF.E7.89.87.E6.89.8B.E5.86.8C.E7.A1.AE.E5.AE.9A.E5.AF.84.E5.AD.98.E5.99.A8.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_3 | 再看芯片手册确定寄存器及操作方法 ]] | ||
+ | *** 15.4.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E7.A8.8B_3 | 编程 ]] | ||
+ | **** 15.4.3.1 [[ ELADCMSecondEditionChapterFive#.E7.A8.8B.E5.BA.8F.E6.A1.86.E6.9E.B6_3 | 程序框架 ]] | ||
+ | **** 15.4.3.2 [[ ELADCMSecondEditionChapterFive#.E7.A1.AC.E4.BB.B6.E7.9B.B8.E5.85.B3.E7.9A.84.E4.BB.A3.E7.A0.81_3 | 硬件相关的代码 ]] | ||
+ | *** 15.4.4 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95_5 | 测试 ]] | ||
+ | *** 15.4.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_12 | 课后作业 ]] | ||
+ | ** 15.5 [[ ELADCMSecondEditionChapterFive#.E7.99.BE.E9.97.AE.E7.BD.91IMX6ULL-QEMU.E7.9A.84.E6.8C.89.E9.94.AE.E9.A9.B1.E5.8A.A8.E7.A8.8B.E5.BA.8F.28.E6.9F.A5.E8.AF.A2.E6.96.B9.E5.BC.8F.29 | 百问网IMX6ULL-QEMU的按键驱动程序(查询方式) ]] | ||
+ | *** 15.5.1 [[ ELADCMSecondEditionChapterFive#.E5.85.88.E7.9C.8B.E5.8E.9F.E7.90.86.E5.9B.BE.E7.A1.AE.E5.AE.9A.E5.BC.95.E8.84.9A.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_4 | 先看原理图确定引脚及操作方法 ]] | ||
+ | *** 15.5.2 [[ ELADCMSecondEditionChapterFive#.E5.86.8D.E7.9C.8B.E8.8A.AF.E7.89.87.E6.89.8B.E5.86.8C.E7.A1.AE.E5.AE.9A.E5.AF.84.E5.AD.98.E5.99.A8.E5.8F.8A.E6.93.8D.E4.BD.9C.E6.96.B9.E6.B3.95_4 | 再看芯片手册确定寄存器及操作方法 ]] | ||
+ | *** 15.5.3 [[ ELADCMSecondEditionChapterFive#.E7.BC.96.E7.A8.8B_4 | 编程 ]] | ||
+ | **** 15.5.3.1 [[ ELADCMSecondEditionChapterFive#.E7.A8.8B.E5.BA.8F.E6.A1.86.E6.9E.B6_4 | 程序框架 ]] | ||
+ | **** 15.5.3.2 [[ ELADCMSecondEditionChapterFive#.E7.A1.AC.E4.BB.B6.E7.9B.B8.E5.85.B3.E7.9A.84.E4.BB.A3.E7.A0.81_4 | 硬件相关的代码 ]] | ||
+ | *** 15.5.4 [[ ELADCMSecondEditionChapterFive#.E6.B5.8B.E8.AF.95_6 | 测试 ]] | ||
+ | *** 15.5.5 [[ ELADCMSecondEditionChapterFive#.E8.AF.BE.E5.90.8E.E4.BD.9C.E4.B8.9A_13 | 课后作业 ]] | ||
+ | * 16. [[ ELADCMSecondEditionChapterFivePartXVI | 异常与中断的概念及处理流程 ]] | ||
+ | ** 16.1 [[ ELADCMSecondEditionChapterFive#.E4.B8.AD.E6.96.AD.E7.9A.84.E5.BC.95.E5.85.A5 | 中断的引入 ]] | ||
+ | *** 16.1.1 [[ ELADCMSecondEditionChapterFive#.E5.A6.88.E5.A6.88.E6.80.8E.E4.B9.88.E7.9F.A5.E9.81.93.E5.AD.A9.E5.AD.90.E9.86.92.E4.BA.86_2 | 妈妈怎么知道孩子醒了 ]] | ||
+ | *** 16.1.2 [[ ELADCMSecondEditionChapterFive#.E5.B5.8C.E5.85.A5.E7.B3.BB.E7.BB.9F.E4.B8.AD.E4.B9.9F.E6.9C.89.E7.B1.BB.E4.BC.BC.E7.9A.84.E6.83.85.E5.86.B5 | 嵌入系统中也有类似的情况 ]] | ||
+ | ** 16.2 [[ ELADCMSecondEditionChapterFive#.E4.B8.AD.E6.96.AD.E7.9A.84.E5.A4.84.E7.90.86.E6.B5.81.E7.A8.8B | 中断的处理流程 ]] | ||
+ | ** 16.3 [[ ELADCMSecondEditionChapterFive#.E5.BC.82.E5.B8.B8.E5.90.91.E9.87.8F.E8.A1.A8 | 异常向量表 ]] | ||
+ | ** 16.4 [[ ELADCMSecondEditionChapterFivePartXVII | 参考资料 ]] | ||
+ | * 17 [[ ELADCMSecondEditionChapterFive#.E5.B8.B8.E8.A7.81.E9.97.AE.E9.A2.98 | 常见问题 ]] | ||
+ | ** 17.1 [[ ELADCMSecondEditionChapterFive#.E5.AE.89.E8.A3.85.E9.A9.B1.E5.8A.A8.E6.97.B6version_magic.E4.B8.8D.E5.8C.B9.E9.85.8D | 安装驱动时version magic不匹配 ]] | ||
+ | <br> | ||
+ | <br> | ||
+ | <br> | ||
+ | }}<br> | ||
+ | <br> | ||
+ | |||
+ | [[ Category:嵌入式Linux应用开发完全手册第2版 ]] |
2019年12月26日 (四) 18:35的最新版本
目录
《嵌入式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 常见问题