zoukankan      html  css  js  c++  java
  • 迅为Imx6ull开发板Linux学习教程

    关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料 

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程

    让教程更细致,终结入门难!

    所有教程由迅为原创,是迅为工作多年的工程师精心编写,深知初学者痛点。从Linux入门到驱动开发再到系统移植,一步一步由浅入深,逐步掌握嵌入式技术。每个例子有详细的注释,每个命令详细的说明。只要你对嵌入式感兴趣,就可以学习。

    注意事项与售后维修 2

    技术支持与开发定制 4

    资料获取与后续更新 5

    更新记录 6

    前言 开发板使用前必读 31

    必须注意的问题 31

    光盘资料介绍 31

    开发板使用前装配流程 33

    第一部分 总领及学习指引 37

    01 框架学习法 38

    02 嵌入式系统学习的框架 39

    03 关于裸机程序和仿真 41

    04 基于迅为开发板的学习步骤 42

    第一章 开发板初体验 44

    1.1 初识i.MX6ULL终结者开发板 45

    1.2 i.MX6ULL终结者硬件资源说明 46

    1.2.1 i.MX6ULL核心板资源说明 46

    1.2.2 i.MX6ULL终结者底板资源说明 48

    1.3 i.MX6ULL终结者底板原理分析 51

    1.3.1 核心板接口 51

    1.3.2 启动方式原理部分 52

    1.3.3 系统电源接口 53

    1.3.4 复位电路 54

    1.3.5 纽扣电池电路 55

    1.3.6 CAN接口电路 56

    1.3.7 RS485/TTL串口选择电路 56

    1.3.8 GPIO接口电路 57

    1.3.9 RS485电路 57

    1.3.10 USB转串口电路 58

    1.3.11 LED电路 60

    1.3.12 按键电路 60

    1.3.13 蜂鸣器电路 60

    1.3.14 TF卡电路 61

    1.3.15 EEPROM电路 62

    1.3.16 音频电路 62

    1.3.17 RGB屏幕电路 64

    1.3.18 LVDS屏幕接口 65

    1.3.19 USB OTG电路 66

    1.3.20 USB HOST接口 67

    1.3.21 CSI摄像头接口电路 68

    1.3.22 WIFI/蓝牙电路 69

    1.3.23 PCIE 4G模块电路 69

    1.3.24 六轴传感器电路 70

    1.3.25 光环境传感器电路 71

    1.3.26 温湿度传感器电路 71

    1.3.27 ADC电位器电路 72

    1.3.28 红外接收电路 73

    1.3.29 HDMI接口电路 73

    1.3.30 以太网电路 74

    1.4 i.MX6ULL终结者软件资源 76

    1.5 外设功能验证 79

    1.5.1 用户LED测试 79

    1.5.2 蜂鸣器测试 79

    1.5.3 ADC电位器测试 80

    1.5.4 TF卡测试 80

    1.5.5 USB HOST测试 81

    1.5.6 以太网测试 83

    1.5.7 用户按键测试 86

    1.5.8 内存测试 87

    1.5.9 Linux系统时钟测试 88

    1.5.10 CSI摄像头测试 89

    1.5.11 USB摄像头测试 92

    1.5.12 AP3216C测试 94

    1.5.13 WIFI联网测试 95

    1.5.14 PCIE 4G模块测试 97

    1.5.15 CAN接口测试 101

    1.5.16 485接口测试 103

    1.5.17 DHT11模块测试 106

    1.6 外设模块功能验证 108

    1.6.1 RC522模块测试 108

    1.6.2 步进电机模块测试 110

    1.6.3 GPS模块测试 113

    1.6.4 zigbee模块测试 115

    1.6.5 继电器模块测试 121

    第二章 Ubuntu系统安装及配置 123

    2.1 虚拟机VMware的安装 124

    2.2 虚拟机安装Ubuntu系统 130

    2.2.1 获取Ubuntu系统镜像 130

    2.2.2 虚拟机安装Ubuntu系统 131

    2.3 Ubuntu系统初体验 145

    2.3.1 登录Ubuntu系统 145

    2.3.2 Ubuntu系统设置 150

    2.3.3 Ubuntu系统关机 154

    2.3.4 Ubuntu设置中文显示 155

    2.4 Ubuntu终端和常用命令 163

    2.4.1 Ubuntu的终端 163

    2.5 Ubuntu常用命令 164

    2.5.1 文件信息查看命令ls 165

    2.5.2 目录切换命令cd 166

    2.5.3 显示当前路径命令pwd 166

    2.5.4 系统信息查看命令uname 167

    2.5.5 清屏命令clear 167

    2.5.6 切换用户执行身份命令sudo 168

    2.5.7 添加用户命令adduser 169

    2.5.8 删除用户命令deluser 169

    2.5.9 切换用户命令su 170

    2.5.10 查看文件内容命令cat 171

    2.5.11 网络配置命令ifconfig 171

    2.5.12 帮助命令man 172

    2.5.13 系统重启命令reboot 173

    2.5.14 系统关机命令poweroff 173

    2.6 apt-get软件下载工具 174

    2.6.1 更新软件列表 176

    2.6.2 检查依赖是否有损坏 176

    2.6.3 软件安装 176

    2.6.4 软件更新 178

    2.6.5 软件卸载 180

    2.7 文本编辑工具 181

    2.8 Linux文件系统 189

    2.8.1 Linux文件系统类型 189

    2.8.2 文件操作命令 191

    2.9 Linux用户权限 200

    2.9.1 用户组及用户 200

    2.9.2 文件权限管理 201

    2.9.3 权限管理命令 203

    第三章 UbuntuC 编程入门 206

    3.1 Linux下编写第一个C 程序 207

    3.1.1 代码编写 207

    3.1.2 代码编译 208

    3.2 gcc编译器 210

    3.2.1 gcc命令分析 210

    3.2.2 编译警告错误处理 210

    3.2.3 gcc编译流程 211

    3.3 初识Makefile 212

    3.3.1 什么是Makefile 212

    3.3.2 第一个Makefile 212

    3.4 Makefile语法 216

    3.4.1 初识Makefile 216

    3.4.2 Makefile的变量 218

    3.4.3 条件判断 220

    3.4.4 使用函数 221

    3.4.5 在规则中使用通配符 223

    第二部分 裸机开发 224

    第四章 开发环境搭建详解 225

    4.1 搭建SSH服务 226

    4.2 Windows安装ssh客户端 228

    4.3 搭建交叉编译环境 237

    4.4 SecureCRT 软件安装和使用 241

    4.5 安装CH340串口驱动 250

    4.6 Source Insight 软件安装和使用 253

    4.7 Putty软件的安装教程 283

    4.8 MobaXterm的安装教程 291

    4.9 VMware 虚拟机扩展Ubuntu系统磁盘空间 294

    第五章 i.MX6ULL启动方式和镜像文件格式 299

    5.1 i.MX6ULL启动方式 300

    5.2 镜像格式 304

    第六章 i.MX6ULL镜像烧写 309

    6.1 mfgtool烧写镜像 310

    6.2 屏幕设置 314

    第七章 Cortex-A7架构 316

    7.1 Cortex-A7运行模式 317

    7.2 Cortex-A7寄存器组 318

    7.2.1 通用寄存器 319

    7.2.2 程序状态寄存器 320

    第八章 初识ARM汇编 323

    8.1 GNU汇编语法 324

    8.2 ARM汇编指令 326

    8.2.1 MOV指令 326

    8.2.2 MRS指令 326

    8.2.3 MSR指令 326

    8.2.4 LDR指令 326

    8.2.5 STR指令 327

    8.2.6 入栈,出栈指令 327

    8.2.7 跳转指令 327

    8.2.8 逻辑运算指令 328

    8.2.9 算数运算符 329

    第九章 第一个汇编实验 330

    9.1 i.MX6ULL GPIO分析 331

    9.2 IO引脚配置 335

    9.3 GPIO配置 336

    9.4 GPIO时钟 342

    9.5 LED原理分析 344

    9.6 LED汇编程序 344

    9.7 编译LED汇编程序 348

    第十章语言实现LED例程 356

    10.1 C 程序版LED例程简介 357

    10.2 原理图分析 357

    10.3 程序编写 357

    10.4 修改Makefile 364

    10.5 编译烧写验证 366

    第十一章 移植官方SDK 368

    11.1 官方SDK简介 369

    11.2 硬件原理图分析 370

    11.3 SDK程序编写 370

    11.4 编译下载 378

    第十二章 创建裸机工程 380

    12.1 创建工程目录结构 381

    12.2 原理分析 382

    12.3 程序设计 382

    12.4 编译及运行 391

    十三 蜂鸣器例程 393

    13.1 蜂鸣器原理 394

    13.2 原理分析 394

    13.3 程序设计 395

    13.4 编译及运行 400

    第十四章 按键例程 404

    14.1 按键输入原理 405

    14.2 原理分析 405

    14.3 程序设计 405

    14.4 编译及运行 416

    第十五章 主频和时钟配置例程 421

    15.1 i.MX6ULL时钟系统 422

    15.2 原理分析 435

    15.3 程序设计 435

    15.4 编译及运行 441

    第十六章 GPIO中断例程 445

    16.1 中断系统简介 446

    16.1.1 中断向量表 446

    16.1.2 GIC控制器 451

    16.2 原理分析 468

    16.3 程序设计 468

    16.4 编译及运行 488

    第十七章 EPIT定时器例程 492

    17.1 EPIT定时器介绍 493

    17.2 原理分析 496

    17.3 程序设计 496

    17.4 编译及运行 501

    第十八章 定时器按键例程 504

    18.1 定时器按键原理 505

    18.2 原理分析 505

    18.3 程序设计 505

    18.4 编译及运行 512

    第十九章 GPT定时器延时例程 515

    19.1 GPT 定时器简介 516

    19.2 GPT定时器延时原理 520

    19.3 原理分析 520

    19.4 程序设计 520

    19.5 编译及运行 526

    第二十章 串口通信例程 529

    20.1 串口简介 530

    20.2 原理分析 536

    20.3 程序设计 538

    20.4 编译及运行 549

    第二十一章 串口格式化函数例程 555

    21.1 原理分析 556

    21.2 程序设计 556

    21.3 编译及运行 559

    第二十二章 LCD屏幕显示例程 563

    22.1 eLCDIF接口简介 564

    22.2 原理分析 576

    22.3 程序设计 577

    22.4 编译及运行 604

    第二十三章 SRTC实时时钟例程 608

    23.1 SRTC简介 609

    23.2 原理分析 613

    23.3 程序设计 614

    23.4 编译及运行 627

    第二十四章 I2C操作 631

    24.1 I2C简介 632

    24.2 原理分析 641

    24.3 程序设计 641

    24.4 编译及运行 660

    第二十五章 电容触摸实验 665

    25.1 触摸屏简介 666

    25.2 原理分析 668

    25.3 程序设计 668

    25.4 编译及运行 681

    第二十六章 屏幕背光调节例程 686

    26.1 背光调节简介 687

    26.2 原理分析 693

    26.3 程序设计 693

    26.4 编译及运行 701

    第二十七章 MPU6050 六轴传感器例程 707

    27.1 MPU6050简介 708

    27.2 原理分析 712

    27.3程序设计 712

    27.4 编译运行 722

    第二十八章 DHT11温湿度模块例程 726

    28.1 DHT11简介 727

    28.2 原理分析 729

    28.3 程序设计 730

    28.4 编译运行 741

    第三部分 Linux系统移植篇 746

    第二十九章 编译终结者开发板的Uboot和内核 747

    29.1 安装第三方库 748

    29.2 编译终结者开发板Uboot 750

    29.3 编译终结者开发板Linux内核 751

    第三十章 Linux内核启动流程 754

    30.1 Linux内核启动(一):Linux内核自解压过程 755

    30.2 Linux内核启动(二):ARM处理器相关设置 755

    30.2.1 Linux内核入口函数Stext 756

    30.2.2 _Mmap_Switched 函数 759

    30.3 Linux内核启动(三):内核初始化 760

    30.3.1 Start_Kernel 函数 760

    30.3.2 Rest_Init 函数 764

    30.3.3 Init 进程 766

    第三十一章 linux内核裁剪与定制 770

    31.1 获取Linux源码 771

    31.2 NXP官方Linux源码编译 771

    31.2.1 配置交叉编译工具链 771

    31.2.2 配置并编译Linux内核 771

    31.3 Linux中添加自己的开发板 772

    31.3.1 添加默认开发板内核配置文件 772

    31.3.2 添加开发板对应的设备树文件 773

    31.3.3 编译开发板对应镜像 773

    31.4 添加简单设备驱动 774

    31.4.1 网卡驱动 774

    31.4.2 LED灯驱动 779

    31.5 Linux 5.4.3系统移植 780

    31.5.1 获取Linux内核源码 780

    31.5.2 搭建编译环境 784

    31.5.3 编译内核 785

    第三十二章 Linux文件系统的构建 793

    32.1 根文件系统简介 794

    32.2 根文件系统目录介绍 794

    32.3 BusyBox构建根文件系统 795

    32.3.1 获取BusyBox源码 796

    32.3.2 编译BusyBox构建根文件系统 797

    32.3.3 构建整个根文件系统 804

    32.4  完善根文件系统 807

    32.4.1 创建/etc/init.d/rcS文件 807

    32.4.2 创建/etc/fstab文件 808

    32.4.3 创建/etc/inittab文件 809

    32.4.4 生成文件系统镜像 810

    第四部分 Linux驱动开发 812

    第三十三章 字符设备驱动 813

    33.1 字符设备驱动开发 814

    33.2 常规字符设备驱动框架 814

    33.3 简化版字符设备驱动框架 818

    33.4 设备号 822

    33.4.1 设备号的组成 822

    33.4.2 设备号的分配 822

    33.5 驱动模块的安装与卸载 824

    33.6 字符设备驱动实验 825

    33.6.1 常规字符驱动程序 825

    33.6.2 简化版字符设备驱动程序 831

    33.6.3 Linux下应用测试程序 832

    33.6.4 编译驱动和应用程序 834

    33.6.5 运行测试 835

    33.7 自动创建设备节点 839

    33.7.1 mdev简介 839

    33.7.2 创建和删除类函数 839

    33.7.3 创建设备函数 840

    33.7.4 代码实例 840

    33.7.5 运行测试 845

    第三十四章 Linux设备树 848

    34.1 什么是设备树 849

    34.2 DTSDTCDTB 849

    34.3 DTS设备树语法结构 851

    34.3.1 dtsi头文件 851

    34.3.2 设备节点信息 853

    34.3.3 设备节点及label的命名 855

    34.3.4 标准属性 856

    34.3.5 根节点compatible属性 860

    34.3.6 在设备节点中添加或修改内容 865

    34.4 设备树实验 867

    34.4.1 初始结构 868

    34.4.2 添加CPU处理器 868

    34.4.3 添加设备 868

    34.4.4 CPU编址 870

    34.4.5 内存映射设备 870

    34.4.6 非内存映射设备 872

    34.4.7 地址转换 872

    34.4.8 添加中断 874

    34.5 设备树在系统中的体现 877

    34.6 特殊节点 877

    34.6.1 aliases子节点 877

    34.6.2 chosen子节点 878

    34.7 DTB文件格式 879

    34.7.1 DTB文件格式总览 879

    34.7.2 DTB起始段 879

    34.7.3 内存预留块 880

    34.7.4 结构块 881

    34.7.5 字符串块 881

    34.8 Binding信息文档 883

    34.9 设备树常用OF操作函数 884

    34.9.1 查找节点的OF函数 885

    34.9.2 查找父子节点的OF函数 887

    34.9.3 获取属性值的OF函数 887

    34.9.4 其他常用的 OF 函数 891

    第三十五章 Pinctrl子系统和GPIO子系统 894

    35.1 Pinctrl子系统 895

    35.1.1 配置pinctrl 895

    35.1.2 调用pinctrl 900

    35.2 GPIO子系统 901

    第三十六章 Linux LED实验 904

    36.1 LED设备注册流程 905

    36.2 LED硬件原理图分析 905

    36.3 修改设备树文件 905

    36.3.1 添加Pinctrl信息 905

    36.3.2 添加LED设备节点 906

    36.4 编写LED驱动程序 907

    36.5 编写应用测试程序 913

    36.6 编译运行测试 915

    36.6.1 编译LED驱动文件 915

    36.6.2 编译应用测试程序 916

    36.6.3 运行测试 916

    第三十七章 Linux 蜂鸣器实验 917

    37.1 蜂鸣器设备注册流程 918

    37.2 蜂鸣器硬件原理图分析 918

    37.3 修改设备树文件 918

    37.3.1 添加pinctrl信息 918

    37.3.2 添加beep设备节点 919

    37.4 编写蜂鸣器驱动程序 919

    37.5 编写应用测试程序 925

    37.6 编译运行测试 926

    37.6.1 编译蜂鸣器驱动文件 926

    37.6.2 编译应用测试程序 927

    37.6.3 运行测试 927

    第三十八章 Linux并发与竞争 929

    38.1 并发与竞争 930

    38.2 中断屏蔽 930

    38.3 原子操作 931

    38.3.1 什么是原子操作 931

    38.3.2 原子操作 932

    38.3.3 位原子操作 933

    38.4 自旋锁 934

    38.4.1 自旋锁简介 934

    38.4.2 自旋锁相关函数 935

    38.4.3 其他类型的锁 937

    38.5 信号量 939

    38.5.1 信号量简介 939

    38.5.2 信号量相关函数 940

    38.6 互斥体 941

    38.6.1 互斥体简介 941

    38.6.2 互斥体相关函数 942

    第三十九章 Linux并发与竞争实验 944

    39.1 原子操作 945

    39.1.1 实验程序编写 945

    39.1.2 编写应用测试程序 951

    39.1.3 运行测试 953

    39.2 自旋锁实验 955

    39.2.1 实验程序编写 955

    39.2.2 编写应用测试程序 962

    39.2.3 运行测试 962

    39.3 信号量实验 963

    39.3.1 编写驱动程序 964

    39.3.2 编写应用测试程序 967

    39.3.3 运行测试 967

    39.4 互斥体实验 969

    39.4.1 编写驱动程序 969

    39.4.2 编写应用测试程序 971

    39.4.3 运行测试 972

    第四十章 Linux按键输入实验 974

    40.1 Linux下按键驱动原理 975

    40.2 按键硬件原理图分析 975

    40.3 修改设备树文件 975

    40.3.1 添加Pinctrl节点 975

    40.3.2 添加KEY设备节点 976

    40.4 按键驱动程序 976

    40.5 应用测试程序 982

    40.6 运行测试 983

    40.6.1 编译按键驱动文件 983

    40.6.2 编译应用测试程序 984

    40.6.3 运行测试 984

    第四十一章 Linux内核定时器实验 986

    41.1 Linux时间管理和内核定时器简介 987

    41.1.1 Linux内核时间管理 987

    41.1.2 内核定时器简介 989

    41.2 实验程序编写 991

    41.2.1 驱动程序编写 991

    41.2.2 应用测试程序编写 999

    41.3 运行测试 1001

    41.3.1 编译驱动文件 1001

    41.3.2 编译应用程序 1001

    41.3.3 运行测试 1002

    第四十二章 Linux中断实验 1003

    42.1 Linux中断简介 1004

    42.1.1 Linux中断介绍 1004

    42.1.2 Linux中断相关函数 1004

    42.1.3 顶半部与底半部 1006

    42.1.4 设备树中的中断节点 1013

    42.1.5 驱动获取中断号函数 1015

    42.2 实验程序编写 1015

    42.2.1 修改设备树文件 1015

    42.2.2 按键中断驱动程序 1016

    42.2.3 编写应用测试程序 1025

    42.3 运行测试 1027

    42.3.1 编译驱动程序 1027

    42.3.2 编译应用测试程序 1027

    42.3.3 运行测试 1027

    第四十三章 Linux阻塞和非阻塞IO实验 1029

    43.1 阻塞和非阻塞IO 1030

    43.1.1 阻塞和非阻塞简介 1030

    43.1.2 等待队列 1031

    43.1.3 轮询 1034

    43.1.4 Linux驱动下的poll操作函数 1039

    43.2 阻塞IO实验 1040

    43.2.1 驱动程序编写 1040

    43.2.2 编写应用测试程序 1050

    43.2.3 运行测试 1050

    43.3 非阻塞IO实验 1052

    43.3.1 编写驱动程序 1052

    43.3.2 编写应用测试程序 1056

    43.3.3 运行测试 1058

    第四十四章 Linux异步通知实验 1061

    44.1 异步通知 1062

    44.1.1 异步通知概念 1062

    44.1.2 Linux信号 1062

    44.1.3 应用程序中信号的处理 1064

    44.1.4 驱动中信号的处理 1065

    44.2 编写实验程序 1067

    44.2.1 驱动程序编写 1067

    44.2.2 应用测试程序 1077

    44.2.3 运行测试 1079

    第四十五章 Platform设备驱动 1081

    45.1 Linux设备驱动分层和分离 1082

    45.1.1 设备驱动的分层思想 1082

    45.1.2 主机驱动和外设驱动分离思想 1083

    45.2 Platform平台驱动模型 1084

    45.2.1 Platform设备 1084

    45.2.2 Platform驱动 1087

    45.2.3 Platform总线 1092

    45.3 实验程序 1095

    45.3.1 Platform设备和驱动程序 1095

    45.3.2 应用测试程序 1106

    45.4 运行测试 1107

    45.4.1 编译驱动和设备程序 1107

    45.4.2 编译应用测试程序 1108

    45.4.3 运行测试 1108

    第四十六章 设备树下的Platform驱动 1111

    46.1 设备树下的Platform设备 1112

    46.2 实验程序编写 1113

    46.2.1 修改设备树文件 1113

    46.2.2 platform驱动程序 1113

    46.2.3 应用测试程序 1119

    46.3 运行测试 1119

    46.3.1 编译驱动程序 1119

    46.3.2 编译应用测试程序 1120

    46.3.3 运行测试 1120

    第四十七章 Linux内核自带LED灯驱动 1122

    47.1 Linux内核中的LED灯驱动 1123

    47.2 Linux自带LED驱动分析 1124

    47.2.1 LED灯驱动框架分析 1124

    47.2.2 Module_platform_driver函数解析 1125

    47.2.3 Gpio_led_probe函数解析 1126

    47.3 添加设备树节点 1129

    47.4 运行测试 1130

    第四十八章 Linux MISC驱动 1132

    48.1 misc设备驱动简介 1133

    48.2 编写实验程序 1134

    48.2.1 修改设备树文件 1134

    48.2.2 编写驱动程序 1134

    48.2.3 应用测试程序 1140

    48.3 运行测试 1142

    48.3.1 编译驱动程序 1142

    48.3.2 编译应用测试程序 1142

    48.3.3 运行测试 1142

    第四十九章 Linux INPUT子系统实验 1144

    49.1 Input子系统 1145

    49.1.1 input子系统简介 1145

    49.1.2 input驱动程序编写流程 1146

    49.1.3 input_event结构体 1152

    49.2 编写实验程序 1153

    49.2.1 编写驱动程序 1153

    49.2.2 应用测试程序 1159

    49.3 运行测试 1162

    49.3.1 编译驱动程序 1162

    49.3.2 编译应用测试程序 1162

    49.3.3 运行测试 1162

    49.4 linux自带按键驱动程序 1164

    49.4.1 Linux自带按键驱动程序源码 1164

    49.4.2 Linux内核自带按键驱动程序的使用 1170

    第五十章 Linux LCD驱动实验 1172

    50.1 LinuxLCD驱动简介 1173

    50.1.1 framebuffer设备 1173

    50.1.2 LCD驱动解析 1174

    50.2 编写LCD驱动程序 1180

    50.2.1 设备树中LCD屏幕GPIO配置 1180

    50.2.2 LCD屏幕参数节点信息 1182

    50.2.3 LCD屏幕背光节点信息 1184

    50.3 运行测试 1186

    50.3.1 LCD屏幕基本测试 1186

    50.3.2 LCD背光调节 1187

    第五十一章 Linux RTC驱动实验 1189

    51.1 Linux内核RTC驱动简介 1190

    51.2 i.MX6UL下的RTC驱动 1194

    51.3 Linux系统下RTC时间设置与查看 1200

    51.3.1 查看RTC时间 1200

    51.3.2 设置RTC时间 1200

    第五十二章 Linux I2C驱动实验 1202

    52.1 Linux I2C驱动框架简介 1203

    52.1.1 I2C总线驱动 1203

    52.1.2 I2C设备驱动 1205

    52.1.3 I2C核心 1209

    52.2 IMX6ULLI2C总线驱动分析 1210

    52.3 I2C设备驱动编写流程 1217

    52.3.1 设备信息描述 1217

    52.3.2 I2C设备的数据收发和处理 1219

    52.4 实验程序编写 1223

    52.4.1 硬件原理图 1223

    52.4.2 修改设备树 1223

    52.4.3 驱动程序编写 1225

    52.4.4 应用测试程序 1236

    52.5 运行测试 1237

    52.5.1 编译驱动程序 1237

    52.5.2 编译应用测试程序 1238

    52.5.3 运行测试 1238

    第五十三章 Linux RS232/485驱动实验 1240

    53.1 Linux下的UART驱动框架 1241

    53.1.1 uart_driver结构体 1241

    53.1.2 uart_port结构体 1242

    53.1.3 uart_ops结构体 1243

    53.2 i.MX6UL UART驱动分析 1244

    53.2.1 uartplatform驱动框架 1244

    53.2.2 uart_driver初始化 1247

    53.2.3 uart_port初始化和注册 1247

    53.2.4 imx_pops结构体 1250

    53.3 硬件原理图 1252

    53.3.1 RS232原理图 1252

    53.3.2 RS485原理图 1252

    53.4 RS232驱动 1253

    53.4.1 设备树添加UART3节点 1253

    53.5 RS232驱动测试 1254

    53.5.1 编写应用测试程序 1254

    53.5.2 运行测试 1259

    53.6 RS485测试 1260

    第五十四章 Linux 电容触摸屏实验 1261

    54.1 Linux下电容触摸屏驱动框架 1262

    54.1.1 多点触摸协议详解 1262

    54.1.2 Type A 触摸点信息上报时序 1263

    54.1.3 Type B触摸点信息上报时序 1265

    54.1.4 MT其他事件的使用 1267

    54.1.5 多点触摸使用到的API函数 1267

    54.1.6 多点电容触摸驱动框架 1269

    54.2 硬件原理图 1274

    54.3 实验程序编写 1275

    54.3.1 修改设备树文件 1275

    54.3.2 编写多点电容触摸驱动 1276

    54.4 运行测试 1288

    54.4.1 编译驱动程序 1288

    54.4.2 运行测试 1289

    54.4.3 将驱动添加到内核中 1290

    54.5 Tslib移植和使用 1291

    54.5.1 获取tslib源码 1291

    54.5.2 编译tslib 1292

    54.5.3 测试tslib 1293

    54.6 使用Linux内核自带的ft5426驱动 1294

    第五十五章 Linux WIFI驱动实验 1297

    55.1 wifi驱动添加和编译 1298

    55.1.1 Linux内核中添加wifi驱动 1298

    55.1.2 配置Linux内核 1299

    55.1.3 Rtl8723 wifi模块驱动测试 1302

    55.2 Wireless Tools 工具移植与测试 1303

    55.2.1 wireless tools工具移植 1303

    55.2.2 wireless tools工具测试 1304

    55.3 Wpa_supplicant 移植 1305

    55.3.1 libopenssl移植 1305

    55.3.2 libnl库移植 1306

    55.3.3 wpa_supplicant 移植 1307

    55.4 rtl8723 Wifi联网测试 1308

    第五十六章 Linux 4G通信实验 1312

    56.1 4G网络连接 1313

    56.2 EC20 4G模块配置 1314

    56.2.1 添加USB设备信息 1314

    56.2.2 Linux内核配置 1315

    56.3 EC20 4G模块联网测试 1317

    56.3.1 PPP软件包编译 1317

    56.3.2 EC20 4G模块联网测试 1318

    第五部分 Linux构建文件系统篇 1324

    第五十七章 Linux文件系统开发 1325

    57.1 根文件系统简介 1326

    57.1.1 根文件系统 1326

    57.1.2 根文件系统目录 1326

    57.2 制作最小文件系统镜像 1328

    57.2.1 BusyBox工具简介 1328

    57.2.2 Busybox 制作最小文件系统 1329

    57.3 最小Linux系统功能测试 1351

    57.3.1 U盘挂载与卸载 1351

    57.3.2 编译测试helloworld 1352

    57.3.3 广域网连接测试 1355

    57.3.4 中文显示测试 1355

    第五十八章 Buildoot文件系统构建篇 1358

    58.1 buildroot简介 1359

    58.2 buildroot构建文件系统 1359

    58.2.1 获取Buildroot 1359

    58.2.2 配置及编译Buildroot 1360

    58.3 buildroot文件系统测试 1369

    58.4 buildroot添加支持第三方软件 1370

    58.4.1 使能Alsa-lib 1370

    58.4.2 使能Alsa-utils 1372

    58.5 buildroot下配置Busybox 1375

    第五十九章 Yocto文件系统构建篇 1377

    59.1 注意事项 1378

    59.2 在线构建文件系统 1378

    59.2.1 安装软件包与配置git 1378

    59.2.2 获取Yocto项目 1380

    59.2.3 构建文件系统 1382

    59.2.4 构建SDK工具 1387

    59.3 离线构建文件系统 1388

    第六十章 Ubuntu文件系统 1390

    60.1 Ubuntu-base获取 1391

    60.2 Ubuntu-base构建 1392

    60.2.1 解压Ubuntu-base 1392

    60.2.2 安装Qemu-User-Static工具 1393

    60.2.3 设置软件源 1393

    60.2.4 挂载根文件系统并Chroot 1394

    60.3 Ubuntu文件系统测试 1398

    60.3.1 打包烧写Ubuntu 1398

    60.3.2 Ubuntu 根文件系统测试 1399

    第六十一章 Debian文件系统的构建 1402

    61.1 i.MX6ULL 移植Debian文件系统 1402

    61.1.1 安装QumuDebootstrap 1402

    61.1.2 抽取Debain文件系统 1402

    61.1.3 完善文件系统 1403

    61.1.4 打包文件系统 1405

    61.1.5 烧写验证 1406

    第六部分 QT开发 1407

    第六十二章 QT应用开发 1408

    62.1 c++入门 1408

    62.1.1 c++基础 1408

    62.1.2 c++类和对象 1409

    62.1.3 函数的重载 1411

    62.1.4 构造函数和析构函数 1411

    62.1.5 虚函数和纯虚函数 1413

    62.2 Qt基础 1413

    62.2.1 安装Qtcreator 1414

    62.2.2 创建工程 1416

    62.2.3 信号和槽 1419

    62.2.4 给界面添加图片 1426

    62.2.5 界面布局 1433

    62.2.6 界面切换 1437

    62.2.7 Qt串口编程 1439

    62.2.8 Qt程序打包和部署 1449

    62.2.9 Qt网络编程 1452

    62.2.10 Qt定时器 1466

    62.3 Qt系统移植 1472

    62.3.1 制作根文件系统 1472

    62.3.2 交叉编译Qt源码 1494

    62.3.3 搭建Qt文件系统 1498

    62.3.4 交叉编译 Qt代码 1501

    62.4 Qt下控制硬件 1503

    62.5 Qt for Android 1511

    62.5.1 搭建开发环境 1511

    62.5.2 制作安卓APP 1514

    62.6 一键烧写QT程序到开发板 1519

    62.6.1 在开发板上移植ssh 1519

    62.6.2 安装ssh 1525

    62.6.3 生成KEY文件,并安装 1526

    62.6.4 修改目标板密钥文件 1527

    62.6.5 测试 1527

    62.6.6 Ubuntu上搭建QT开发环境 1529

    62.6.7 配置编译套件 1535

    第六十三章 QT实战项目 1546

    63.1 DHT11&网络编程实战练习 1546

    63.1.1 项目前准备 1546

    63.1.3 Linux应用程序 1546

    63.1.4 终结者Qt服务器 1550

    63.1.2 软件流程图 1557

    63.1.5 PCQt软件开发 1560

    63.1.6 运行测试 1567

    第六十 使用Yocto文件系统开发QT 1571

    64.1 安装测试Qt Creator 1572

    64.1.1 QT安装包获取 1572

    64.1.2 QT安装 1573

    64.1.3 UbuntuQT应用开发 1577

    64.2 安装交叉编译工具及QT 1585

    64.3 搭建IMX6Ul/ULL QT Creator交叉编译环境 1586

    64.4 QT工程的编译及测试 1596

    64.4.1 QT Creator直接编译ARM架构程序 1596

    64.4.2 命令行编译QT程序 1599

    64.4.3 运行Helloworld 1601

    64.5 文件系统 1603

    64.5.1 外部存储设备(U盘,TF卡)使用 1603

    64.5.2 网络配置 1604

    64.5.3 触摸测试 1607

    64.5.4 屏幕亮度(背光) 1608

    第七部分 Linux系统开发进阶 1609

    第六十五章 Mfgtools修改单独只烧写Uboot,内核,文件系统 1610

    第六十六章 iTOP-i.MX6ULL开发板-修改开机进度条修改文档 1615

    第六十七章 iTOP-i.MX6ULL开发板-Uboot-Logo修改文档 1622

    67.1 Uboot修改 1622

    67.2 Uboot测试 1630

    第六十八章 iTOP-i.MX6ULL开发板-内核-Logo 修改使用文档 1631

    68.1 内核配置 1631

    68.2 生成 PPM 文件 1635

    68.2.1 使用 PS 软件修改图片分辨率和位深度 1635

    68.2.2 使用工具“Bmptopnm”将图片转化为 ppm 格式 1637

    68.2.3 修改内核 Logo 文件 1638

    68.3 测试 1638

    68.4 Logo 位置的居中调整 1639

    第六十九章 iTOP-i.MX6ULL开发板-移植Gdb+Gdbserver调试 1641

    第七十章 iTOP-iMX6ULL开发板-移植ssh服务 1649

    70.1 SSH 官网和下载地址 1649

    70.2 详细移植过程 1649

    70.2.1 移植 Zlib 1650

    70.2.2 移植 Openssl 1652

    70.2.3 移植 SSH 1656

    70.3 安装测试 1658

    70.3.1 基本文件的安装 1658

    70.3.2 生成 Key 文件,并安装 1659

    70.3.3 修改目标板钥文件 1660

    70.3.4 测试 1660

    第七十一章 iTOP-i.MX6ULL开发板-Jtag调试 1665

    71.1 调试需要的硬件环境 1665

    71.2 搭建开发环境 1665

    71.2.1 安装Jlink V9驱动 1665

    71.2.2 安装I.MX6ULL SDK开发包 1669

    71.2.3 安装IAR开发工具 1673

    71.3 IAR JLNK调试SDK程序 1679

    71.4 查看变量的实时值 1692

    第七十二章 iTOP-i.MX6ULL开发板-网络通信-套字节TCP 1699

    72.1 实验操作 1699

    第七十三章 iTOP-i.MX6ULL开发板-网络通信-套字节UDP 1707

    73.1 实验操作 1707

    第七十四章 iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动 1713

    74.1 配置开发板网络 1713

    74.2 Tftp服务搭建 1715

    74.3 Nfs服务搭建 1715

    74.4 设置自启动参数 1716

    第七十五章 iTOP-i.MX6ULL开发板-搭建Web服务器 1720

    第七十六章 iTOP-i.MX6ULL开发板-Modbus移植和使用 1727

    76.1 什么是Modbus 1727

    76.2 源码下载 1727

    76.3 编译和移植 1728

    76.4 移植ARM测试程序 1730

    76.5 X86-LinuxModbus的移植和编译 1731

    76.6 测试 1732

    第七十七章 iTOP-i.MX6ULL开发板-USB转串口驱动Ch34X移植 1734

    第七十八章 iTOP-i.MX6ULL开发板-Sqlite3移植和使用 1737

    第七十九章 iTOP-i.MX6ULL开发板-Qt5.7Mplayer移植文档 1741

    79.1 交叉编译Libmad-0.15.1b 1741

    79.2 交叉编译Alsa-lob-1.0.22 1742

    79.3 交叉编译MPlayer-1.0rc3 1743

    79.4 测试软件使用 1744

    第八十章 iTOP-i.MX6ULL开发板-移植OpenCv2.4.9 1746

    80.1 安装交叉编译工具 1746

    80.2 搭建OpenCv编译环境 1746

    80.3 QT程序编译 1751

    80.4 烧写文件系统 1753

    80.5 测试开发板 1754

    第八十一章 iTOP-i.MX6ULL开发板-移植OpenCv3.4.1 1756

    81.1 安装交叉编译工具 1756

    81.2 搭建 OpenCV 的编译环境 1756

    81.3 编译 OpenCV 源码 1760

    81.4 打包文件系统 1762

    81.5 烧写文件系统 1764

    81.6 测试开发板 1765

    第八十二章 iTOP-i.MX6ULL开发板-网络测试方法 1767

    82.1 测试环境搭建 1767

    82.2 安装 Java环境 1769

    82.3 安装测试软件 1772

    82.4 设置网络 1773

    82.5 TCP测试 1774

    82.6 UDP测试 1775

    第八十三章 iTOP-i.MX6ULL开发板-Mqtt 移植教程 1778

    83.1 MQTT介绍 1778

    83.2 X86 上安装mosquitto 1778

    83.3 x86上测试mosquitto 1778

    83.4 移植 mosquitto 到开发板 1779

    83.5 mosquitto 移植到开发板 1783

    83.6 使用命令在开发板上测试 mqtt 1785

    83.7 使用代码在开发板上测试 mqtt 1789

    第八十四章 iTOP-i.MX6ULL开发板-Busybox移植DHCP 1793

    84.1 安装交叉编译工具链 1793

    84.2 下载DHCP-4.4.1源码 1796

    84.3 交叉编译DHCP-4.4.1 1797

    84.4 打包文件系统 1799

    84.5 烧写文件系统 1801

    84.6 测试开发板 1802

    第八十五章 iTOP-i.MX6ULL开发板-C程序调用shell 1805

    第八十六章 iTOP-iMX6ULL开发板-八路串口配置 1809

    86.1 文档说明 1809

    86.2 UART2配置 1810

    86.3 UART3配置 1815

    86.4 UART4配置 1817

    86.5 UART5配置 1820

    86.6 UART6配置 1822

    86.7 UART7配置 1823

    86.8 UART8配置 1825

    86.9 UART1使用方法 1827

  • 相关阅读:
    [转]解决百度统计 gzdecode(): insufficient memory
    排序二叉树生成
    非递归后序遍历二叉树(1)
    排序方法总结(一)
    匿名自执行函数
    php 判断图片类型
    根据文件的修改日期筛选出目标文件
    js中document的用法小结
    python生成器
    爬虫学习(十九)——Scrapy的学习及其使用
  • 原文地址:https://www.cnblogs.com/topeet/p/13438442.html
Copyright © 2011-2022 走看看