×
原子嵌入式Linux驱动开发详解

原子嵌入式Linux驱动开发详解

1星价 ¥116.6 (6.9折)
2星价¥116.6 定价¥169.0
暂无评论
图文详情
  • ISBN:9787302613824
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:16开
  • 页数:740
  • 出版时间:2022-08-01
  • 条形码:9787302613824 ; 978-7-302-61382-4

本书特色

全面解析基于ARM内核的嵌入式Linux驱动开发,帮助单片机开发者顺利过渡到嵌入式Linux驱动开发。 本书配有数十个项目例程和源代码,并配有丰富的教学视频内容

内容简介

嵌入式Linux涉及的知识点很多,对初学者的基础要求高,在知识储备的广度和深度上都对学习者提出了很高的要求。大多数转型嵌入式Linux开发的朋友都是以前从事单片机开发工作的工程师,因此如何从单片机开发工程师转型为嵌入式Linux开发工程师,这个过程非常重要。 单片机工程师大多数都是在Windows环境下工作,使用集成IDE编写并编译代码,然后在IDE上通过DownLoad按钮一键下载代码到单片机中。至于集成IDE是怎么组织源文件,又是怎么编译的并不清楚。 本书就以单片机工程*熟悉的“裸机”开发为例,讲解如何在Ubuntu下搭建开发环境,如何使用VScode编写程序,如何使用make工具编译源码。通过这些操作,大家就可以对集成式IDE与开源开发环境有很清晰的认识。当掌握了开发方式以后,剩下的就是通过大量的裸机案例来加深对I.MX6ULL这颗芯片的认识,了解各个外设的应用,为后面学习嵌人式Linux驱动开发打下坚实的基础。本书后半部分详细讲解了如何移植uboot、Linux内核、根文件系统,*终在开发板上搭建出一个基础的嵌入式Linux系统,后续的嵌入式Linux驱动开发就在这个小系统上进行。 本书可作为广大从事嵌人式开发、MCU开发、物联网应用开发等工程技术人员的学习和参考用书,也可作为高等院校计算机、电子、自动化等专业嵌入式系统、微机接口、物联网、单片机等课程的教材。

目录

