了解您的编译器工具链

嵌入式系统工程师仅对所使用的工具有足够的了解。使用正确的工具完成工作可以大大加快开发速度,但不一定能确保成功。开发人员需要了解该工具的复杂性才能成功。例如,执行一个看似简单的任务,即使用IAR编译器和Processor Expert来设置NXP Kinetis-L微控制器的配置位。

配置位控制NMI和复位引脚的功能以及初始时钟和启动选项。在此示例中,它们位于中断向量表之后的十六进制地址0x400处。表1列出了每个地址控制的内容。

表1 –配置位

开发人员有许多关于如何设置这些内存区域的选项。首先,开发人员可以使用链接器文件中映射的表来设置值。其次,开发人员可以使用Processor Expert来设置值。设置好配置区域的值后,可以将代码编译并加载到目标上,并且可以期望在闪存中设置配置位。但是,运行代码将揭示一个不同的故事!尽管正确配置了这些位,但人们会发现在目标上,这些位仍设置为默认值。

可能出了什么问题?使用IAR,开发人员可以在要加载的代码和目标内存中存在的代码之间运行验证检查。开发人员会发现验证失败。某些原因阻止对配置位进行编程。罪魁祸首是IAR工具链,它阻止了配置区域的更新。原因是这些位可能会很危险,因为它们会锁定整个设备。不经意地对它们进行编程可能会造成灾难性的后果,因此工具链会自动阻止将许可权写入目标的此区域,而无需引起开发人员的注意。工具链假定开发人员知道这一点。

开发人员必须通过向Flash设置配置中添加特殊参数来手动覆盖此默认行为,如图1所示。只有在开发人员完成此操作后,他们才能成功写入配置位。缺乏经验或知识的开发人员很容易被甩掉,甚至会花几天时间挠头,尤其是因为这些参数被多个子菜单很好地隐藏了。


图1 – IAR覆盖参数

这个故事的寓意是,开发人员和项目团队需要安排时间定期进行自我更新,并进一步了解他们每天使用的工具。项目经理需要认识到需要在时间表中分配时间来学习工具。开发人员通常会意识到其工具链的日常功能,但工具的一点点错综复杂才能真正发挥作用并提供最强大的功能。

您知道工具链的所有复杂性吗?如果不知道,下一步是什么?

One thought 上 “了解您的编译器工具链”

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.