实例介绍
【实例简介】
【实例截图】
【实例截图】
【核心代码】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 | 目录 ALPHA/Mini 开发板教程适配表.................................................................................5 前言..............................................................................................................................41 第一篇 Ubuntu 系统入门篇.......................................................................................43 第一章 Ubuntu 系统安装...........................................................................................44 1.1 安装虚拟机软件 VMware ................................................................................. 45 1.2 创建虚拟机........................................................................................................ 51 1.3 安装 Ubuntu 操作系统...................................................................................... 62 1.3.1 获取 Ubuntu 系统........................................................................................... 62 1.3.2 安装 Ubuntu 操作系统................................................................................... 63 1.3.3 弹出系统镜像................................................................................................. 75 第二章 Ubuntu 系统入门...........................................................................................77 2.1 Ubuntu 系统初体验............................................................................................ 78 2.1.1 Hello Ubuntu .................................................................................................... 78 2.1.2 系统设置......................................................................................................... 80 2.1.3 系统注销与关机............................................................................................. 83 2.1.4 中文输入测试................................................................................................. 83 2.2 Ubuntu 终端操作................................................................................................ 86 2.3 Shell 操作............................................................................................................ 87 2.3.1 Shell 简介......................................................................................................... 87 2.3.2 Shell 基本操作................................................................................................. 87 2.2.4 常用 Shell 命令............................................................................................... 89 2.4 APT 下载工具..................................................................................................... 96 2.5 Ubuntu 下文本编辑............................................................................................ 99 2.5.1 Gedit 编辑器 .................................................................................................... 99 2.5.2 VI/VIM 编辑器.............................................................................................. 100 2.6 Linux 文件系统................................................................................................. 105 2.6.1 Linux 文件系统简介以及类型...................................................................... 105 2.6.2 Linux 文件系统结构...................................................................................... 107 2.6.2 文件操作命令............................................................................................... 110 2.6.3 文件压缩和解压缩....................................................................................... 114 2.6.4 文件查询和搜索........................................................................................... 120 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 9 I.MX6U 嵌入式 Linux 驱动开发指南 2.6.5 文件类型....................................................................................................... 121 2.7 Linux 用户权限管理......................................................................................... 122 2.7.1 Ubuntu 用户系统........................................................................................ 122 2.7.2 权限管理....................................................................................................... 122 2.7.3 权限管理命令............................................................................................... 125 2.8 Linux 磁盘管理................................................................................................. 127 2.8.1 Linux 磁盘管理基本概念.............................................................................. 127 2.8.2 磁盘管理命令............................................................................................... 128 第三章 Linux C 编程入门........................................................................................132 3.1 Hello World! ................................................................................................... 133 3.1.1 编写代码....................................................................................................... 133 3.1.2 编译代码....................................................................................................... 134 3.2 GCC 编译器...................................................................................................... 136 3.2.1 gcc 命令.......................................................................................................... 136 3.2.2 编译错误警告............................................................................................... 136 3.2.3 编译流程....................................................................................................... 137 3.3 Makefile 基础.................................................................................................... 137 3.3.1 何为 Makefile................................................................................................ 137 3.3.2 Makefile 的引入............................................................................................. 138 3.4 Makefile 语法.................................................................................................... 141 3.4.1 Makefile 规则格式......................................................................................... 141 3.4.2 Makefile 变量................................................................................................. 143 3.4.3 Makefile 模式规则......................................................................................... 145 3.4.4 Makefile 自动化变量..................................................................................... 146 3.4.5 Makefile 伪目标............................................................................................. 147 3.4.6 Makefile 条件判断......................................................................................... 148 3.4.7 Makefile 函数使用......................................................................................... 148 第二篇 裸机开发篇..................................................................................................151 第四章 开发环境搭建..............................................................................................152 4.1 Ubuntu 和 Windows 文件互传......................................................................... 153 4.2 Ubuntu 下 NFS 和 SSH 服务开启 ................................................................... 159 4.2.1 NFS 服务开启................................................................................................ 159 4.2.2 SSH 服务开启................................................................................................ 160 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 10 I.MX6U 嵌入式 Linux 驱动开发指南 4.3 Ubuntu 交叉编译工具链安装.......................................................................... 160 4.3.1 交叉编译器安装........................................................................................... 160 4.3.2 安装相关库................................................................................................... 164 4.3.3 交叉编译器验证........................................................................................... 164 4.4 Source Insight 软件安装和使用....................................................................... 166 4.4.1 Source Insight 安装........................................................................................ 166 4.4.2 Source Insight 新建工程................................................................................ 172 4.4.3 Source Insight 解决中文乱码........................................................................ 180 4.5 Visual Studio Code 软件的安装和使用........................................................... 182 4.5.1 Visual Studio Code 的安装............................................................................ 182 4.5.2 Visual Studio Code 插件的安装.................................................................... 186 4.5.3 Visual Studio Code 新建工程........................................................................ 189 4.6 CH340 串口驱动安装....................................................................................... 195 4.7 SecureCRT 软件安装和使用............................................................................ 198 4.7.1 SecureCRT 安装............................................................................................. 198 4.7.2 SecureCRT 使用............................................................................................. 203 4.8 Putty 软件的安装和使用.................................................................................. 208 4.8.1 Putty 软件安装............................................................................................... 208 4.8.2 Putty 软件使用............................................................................................... 211 4.9 MobaXterm 软件安装和使用........................................................................... 214 4.9.1 MobaXterm 软件安装.................................................................................... 214 4.9.2 MobaXterm 软件使用.................................................................................... 215 第五章 I.MX6U-ALPHA/Mini 开发平台介绍........................................................219 5.1 正点原子 I.MX6U-ALPHA/Mini 开发板资源初探....................................... 220 5.1.1 I.MX6U-ALPHA 开发板底板资源............................................................... 220 5.1.2 I.MX6U-Mini 开发板底板资源 .................................................................... 221 5.1.3 I.MX6U 核心板资源 ..................................................................................... 223 5.2 正点原子 I.MX6U-ALPHA/Mini 开发板资源说明....................................... 224 5.2.1 I.MX6U-ALPHA 硬件资源说明................................................................... 224 5.2.2 I.MX6U-ALPHA 软件资源说明................................................................... 228 5.2.3 I.MX6U-Mini 硬件资源说明 ........................................................................ 230 5.2.4 I.MX6U-Mini 软件资源说明 ........................................................................ 232 5.2.5 I.MX6ULL 核心板硬件资源说明................................................................. 232 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 11 I.MX6U 嵌入式 Linux 驱动开发指南 5.3 I.MX6U-ALPHA 开发板底板原理图详解...................................................... 233 5.3.1 核心板接口................................................................................................... 233 5.3.2 引出 IO 口..................................................................................................... 235 5.3.3 USB 串口/串口 1 选择接口 .......................................................................... 235 5.3.4 RGB LCD 模块接口...................................................................................... 236 5.3.5 复位电路....................................................................................................... 237 5.3.6 启动模式设置接口....................................................................................... 237 5.3.7 VBAT 供电接口............................................................................................. 238 5.3.8 RS232 串口 .................................................................................................... 238 5.3.9 RS485 接口 .................................................................................................... 239 5.3.10 CAN 接口..................................................................................................... 239 5.3.11 USB HUB 接口............................................................................................ 240 5.3.12 USB OTG 接口............................................................................................ 241 5.3.13 光环境传感器............................................................................................. 241 5.3.14 六轴传感器................................................................................................. 241 5.3.15 LED .............................................................................................................. 242 5.3.16 按键............................................................................................................. 242 5.3.17 摄像头模块接口......................................................................................... 243 5.3.18 有源蜂鸣器................................................................................................. 243 5.3.19 TF 卡接口..................................................................................................... 244 5.3.20 SDIO WIFI 接口 .......................................................................................... 244 5.3.21 4G 模块接口 ................................................................................................ 245 5.3.22 ATK 模块接口.............................................................................................. 246 5.3.23 以太网接口(RJ45)................................................................................. 247 5.3.24 SAI 音频编解码器....................................................................................... 249 5.3.25 电源............................................................................................................. 250 5.3.26 电源输入输出接口..................................................................................... 251 5.3.27 USB 串口 ..................................................................................................... 251 5.4 I.MX6U-Mini 开发板底板原理图详解 ........................................................... 252 5.4.1 核心板接口................................................................................................... 252 5.4.2 引出 IO 口..................................................................................................... 254 5.4.3 USB 串口 ....................................................................................................... 254 5.4.4 RGB LCD 模块接口...................................................................................... 255 5.4.5 复位电路....................................................................................................... 256 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 12 I.MX6U 嵌入式 Linux 驱动开发指南 5.4.6 启动模式设置接口....................................................................................... 256 5.4.7 VBAT 供电接口............................................................................................. 257 5.4.8 RS485 接口 .................................................................................................... 257 5.4.9 CAN 接口....................................................................................................... 258 5.4.10 USB HOST 接口.......................................................................................... 258 5.4.11 USB OTG 接口 ............................................................................................ 258 5.4.12 LED .............................................................................................................. 259 5.4.13 按键............................................................................................................. 259 5.4.14 摄像头模块接口......................................................................................... 260 5.4.15 有源蜂鸣器................................................................................................. 260 5.4.16 TF 卡接口..................................................................................................... 261 5.4.17 SDIO WIFI 接口 .......................................................................................... 261 5.4.18 ATK 模块接口.............................................................................................. 261 5.4.19 以太网接口(RJ45)................................................................................. 262 5.4.20 电源............................................................................................................. 263 5.4.21 电源输入输出接口..................................................................................... 263 5.5 I.MX6U 核心板原理图详解 ............................................................................ 263 5.5.1 SOC ................................................................................................................ 263 5.5.2 BTB 接口 ....................................................................................................... 267 5.5.3 NAND FLASH............................................................................................... 269 5.5.4 EMMC............................................................................................................ 269 5.5.5 DDR3L ........................................................................................................... 270 5.5.6 核心板电源................................................................................................... 271 5.6 开发板使用注意事项...................................................................................... 274 第六章 Cortex-A7 MPCore 架构 .............................................................................275 6.1 Cortex-A7 MPCore 简介 .................................................................................. 276 6.2 Cortex-A 处理器运行模型............................................................................... 277 6.3 Cortex-A 寄存器组........................................................................................... 277 6.3.1 通用寄存器................................................................................................... 279 6.3.2 程序状态寄存器........................................................................................... 280 第七章 ARM 汇编基础............................................................................................282 7.1 GNU 汇编语法 ................................................................................................. 283 7.2 Cortex-A7 常用汇编指令................................................................................. 285 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 13 I.MX6U 嵌入式 Linux 驱动开发指南 7.2.1 处理器内部数据传输指令........................................................................... 285 7.2.2 存储器访问指令........................................................................................... 285 7.2.3 压栈和出栈指令........................................................................................... 286 7.2.4 跳转指令....................................................................................................... 288 7.2.5 算术运算指令............................................................................................... 289 7.2.6 逻辑运算指令............................................................................................... 289 第八章 汇编 LED 灯实验 ........................................................................................291 8.1 I.MX6U GPIO 详解 .......................................................................................... 292 8.1.1 STM32 GPIO 回顾......................................................................................... 292 8.1.2 I.MX6U IO 命名 ............................................................................................ 292 8.1.3 I.MX6U IO 复用 ............................................................................................ 294 8.1.4 I.MX6U IO 配置 ............................................................................................ 295 8.1.5 I.MX6U GPIO 配置....................................................................................... 298 8.1.6 I.MX6U GPIO 时钟使能............................................................................... 302 8.2 硬件原理分析.................................................................................................. 304 8.3 实验程序编写.................................................................................................. 304 8.4 编译下载验证.................................................................................................. 309 8.4.1 编译代码....................................................................................................... 309 8.4.2 创建 Makefile 文件....................................................................................... 313 8.4.3 代码烧写....................................................................................................... 314 8.4.4 代码验证....................................................................................................... 318 第九章 I.MX6U 启动方式详解 ...............................................................................319 9.1 启动方式选择.................................................................................................. 320 9.1.1 串行下载....................................................................................................... 320 9.1.2 内部 BOOT 模式 .......................................................................................... 321 9.2 BOOT ROM 初始化内容 ................................................................................. 321 9.3 启动设备.......................................................................................................... 321 9.4 镜像烧写.......................................................................................................... 325 9.4.1 IVT 和 Boot Data 数据.................................................................................. 326 9.4.2 DCD 数据....................................................................................................... 328 第十章 C 语言版 LED 灯实验.................................................................................331 10.1 C 语言版 LED 灯简介.................................................................................... 332 10.2 硬件原理分析................................................................................................ 332 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 14 I.MX6U 嵌入式 Linux 驱动开发指南 10.3 实验程序编写................................................................................................ 332 10.3.1 汇编部分实验程序编写............................................................................. 332 10.3.2 C 语言部分实验程序编写 .......................................................................... 334 10.4 编译下载验证................................................................................................ 339 10.4.1 编写 Makefile.............................................................................................. 339 10.4.2 链接脚本..................................................................................................... 340 10.4.3 修改 Makefile.............................................................................................. 342 10.4.4 下载验证..................................................................................................... 342 第十一章 模仿 STM32 驱动开发格式实验............................................................343 11.1 模仿 STM32 寄存器定义.............................................................................. 344 11.1.1 STM32 寄存器定义简介............................................................................. 344 11.1.2 I.MX6U 寄存器定义.................................................................................... 345 11.2 硬件原理分析 ................................................................................................ 346 11.3 实验程序编写 ................................................................................................ 346 11.4 编译下载验证 ................................................................................................ 351 11.4.1 编写 Makefile 和链接脚本......................................................................... 351 11.4.2 编译下载 ..................................................................................................... 352 第十二章 官方 SDK 移植实验................................................................................353 12.1 I.MX6ULL 官方 SDK 包简介........................................................................ 354 12.2 硬件原理图分析............................................................................................ 355 12.3 试验程序编写................................................................................................ 355 12.3.1 SDK 文件移植............................................................................................. 355 12.3.2 创建 cc.h 文件............................................................................................. 355 12.3.3 编写实验代码............................................................................................. 356 12.4 编译下载验证................................................................................................ 362 12.4.1 编写 Makefile 和链接脚本......................................................................... 362 12.4.2 编译下载..................................................................................................... 363 第十三章 BSP 工程管理实验..................................................................................364 13.1 工程管理简介................................................................................................ 365 13.2 硬件原理分析................................................................................................ 365 13.3 实验程序编写................................................................................................ 366 13.3.1 创建 imx6ul.h 文件..................................................................................... 366 13.3.2 编写 led 驱动代码 ...................................................................................... 366 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 15 I.MX6U 嵌入式 Linux 驱动开发指南 13.3.3 编写时钟驱动代码..................................................................................... 368 13.3.4 编写延时驱动代码..................................................................................... 369 13.3.5 修改 main.c 文件 ........................................................................................ 371 13.4 编译下载验证................................................................................................ 372 13.4.1 编写 Makefile 和链接脚本......................................................................... 372 13.4.2 编译下载..................................................................................................... 375 第十四章 蜂鸣器实验..............................................................................................376 14.2 有源蜂鸣器简介............................................................................................ 377 14.3 硬件原理分析................................................................................................ 377 14.3 试验程序编写................................................................................................ 378 14.4 编译下载验证................................................................................................ 380 14.4.1 编写 Makefile 和链接脚本......................................................................... 380 14.4.2 编译下载..................................................................................................... 381 第十五章 按键输入实验..........................................................................................382 15.1 按键输入简介................................................................................................ 383 15.2 硬件原理分析................................................................................................ 383 15.3 实验程序编写................................................................................................ 383 15.4 编译下载验证................................................................................................ 391 15.4.1 编写 Makefile 和链接脚本......................................................................... 391 15.4.2 编译下载..................................................................................................... 392 第十六章 主频和时钟配置实验..............................................................................393 16.1 I.MX6U 时钟系统详解 .................................................................................. 394 16.1.1 系统时钟来源............................................................................................. 394 16.1.2 7 路 PLL 时钟源.......................................................................................... 394 16.1.3 时钟树简介................................................................................................. 396 16.1.4 内核时钟设置............................................................................................. 398 16.1.5 PFD 时钟设置.............................................................................................. 402 16.1.6 AHB、IPG 和 PERCLK 根时钟设置......................................................... 404 16.2 硬件原理分析................................................................................................ 408 16.3 实验程序编写................................................................................................ 408 16.4 编译下载验证................................................................................................ 411 16.4.1 编写 Makefile 和链接脚本......................................................................... 411 16.4.2 编译下载..................................................................................................... 412 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 16 I.MX6U 嵌入式 Linux 驱动开发指南 第十七章 GPIO 中断实验........................................................................................413 17.1 Cortex-A7 中断系统详解............................................................................... 414 17.1.1 STM32 中断系统回顾................................................................................. 414 17.1.2 Cortex-A7 中断系统简介............................................................................ 416 17.1.3 GIC 控制器简介 .......................................................................................... 419 17.1.4 CP15 协处理器 ............................................................................................ 425 17.1.5 中断使能..................................................................................................... 429 17.1.6 中断优先级设置......................................................................................... 429 17.2 硬件原理分析................................................................................................ 431 17.3 试验程序编写................................................................................................ 431 17.3.1 移植 SDK 包中断相关文件....................................................................... 431 17.3.2 重新编写 start.S 文件................................................................................. 431 17.3.3 通用中断驱动文件编写............................................................................. 436 17.3.4 修改 GPIO 驱动文件.................................................................................. 440 17.3.5 按键中断驱动文件编写............................................................................. 445 17.3.6 编写 main.c 文件 ........................................................................................ 448 17.4 编译下载验证................................................................................................ 449 17.4.1 编写 Makefile 和链接脚本......................................................................... 449 17.4.2 编译下载..................................................................................................... 450 第十八章 EPIT 定时器实验.....................................................................................451 18.1 EPIT 定时器简介............................................................................................ 452 18.2 硬件原理分析................................................................................................ 455 18.3 实验程序编写................................................................................................ 455 18.4 编译下载验证................................................................................................ 458 18.4.1 编写 Makefile 和链接脚本......................................................................... 458 18.4.2 编译下载..................................................................................................... 459 第十九章 定时器按键消抖实验..............................................................................460 19.1 定时器按键消抖简介.................................................................................... 461 19.2 硬件原理分析................................................................................................ 462 19.3 试验程序编写................................................................................................ 462 19.4 编译下载验证................................................................................................ 467 19.4.1 编写 Makefile 和链接脚本......................................................................... 467 19.4.2 编译下载..................................................................................................... 468 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 17 I.MX6U 嵌入式 Linux 驱动开发指南 第二十章 高精度延时实验......................................................................................469 20.1 高精度延时简介............................................................................................ 470 20.1.1 GPT 定时器简介.......................................................................................... 470 20.1.2 定时器实现高精度延时原理..................................................................... 473 20.2 硬件原理分析................................................................................................ 474 20.3 实验程序编写................................................................................................ 474 20.4 编译下载验证................................................................................................ 480 20.4.1 编写 Makefile 和链接脚本......................................................................... 480 20.4.2 编译下载..................................................................................................... 480 第二十一章 UART 串 口 通 信 实 验 483 21.1 I.MX6U 串口简介 .......................................................................................... 484 21.1.1 UART 简介................................................................................................... 484 21.1.2 I.MX6U UART 简介.................................................................................... 486 21.2 硬件原理分析................................................................................................ 489 21.3 实验程序编写................................................................................................ 490 21.4 编译下载验证................................................................................................ 499 21.4.1 编写 Makefile 和链接脚本......................................................................... 499 21.4.2 编译下载..................................................................................................... 501 第二十二章 串口格式化函数移植实验..................................................................504 22.1 串口格式化函数简介.................................................................................... 505 22.2 硬件原理分析................................................................................................ 505 22.3 实验程序编写................................................................................................ 505 22.4 编译下载验证................................................................................................ 507 22.4.1 编写 Makefile 和链接脚本......................................................................... 507 22.4.2 编译下载..................................................................................................... 508 第二十三章 DDR3 实验...........................................................................................510 23.1 DDR3 内存简介.............................................................................................. 511 23.1.1 何为 RAM 和 ROM? .................................................................................. 511 23.1.2 SRAM 简介.................................................................................................. 511 23.1.3 SDRAM 简介............................................................................................... 513 23.1.4 DDR 简介..................................................................................................... 516 23.2 DDR3 关键时间参数...................................................................................... 518 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 18 I.MX6U 嵌入式 Linux 驱动开发指南 23.3 I.MX6U MMDC 控制器简介......................................................................... 521 23.3.1 MMDC 控制器 ............................................................................................ 521 23.3.2 MMDC 控制器信号引脚 ............................................................................ 521 23.3.3 MMDC 控制器时钟源 ................................................................................ 522 23.4 ALPHA 开发板 DDR3L 原理图.................................................................... 522 23.5 DDR3L 初始化与测试 ................................................................................... 523 23.5.1 ddr_stress_tester 简介 .................................................................................. 523 23.5.2 DDR3L 驱动配置 ........................................................................................ 524 23.5.3 DDR3L 校准 ................................................................................................ 530 23.5.4 DDR3L 超频测试 ........................................................................................ 534 23.5.5 DDR3L 驱动总结 ........................................................................................ 535 第二十四章 RGBLCD 显示实验.............................................................................538 24.1 LCD 和 eLCDIF 简介..................................................................................... 539 24.1.1 LCD 简介..................................................................................................... 539 24.1.2 eLCDIF 接口................................................................................................ 547 24.2 硬件原理分析................................................................................................ 552 24.3 实验程序编写................................................................................................ 554 24.4 编译下载验证................................................................................................ 575 24.4.1 编写 Makefile 和链接脚本......................................................................... 575 24.4.2 编译下载..................................................................................................... 576 第二十五章 RTC 实时时钟实验..............................................................................577 25.1 I.MX6U RTC 简介.......................................................................................... 578 25.2 硬件原理分析................................................................................................ 580 25.3 实验程序编写................................................................................................ 580 25.3.1 修改文件 MCIMX6Y2.h ............................................................................ 581 25.3.2 编写实验程序............................................................................................. 581 25.4 编译下载验证................................................................................................ 591 25.4.1 编写 Makefile 和链接脚本......................................................................... 591 25.4.2 编译下载..................................................................................................... 592 第二十六章 I2C 实验...............................................................................................594 26.1 I2C & AP3216C 简介 ..................................................................................... 595 26.1.1 I2C 简介....................................................................................................... 595 26.1.2 I.MX6U I2C 简介 ........................................................................................ 597 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 19 I.MX6U 嵌入式 Linux 驱动开发指南 26.1.3 AP3216C 简介.............................................................................................. 600 26.2 硬件原理分析................................................................................................ 601 26.3 实验程序编写................................................................................................ 602 26.4 编译下载验证................................................................................................ 617 26.4.1 编写 Makefile 和链接脚本......................................................................... 617 26.4.2 编译下载..................................................................................................... 618 第二十七章 SPI 实验 ...............................................................................................620 27.1 SPI & ICM-20608 简介 .................................................................................. 621 27.1.1 SPI 简介 ....................................................................................................... 621 27.1.2 I.MX6U ECSPI 简介.................................................................................... 622 27.1.3 ICM-20608 简介 .......................................................................................... 626 27.2 硬件原理分析................................................................................................ 629 27.3 实验程序编写................................................................................................ 629 27.4 编译下载验证................................................................................................ 644 27.4.1 编写 Makefile 和链接脚本......................................................................... 644 27.4.2 编译下载..................................................................................................... 646 第二十八章 多点电容触摸屏实验..........................................................................647 28.1 多点电容触摸简介........................................................................................ 648 28.2 硬件原理分析................................................................................................ 649 28.3 实验程序编写................................................................................................ 650 28.4 编译下载验证................................................................................................ 660 28.4.1 编写 Makefile 和链接脚本......................................................................... 660 28.4.2 编译下载..................................................................................................... 661 第二十九章 LCD 背光调节实验.............................................................................663 29.1 LCD 背光调节简介........................................................................................ 664 29.2 硬件原理分析................................................................................................ 669 29.3 实验程序编写................................................................................................ 669 29.4 编译下载验证................................................................................................ 675 29.4.1 编写 Makefile 和链接脚本......................................................................... 675 29.4.2 编译下载..................................................................................................... 677 第三篇 系统移植篇..................................................................................................679 第三十章 U-Boot 使用实验.....................................................................................680 30.1 U-Boot 简介.................................................................................................... 681 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 20 I.MX6U 嵌入式 Linux 驱动开发指南 30.2 U-Boot 初次编译............................................................................................ 684 30.3 U-Boot 烧写与启动........................................................................................ 686 30.4 U-Boot 命令使用............................................................................................ 688 30.4.1 信息查询命令............................................................................................. 689 30.4.2 环境变量操作命令..................................................................................... 690 30.4.3 内存操作命令............................................................................................. 692 30.4.4 网络操作命令............................................................................................. 695 30.4.5 EMMC 和 SD 卡操作命令.......................................................................... 702 30.4.6 FAT 格式文件系统操作命令 ...................................................................... 707 30.4.7 EXT 格式文件系统操作命令 ..................................................................... 710 30.4.8 NAND 操作命令.......................................................................................... 711 30.4.9 BOOT 操作命令 .......................................................................................... 714 30.4.10 其他常用命令........................................................................................... 718 第三十一章 U-Boot 顶层 Makefile 详解.................................................................721 31.1 U-Boot 工程目录分析.................................................................................... 722 31.2 VScode 工程创建............................................................................................ 732 31.3 U-Boot 顶层 Makefile 分析............................................................................ 738 31.3.1 版本号......................................................................................................... 738 31.3.2 MAKEFLAGS 变量..................................................................................... 739 31.3.3 命令输出..................................................................................................... 739 31.3.4 静默输出..................................................................................................... 741 31.3.5 设置编译结果输出目录............................................................................. 743 31.3.6 代码检查..................................................................................................... 744 31.3.7 模块编译..................................................................................................... 745 31.3.8 获取主机架构和系统................................................................................. 746 31.3.9 设置目标架构、交叉编译器和配置文件................................................. 747 31.3.10 调用 scripts/Kbuild.include....................................................................... 748 31.3.11 交叉编译工具变量设置 ........................................................................... 748 31.3.12 导出其他变量........................................................................................... 749 31.3.13 make xxx_defconfig 过程.......................................................................... 753 31.3.14 Makefile.build 脚本分析 ........................................................................... 758 31.3.15 make 过程 .................................................................................................. 761 第三十二章 U-Boot 启动流程详解.........................................................................770 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 21 I.MX6U 嵌入式 Linux 驱动开发指南 32.1 链接脚本 u-boot.lds 详解.............................................................................. 771 32.2 U-Boot 启动流程详解.................................................................................... 775 32.2.1 reset 函数源码详解...................................................................................... 775 32.2.2 lowlevel_init 函数详解................................................................................ 780 32.2.3 s_init 函数详解 ............................................................................................ 783 32.2.4 _main 函数详解........................................................................................... 785 32.2.5 board_init_f 函数详解 ................................................................................. 792 32.2.6 relocate_code 函数详解............................................................................... 800 32.2.7 relocate_vectors 函数详解........................................................................... 806 32.2.8 board_init_r 函数详解 ................................................................................. 807 32.2.9 run_main_loop 函数详解............................................................................. 811 32.2.10 cli_loop 函数详解...................................................................................... 817 32.2.11 cmd_process 函数详解 .............................................................................. 819 32.3 bootz 启动 Linux 内核过程............................................................................ 825 32.3.1 images 全局变量.......................................................................................... 825 32.3.2 do_bootz 函数 .............................................................................................. 826 32.3.3 bootz_start 函数 ........................................................................................... 827 32.3.4 do_bootm_states 函数.................................................................................. 830 32.3.5 bootm_os_get_boot_func 函数 .................................................................... 835 32.3.6 do_bootm_linux 函数................................................................................... 836 第三十三章 U-Boot 移植.........................................................................................841 33.1 NXP 官方开发板 uboot 编译测试................................................................. 842 33.1.1 查找 NXP 官方的开发板默认配置文件................................................... 842 33.1.2 编译 NXP 官方开发板对应的 uboot......................................................... 843 33.1.3 烧写验证与驱动测试................................................................................. 845 33.2 在 U-Boot 中添加自己的开发板.................................................................. 847 33.2.1 添加开发板默认配置文件......................................................................... 848 33.2.2 添加开发板对应的头文件......................................................................... 848 33.2.3 添加开发板对应的板级文件夹................................................................. 856 33.2.4 修改 U-Boot 图形界面配置文件............................................................... 858 33.2.5 使用新添加的板子配置编译 uboot........................................................... 858 33.2.6 LCD 驱动修改............................................................................................. 860 33.2.7 网络驱动修改............................................................................................. 863 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 22 I.MX6U 嵌入式 Linux 驱动开发指南 33.2.8 其他需要修改的地方................................................................................. 873 33.3 bootcmd 和 bootargs 环境变量 ...................................................................... 874 33.3.1 环境变量 bootcmd ...................................................................................... 875 33.3.2 环境变量 bootargs ...................................................................................... 880 33.4 uboot 启动 Linux 测试 ................................................................................... 881 33.4.1 从 EMMC 启动 Linux 系统 ....................................................................... 881 33.4.2 从网络启动 Linux 系统.............................................................................. 882 第三十四章 U-Boot 图形化配置及其原理.............................................................885 34.1 U-Boot 图形化配置体验................................................................................ 886 34.2 menuconfig 图形化配置原理......................................................................... 890 34.2.1 make menuconfig 过程分析 ........................................................................ 890 34.2.2 Kconfig 语法简介........................................................................................ 891 34.3 添加自定义菜单............................................................................................ 900 第三十五章 Linux 内核顶层 Makefile 详解 ...........................................................903 35.1 Linux 内核获取............................................................................................... 904 35.2 Linux 内核编译初次编译............................................................................... 904 35.3 Linux 工程目录分析....................................................................................... 906 35.4 VSCode 工程创建........................................................................................... 912 35.5 顶层 Makefile 详解........................................................................................ 914 35.5.1 make xxx_defconfig 过程............................................................................ 919 35.5.2 Makefile.build 脚本分析 ............................................................................. 921 35.5.3 make 过程 .................................................................................................... 923 35.5.4 built-in.o 文件编译生成过程 ...................................................................... 928 35.5.5 make zImage 过程........................................................................................ 931 第三十六章 Linux 内核启动流程............................................................................933 36.1 链接脚本 vmlinux.lds.................................................................................... 934 36.2 Linux 内核启动流程分析............................................................................... 934 36.2.1 Linux 内核入口 stext................................................................................... 934 36.2.2 __mmap_switched 函数............................................................................... 937 36.2.3 start_kernel 函数 .......................................................................................... 937 36.2.4 rest_init 函数................................................................................................ 941 36.2.5 init 进程........................................................................................................ 943 第三十七章 Linux 内核移植....................................................................................947 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 23 I.MX6U 嵌入式 Linux 驱动开发指南 37.1 创建 VSCode 工程......................................................................................... 948 37.2 NXP 官方开发板 Linux 内核编译................................................................. 948 37.2.1 修改顶层 Makefile....................................................................................... 948 37.2.2 配置并编译 Linux 内核.............................................................................. 948 37.2.3 Linux 内核启动测试.................................................................................... 949 37.2.4 根文件系统缺失错误................................................................................. 950 37.3 在 Linux 中添加自己的开发板..................................................................... 951 37.3.1 添加开发板默认配置文件......................................................................... 951 37.3.2 添加开发板对应的设备树文件................................................................. 952 37.3.3 编译测试..................................................................................................... 953 37.4 CPU 主频和网络驱动修改 ............................................................................ 954 37.4.1 CPU 主频修改 ............................................................................................. 954 37.4.2 使能 8 线 EMMC 驱动............................................................................... 960 37.4.3 修改网络驱动............................................................................................. 961 37.4.4 保存修改后的图形化配置文件................................................................. 972 第三十八章 根文件系统构建..................................................................................974 38.1 根文件系统简介............................................................................................ 975 38.2 BusyBox 构建根文件系统 ............................................................................. 977 38.2.1 BusyBox 简介 .............................................................................................. 977 38.2.2 编译 BusyBox 构建根文件系统 ................................................................ 978 38.2.3 向根文件系统添加 lib 库........................................................................... 986 38.2.4 创建其他文件夹......................................................................................... 988 38.3 根文件系统初步测试.................................................................................... 988 38.4 完善根文件系统............................................................................................ 990 38.4.1 创建/etc/init.d/rcS 文件 .............................................................................. 990 38.4.2 创建/etc/fstab 文件 ..................................................................................... 991 38.4.3 创建/etc/inittab 文件................................................................................... 992 38.5 根文件系统其他功能测试............................................................................ 993 38.5.1 软件运行测试............................................................................................. 993 38.5.2 中文字符测试............................................................................................. 995 38.5.3 开机自启动测试......................................................................................... 996 38.5.4 外网连接测试............................................................................................. 997 第三十九章 系统烧写..............................................................................................999 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 24 I.MX6U 嵌入式 Linux 驱动开发指南 39.1 MfgTool 工具简介........................................................................................ 1000 39.2 MfgTool 工作原理简介................................................................................ 1001 39.2.1 烧写方式................................................................................................... 1001 39.2.2 系统烧写原理........................................................................................... 1002 39.3 烧写 NXP 官方系统.................................................................................... 1006 39.4 烧写自制的系统.......................................................................................... 1007 39.4.1 系统烧写................................................................................................... 1007 39.4.2 网络开机自启动设置............................................................................... 1009 39.5 改造我们自己的烧写工具.......................................................................... 1011 39.5.1 改造 MfgTool............................................................................................ 1011 39.5.2 烧写测试................................................................................................... 1014 39.5.3 解决 Linux 内核启动失败........................................................................ 1014 第四篇 ARM Linux 驱动开发篇 ...........................................................................1017 第四十章 字符设备驱动开发................................................................................1018 40.1 字符设备驱动简介...................................................................................... 1019 40.2 字符设备驱动开发步骤.............................................................................. 1021 40.2.1 驱动模块的加载和卸载........................................................................... 1022 40.2.2 字符设备注册与注销............................................................................... 1023 40.2.3 实现设备的具体操作函数....................................................................... 1025 40.2.4 添加 LICENSE 和作者信息..................................................................... 1027 40.3 Linux 设备号................................................................................................. 1027 40.3.1 设备号的组成........................................................................................... 1027 40.3.2 设备号的分配........................................................................................... 1028 40.4 chrdevbase 字符设备驱动开发实验............................................................ 1029 40.4.1 实验程序编写........................................................................................... 1029 40.4.2 编写测试 APP........................................................................................... 1035 40.4.3 编译驱动程序和测试 APP....................................................................... 1039 40.4.4 运行测试................................................................................................... 1041 第四十一章 嵌入式 Linux LED 驱动开发实验....................................................1045 41.1 Linux 下 LED 灯驱动原理........................................................................... 1046 41.1.1 地址映射................................................................................................... 1046 41.1.2 I/O 内存访问函数...................................................................................... 1048 41.2 硬件原理图分析.......................................................................................... 1048 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 25 I.MX6U 嵌入式 Linux 驱动开发指南 41.3 实验程序编写.............................................................................................. 1048 41.3.1 LED 灯驱动程序编写 ............................................................................... 1048 41.3.2 编写测试 APP........................................................................................... 1054 41.4 运行测试...................................................................................................... 1056 41.4.1 编译驱动程序和测试 APP....................................................................... 1056 41.4.2 运行测试................................................................................................... 1056 第四十二章 新字符设备驱动实验........................................................................1058 42.1 新字符设备驱动原理.................................................................................. 1059 42.1.1 分配和释放设备号................................................................................... 1059 42.1.2 新的字符设备注册方法........................................................................... 1060 42.2 自动创建设备节点...................................................................................... 1061 42.2.1 mdev 机制 .................................................................................................. 1061 42.2.1 创建和删除类........................................................................................... 1062 42.2.2 创建设备................................................................................................... 1062 42.2.3 参考示例................................................................................................... 1063 42.3 设置文件私有数据...................................................................................... 1063 42.4 硬件原理图分析.......................................................................................... 1064 42.5 实验程序编写.............................................................................................. 1064 42.5.1 LED 灯驱动程序编写 ............................................................................... 1064 42.5.2 编写测试 APP........................................................................................... 1071 42.6 运行测试...................................................................................................... 1071 42.6.1 编译驱动程序和测试 APP....................................................................... 1071 42.6.2 运行测试................................................................................................... 1071 第四十三章 Linux 设备树......................................................................................1073 43.1 什么是设备树?.......................................................................................... 1074 43.2 DTS、DTB 和 DTC...................................................................................... 1075 43.3 DTS 语法....................................................................................................... 1077 43.3.1 .dtsi 头文件 ................................................................................................ 1077 43.3.2 设备节点................................................................................................... 1080 43.3.3 标准属性................................................................................................... 1081 43.3.4 根节点 compatible 属性 ........................................................................... 1085 43.3.5 向节点追加或修改内容........................................................................... 1091 43.4 创建小型模板设备树.................................................................................. 1093 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 26 I.MX6U 嵌入式 Linux 驱动开发指南 43.5 设备树在系统中的体现.............................................................................. 1099 43.6 特殊节点...................................................................................................... 1100 43.6.1 aliases 子节点 ............................................................................................ 1100 43.6.2 chosen 子节点............................................................................................ 1101 43.7 Linux 内核解析 DTB 文件........................................................................... 1103 43.8 绑定信息文档.............................................................................................. 1104 43.9 设备树常用 OF 操作函数........................................................................... 1105 43.9.1 查找节点的 OF 函数................................................................................ 1106 43.9.2 查找父/子节点的 OF 函数....................................................................... 1107 43.9.3 提取属性值的 OF 函数............................................................................ 1108 43.9.4 其他常用的 OF 函数.................................................................................1111 第四十四章 设备树下的 LED 驱动实验 ..............................................................1114 44.1 设备树 LED 驱动原理 .................................................................................1115 44.2 硬件原理图分析...........................................................................................1115 44.3 实验程序编写...............................................................................................1115 44.3.1 修改设备树文件........................................................................................1115 44.3.2 LED 灯驱动程序编写 ................................................................................1116 44.3.3 编写测试 APP........................................................................................... 1124 44.4 运行测试...................................................................................................... 1124 44.4.1 编译驱动程序和测试 APP....................................................................... 1124 44.4.2 运行测试................................................................................................... 1124 第四十五章 pinctrl 和 gpio 子系统实验................................................................1126 45.1 pinctrl 子系统................................................................................................ 1127 45.1.1 pinctrl 子系统简介..................................................................................... 1127 45.1.2 I.MX6ULL 的 pinctrl 子系统驱动............................................................ 1127 45.1.3 设备树中添加 pinctrl 节点模板............................................................... 1136 45.2 gpio 子系统................................................................................................... 1137 45.2.1 gpio 子系统简介........................................................................................ 1137 45.2.2 I.MX6ULL 的 gpio 子系统驱动 ............................................................... 1137 45.2.3 gpio 子系统 API 函数................................................................................ 1145 45.2.4 设备树中添加 gpio 节点模板.................................................................. 1146 45.2.5 与 gpio 相关的 OF 函数........................................................................... 1147 45.3 硬件原理图分析.......................................................................................... 1148 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 27 I.MX6U 嵌入式 Linux 驱动开发指南 45.4 实验程序编写.............................................................................................. 1148 45.4.1 修改设备树文件....................................................................................... 1148 45.4.2 LED 灯驱动程序编写 ............................................................................... 1150 44.4.3 编写测试 APP........................................................................................... 1155 45.5 运行测试...................................................................................................... 1156 45.5.1 编译驱动程序和测试 APP....................................................................... 1156 45.5.2 运行测试................................................................................................... 1156 第四十六章 Linux 蜂鸣器实验..............................................................................1158 46.1 蜂鸣器驱动原理.......................................................................................... 1159 46.2 硬件原理图分析.......................................................................................... 1159 46.3 实验程序编写.............................................................................................. 1159 46.3.1 修改设备树文件....................................................................................... 1159 46.3.2 蜂鸣器驱动程序编写............................................................................... 1160 46.3.3 编写测试 APP........................................................................................... 1165 46.4 运行测试...................................................................................................... 1167 46.4.1 编译驱动程序和测试 APP....................................................................... 1167 46.4.2 运行测试................................................................................................... 1167 第四十七章 Linux 并发与竞争..............................................................................1169 47.1 并发与竞争.................................................................................................. 1170 47.2 原子操作...................................................................................................... 1171 47.2.1 原子操作简介........................................................................................... 1171 47.2.2 原子整形操作 API 函数........................................................................... 1172 47.2.3 原子位操作 API 函数............................................................................... 1173 47.3 自旋锁.......................................................................................................... 1174 47.3.1 自旋锁简介............................................................................................... 1174 47.3.2 自旋锁 API 函数....................................................................................... 1175 47.3.3 其他类型的锁........................................................................................... 1177 47.3.4 自旋锁使用注意事项............................................................................... 1178 47.4 信号量.......................................................................................................... 1179 47.4.1 信号量简介............................................................................................... 1179 47.4.2 信号量 API 函数....................................................................................... 1180 47.5 互斥体.......................................................................................................... 1180 47.5.1 互斥体简介............................................................................................... 1180 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 28 I.MX6U 嵌入式 Linux 驱动开发指南 47.5.2 互斥体 API 函数....................................................................................... 1181 第四十八章 Linux 并发与竞争实验......................................................................1182 48.1 原子操作实验.............................................................................................. 1183 48.1.1 实验程序编写........................................................................................... 1183 48.1.2 运行测试................................................................................................... 1190 48.2 自旋锁实验.................................................................................................. 1192 48.2.1 实验程序编写........................................................................................... 1192 48.2.2 运行测试................................................................................................... 1196 48.3 信号量实验.................................................................................................. 1197 48.3.1 实验程序编写........................................................................................... 1197 48.3.2 运行测试................................................................................................... 1200 48.4 互斥体实验.................................................................................................. 1201 48.4.1 实验程序编写........................................................................................... 1201 48.4.2 运行测试................................................................................................... 1204 第四十九章 Linux 按键输入实验..........................................................................1206 49.1 Linux 下按键驱动原理................................................................................. 1207 49.2 硬件原理图分析.......................................................................................... 1207 49.3 实验程序编写.............................................................................................. 1207 49.3.1 修改设备树文件....................................................................................... 1207 49.3.2 按键驱动程序编写................................................................................... 1208 49.3.3 编写测试 APP........................................................................................... 1213 49.4 运行测试...................................................................................................... 1215 49.4.1 编译驱动程序和测试 APP....................................................................... 1215 49.4.2 运行测试................................................................................................... 1215 第五十章 Linux 内核定时器实验.........................................................................1217 50.1 Linux 时间管理和内核定时器简介............................................................. 1218 50.1.1 内核时间管理简介................................................................................... 1218 50.1.2 内核定时器简介....................................................................................... 1221 50.1.3 Linux 内核短延时函数.............................................................................. 1223 50.2 硬件原理图分析.......................................................................................... 1223 50.3 实验程序编写.............................................................................................. 1224 50.3.1 修改设备树文件....................................................................................... 1224 50.3.2 定时器驱动程序编写............................................................................... 1224 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 29 I.MX6U 嵌入式 Linux 驱动开发指南 50.3.3 编写测试 APP........................................................................................... 1230 50.4 运行测试...................................................................................................... 1232 50.4.1 编译驱动程序和测试 APP....................................................................... 1232 50.4.2 运行测试................................................................................................... 1233 第五十一章 Linux 中断实验..................................................................................1234 51.1 Linux 中断简介............................................................................................. 1235 51.1.1 Linux 中断 API 函数................................................................................. 1235 51.1.2 上半部与下半部....................................................................................... 1237 51.1.3 设备树中断信息节点............................................................................... 1243 51.1.4 获取中断号............................................................................................... 1245 51.2 硬件原理图分析.......................................................................................... 1245 51.3 实验程序编写.............................................................................................. 1245 51.3.1 修改设备树文件....................................................................................... 1245 51.3.2 按键中断驱动程序编写........................................................................... 1246 51.3.3 编写测试 APP........................................................................................... 1254 51.4 运行测试...................................................................................................... 1256 51.4.1 编译驱动程序和测试 APP....................................................................... 1256 51.4.2 运行测试................................................................................................... 1256 第五十二章 Linux 阻塞和非阻塞 IO 实验 ...........................................................1258 52.1 阻塞和非阻塞 IO......................................................................................... 1259 52.1.1 阻塞和非阻塞简介................................................................................... 1259 52.1.2 等待队列................................................................................................... 1260 52.1.3 轮询........................................................................................................... 1262 52.1.4 Linux 驱动下的 poll 操作函数 ................................................................. 1266 52.2 阻塞 IO 实验................................................................................................ 1267 52.2.1 硬件原理图分析....................................................................................... 1267 52.2.2 实验程序编写........................................................................................... 1267 52.2.3 运行测试................................................................................................... 1274 52.3 非阻塞 IO 实验............................................................................................ 1275 52.3.1 硬件原理图分析....................................................................................... 1275 52.3.2 实验程序编写........................................................................................... 1276 52.3.3 运行测试................................................................................................... 1281 第五十三章 异步通知实验....................................................................................1284 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 30 I.MX6U 嵌入式 Linux 驱动开发指南 53.1 异步通知...................................................................................................... 1285 53.1.1 异步通知简介........................................................................................... 1285 53.1.2 驱动中的信号处理................................................................................... 1287 53.1.3 应用程序对异步通知的处理................................................................... 1289 53.2 硬件原理图分析.......................................................................................... 1289 53.3 实验程序编写.............................................................................................. 1289 53.3.1 修改设备树文件....................................................................................... 1290 53.3.2 程序编写................................................................................................... 1290 53.3.3 编写测试 APP........................................................................................... 1293 53.4 运行测试...................................................................................................... 1295 53.4.1 编译驱动程序和测试 APP....................................................................... 1295 53.4.2 运行测试................................................................................................... 1296 第五十四章 platform 设备驱动实验 .....................................................................1297 54.1 Linux 驱动的分离与分层............................................................................. 1298 54.1.1 驱动的分隔与分离................................................................................... 1298 54.1.2 驱动的分层............................................................................................... 1300 54.2 platform 平台驱动模型简介 ........................................................................ 1300 54.2.1 platform 总线 ............................................................................................. 1300 54.2.2 platform 驱动 ............................................................................................. 1302 54.2.3 platform 设备 ............................................................................................. 1307 54.3 硬件原理图分析.......................................................................................... 1310 54.4 试验程序编写.............................................................................................. 1310 54.4.1 platform 设备与驱动程序编写 ................................................................. 1310 54.4.2 测试 APP 编写.......................................................................................... 1320 54.5 运行测试...................................................................................................... 1321 54.5.1 编译驱动程序和测试 APP....................................................................... 1321 54.4.2 运行测试................................................................................................... 1322 第五十五章 设备树下的 platform 驱动编写 ........................................................1324 55.1 设备树下的 platform 驱动简介 .................................................................. 1325 55.2 硬件原理图分析.......................................................................................... 1326 55.3 实验程序编写.............................................................................................. 1326 55.3.1 修改设备树文件....................................................................................... 1326 55.3.2 platform 驱动程序编写 ............................................................................. 1326 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 31 I.MX6U 嵌入式 Linux 驱动开发指南 55.3.3 编写测试 APP........................................................................................... 1332 55.4 运行测试...................................................................................................... 1332 55.4.1 编译驱动程序和测试 APP....................................................................... 1332 55.4.2 运行测试................................................................................................... 1333 第五十六章 Linux 自带的 LED 灯驱动实验........................................................1334 56.1 Linux 内核自带 LED 驱动使能................................................................... 1335 56.2 Linux 内核自带 LED 驱动简介................................................................... 1336 56.2.1 LED 灯驱动框架分析 ............................................................................... 1336 56.2.2 module_platform_driver 函数简析............................................................ 1337 56.2.3 gpio_led_probe 函数简析.......................................................................... 1338 56.3 设备树节点编写.......................................................................................... 1341 56.4 运行测试...................................................................................................... 1341 第五十七章 Linux MISC 驱动实验.......................................................................1343 57.1 MISC 设备驱动简介 .................................................................................... 1344 57.2 硬件原理图分析.......................................................................................... 1345 57.3 实验程序编写.............................................................................................. 1345 57.3.1 修改设备树............................................................................................... 1345 57.3.2 beep 驱动程序编写.................................................................................... 1345 57.3.3 编写测试 APP........................................................................................... 1351 57.4 运行测试...................................................................................................... 1352 57.4.1 编译驱动程序和测试 APP....................................................................... 1352 57.4.2 运行测试................................................................................................... 1353 第五十八章 Linux INPUT 子系统实验.................................................................1354 58.1 input 子系统.................................................................................................. 1355 58.1.1 input 子系统简介....................................................................................... 1355 58.1.2 input 驱动编写流程................................................................................... 1355 58.1.3 input_event 结构体 .................................................................................... 1361 58.2 硬件原理图分析.......................................................................................... 1362 58.3 实验程序编写.............................................................................................. 1362 58.3.1 修改设备树文件....................................................................................... 1362 58.3.2 按键 input 驱动程序编写......................................................................... 1362 58.3.3 编写测试 APP........................................................................................... 1368 58.4 运行测试...................................................................................................... 1370 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 32 I.MX6U 嵌入式 Linux 驱动开发指南 58.4.1 编译驱动程序和测试 APP....................................................................... 1370 58.4.2 运行测试................................................................................................... 1371 58.5 Linux 自带按键驱动程序的使用................................................................. 1372 58.5.1 自带按键驱动程序源码简析................................................................... 1372 58.5.2 自带按键驱动程序的使用....................................................................... 1378 第五十九章 Linux LCD 驱动实验.........................................................................1380 59.1 Linux 下 LCD 驱动简析............................................................................... 1381 59.1.1 Framebuffer 设备 ....................................................................................... 1381 59.1.2 LCD 驱动简析........................................................................................... 1382 59.2 硬件原理图分析.......................................................................................... 1387 59.3 LCD 驱动程序编写...................................................................................... 1388 59.4 运行测试...................................................................................................... 1393 59.4.1 LCD 屏幕基本测试................................................................................... 1393 59.4.2 设置 LCD 作为终端控制台..................................................................... 1394 59.4.3 LCD 背光调节........................................................................................... 1395 59.4.4 LCD 自动关闭解决方法........................................................................... 1396 第六十章 Linux RTC 驱动实验.............................................................................1398 60.1 Linux 内核 RTC 驱动简介........................................................................... 1399 60.2 I.MX6U 内部 RTC 驱动分析....................................................................... 1403 60.3 RTC 时间查看与设置................................................................................... 1408 第六十一章 Linux I2C 驱动实验...........................................................................1411 61.1 Linux I2C 驱动框架简介.............................................................................. 1412 61.1.1 I2C 总线驱动............................................................................................. 1412 61.1.2 I2C 设备驱动............................................................................................. 1413 61.1.3 I2C 设备和驱动匹配过程......................................................................... 1417 61.2 I.MX6U 的 I2C 适配器驱动分析 ................................................................ 1418 61.3 I2C 设备驱动编写流程................................................................................ 1424 61.3.1 I2C 设备信息描述..................................................................................... 1425 61.3.2 I2C 设备数据收发处理流程..................................................................... 1426 61.4 硬件原理图分析.......................................................................................... 1429 61.5 实验程序编写.............................................................................................. 1429 61.5.1 修改设备树............................................................................................... 1429 61.5.2 AP3216C 驱动编写.................................................................................... 1431 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 33 I.MX6U 嵌入式 Linux 驱动开发指南 61.5.3 编写测试 APP........................................................................................... 1441 61.6 运行测试...................................................................................................... 1443 61.6.1 编译驱动程序和测试 APP....................................................................... 1443 61.6.2 运行测试................................................................................................... 1443 第六十二章 Linux SPI 驱动实验...........................................................................1445 62.1 Linux 下 SPI 驱动框架简介......................................................................... 1446 62.1.1 SPI 主机驱动 ............................................................................................. 1446 62.1.2 SPI 设备驱动 ............................................................................................. 1448 62.1.3 SPI 设备和驱动匹配过程 ......................................................................... 1450 62.2 I.MX6U SPI 主机驱动分析.......................................................................... 1451 62.3 SPI 设备驱动编写流程 ................................................................................ 1453 62.3.1 SPI 设备信息描述 ..................................................................................... 1453 62.3.2 SPI 设备数据收发处理流程 ..................................................................... 1454 62.4 硬件原理图分析.......................................................................................... 1458 62.5 试验程序编写.............................................................................................. 1458 62.5.1 修改设备树............................................................................................... 1458 62.5.2 编写 ICM20608 驱动................................................................................ 1459 62.5.3 编写测试 APP........................................................................................... 1470 62.6 运行测试...................................................................................................... 1473 62.6.1 编译驱动程序和测试 APP....................................................................... 1473 62.6.2 运行测试................................................................................................... 1474 第六十三章 Linux RS232/485/GPS 驱动实验......................................................1475 63.1 Linux 下 UART 驱动框架............................................................................ 1476 63.2 I.MX6U UART 驱动分析............................................................................. 1479 63.3 硬件原理图分析.......................................................................................... 1485 63.4 RS232 驱动编写 ........................................................................................... 1486 63.5 移植 minicom............................................................................................... 1488 63.6 RS232 驱动测试 ........................................................................................... 1491 63.6.1 RS232 连接设置 ........................................................................................ 1491 63.6.2 minicom 设置............................................................................................. 1492 63.6.3 RS232 收发测试 ........................................................................................ 1494 63.7 RS485 测试 ................................................................................................... 1496 63.7.1 RS485 连接设置 ........................................................................................ 1496 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 34 I.MX6U 嵌入式 Linux 驱动开发指南 63.7.2 RS485 收发测试 ........................................................................................ 1497 63.8 GPS 测试....................................................................................................... 1498 63.8.1 GPS 连接设置............................................................................................ 1498 63.8.2 GPS 数据接收测试.................................................................................... 1499 第六十四章 Linux 多点电容触摸屏实验.............................................................1501 64.1 Linux 下电容触摸屏驱动框架简介............................................................. 1502 64.1.1 多点触摸(MT)协议详解 .......................................................................... 1502 64.1.2 Type A 触摸点信息上报时序.................................................................... 1503 64.1.3 Type B 触摸点信息上报时序.................................................................... 1505 64.1.4 MT 其他事件的使用................................................................................. 1507 64.1.5 多点触摸所使用到的 API 函数............................................................... 1507 64.1.6 多点电容触摸驱动框架........................................................................... 1509 64.2 硬件原理图分析.......................................................................................... 1513 64.3 试验程序编写.............................................................................................. 1513 64.3.1 修改设备树............................................................................................... 1514 64.3.2 编写多点电容触摸驱动........................................................................... 1515 64.4 运行测试...................................................................................................... 1525 64.4.1 编译驱动程序........................................................................................... 1525 64.4.2 运行测试................................................................................................... 1526 64.4.3 将驱动添加到内核中............................................................................... 1527 64.5 tslib 移植与使用 ........................................................................................... 1529 64.5.1 tslib 移植 .................................................................................................... 1529 64.5.2 tslib 测试 .................................................................................................... 1530 64.6 使用内核自带的驱动.................................................................................. 1532 64.7 4.3 寸屏触摸驱动实验................................................................................. 1534 第六十五章 Linux 音频驱动实验.........................................................................1538 65.1 音频接口简介.............................................................................................. 1539 65.1.1 为何需要音频编解码芯片?................................................................... 1539 65.1.2 WM8960 简介............................................................................................ 1539 65.1.3 I2S 总线接口.............................................................................................. 1541 65.1.4 I.MX6ULL SAI 简介 ................................................................................. 1542 65.2 硬件原理图分析.......................................................................................... 1543 65.3 音频驱动使能.............................................................................................. 1544 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 35 I.MX6U 嵌入式 Linux 驱动开发指南 65.3.1 修改设备树............................................................................................... 1544 65.5.2 使能内核的 WM8960 驱动...................................................................... 1548 65.4 alsa-lib 和 alsa-utils 移植.............................................................................. 1550 65.4.1 alsa-lib 移植 ............................................................................................... 1550 65.4.2 alsa-utils 移植............................................................................................. 1551 65.5 声卡设置与测试.......................................................................................... 1552 65.5.1 amixer 使用方法........................................................................................ 1552 65.5.2 音乐播放测试........................................................................................... 1555 65.5.3 MIC 录音测试............................................................................................ 1555 65.5.4 LINE IN 录音测试..................................................................................... 1559 65.6 开机自动配置声卡...................................................................................... 1561 65.7 mplayer 播放器移植与使用......................................................................... 1562 65.7.1 mplayer 移植.............................................................................................. 1562 65.7.2 mplayer 使用.............................................................................................. 1563 65.8 alsamixer 简介............................................................................................... 1565 第六十六章 Linux CAN 驱动实验........................................................................1566 66.1 CAN 协议简析.............................................................................................. 1567 66.1.1 何为 CAN?.............................................................................................. 1567 66.1.2 CAN 电气属性........................................................................................... 1568 66.1.3 CAN 协议................................................................................................... 1569 66.1.4 CAN 速率................................................................................................... 1575 66.1.5 I.MX6ULL FlexCAN 简介 ........................................................................ 1577 66.2 硬件原理图分析.......................................................................................... 1579 66.3 实验程序编写.............................................................................................. 1579 66.3.1 修改设备树............................................................................................... 1579 66.3.2 使能 Linux 内核自带的 FlexCAN 驱动.................................................. 1581 66.4 FlexCAN 测试............................................................................................... 1582 66.4.1 检查 CAN 网卡设备是否存在................................................................. 1582 66.4.2 移植 iproute2............................................................................................. 1583 66.4.3 移植 can-utils 工具 ................................................................................... 1585 66.4.4 CAN 通信测试........................................................................................... 1585 第六十七章 Linux USB 驱动实验.........................................................................1589 67.1 USB 接口简介 .............................................................................................. 1590 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 36 I.MX6U 嵌入式 Linux 驱动开发指南 67.1.1 什么是 USB? .......................................................................................... 1590 67.1.2 USB 电气特性 ........................................................................................... 1591 67.1.3 USB 拓扑结构 ........................................................................................... 1592 67.1.4 什么是 USB OTG?................................................................................. 1593 67.1.5 I.MX6ULL USB 接口简介........................................................................ 1594 67.2 硬件原理图分析.......................................................................................... 1595 67.2.1 USB HUB 原理图分析.............................................................................. 1595 67.2.2 USB OTG 原理图分析.............................................................................. 1596 67.3 USB 协议简析 .............................................................................................. 1597 67.3.1 USB 描述符 ............................................................................................... 1597 67.3.3 USB 数据包类型 ....................................................................................... 1600 67.3.4 USB 传输类型 ........................................................................................... 1602 67.3.5 USB 枚举 ................................................................................................... 1603 67.4 Linux 内核自带 HOST 实验........................................................................ 1603 67.4.1 USB 鼠标键盘测试 ................................................................................... 1603 67.4.2 U 盘实验 .................................................................................................... 1606 67.5 Linux 内核自带 USB OTG 实验.................................................................. 1608 67.5.1 修改设备树............................................................................................... 1608 67.5.2 OTG 主机实验........................................................................................... 1609 67.5.3 OTG 从机实验........................................................................................... 1609 第六十八章 Linux 块设备驱动实验.....................................................................1613 第六十九章 Linux 网络驱动实验.........................................................................1614 第七十章 Linux WIFI 驱动实验............................................................................1615 70.1 WIFI 驱动添加与编译.................................................................................. 1616 70.1.1 向 Linux 内核添加 WIFI 驱动................................................................. 1616 70.1.2 配置 Linux 内核........................................................................................ 1619 70.1.3 编译 WIFI 驱动 ........................................................................................ 1620 70.1.4 驱动加载测试........................................................................................... 1622 70.2 wireless tools 工具移植与测试 .................................................................... 1625 70.2.1 wireless tools 移植 ..................................................................................... 1625 70.2.2 wireless tools 工具测试 ............................................................................. 1625 70.3 wpa_supplicant 移植..................................................................................... 1627 70.3.1 openssl 移植............................................................................................... 1627 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 37 I.MX6U 嵌入式 Linux 驱动开发指南 70.3.2 libnl 库移植................................................................................................ 1627 70.3.3 wpa_supplicant 移植.................................................................................. 1628 70.4 WIFI 联网测试.............................................................................................. 1630 70.4.1 RTL8188 USB WIFI 联网测试 ................................................................. 1630 70.4.2 RTL8189 SDIO WIFI 联网测试................................................................ 1632 第七十一章 Linux 4G 通信实验............................................................................1634 71.1 4G 网络连接简介 ......................................................................................... 1635 71.2 高新兴 ME3630 4G 模块实验 .................................................................... 1637 71.2.1 ME3630 4G 模块简介 ............................................................................... 1637 71.2.2 ME3630 4G 模块驱动修改 ....................................................................... 1638 71.2.3 ME3630 4G 模块 ppp 联网测试 ............................................................... 1641 71.2.4 ME3630 4G 模块 ECM 联网测试............................................................. 1646 71.2.5 ME3630 4G 模块 GNSS 定位测试........................................................... 1647 71.3 EC20 4G 模块实验....................................................................................... 1649 71.3.1 EC20 4G 模块简介.................................................................................... 1649 71.3.2 EC20 4G 模块驱动修改............................................................................ 1650 71.3.3 quectel-CM 移植........................................................................................ 1655 71.3.4 EC20 上网测试.......................................................................................... 1655 第七十二章 RGB 转 HDMI 实验 ..........................................................................1657 72.1 RGB 转 HMDI 简介 ..................................................................................... 1658 72.2 硬件原理图分析.......................................................................................... 1658 72.3 实验驱动编写.............................................................................................. 1659 72.3.1 修改设备树............................................................................................... 1659 72.3.2 使能内核自带的 sii902x 驱动 ................................................................. 1662 72.3.3 修改 sii902x 驱动 ..................................................................................... 1662 72.4 RGB 转 HDMI 测试 ..................................................................................... 1663 第七十三章 Linux PWM 驱动实验.......................................................................1665 73.1 PWM 驱动简析............................................................................................. 1666 73.1.1 设备树下的 PWM 控制器节点................................................................ 1666 73.1.2 PWM 子系统.............................................................................................. 1666 73.1.3 PWM 驱动源码分析.................................................................................. 1667 73.2 PWM 驱动编写............................................................................................. 1671 73.2.1 修改设备树............................................................................................... 1671 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 38 I.MX6U 嵌入式 Linux 驱动开发指南 73.2.2 使能 PWM 驱动........................................................................................ 1673 73.3 PWM 驱动测试............................................................................................. 1673 附录 A 其他根文件系统构建 ................................................................................1676 第 A1 章 Buildroot 根文件系统构建.....................................................................1677 A1.1 何为 buildroot?.......................................................................................... 1678 A1.1.1 buildroot 简介............................................................................................ 1678 A1.1.2 buildroot 下载............................................................................................ 1678 A1.2 buildroot 构建根文件系统........................................................................... 1679 A1.2.1 配置 buildroot........................................................................................... 1679 A1.2.2 编译 buildroot........................................................................................... 1684 A2.2.3 buildroot 根文件系统测试........................................................................ 1685 A1.3 buildroot 第三方软件和库的配置............................................................... 1685 A1.4 buildroot 下的 busybox 配置....................................................................... 1687 A1.4.1 busybox 配置............................................................................................. 1687 A1.4.2 busybox 中文字符的支持......................................................................... 1688 A1.4.3 编译 busybox............................................................................................ 1688 A1.5 根文件系统测试 ......................................................................................... 1689 第 A2 章 Yocto 根文件系统构建...........................................................................1691 第 A3 章 Ubuntu-base 根文件系统构建................................................................1692 A3.1 ubuntu-base 获取.......................................................................................... 1693 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 39 I.MX6U 嵌入式 Linux 驱动开发指南 A3.2 ubuntu 根文件系统构建.............................................................................. 1695 A3.2.1 解压缩 ubuntu base 根文件系统............................................................. 1695 A3.2.2 安装 qemu ................................................................................................ 1695 A3.2.3 设置软件源 .............................................................................................. 1696 A3.2.4 在主机挂载并配置根文件系统 .............................................................. 1696 A3.3 ubuntu 根文件系统测试.............................................................................. 1698 A3.3.1 nfs 挂载测试 ............................................................................................. 1698 A3.3.2 ubuntu 根文件系统烧写........................................................................... 1699 A3.4 ubuntu 系统使用.......................................................................................... 1700 A3.4.1 添加新用户 .............................................................................................. 1700 A3.4.2 网络 DHCP 配置...................................................................................... 1701 A3.4.3 安装软件 .................................................................................................. 1701 A3.4.4 FTP 服务器搭建 ....................................................................................... 1701 A3.4.5 gcc 和 make 工具安装.............................................................................. 1703 附录 B 其他第三方软件移植 ................................................................................1705 第 B1 章 开发板 FTP 服务器移植与搭建.............................................................1706 B1.1 vsftpd 源码下载 ........................................................................................... 1707 B1.2 vsftpd 移植 ................................................................................................... 1708 B1.3 vsftpd 服务器测试 ....................................................................................... 1708 B1.3.1 配置 vsftpd ............................................................................................... 1708 B1.3.2 添加新用户 .............................................................................................. 1709 B1.3.3 Filezilla 连接测试 ..................................................................................... 1710 第 B2 章节 开发板 OpenSSH 移植与使用 ...........................................................1713 B2.1 OpenSSH 简介 ............................................................................................. 1714 B2.2 OpenSSH 移植 ............................................................................................. 1714 B2.2.1 OpenSSH 源码获取 .................................................................................. 1714 B2.2.2 移植 zlib 库 .............................................................................................. 1714 B2.2.3 移植 openssl 库 ........................................................................................ 1714 B2.2.4 移植 openssh 库........................................................................................ 1714 B2.3 openssh 设置................................................................................................. 1716 B2.4 openssh 使用................................................................................................. 1716 B2.4.1 ssh 登录 ..................................................................................................... 1716 B2.4.2 scp 命令拷贝文件..................................................................................... 1718 原子哥在线教学:www.yuanzige.com 论坛:www.openedv.com 40 I.MX6U 嵌入式 Linux 驱动开发指南 第 B3 章节 嵌入式 GDB 调试搭建与使用...........................................................1720 B3.1 GDB 简介..................................................................................................... 1721 B3.2 GDB 移植..................................................................................................... 1721 B3.2.1 获取 gdb 和 gdbserver 源码..................................................................... 1721 B3.2.2 编译 gdb ................................................................................................... 1721 B3.2.3 移植 gdbserver.......................................................................................... 1723 B3.3 使用 GDB 进行嵌入式程序调试............................................................... 1724 B3.3.1 编写一个测试应用 .................................................................................. 1724 B3.3.2 GDB 调试程序.......................................................................................... 1725 第 B4 章节 VSCode gdbserver 图形化调试.........................................................1728 B4.1 VSCode 设置................................................................................................ 1729 B4.2 VSCode 调试方法........................................................................................ 1730 |
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论