《 嵌入式系统设计与实践》一一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用户手册,并寻找把不同的处理器区分开来的说明部分。在阅读了绪论之后,可能希望直接跳到那些要用在系统上的部分。每章在开始细节描述之前,都会有一个属于这一章的有用的绪论部分。
用户手册包含我们所需要的关于这个芯片的大部分信息,尽管它可能不会帮助我们建立一个可以运行的系统。
入门指南或者开发包用户手册
开发工具包(开发包)常常是使用一款新处理器的起点。使用开发包可以让我们有足够的信心去安装和配置编译器及调试器,在拿到自己的硬件之前(这提供了一个当硬件不工作时可以立即比较的对象)。开发包通常是该款处理器的销售工具,所以一般不会太贵,而且都有非常好的文档支持,帮助从零开始搭建系统。开发包推荐编译器、调试器,以及必要的硬件,甚至还指导如何连接线缆。开发包的文档是程序员的开发指南,因此即使没有购买开发包,其配套的文档也可以帮助我们对该款处理器的生态系统有个初步了解。
入门指南(幻灯片)
这份文档描述了对于电气工程师和软件工程师来说,如何开始使用该款处理器。尽管有趣而便于阅读,但这个幻灯片一般不会回答诸如如何使用该款处理器之类的问题。在评估某款处理器是否可以用在一个项目中时,这个文档是有帮助的。它还会讨论该款处理器是什么样的处理器以及通用的应用。它也会说明可以获取哪些开发包。
维基百科和论坛
虽然关于某款处理器的维基百科主页有可能不会有足够的信息帮助我们完成代码的开发,但是它可以给你一个高层次的概述(尽管通常用户手册的绪论部分会更有用)。维基百科的页面会包含指向这款处理器的论坛和社区的极有价值的链接,这里的论坛和社区可以搜索到可能碰到的一些问题以及看看别人的解决方法。
供应商可能也有专门用于介绍该款处理器的维基页面和论坛。这些为用户手册或者入门指南上的信息提供了另外一个有价值的角度。通常可以在这些地方容易地搜索到指向大量例子的链接。
供应商或分销商访问
参加这些活动,这些也许不会有太多可用的信息,但当寻找代码和支持时,这些链接以后可能有用。
处理器数据表
处理器的数据表大多专注电气部分。由于需要开发软件代码,所以需要更多的关于软件方面的信息。因此,对于处理器来说,可以跳过数据表而直接阅读用户手册(或用户指南)。
大多数处理器都带有许多例子,包括很多驱动程序代码。有时这是比较好的代码,有时不是。即使对于那些不是非常优秀的代码,开始的时候有一个例子总是不错的。虽然例子可以按照所描述的运行,但是相对于系统要求来说,它们可能都不足够健壮和高效。如果打算使用这些代码,那么这些代码就成为我们代码的一部分,因此请务必把它们理解透。
一但开始,搭建一个开发包并运行它,坐下来再把用户手册读一读,特别是那些包含了所使用的每个接口的章节(即使供应商给了我们所期望的例程代码)。在我们实现一个嵌入式系统的规格要求的过程中,我们期望从用户手册中得到许多细节(输入和输出、中断、看门狗和通信等)。现在,让我们回到我们将要逐步搭建的系统蓝图吧。

相关文章
|
存储 SQL 关系型数据库
|
API 对象存储 Java
实现从oss(阿里云)服务器以附件形式下载文件(含批量下载)
实现从oss(阿里云)服务器以附件形式下载文件(含批量下载) 笔者在项目中写一个从阿里云服务器上面以附件形式下载文件的接口时,遇到了问题,网上搜索无任何相关的解决方案,最后通过通过自己查阅API文档,再结合自己的经验,实现了下载功能。
7099 0
|
人工智能 Cloud Native 大数据
跳出营销噱头,深度探索国内培训格局
企业培训从最初的技能补缺,到如今的战略性人才发展布局,它正在从“成本中心”转向“价值创造中心”。一些央企、国企、上市公司更是将培训作为战略推动器,以培养具备全球化视野、数字化思维和创新精神的人才队伍。好的企业培训公司,就像一台高性能引擎,不仅帮助组织提速增效,更能在关键节点实现人才梯队的“基因升级”。
|
人工智能 编解码 BI
LEOPARD:腾讯AI Lab西雅图实验室推出的视觉语言模型
LEOPARD是由腾讯AI Lab西雅图实验室推出的视觉语言模型,专为处理含有大量文本的多图像任务设计。该模型通过自适应高分辨率多图像编码模块和大规模多模态指令调优数据集,在多个基准测试中表现卓越,适用于自动化文档理解、教育和学术研究、商业智能和数据分析等多个应用场景。
359 2
LEOPARD:腾讯AI Lab西雅图实验室推出的视觉语言模型
|
SQL 分布式计算 DataWorks
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
|
机器学习/深度学习 编解码 搜索推荐
实测13个类Sora视频生成模型,8000多个案例,一次看个够
SORA-like模型是一类基于OpenAI的SORA模型发展而来的视频生成技术,以其在生成高质量视频上的卓越表现受到关注。该模型不仅提升了视频的分辨率、自然度和视觉语言对齐,还增强了对长视频序列的可控性。适用于内容创作、世界模拟等多种场景,展现出广泛的应用潜力。然而,模型在自动化评估、与人类偏好匹配及处理复杂运动上仍面临挑战。未来研究将聚焦于多模态、连续、交互式及个性化视频生成等领域。
888 2
|
人工智能 前端开发 JavaScript
AI+脚本让我的效率翻倍,你也可以试试
本文分享了一名高级软件工程师如何利用 AI 工具(如 VSCode 插件 Codeium、通义灵码,及网页端的通义千问和 GPT-4)提升工作效率的经验。从代码生成、单元测试、脚本生成到文本润色,再到新框架学习,AI 工具在多个方面显著提高了开发效率和代码质量。文章还提供了具体示例和注意事项,帮助读者更好地应用这些工具。
536 1
|
自然语言处理 机器人 API
解锁电商直播新纪元:无人数字人客服如何在直播间掀起智能革命,重塑顾客服务体验的未来?
【10月更文挑战第7天】随着电商直播的兴起,客户咨询量激增,传统人工客服难以应对,无人数字人直播机器人客服应运而生。本文介绍如何使用Python、LangChain和ChatGPT搭建高效客服系统,包括安装库、设置API密钥、定义问答流程、构建FAQ知识库、集成实时聊天界面及部署上线,帮助企业自动处理客户咨询,提升用户体验。
497 2
|
机器学习/深度学习 自然语言处理
【绝技揭秘】模型微调与RAG神技合璧——看深度学习高手如何玩转数据,缔造预测传奇!
【10月更文挑战第5天】随着深度学习的发展,预训练模型因泛化能力和高效训练而备受关注。直接应用预训练模型常难达最佳效果,需进行微调以适应特定任务。本文介绍模型微调方法,并通过Hugging Face的Transformers库演示BERT微调过程。同时,文章探讨了检索增强生成(RAG)技术,该技术结合检索和生成模型,在开放域问答中表现出色。通过实际案例展示了RAG的工作原理及优势,提供了微调和RAG应用的深入理解。
389 0
|
Python
Python中break详解以及用法
`break`语句在Python中用于提前结束循环。当遇到`break`时,循环立即停止,程序跳至循环体外继续执行。它适用于`for`和`while`循环,常与条件判断结合,满足特定条件即中断循环。示例展示了在不同循环中使用`break`的情况。注意,`break`只能用于循环且仅终止最内层循环,会导致循环中的`else`语句不执行。它是控制程序流程的有效工具,但需谨慎使用。
1367 1