嵌入式系统工程师与他们使用的工具知识一样好。使用正确的工具来完成工作可以大大加快开发速度,但不一定能确保成功。开发人员需要了解该工具的复杂性才能获得成功。
以一个非常简单的任务为例,使用IAR编译器和Processor Expert设置NXP Kinetis-L微控制器的配置位。
配置位控制NMI和复位引脚'功能以及初始时钟和启动选项。在此示例中,配置位位于十六进制地址0x400之后,紧跟在中断向量表之后。表1显示了每个地址控制的内容的描述。
表1 - 配置位
开发人员有许多选项有关如何设置这些内存区域的信息。首先,他们可以使用链接器文件中映射的表来设置值。或者,他们可以使用Processor Expert来设置值。
设置配置区域的值后,开发人员现在可以编译代码并将其加载到目标上。然后,人们可能期望该过程在闪存中设置配置位。然而,运行代码会揭示不同的故事!尽管已经正确配置了这些位,但开发人员会发现在目标上,这些位仍然设置为默认值。
可能出现什么问题?使用IAR,开发人员可以在要加载的代码和目标内存中存在的内容之间运行验证检查。他们会发现验证失败了。有些东西阻止了配置位的编程。
罪魁祸首是IAR工具链,它阻止了配置区域的更新。这种行为的原因是这些配置位可能对程序造成危险,因为它们可以锁定整个设备。无意中编程它们可能是灾难性的,因此工具链会自动阻止对目标区域的写入权限,而无需向开发人员提及。工具链假定开发人员知道这是工具链的行为方式。
要编写配置位,开发人员必须通过向闪存设置配置添加特殊参数来手动覆盖此默认行为,如图1所示。只有在开发人员完成此操作后,他们才能成功写入配置位。没有这种“功能”经验或知识的开发人员可能很容易被抛弃并且长时间不知所措,特别是因为这些参数很好地隐藏在多个子菜单中。
图1 - IAR覆盖参数
故事的寓意是开发人员和项目团队需要安排时间定期更新自己并了解他们在一天中使用的工具的更多信息 - 今天的基础。此外,项目经理需要认识到,时间表必须分配时间来学习工具。开发人员通常会知道他们的工具链的日常功能,但是这个工具的复杂功能可以真正发挥作用并提供最强大的功能。
-
嵌入式
+关注
关注
5062文章
18990浏览量
302426 -
PCB打样
+关注
关注
17文章
2968浏览量
21632 -
华强PCB
+关注
关注
8文章
1831浏览量
27705 -
华强pcb线路板打样
+关注
关注
5文章
14629浏览量
42955
发布评论请先 登录
相关推荐
评论