嵌入式软件设计入门与进阶:基于KinetisKpdf下载pdf下载

嵌入式软件设计入门与进阶:基于KinetisK百度网盘pdf下载

作者:
简介:本篇主要提供嵌入式软件设计入门与进阶:基于KinetisKpdf下载
出版社:清华大学出版社
出版时间:2016-11
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

编辑推荐

  书中总结了一些使用Kinetis控制器进行嵌入式软件开发过程中用到的实用技术,以“*视角”讲述一线工程师的应用心得,实用价值高。但本书内容绝不只限于Kinetis系列控制器,其中很多内容都是所有嵌入式开发工程师经常碰到的。
  在结构上以相对独立的主题划分章节,每个主题围绕一个具体的话题展开。减轻了读者连续阅读的负担,便于利用工作的时间间隙欣赏一个个实用的“技术小品”。
  在内容上取材于实际的开发经验,从宏观和微观上对问题都有一定的把握。在宏观上介绍问题的背景知识和研究方向;在微观上根据实际项目给出具体、可行的解决方案。

内容简介

  本书以ARM Cortex M4为内核的恩智浦(NXP)Kinetis系列微控制器作为硬件平台,从嵌入式软件工程师的实践角度出发,阐述了基于MCU的嵌入式软件开发中的若干细节问题。与目前的入门类书籍中对片上外设及固件库软件的说明指导相比,书中对实际开发中的具体问题进行了更为详细的分析:从零开始搭建软件开发平台,不仅描述了工程模板的创建,还具体分析了芯片的软硬件启动过程,尤其对链接过程及典型应用进行了详述; 介绍了几种典型的嵌入式系统开发框架,根据具体的应用场景选择程序的组织方式; 在低功耗和DMA的相关章节中介绍了降低产品功耗与优化性能的典型做法及思路; 而作为运行在单片机上的命令行系统、CMSISDSP运算库及git版本管理系统,都是软件工程人员常用的功能调试与代码维护的常用工具,对这些内容也进行了介绍。
  本书可作为通信工程、电子信息工程、计算机、微电子等专业相关课程的教材,也可供具有专业背景并有一定C语言及嵌入式开发基础的在校大学生、研究生以及对嵌入式技术感兴趣的读者参考。

内页插图

目录