**篇Ubuntu操作系统入门 (扫描封底“本书资源”二维码获取) 第二篇裸机开发 第1章开发环境搭建 1.1Ubuntu和Windows文件互传 1.2Ubuntu下NFS和SSH服务开启 1.2.1NFS服务开启 1.2.2SSH服务开启 1.3Ubuntu交叉编译工具链安装 1.3.1交叉编译器安装 1.3.2安装相关库 1.3.3交叉编译器验证 1.4Visual Studio Code软件的安装和使用 1.4.1Visual Studio Code软件的安装 1.4.2Visual Studio Code插件的安装 1.4.3Visual Studio Code新建工程 1.5CH340串口驱动安装 1.6MobaXterm软件安装和使用 1.6.1MobaXterm软件安装 1.6.2MobaXterm软件使用 第2章CortexA7 MPCore架构 2.1CortexA7 MPCore简介 2.2CortexA处理器运行模型 2.3CortexA寄存器组 2.3.1通用寄存器 2.3.2程序状态寄存器 第3章ARM汇编基础 3.1GNU汇编语法 3.2CortexA7常用汇编指令 3.2.1处理器内部数据传输指令 3.2.2存储器访问指令 3.2.3压栈和出栈指令 3.2.4跳转指令 3.2.5算术运算指令 3.2.6逻辑运算指令 第4章汇编LED灯实验 4.1I.MX6U GPIO详解 4.1.1STM32 GPIO回顾 4.1.2I.MX6ULL I/O命名 4.1.3I.MX6ULL I/O复用 4.1.4I.MX6ULL I/O配置 4.1.5I.MX6ULL GPIO配置 4.1.6I.MX6ULL GPIO时钟使能 4.2硬件原理分析 4.3实验程序编写 4.4编译、下载和验证 4.4.1编译代码 4.4.2创建Makefile文件 4.4.3代码烧写 4.4.4代码验证 第5章I.MX6U启动方式详解 5.1启动方式选择 5.1.1串行下载 5.1.2内部BOOT模式 5.2BOOT ROM初始化内容 5.3启动设备 5.4镜像烧写 5.4.1IVT和Boot Data 5.4.2DCD数据 第6章C语言版LED灯实验 6.1C语言版LED灯简介 6.2硬件原理分析 6.3实验程序编写 6.3.1汇编部分实验程序编写 6.3.2C语言部分实验程序编写 6.4编译、下载和验证 6.4.1编写Makefile 6.4.2链接脚本 6.4.3修改Makefile 6.4.4下载和验证 第7章模仿STM32驱动开发格式实验 7.1模仿STM32寄存器定义 7.1.1STM32寄存器定义简介 7.1.2I.MX6ULL寄存器定义 7.2硬件原理分析 7.3实验程序编写 7.4编译、下载和验证 7.4.1编写Makefile和链接脚本 7.4.2编译和下载 第8章官方SDK移植实验 8.1官方SDK移植简介 8.2硬件原理分析 8.3实验程序编写 8.3.1SDK文件移植 8.3.2创建cc.h文件 8.3.3编写实验代码 8.4编译、下载和验证 8.4.1编写Makefile和链接脚本 8.4.2编译和下载 第9章BSP工程管理实验 9.1BSP工程管理简介 9.2硬件原理分析 9.3实验程序编写 9.3.1创建imx6ul.h文件 9.3.2编写led驱动代码 9.3.3编写时钟驱动代码 9.3.4编写延时驱动代码 9.3.5修改main.c文件 9.4编译、下载和验证 9.4.1编写Makefile和链接脚本 9.4.2编译和下载 第10章蜂鸣器实验 10.1有源蜂鸣器简介 10.2硬件原理分析 10.3实验程序编写 10.4编译、下载和验证 10.4.1编写Makefile和链接脚本 10.4.2编译和下载 第11章按键输入实验 11.1按键输入简介 11.2硬件原理分析 11.3实验程序编写 11.4编译、下载和验证 11.4.1编写Makefile和链接脚本 11.4.2编译和下载 第12章主频和时钟配置实验 12.1I.MX6ULL时钟系统详解 12.1.1系统时钟来源 12.1.27路PLL时钟源 12.1.3时钟树简介 12.1.4内核时钟设置 12.1.5PFD时钟设置 12.1.6AHB、IPG和PERCLK根时钟设置 12.2硬件原理分析 12.3实验程序编写 12.4编译、下载和验证 12.4.1编写Makefile和链接脚本 12.4.2编译和下载 第13章GPIO中断实验 13.1CortexA7中断系统详解 13.1.1STM32中断系统回顾 13.1.2CortexA7中断系统简介 13.1.3GIC控制器简介 13.1.4CP15协处理器 13.1.5中断使能 13.1.6中断优先级设置 13.2硬件原理分析 13.3实验程序编写 13.3.1移植SDK包中断相关文件 13.3.2重新编写start.s文件 13.3.3通用中断驱动文件编写 13.3.4修改GPIO驱动文件 13.3.5按键中断驱动文件编写 13.3.6编写main.c文件 13.4编译、下载和验证 13.4.1编写Makefile和链接脚本 13.4.2编译和下载 第14章EPIT定时器实验 14.1EPIT定时器简介 14.2硬件原理分析 14.3实验程序编写 14.4编译、下载和验证 14.4.1编写Makefile和链接脚本 14.4.2编译和下载 第15章定时器按键消抖实验 15.1定时器按键消抖简介 15.2硬件原理分析 15.3实验程序编写 15.4编译、下载和验证 15.4.1编写Makefile和链接脚本 15.4.2编译和下载 第16章高精度延时实验 16.1高精度延时简介 16.1.1GPT定时器简介 16.1.2定时器实现高精度延时原理 16.2硬件原理分析 16.3实验程序编写 16.4编译、下载和验证 16.4.1编写Makefile和链接脚本 16.4.2编译和下载 第17章UART串口通信实验 17.1I.MX6ULL串口通信简介 17.1.1UART简介 17.1.2I.MX6ULL UART简介 17.2硬件原理分析 17.3实验程序编写 17.4编译、下载和验证 17.4.1编写Makefile和链接脚本 17.4.2编译和下载 第18章串口格式化函数移植实验 18.1串口格式化函数移植简介 18.2硬件原理分析 18.3实验程序编写 18.4编译、下载和验证 18.4.1编写Makefile和链接脚本 18.4.2编译和下载 第19章DDR3实验 19.1DDR3内存简介 19.1.1何为RAM和ROM 19.1.2SRAM简介 19.1.3SDRAM简介 19.1.4DDR简介 19.2DDR3关键时间参数 19.3I.MX6ULL MMDC控制器简介 19.3.1MMDC控制器 19.3.2MMDC控制器信号引脚 19.3.3MMDC控制器时钟源 19.4ALPHA开发板DDR3L原理图 19.5DDR3L初始化与测试 19.5.1ddr_stress_tester简介 19.5.2DDR3L驱动配置 19.5.3DDR3L校准 19.5.4DDR3L超频测试 19.5.5DDR3L驱动总结 第20章RGB LCD显示实验 20.1LCD和eLCDIF简介 20.1.1LCD简介 20.1.2eLCDIF接口简介 20.2硬件原理分析 20.3实验程序编写 20.4编译、下载和验证 20.4.1编写Makefile和链接脚本 20.4.2编译和下载 第21章RTC实时时钟实验 21.1I.MX6ULL RTC实时时钟简介 21.2硬件原理分析 21.3实验程序编写 21.3.1修改文件MCIMX6Y2.h 21.3.2编写实验程序 21.4编译、下载和验证 21.4.1编写Makefile和链接脚本 21.4.2编译和下载 第22章I2C实验 22.1I2C和AP3216C简介 22.1.1I2C简介 22.1.2I.MX6ULL I2C简介 22.1.3AP3216C简介 22.2硬件原理分析 22.3实验程序编写 22.4编译、下载和验证 22.4.1编写Makefile和链接脚本 22.4.2编译和下载 第23章SPI实验 23.1SPI & ICM20608简介 23.1.1SPI简介 23.1.2I.MX6ULL ECSPI简介 23.1.3ICM20608简介 23.2硬件原理分析 23.3实验程序编写 23.4编译、下载和验证 23.4.1编写Makefile和链接脚本 23.4.2编译和下载 第24章多点电容触摸屏实验 24.1多点电容触摸屏简介 24.2硬件原理分析 24.3实验程序编写 24.4编译、下载和验证 24.4.1编写Makefile和链接脚本 24.4.2编译和下载 第25章LCD背光调节实验 25.1LCD背光调节简介 25.2硬件原理分析 25.3实验程序编写 25.4编译、下载和验证 25.4.1编写Makefile和链接脚本 25.4.2编译和下载 第26章ADC实验 26.1ADC简介 26.1.1什么是ADC 26.1.2I.MX6ULL ADC简介 26.2硬件原理分析 26.3实验程序编写 26.4编译、下载和验证 26.4.1编写Makefile和链接脚本 26.4.2编译和下载 第三篇系统移植 第27章UBoot使用实验 27.1UBoot简介 27.2UBoot初次编译 27.3UBoot烧写与启动 27.4UBoot命令使用 27.4.1信息查询命令 27.4.2环境变量操作命令 27.4.3内存操作命令 27.4.4网络操作命令 27.4.5EMMC和SD卡操作命令 27.4.6FAT格式文件系统操作命令 27.4.7EXT格式文件系统操作命令 27.4.8NAND操作命令 27.4.9BOOT操作命令 27.4.10其他常用命令 第28章UBoot顶层Makefile详解 28.1UBoot工程目录分析 28.2VSCode工程创建 28.3UBoot顶层Makefile分析 28.3.1版本号 28.3.2MAKEFLAGS变量 28.3.3命令输出 28.3.4静默输出 28.3.5设置编译结果输出目录 28.3.6代码检查 28.3.7模块编译 28.3.8获取主机架构和系统 28.3.9设置目标架构、交叉编译器和配置文件 28.3.10调用scripts/Kbuild.include 28.3.11交叉编译工具变量设置 28.3.12导出其他变量 28.3.13make xxx_defconfig过程 28.3.14Makefile.build脚本分析 28.3.15make过程 第29章UBoot启动流程详解 29.1链接脚本uboot.lds详解 29.2UBoot启动流程解析 29.2.1reset函数源码详解 29.2.2lowlevel_init函数详解 29.2.3s_init函数详解 29.2.4_main函数详解 29.2.5board_init_f函数详解 29.2.6relocate_code函数详解 29.2.7relocate_vectors函数详解 29.2.8board_init_r函数详解 29.2.9run_main_loop函数详解 29.2.10cli_loop函数详解 29.2.11cmd_process函数详解 29.3bootz启动Linux内核过程 29.3.1images全局变量 29.3.2do_bootz函数 29.3.3bootz_start函数 29.3.4do_bootm_states函数 29.3.5bootm_os_get_boot_func函数 29.3.6do_bootm_linux函数 第30章UBoot移植 30.1NXP官方开发板uboot编译测试 30.1.1查找NXP官方的开发板默认配置文件 30.1.2编译NXP官方开发板对应的uboot 30.1.3烧写验证与驱动测试 30.2在UBoot中添加自己的开发板 30.2.1添加开发板默认配置文件 30.2.2添加开发板对应的头文件 30.2.3添加开发板对应的板级文件夹 30.2.4修改UBoot图形界面配置文件 30.2.5使用新添加的板子配置编译uboot 30.2.6LCD驱动修改 30.2.7网络驱动修改 30.2.8其他需要修改的地方 30.3bootcmd和bootargs环境变量 30.3.1环境变量bootcmd 30.3.2环境变量bootargs 30.4uboot启动Linux测试 30.4.1从EMMC启动Linux系统 30.4.2从网络启动Linux系统 第31章UBoot图形化配置及其原理 31.1UBoot图形化配置体验 31.2menuconfig图形化配置原理 31.2.1make menuconfig过程分析 31.2.2Kconfig语法简介 31.3添加自定义菜单 第32章Linux内核顶层Makefile详解 32.1Linux内核获取 32.2Linux内核初次编译 32.3Linux工程目录分析 32.4VSCode工程创建 32.5顶层Makefile详解 32.5.1make xxx_defconfig过程 32.5.2Makefile.build脚本分析 32.5.3make过程 32.5.4builtin.o文件编译生成过程 32.5.5make zImage过程 第33章Linux内核启动流程 33.1链接脚本vmlinux.lds 33.2Linux内核启动流程分析 33.2.1Linux内核入口stext 33.2.2__mmap_switched函数 33.2.3start_kernel函数 33.2.4rest_init函数 33.2.5init进程 第34章Linux内核移植 34.1创建VSCode工程 34.2NXP官方开发板Linux内核编译 34.2.1修改顶层Makefile 34.2.2配置并编译Linux内核 34.2.3Linux内核启动测试 34.2.4根文件系统缺失错误 34.3在Linux中添加自己的开发板 34.3.1添加开发板默认配置文件 34.3.2添加开发板对应的设备树文件 34.3.3编译测试 34.4CPU主频和网络驱动修改 34.4.1CPU主频修改 34.4.2使能8线EMMC驱动 34.4.3修改网络驱动 34.4.4保存修改后的图形化配置文件 第35章根文件系统构建 35.1根文件系统简介 35.2BusyBox构建根文件系统 35.2.1BusyBox简介 35.2.2编译BusyBox构建根文件系统 35.2.3向根文件系统添加lib库 35.2.4创建其他文件夹 35.3根文件系统初步测试 35.4完善根文件系统 35.4.1创建/etc/init.d/rcS文件 35.4.2创建/etc/fstab文件 35.4.3创建/etc/inittab文件 35.5根文件系统其他功能测试 35.5.1软件运行测试 35.5.2中文字符测试 35.5.3开机自启动测试 35.5.4外网连接测试 第36章系统烧写 36.1MfgTool工具简介 36.2MfgTool工作原理简介 36.2.1烧写方式 36.2.2系统烧写原理 36.3烧写NXP官方系统 36.4烧写自制的系统 36.4.1系统烧写 36.4.2网络开机自启动设置 36.5改造自己的烧写工具 36.5.1改造MfgTool 36.5.2烧写测试 36.5.3解决Linux内核启动失败
展开全部

作者简介

左忠凯,14年参加工作以来一直从事于嵌入式教育,以**作者身份著有《FreeRTOS源码详解与应用开发》,参与编写了正点原子大量的手把手教你STM32系列书籍,比如《精通STM32F4库函数版》、《STM32F7原理与应用》等。同时录制了大量的STM32相关教学视频,广受好评。18年开始负责公司Linux教育平台的研发,编写了1800多页的Linux驱动开发教程,录制了200多讲Linux开发视频,负责的I.MX6ULL开发板自从发布至今,销量一直处于淘宝**,Linux驱动开发相关视频在各大平台的点击量超过30万次。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航