物联网创客指南:EFM32 MCU设计的最佳实践和除错技巧(一)

Lee_的头像
Lee_ 发布于:周五, 02/17/2017 - 14:39 ,关键词:

来源:Silicon Labs

作为有着20年经验的计算机工程师和超过两年经验的EFM32TM项目开发人员,我很有着丰富的,开发复杂计算机工程项目的经验。感谢诸如芯科科技(Silicon Labs)的Simplicity StudioTM软件,和如EFM32入门套件的硬件调试工具,类似项目对于经验的要求大大降低了。通过这些平台,任何人都可以快速,低成本地开始嵌入式开发,在拿到入门套件后很短的时间内,您可以直接完成自己的硬件支持的嵌入式解决方案。欢迎点击“阅读原文”至芯科科技(Silicon Labs)中文论坛观看完整的物联网创客指南文章。

展开EFM32的设计旅程

本系列文章的主旨,就是帮助你开始使用EFM32芯片内的所有外设。 然而,只给你一些类似让LED闪烁的例子,和让电子元件在某一个例子中开始工作,并不意味着你自己项目的成功。我多年的经验,能够指导我预先决定如何连接硬件,如何构建软件,如果出现错误,我的直觉会告诉我下一步的解决问题的调试过程。但是如果你没有多年的经验呢?你如何在缺乏经验的前提下找到成功的解决方案呢?我对这个问题的回答将会出现在这个系列的文章中,我将尝试提炼我通过无数弯路积累的经验。

您可能需要先阅读本指南几次,然后当您遇到问题时再次阅读。这可能是解决不断出现的问题的关键。其中一些提示涉及Simplicity Studio集成开发环境(IDE)的错误和细微差别,可能随着Simplicity Studio版本的升级而改进。但是本指南中的大部分提示都是通用的,应该适用于设计的所有方面。

这个系列文章有六个部分:
● 使用版本控制系统
● 在面包板上开始开发
● 原型构建
● 写好代码,一切都会更好
● 像专业人士那样构建源代码
● 像天才一样调试问题

第1部分:使用版本控制系统

在开始使用新设计之前,请为所有设计工作设置版本控制系统。这对于许多人来说可能是显而易见的,因为这些系统在软件开发中应用非常广泛。但对于嵌入式开发来说非常重要,其中源代码文件中的单个字符差异,可能导致成功的解决方案和完全失败的方案。

● 查找修订版本之间的差异
版本控制系统允许您的工作随着设计的进展保存在各种快照中,并允许您比较每个快照的文件差异。这些系统是免费提供的,可以安装在所有类型的操作系统(Windows,Mac和Linux)上。今天最流行的工具是SVN和Git。我两个系统都用,但我更喜欢Git,因为它保留完整的仓储,包括在您计算机上所有的可用的本地修订历史记录,您可以完全离线工作,然后上传到远程服务器以备以后的更改。

另一方面,SVN只保留本地计算机上的最新修订版本,并需要与服务器进行活动连接,以获取过去的修订版本和其他历史记录信息。本系列的代码示例存储在一个在线Git仓储,Github中,所以你应该开始 “克隆” 该仓储到本地硬盘驱动器并进行更改,然后尝试使用Git命令行或GUI工具以查找文件中的差异。设置和使用Git超出了本指南的范围,但有很多教程可供学习。

● (可选)在Simplicity Studio中设置Git
Simplicity Studio可以配置为在Simplicity Studio IDE中使用Git。这允许您提交更改并在IDE中查找文件间的差异。有关如何获得该设置的详细信息,请访问Silicon Labs社区。请注意,集成不需要使用版本控制,我不使用我的计算机上的集成。我只是在我的本地文件夹上运行Git的命令行版本或GUI工具,以进行提交和差异审查。

● 将所有文件存储在仓储中,而不只是源代码
每当您启动一个新项目时,设置一个新的版本控制仓储(简称为“repo”),以存储与该项目相关的所有文件。在该repo继续存储所有的规格和数据表,设计文档,电子表格,等等。你永远不知道您在线查看的文档何时可能不可用或由制造商更改。在一个安全的地方将备份与设计文件放在一起是一件好事。也不要停留在文件本身。在版本控制中也存储项目的原理图和布局文件。

● 在线保存repo的备份
最好使用在线服务,如Github,Atlassian,Google Drive,Microsoft OneDrive或任何其他在线备份服务,以保留额外的备份副本的repo。当你的硬盘驱动器崩溃或你的笔记本电脑丢失,克隆Git repo的最后一个服务器副本就会是非常快速和容易的选项,让您的设计文件回到您的计算机上。

● 尽早的,经常性的提交
一旦你的repo设置并跟踪你的文件,确保在你达到项目中的每一个重要的步骤时,“提交”你的设计文件。当你刚刚能够第一次与某些芯片通信时,提交代码,并在日志消息中指定项目的当前状态,即使源代码是一片混乱的。例如,“通过SPI读取加速度计设备ID”是一个很有用的消息,它可以让你知道提交到repo的代码的基本功能。

接下来通常发生的是,你清理代码,使其更好,更可读,以及有更好的性能,但有时该过程会破坏代码。有时,为什么代码出问题的原因是显而易见的,但有时,你做的解决问题的尝试都不起作用了,你得到了一个不再工作的解决方案。如果您在repo中有一个已提交版本的正常代码,您只需首先将新代码提交给repo,然后在本地驱动器上回到您的更改,看看原来的解决方案是否仍然有效,这让您知道至少你没有出现特别大的错误。然后,您可以使用版本控制系统的差异工具来显示从第一个版本到第二个版本的差异,并最终隔离和修复该问题。

使用版本控制隔离硬件问题
嵌入式开发和纯软件开发之间的一个关键区别是,硬件可以在嵌入式应用程序上随运行而改变。当您第一次运行解决方案时,一切正常,然后您进行一些更改,这时就可能不正常了。这可能是软件的问题,但也许是因为一根电线在某个地方松动了?通过提交对repo的更改,然后回到最后正常工作的版本,你可以确保问题不在软件上,然后找到并修复松动的电线,更新,回到最新版本的repo并继续开发。

版本控制成功的关键
将修订控制系统集成到设计的所有方面。
将仓储的副本保留在联机备份中以便保管。
提前并经常提交有关代码状态的描述性消息。

围观 382