原子嵌入式Linux驱动开发详解
1星价
¥109.9
(6.5折)
2星价¥109.9
定价¥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章CortexA7 MPCore架构
2.1CortexA7 MPCore简介
2.2CortexA处理器运行模型
2.3CortexA寄存器组
2.3.1通用寄存器
2.3.2程序状态寄存器
第3章ARM汇编基础
3.1GNU汇编语法
3.2CortexA7常用汇编指令
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.1CortexA7中断系统详解
13.1.1STM32中断系统回顾
13.1.2CortexA7中断系统简介
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 & ICM20608简介
23.1.1SPI简介
23.1.2I.MX6ULL ECSPI简介
23.1.3ICM20608简介
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章UBoot使用实验
27.1UBoot简介
27.2UBoot初次编译
27.3UBoot烧写与启动
27.4UBoot命令使用
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章UBoot顶层Makefile详解
28.1UBoot工程目录分析
28.2VSCode工程创建
28.3UBoot顶层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章UBoot启动流程详解
29.1链接脚本uboot.lds详解
29.2UBoot启动流程解析
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章UBoot移植
30.1NXP官方开发板uboot编译测试
30.1.1查找NXP官方的开发板默认配置文件
30.1.2编译NXP官方开发板对应的uboot
30.1.3烧写验证与驱动测试
30.2在UBoot中添加自己的开发板
30.2.1添加开发板默认配置文件
30.2.2添加开发板对应的头文件
30.2.3添加开发板对应的板级文件夹
30.2.4修改UBoot图形界面配置文件
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章UBoot图形化配置及其原理
31.1UBoot图形化配置体验
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.4builtin.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万次。
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定