• 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
  • 原子嵌入式Linux驱动开发详解
21年品牌 40万+商家 超1.5亿件商品

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

批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!

82.71 4.9折 169 全新

库存40件

四川成都
认证卖家担保交易快速发货售后保障

作者左忠凯

出版社清华大学出版社

ISBN9787302613824

出版时间2022-08

装帧平装

开本16开

定价169元

货号29449839

上书时间2024-10-21

百叶图书

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

 

 


本书主要讲解嵌入式Linux中的驱动开发,也会涉及裸机开发的内容,相信大部分读者和作者经历一样,以前从事过单片机开发的工作,比如51或者STM32等。单片机开发很难接触到更高层次的系统方面的知识,用到的系统都很简单,比如μC/OS、FreeRTOS等,这些操作系统都使用一个Kernel,如果需要网络、文件系统、GUI等就需要开发者自行移植。而移植又是非常痛苦的一件事情,而且移植完成以后的稳定性也无法保证。即使移植成功,后续的开发工作也比较烦琐,因为不同的组件其API操作函数都不同,没有一个统一的标准,使用起来学习成本比较高。这时候一个功能完善的操作系统就显得尤为重要: 具有统一的标准,提供完善的多任务管理、存储管理、设备管理、文件管理和网络等。Linux就是这样一个系统,这样的系统还有很多,比如Windows、macOS、UNIX等。本书讲解Linux,而Linux开发可以分为底层驱动开发和应用开发,本书讲解的是Linux驱动开发,主要面向使用过STM32的开发者。平心而论,如果此前只会51单片机开发,笔者不建议直接上手Linux驱动开发,因为51单片机和Linux驱动开发的差异太大。笔者建议在学习嵌入式Linux驱动开发之前一定要学习STM32这种CortexM内核的MCU,因为STM32这样的MCU其内部资源和可以运行Linux的CPU差不多,如果会STM32,则上手Linux驱动开发就会容易很多。笔者就是此前做了4年STM32开发工作,然后转做Linux驱动开发,整个过程比较顺畅。

鉴于当前STM32非常火爆,学习者众多,如何帮助STM32学习者顺利地转入Linux驱动开发有如下几点需要注意。

1) 选取合适的CPU

理论上来讲,如果ST公司有可以运行的Linux的芯片那再好不过了,因为大家对STM32很熟悉,但是在编写本书时,ST公司尚没有可以运行Linux的CPU。Linux驱动开发入门的CPU一定不能复杂,比如像三星的Exynos 4412、Exynos 4418等,这些CPU性能很强大,带有GPU,支持硬件视频解码,可以运行Android。但是正是它们的性能过于强大,功能过于繁杂,所以不适合Linux驱动开发入门。一款外设和STM32H7这样的MCU相似的CPU就非常适合Linux入门,三星的S3C2440就非常合适,但是S3C2440早已停产了,学了以后工作上又用不到,又得学习其他的CPU,有点浪费时间。笔者花了不少时间终于找到了一款合适的CPU,那就是NXP的I.MX6ULL。I.MX6ULL就是一款可以跑Linux的STM32,外设功能和STM32相似,如果此前学习过STM32,那么会非常容易上手I.MX6ULL。而且I.MX6ULL可以正常出货,这是一款工业级的CPU,是三星S3C2440、S3C6410产品替代的绝佳之选,学习完I.MX6ULL以后,在工作中就可以直接使用了。本书选取正点原子的I.MX6UALPHA开发板,其他厂商的I.MX6ULL开发板也可以参考本书。

2) 开发环境讲解

STM32的开发都是在Windows系统下进行的,使用MDK或者IAR这样的集成IDE,但是嵌入式Linux驱动开发需要的主机是Linux平台的,也就是必须先在自己的计算机上安装Linux系统。Linux系统发行版有Ubuntu、CentOS、Fdeora、Debian等。本书使用Ubuntu操作系统。本书假设大家此前从来没有接触过Ubuntu操作系统,因此会有详细的Ubuntu操作系统安装、使用教程的讲解,帮助大家熟悉开发环境。

 

 

3) 合理的裸机例程

学习嵌入式Linux驱动开发建议大家先学习裸机开发(如果学习过STM32,则可以跳过裸机学习),Linux驱动开发非常烦琐。要想进行Linux驱动开发,必须要先移植uboot,然后移植Linux系统和根文件系统到开发平台上。而uboot又是一个超大的裸机综合例程,因此如果没有学习过裸机例程,那么uboot移植会有困难,尤其是要修改uboot代码时。STM32基本都是裸机开发,在集成IDE下编写代码,可以使用ST公司提供的库。但是在Ubuntu下编写I.MX6ULL裸机例程就没有这么方便了,没有MDK和IAR这样的IDE,所有的一切都需要自己搭建,本书提供的视频会有详细的讲解。本书还提供了数十个裸机例程,由浅入深,涵盖了大部分常用的功能,比如I/O输入输出、中断、串口、定时器、DDR、LCD、I2C等。学习完裸机例程以后就对I.MX6ULL这颗CPU非常熟悉了,再去学习Linux驱动开发就很轻松了。

4) uboot、Linux和根文件系统移植

学习完裸机例程以后就是Linux驱动开发了,但是在进行Linux驱动开发之前要先在使用的开发板平台上移植好uboot、Linux和根文件系统。这是Linux驱动开发的个拦路虎,因此本书和相应的视频会着重讲解uboot/Linux和根文件系统的移植。

5) 嵌入式Linux驱动开发

当我们把uboot、Linux内核和根文件系统都在开发板上移植好以后,就可以开始Linux驱动开发了。Linux驱动有3大类: 字符设备驱动、块设备驱动和网络设备驱动。对于这3大类内容,本书都有详细的讲解,并且配有数十个相应的教学例程,从简单的点灯到后的网络设备驱动。

本书一共分三篇,每篇对应一个不同的阶段。

篇: Ubuntu操作系统入门(为节省篇幅,扫描封底“本书资源”二维码获取)

本篇主要讲解Ubuntu操作系统的使用,不涉及任何嵌入式方面的知识,全部是在计算机上完成的,只要安装好Ubuntu操作系统即可。

第二篇: 裸机开发(第1~26章)

从本篇正式开始开发板的学习,本篇通过数十个裸机例程来帮助大家了解I.MX6ULL这颗CPU,为以后的Linux驱动开发做准备。通过本篇,大家可以掌握在Ubuntu下进行ARM开发的方法。

第三篇: 系统移植(第27~36章)

本篇讲解如何将uboot、Linux和根文件系统移植到我们的开发板上,为后面的Linux驱动开发做准备。

通过上面三篇的学习,大家能掌握嵌入式Linux驱动的开发流程,本书旨在引导大家入门Linux驱动开发,更加深入地研究就需要大家在实践中不断地总结经验,并与理论结合,祝愿大家学习顺利。


作者2022年8月

 

 

 



导语摘要

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



商品简介

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



作者简介

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



目录

 



篇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 L

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP