技术书 | C和C++嵌入式系统编程(文末pdf下载)
Posted Frank学习路上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术书 | C和C++嵌入式系统编程(文末pdf下载)相关的知识,希望对你有一定的参考价值。
点“在看”=小王写作的动力
适合嵌入式学习者的入门书。
读一本书前首先要弄清楚,我为什么要读这本书,想要从中学到什么东西,想好这两件事,一般来说,肯定会有所收获的。
如今,几乎所有的电子设备都包含有嵌入式系统,但每一个嵌入式系统又具有独特性,因此,学习嵌入式必须学习通用技能,C和C++编程就是其中之一。
无论是嵌入式程序初学者还是有一定经验的程序员,这本书都是有用的,它包含了如何为一个特有设备编写嵌入式程序,也提供了更高级的功能和主题。
作者还和我们讨论了“硬件工程师、嵌入式软件工程师和应用程序员”这三个角色的不同定义、不同任务,但更多情况是,我们会在工作中扮演多种角色。
一、引言
最近几十年里最令人惊讶的事,莫过于计算机逐渐占据了人类生活的主要地位。
学习嵌入式编程,必须先了解什么是嵌入式系统。嵌入式系统是一个计算机硬件和软件的集合体,也许还包括其他一些机械部件,它是为完成某种特定的功能而设计的。
而我们日常用的电脑则是一种通用计算机系统,但其组成部分(如硬盘、调制解调器)也是一个个嵌入式系统。
同样的功能实现我们也可以用定制集成电路,但纯粹的硬件设计会丧失一些灵活性,简单来说就是改几行代码总比重新设计硬件电路更方便和便宜。
通过介绍三个嵌入式系统(数字手表、视频游戏机、火星探测器),以引导我们从系统设计员的角度来看待问题。
选择C语言作为嵌入式程序的共同语言的原因——它是一个“低级”的高级语言,既能给予嵌入式程序员很大程序的直接控制硬件的能力,也不会失去高级语言的好处。
C++是C语言的超集,正在嵌入式程序员中越来越流行,它的核心语言特性和C完全一样,但C++提供了更好的数据抽象和面向对象形式的编程功能。
二、第一个嵌入式程序
“Hello World”是我们在学习任何一门语言时的第一步,虽然他没有实际意义,但却可以让我们体验到程序运行成功的快乐并确定我们的基本操作是对的。但在嵌入式系统中,并不是每个设备都有显示屏,但却都会有至少一个可以被软件控制的LED(发光二极管),所以作者以一个1Hz频率闪烁LED的程序代替“Hello World”,这是有效的。
LED闪烁程序如下所示,
/***************************************
描述:绿色LED灯一秒闪烁一次
***************************************/
Void main(void)
{
While(1)
{
toggleLED(LED_GREEN); /*chage the state of LED*/
delay(500); /*pause for 500ms*/
}
} /*main()*/
toggleLED():寄存器的每一位都和IO口的电压联系在一起,如第6位控制绿色LED的电压;
#define LED_GREEN 0X40 /*controlledby bit 6*/
Delay():
无限循环的作用?
在为嵌入式系统和其他计算机平台写程序有一个最基本的区别,就是嵌入式程序总是以一个无限循环作为结束。无限循环作为程序功能的重要组成部分,除非世界末日或电路板复位,那么它将永远运行下去。
三、编译、链接和定址
作者详细介绍了编译、链接和定址这三个步骤。
四、下载和调试
当你已经在主机上有了一个可执行二进制映像文件后,你就需要有一种途径来把这个文件下载部署到嵌入式系统中来运行了。
GNU 调试器(gdb)就是这样的一个调试器。像其他 GNU工具一样,它一开始是被设计用来完成本机调试,后来才具有了跨平台调试的能力。
远程调试器用来监视和控制嵌人式软件的状态是很有用,不过只有用在线仿真器(In-Circuit Emulator,ICE)才能检查运行程序的处理器的状态。实际上,ICE 取代了(或者仿真了)目标板上的处理器。它自己就是一个嵌入式系统,有它自己的目标处理器、 RAM、 ROM 和自己的嵌入式软件。结果在线仿真器一段非常贵,往往要比目标硬件还贵。但是这是一种强有力的工具,在某些严格的调试环境下可以帮你很大的忙。
当然,还可以使用另外很多种调试工具,比如模拟器(simulator)、逻辑分析仪和示波器。模拟器是一个完全基于主机的程序,它模拟了目标处理器的功能和指令集,它的用户用面通常和远程调试器的一样或比较类似。实际上,可以为后端模拟器使用一个调试器来做前端,就像下图显示的那样。尽管模拟器有很多不足,它在项目的早期特别是还没有任何实际的硬件可以用来试验程序的时候是相当有用的。
逻辑分析仪是专门用来调试数字电路硬件的一种实验室设备。它会有几十个甚至上百个输入。它们分别只用来做一件事:它所连接的电信号的逻辑电子是 1还是 0。
示波器是用于硬件调试的另一种实验室设备,不过它可以在任何硬件上检查任何电信号,不管是模拟的还是数字的。在手头没有逻辑为析仪的情况下,示波器可以迅速观察特定引脚上的电压,也可以做一些更复杂的事情。不过,它的输入很少(通常有四个)而且通常没有高级的触发逻辑。
“工欲善其事必先利其器”。本节讲述的大多数调试工具都会在每个嵌入式项目或多或少地用到。示波器和逻辑分析仪常用来调试硬件问题,模拟器用在软件开发的早期,调试监控器和仿真器用在实际的软件调试过程中。为了最有效地利用它们,你应该明白每一个工具用在什么地方,以及什么时候和什么地方使用它才会有最好的效果。
五、接触硬件
接触硬件第一步,是先阅读用户手册;然后,拿起电路板,问自己两个问题:
这块板子主要目标是什么?
数据在板内是如何流动的?
准备一个项目笔记本,先画出数据流向图,这对于项目开始前的准备或项目结束后的回顾都是很有用的。
后面几节讲了一些硬件知识和系统集成的东西,整体适合入门。
pdf下载链接:https://pan.baidu.com/s/1xx0pvXXUvRRPlD5jIGcOEA提取码:1234
以上。
以上是关于技术书 | C和C++嵌入式系统编程(文末pdf下载)的主要内容,如果未能解决你的问题,请参考以下文章
文末送书|豆瓣9.4分,“hello,world”起源于这本书!