《 嵌入式系统设计与实践》一一3.3 处理器是一门语言

简介: 本节书摘来自华章出版社《 嵌入式系统设计与实践 》一 书中的第3章,第3. 3节,作者:Elecia White 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.3 处理器是一门语言
在试图了解一款处理器的时候,期望花上和学习一门新的编程语言一样的努力。同时,如同学习一门语言一样,如果我们已经有过类似的经历,那么学习一门新语言时就会简单很多。当学习了多门语言或者多款处理器后,学习新的就会变得越来越简单。
虽然这个比喻给出了一个需要学习消化的信息量的概念,但处理器本身确实非常像一个有奇特接口的软件库。与硬件交流,这么说并不恰当。应用软件实际上是与处理器软件交流,通过一种称为寄存器的特殊接口,我将在第四章详细讲述。寄存器就像编程语言中的关键字。一般情况下,开始学习的不多(if、else、while),过了一段时间后学习了更多的知识(enum、do、sizeof),最后就成为了专家(static、volatile、union)。
一款处理器的文档数量会随着其复杂度的增加而增加。我们要做的就是只学习那些能够帮助我们把事情做完的部分。面对如山洪般涌来的信息,需要决定哪些部分的文档是值得花费宝贵的时间和注意力的。值得一看的文档包括:
来自处理器供应商的用户手册(或者用户指南)
通常是一个大部头的资料。用户手册提供了我们需要知道的绝大部分的内容。读完绪论部分,就会大致了解处理器的性能。
注意: 为什么要从供应商那里获取用户手册?以NXP LPC1313处理器为例,这款处理器使用了一个ARM Cortex-M3核。如果你正在使用这款处理器,你不会想阅读ARM用户手册,因为ARM手册上88%的信息是多余的,10%的内容会出现在LPC13xx用户手册中,剩余的部分你可能永远都不需要。
一般说来,用户手册是为一个系列的处理器写的,因此如果需要使用LPC1313处理器,那么就需要获取一份LPC13xx用户手册,并寻找把不同的处理器区分开来的说明部分。在阅读了绪论之后,可能希望直接跳到那些要用在系统上的部分。每章在开始细节描述之前,都会有一个属于这一章的有用的绪论部分。
用户手册包含我们所需要的关于这个芯片的大部分信息,尽管它可能不会帮助我们建立一个可以运行的系统。
入门指南或者开发包用户手册
开发工具包(开发包)常常是使用一款新处理器的起点。使用开发包可以让我们有足够的信心去安装和配置编译器及调试器,在拿到自己的硬件之前(这提供了一个当硬件不工作时可以立即比较的对象)。开发包通常是该款处理器的销售工具,所以一般不会太贵,而且都有非常好的文档支持,帮助从零开始搭建系统。开发包推荐编译器、调试器,以及必要的硬件,甚至还指导如何连接线缆。开发包的文档是程序员的开发指南,因此即使没有购买开发包,其配套的文档也可以帮助我们对该款处理器的生态系统有个初步了解。
入门指南(幻灯片)
这份文档描述了对于电气工程师和软件工程师来说,如何开始使用该款处理器。尽管有趣而便于阅读,但这个幻灯片一般不会回答诸如如何使用该款处理器之类的问题。在评估某款处理器是否可以用在一个项目中时,这个文档是有帮助的。它还会讨论该款处理器是什么样的处理器以及通用的应用。它也会说明可以获取哪些开发包。
维基百科和论坛
虽然关于某款处理器的维基百科主页有可能不会有足够的信息帮助我们完成代码的开发,但是它可以给你一个高层次的概述(尽管通常用户手册的绪论部分会更有用)。维基百科的页面会包含指向这款处理器的论坛和社区的极有价值的链接,这里的论坛和社区可以搜索到可能碰到的一些问题以及看看别人的解决方法。
供应商可能也有专门用于介绍该款处理器的维基页面和论坛。这些为用户手册或者入门指南上的信息提供了另外一个有价值的角度。通常可以在这些地方容易地搜索到指向大量例子的链接。
供应商或分销商访问
参加这些活动,这些也许不会有太多可用的信息,但当寻找代码和支持时,这些链接以后可能有用。
处理器数据表
处理器的数据表大多专注电气部分。由于需要开发软件代码,所以需要更多的关于软件方面的信息。因此,对于处理器来说,可以跳过数据表而直接阅读用户手册(或用户指南)。
大多数处理器都带有许多例子,包括很多驱动程序代码。有时这是比较好的代码,有时不是。即使对于那些不是非常优秀的代码,开始的时候有一个例子总是不错的。虽然例子可以按照所描述的运行,但是相对于系统要求来说,它们可能都不足够健壮和高效。如果打算使用这些代码,那么这些代码就成为我们代码的一部分,因此请务必把它们理解透。
一但开始,搭建一个开发包并运行它,坐下来再把用户手册读一读,特别是那些包含了所使用的每个接口的章节(即使供应商给了我们所期望的例程代码)。在我们实现一个嵌入式系统的规格要求的过程中,我们期望从用户手册中得到许多细节(输入和输出、中断、看门狗和通信等)。现在,让我们回到我们将要逐步搭建的系统蓝图吧。

相关文章
|
1月前
|
算法 项目管理 C语言
嵌入式 C 语言大神的进阶之路
嵌入式 C 语言大神的进阶之路
19 0
|
1月前
|
存储 编译器 程序员
嵌入式系统中C++基础知识精髓
嵌入式系统中C++基础知识精髓
39 0
|
3天前
|
程序员 vr&ar
1.1 计算机硬件基础知识
1.1 计算机硬件基础知识
|
1月前
|
编译器 Linux C语言
微处理器的两种编程方式
微处理器的两种编程方式
11 1
|
1月前
|
存储 机器学习/深度学习 人工智能
嵌入式中一文搞懂ARM处理器架构
嵌入式中一文搞懂ARM处理器架构
37 1
|
1月前
|
存储 编译器 C++
嵌入式中C++ 编程习惯与编程要点分析
嵌入式中C++ 编程习惯与编程要点分析
18 1
|
4月前
|
JavaScript 前端开发 Java
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
|
8月前
让我设计一门编程语言或开发一套解决框架
让我设计一门编程语言或开发一套解决框架
70 2
|
API C语言 芯片
嵌入式底层开发的软件框架简述
嵌入式底层开发的软件框架简述
254 1
嵌入式底层开发的软件框架简述
|
消息中间件 算法
【从零开始的嵌入式生活】并发程序设计3——进程间通信(2)
【从零开始的嵌入式生活】并发程序设计3——进程间通信(2)