第1章Kinetis平台概述
1.1ARM Cortex系列简介
1.1.1ARM Cortex A
1.1.2ARM Cortex R
1.1.3ARM Cortex M
1.2恩智浦(NXP)Kinetis系列MCU简介
1.2.1Kinetis产品家族介绍
1.2.2Kinetis系列芯片的命名规则及选型
1.3开发平台硬件电路分析
1.3.1MCU
1.3.2复位
1.3.3时钟
1.3.4调试接口
1.3.5LED
1.3.6串口
1.3.7SPI Flash
1.4软件环境搭建
1.4.1MDK安装下载
1.4.2串口驱动
1.4.3Jlink驱动安装
1.4.4下载本书的示例代码
1.5编译实例HelloWorld工程
1.6新建工程
1.7本章小结
第2章从零开始
2.1样例程序
2.2芯片上电
2.3启动软件系统
2.3.1分配堆和栈的空间
2.3.2中断向量表
2.3.3 Flash配置选项
2.3.4复位中断入口到用户main函数
2.4分散加载文件
2.5本章小结
嵌入式软件设计入门与进阶——基于Kinetis K60/K64
第3章链接命令文件
3.1命令方式存在的链接配置参数
3.2创建sct文件模板
3.3SCF应用——直接在RAM中调试程序
3.4SCF应用——将程序复制到RAM中执行
3.5本章小结
第4章嵌入式系统软件的典型开发框架
4.1概述
4.2裸机嵌入式系统的组成
4.3典型的裸机软件系统实现框架
4.3.1基本的超循环结构
4.3.2使用中断的前后台结构
4.3.3完全依赖中断的事件驱动系统
4.3.4状态机驱动系统
4.4本章小结
第5章低功耗应用设计
5.1概述
5.2K64中的低功耗模式介绍
5.3功耗状态机模型的运作
5.3.1进入STOP模式操作序列
5.3.2退出STOP模式操作序列
5.3.3中断进入STOP模式
5.4低功耗所涉及的模块详解
5.4.1ARM核的系统控制寄存器
5.4.2系统模式控制器
5.4.3低功耗模式下的频率限制
5.4.4低漏唤醒单元
5.5低功耗应用开发典型模式
5.6K64低功耗编程心得
5.7本章小结
第6章DMA的基本概念
6.1DMA的基本概念
6.2DMA的工作原理
6.3K64的DMA介绍
6.3.1TCD
6.3.2主循环和子循环
6.3.3eDMA通道请求使能开关
6.3.4DMA的触发源
6.3.5DMA传输完成的判断
6.3.6关于SMOD和DMOD周期性地址传输
6.3.7关于DREQ位
6.4使用DMA实现内存间搬运的实例
6.4.1DMA TCD的配置
6.4.2等待DMA传输完成
6.4.3实验效果
6.5本章小结
第7章DMA在串行通信总线中的应用
7.1通过DMA来进行串口数据收发
7.1.1DMA触发条件的确定
7.1.2DMA TCD的配置
7.2使用DMA进行SPI通信
7.2.1SPI通信的一般模型
7.2.2DMA触发条件的确定
7.2.3DMA TCD的配置
7.3本章小结
第8章DMA实现ADC扫描触发链
8.1从应用案例开始
8.1.1明确需求
8.1.2围绕ADC的软触发特性设计触发链
8.2触发链的设计与实现
8.2.1DMA0 >ADC0: 实现DMA0自动搬运命令字触发ADC转换
8.2.2ADC0 >DMA1: 实现ADC转换完成后触发DMA1自动搬运
转换结果
8.2.3PIT0 >DMA0: 实现PIT0定期触发DMA0控制转换的节奏
8.2.4见缝插针,自定义更加丰富的操作接口
8.3本章小结
第9章使用命令行来帮助开发
9.1概述
9.2Shell的引入
9.2.1单片机中的Shell
9.2.2单片机Shell的输入和输出
9.3简单的Shell软件设计
9.3.1构建Shell命令结构体
9.3.2获取输入命令
9.3.3解析命令
9.3.4调用对应的函数并返回结果
9.4应用实例
9.5本章小结
第10章使用CMSIS DSP数学运算库
10.1什么是数字信号处理
10.2浮点运算与定点运算
10.3CMSIS DSP简介
10.4CMSIS DSP初探
10.4.1DSP库的分类
10.4.2使用CMSIS DSP库
10.5基础数学函数
10.5.1向量绝对值运算
10.5.2向量加法运算
10.5.3向量点积
10.5.4向量(元素)乘积
10.5.5逆向量(反向量)
10.5.6向量平移
10.5.7向量扩围
10.6快速功能函数
10.6.1快速余弦函数(Cosine)
10.6.2快速正弦函数(Sine)
10.6.3快速平方根(Square Root)
10.7本章小结
第11章专业的软件版本控制系统——git
11.1git的诞生
11.1.1git的诞生
11.1.2git的核心——数据库
11.1.3远程数据库和本地数据库
11.2git入门笔记
11.2.1下载安装git
11.2.2初始化代码仓库
11.2.3添加文件并提交修改
11.2.4增删改查git仓库中的文件
11.2.5退回到某一个commit
11.2.6使用远程仓库
11.2.7克隆远程库
11.3本章小结
后记
参考文献

前言/序言

  在经典的51单片机时代诞生了许多实用的技术书籍,覆盖了从硬件架构到软件应用的方方面面,这些作品培养了大量单片机工程师,对单片机技术的发展提供了非常大的助力。现如今,随着ARM单片机的兴起和繁荣,相关的书籍不断涌现。然而,从作者的学习经历来看,目前关于ARM单片机书籍的描述,重点还是放在参考手册和固件库上,也就是说,书中的内容直接或间接地来源于单片机原厂的参考手册或是固件库。诚然,这些知识对于单片机开发非常重要,它们是使用ARM单片机进行开发的基础。但是,随着ARM单片机的普及和开发门槛的降低,单片机工程师们对ARM技术书籍的需求远不止于此,在实践中,还有更广阔的空间需要探索。本书作者曾经也是单片机开发的初学者,经过了多年对ARM单片机的学习和实践,在不断解决问题的过程中,积累了一些心得和体会。这些源自于实践的经验,不同于手册中已有的内容,更多的是通过实验和具体的应用而进行的总结,具有比较高的实用价值,对具体的项目应用有直接的参考意义。
  本书由来
  提及作者学习ARM单片机的过程,就不得不聊一点飞思卡尔杯智能汽车比赛的经历。2011年,作者(其中之一)带队参加第六届“飞思卡尔”杯智能车比赛(电磁组),开始在项目中使用K60单片机,这是由飞思卡尔半导体公司推出的全球首款基于ARM CortexM4内核的单片机,在之后的几年里广为流行。
  作者在参加比赛的过程中受益颇多,在明确的项目目标(更快、更稳)的驱动下,将所有相关的知识整合起来,全面地解决小车系统中的每一个具体问题,这刚好是一个完整的单片机工程师从入门到成熟的学习过程。在制作和调试小车的过程中,仅仅依赖芯片手册的信息不足以解决所有问题,更多的问题还需要搜集信息、思考、测试、再思考、再测试的反复过程才能取得最终的解决方案。这些通过实践积累下来的经验总结是最宝贵的财富。早年对开发问题的总结,也催生了撰写一本关于开发单片项目经验书籍的念头。
  参加工作后,作者有幸继续使用Kinetis系列单片机的开发平台进行单片机系统软件的设计工作。作为常年工作在Kinetis微控制器底层驱动和操作系统接口层的应用工程师,本着进一步对芯片功能的使用和理解的目的,将近几年在工作岗位和项目中的技术细节整理出来。为了方便使用Kinetis产品的广大读者和应用工程师,作者对各类实际工作中看似模棱两可的功能性配置过程做了较为详细的解释,从系统上电启动的最初步骤到进入应用系统之后的环节都进行了较为详细的演示,这样做的目的是为了方便读者在遇到一些未知的故障时能够通过本书中讲解的内容快速将故障定位,从而缩短产品开发周期,为应用开发奠定基础。同时本书还介绍了嵌入式软件开发过程的一些辅助工具,通过对这些工具的了解可以帮助读者在单片机开发工作中锦上添花。
  本书特色
  本书从NXP Kinetis系列产品的综合介绍开始,对Kinetis芯片的一些功能细节做了较为详细的介绍。书中引用了作者团队开发和使用多年的CHK开源Kinetis产品驱动库,读者可以自行在网络上下载并使用,这些完全免费。CHK开源驱动软件库开发至今多年,在业界有着较好的口碑,可以帮助有MCU开发经验的用户几乎零时间进入Kinetis产品的应用开发工作,到目前为止,CHK软件库已经可以支持多个系列Kinetis的衍生型号开发,其他一些子型号只要稍加修改便可使用。
  嵌入式软件设计入门与进阶——基于Kinetis K60/K64
  由于目前市面上已经有较多关于恩智浦Kinetis系列单片机的书籍,但大多是针对入门学习者或是刚接触Kinetis单片机的工程师,着重偏向外设模块介绍,如简单的GPIO使用、点亮小灯等。再例如串口通信,只是介绍收发数据的相关寄存器,然后以打印或接收一些串口数据作为示例,强调快速见效。而本书主要面向具有一定经验的嵌入式开发者,根据作者实际的开发经验,在书中总结了一些使用Kinetis控制器进行嵌入式软件开发过程中用到的实用技术,以“第一视角”讲述一线工程师的应用心得,实用价值高。另外,本书内容绝不只限于Kinetis系列控制器,其中很多是所有嵌入式开发工程师经常碰到的问题。本书对技术点的描述深入细致,内容丰富,是一本可读性强的读物。
  在内容的组织形式上,本书并未采用传统教科书式的顺序结构,而是以主题组织材料,将每个章节整理成一个个“技术小品”。每个“技术小品”相当于是一个解决问题的小故事,将相关信息放在一起说明中心问题,这种内容组织的方式直接来源于作者在项目开发过程中整理的开发笔记。这样做,对于读者而言,也可以减轻阅读压力,每阅读完一个章节,就可以了解到一个主题。对于闲暇时间有限的单片机工程师来说,这样组织内容的方式非常便于利用零星的时间进行阅读。
  本书读者对象
  本书主要面向有一定编程基础的嵌入式MCU工程师、高校师生、创客以及所有热爱嵌入式技术的朋友们。本书特别介绍了大量关于Kinetis系列产品的入门及应用知识,包括常用外设的编程方法、寄存器,以及飞思卡尔系列单片机一些特有的功能等,这些知识对于想了解该系列产品的朋友来说具有很好的参考价值。
  特别提醒读者的是,鉴于本书完稿之时正处于飞思卡尔半导体公司和恩智浦半导体合并过程中,所以以前的“飞思卡尔Kinetis系列”在本书出版时已经更替为“恩智浦(NXP) Kinetis”系列。
  CHK LIB Kinetis驱动固件库是由本书作者自行开发的针对Kinetis的底层驱动库,支持数十种Kinetis微控制器型号,使用简单并配套详细的使用例程,可以帮助用户以极短的时间入手Kinetis系列微控制器的应用编程,大大缩短开发周期,CHK LIB驱动库已经开发多年,历经时间检验,稳定可靠。它与目前NXP官方的SDK 2.0互为补充,SDK 2.0侧重与以芯片为中心,大而全的设计驱动API,而CHKinetis固件库则以应用为中心来设计驱动API,讲究实用简单,砍掉了一些不常用的外设功能。API也比官方的SDK 2.0少很多。目前,CHKinetis依然在持续更新中。读者可以前往开源中国(OS China)进行下载。
  本书的作者团队来自于单片机开发领域,包括面向产品的应用软件工程师以及致力于提供固件库服务的系统软件工程师,由于常年与程序代码和开发板为伍,但是作为技术书籍的作者尚显文笔生疏,书中所用描述之辞,如有不当之处恳请见谅。
  仅以此书献给曾经的飞思卡尔和一代藉由“飞思卡尔”智能车比赛成长起来的年轻工程师们!
  作者
  2016年5月