嵌入式系统工程师的能力取决于他们对所用工具的了解程度。使用正确的工具可以大大加快开发速度,但不一定能确保成功。为了取得成功,嵌入式开发人员需要理解该工具的复杂性。

以使用IAR编译器和处理器专家设置恩智浦Kinetis-L微控制器的配置位这一看似简单的任务为例。

配置位控制NMI和Reset引脚的功能以及初始时钟和引导选项。本例中,配置位从十六进制地址0x400开始,紧跟在中断向量表之后。表1显示了每个地址控制的内容。

表1–配置位

对于如何设置这些内存区域,开发人员有许多选择。首先,他们可以使用链接器文件中映射的表来设置值。或者,他们可以使用Processor Expert来设置这些值。

设置了配置区域的值后,嵌入式开发人员现在可以编译代码并将其加载到目标上。人们可能会期望该过程在闪存中设置配置位。然而,运行代码将揭示一个不同的故事!尽管已经正确地配置了这些位,但是开发人员会发现在目标上,这些位仍然被设置为默认值。

哪里出了问题?使用IAR,开发人员可以在要加载的代码和目标内存中存在的代码之间运行验证检查。他们会发现验证失败了。某些东西阻止了配置位的编程。

罪魁祸首是IAR工具链,它阻止了配置区域的更新。这种行为的原因是,这些配置位对编程来说可能是危险的,因为它们可能会锁定整个器件。无意中对它们进行编程可能是灾难性的,因此工具链会自动阻止对目标区域的写权限,而不会向开发人员提及。工具链假设嵌入式开发人员知道这是工具链的行为方式。

要对配置位进行编程,开发人员必须通过向flash设置配置添加特殊参数来手动覆盖这一默认行为,如图1所示。只有在开发人员做到这一点之后,他们才能成功地编写配置位。没有这个“特性”的经验或知识的开发人员很容易被弄糊涂,特别是因为这些参数被很好地隐藏在多个子菜单中。

图1–IAR Overide参数

所以,开发人员和项目团队需要安排时间来定期更新自己,并学习更多关于他们日常使用的工具的知识。此外,项目经理需要认识到时间表中必须有学习工具的时间。嵌入式开发人员通常知道他们的工具链的日常特性,但是工具的细微复杂之处才是真正重要的,并提供最强大的特性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部