tag 标签: 配置工具

相关博文
  • 热度 26
    2013-11-1 14:20
    1418 次阅读|
    0 个评论
    世界上很少有什么项目能给嵌入式固件开发人员提供足够多的开发时间。事实上,嵌入式固件开发就好像气体一样,会占据它所在的整个空间。而这往往意味着项目结束阶段的测试和质量评估承受压力,进而提高风险。项目经理为如何跟上项目计划进度发愁,嵌入式设计人员和测试工程师也面临开发时间和测试覆盖质量之间的矛盾。要是所有人都能实现自己的目标该多好。要是硬件设计能在代码完成前就进一步推进该多好。要是固件测试在生产构造阶段也能继续进行该多好。要是整个团队都能明确如果设计情况不好,他们总是能够通过现场升级实现重大修改该多好。这样,所有人晚上都能睡个安稳觉,而通过适当利用嵌入式引导加载程序(bootloader),这完全有可能实现。 首先我们先明确一下有关术语。引导加载程序是一段常驻微处理器中的代码,有时也位于只读存储器(ROM)中(在工厂制造时编写)或者位于板载闪存存储器的预留区域。可加载引导代码能载入内存并作为正常工作期间在微处理器上运行的主应用代码。可加载引导代码可通过引导加载程序更新。产品固件的现场升级正是通过板载引导加载程序实现的。 那么,什么是引导加载程序呢?引导加载程序就是位于给定微控制器上受保护程序存储器中的一部分代码。它通常是加电启动或重启后运行的第一个软件,往往针对具体处理器和电路板。引导加载程序可视为一种“笨”代码,因为它并不了解需要执行什么应用,甚至也不了解器件功能是什么。引导加载程序专门用来理解如果通过任意数量的通讯协议与外部进行通讯(这些协议包括UART、I 2 C、SPI、CAN、以太网等),也可用来了解微控制器的存储器映射。引导加载程序在发挥作用时,负责与外部或主机进行通讯;读取主机发送的数据文件;更新它所在的微处理器,从而运行所提供的最新应用代码。 图1:典型的嵌入式硬件架构。 引导加载程序可以在接收到人工操作员(也就是手动重启)或外设设备(即系统主机)的启动信号后开始工作,视具体嵌入式系统而定。引导加载程序信号首先确认引导加载程序本身是否有效,明确当前器件应用是否有效,与主机通讯并载入提交的新应用,随后根据指令执行应用闪存重写。大多数现代微控制器都能对自己的闪存重新编程。典型的引导加载程序在几微秒内就能完成这一工作。不过,存储器尺寸较大情况下,该时间就会大幅延长,有时甚至要花几秒钟才能完成一次更新。一旦完成加载引导,引导加载程序必须确认加载引导镜像,并将控制权交给加载引导代码。用于中断矢量的指针也必须进行设置。典型情况下,引导加载程序将进行软重启,以便让应用掌握控制。图2给出了引导加载程序的逻辑流程实例。 图2:引导加载程序的逻辑流程。 由于引导加载程序是在制造过程中被编程到器件中,并且不是器件工作所必需的首要应用,因此实际上可以把它看作是“开销”代码。项目经理和嵌入式设计人员必须要考虑引导加载程序所带来的风险保护功能与其所占用的代码空间相比是否值得。由于这段代码要占用空间,许多设计人员需要尽可能减小引导加载程序的存储器占用量,从而将用于应用代码的存储器空间实现最大化。引导加载程序至少应提供:通讯通道、擦写并重新编程闪存存储器的方法以及确认和执行新应用代码的方法。 此外,引导加载程序应该能够检测、报告和处理加载引导操作过程中出现的错误,如断电、通讯损失、闪存写入错误等。一般通过存储应用的校验和或循环冗余代码(CRC)来实现闪存错误保护功能。加载引导操作开始后,这些位就会被清空。如果新的应用成功下载并安装,校验和就会被更新。如果下载过程中出错(通讯损失、断电等),那么引导加载程序会检测无效的校验位,且不会开始应用操作,而是与主机通讯,等待有效的加载引导操作。 《电子设计技术》网站版权所有,谢绝转载 还有一个重要的加载引导考虑因素,那就是避免代码本身覆盖引导加载程序所在的区域。如果引导加载程序尝试或无意中确实覆盖了自身,并出现了某种错误事件,那么引导加载程序会无法工作。下次处理器启动时,引导加载程序很可能会损坏。这种情况造成的影响可能有不同反映。引导加载程序可能无法打开到主机的通讯通道,或者系统可能无法将控制权交给上次有效的加载引导镜像。不管是什么情况,结果都需要对整个系统进行再编程。再编程通常需要由合格的技术人员利用可插入板上的开发工具来完成。这可能会影响人们对引导加载程序的兴趣。开发引导加载程序时,必须对器件存储器位置进行适当的控制,特别要注意确保存储器位置得到妥善管理,同时应用大小的变化不会错误地擦写或重写引导加载程序的存储区域。为了避免潜在的重写问题,某些微控制器甚至把引导加载程序放到硬编码的加载引导只读存储器(ROM)中,实现与闪存相分离,如图3所示。 下图显示了四个存储器空间实例。最左边的图是正常的非引导加载程序应用程序,典型的工具链将把应用代码放在地址0上,整个闪存存储器阵列都能作为应用代码空间。如果这种类型的系统作为发布产品进行实地使用,将无法实现远程修改。重启后,应用代码将开始执行。应用代码中的任何问题或瑕疵都将是永久性的。 图3:引导加载程序和应用位置的存储器映射实例。 中间靠左的引导加载程序具备在ROM中存储的可加载引导镜像。这种配置能让全部闪存空间为应用所用,因为引导加载程序位于单独的ROM存储器中。这种方式能避免引导加载程序被错误地覆盖。不过,这种方法也无法对引导加载程序进行更新。ROM只能写入一次,如果发现瑕疵将无法再编程或修改。 中间靠右侧的图片中,引导加载程序位于地址0,重启后首先运行。一旦引导加载程序确定了可加载引导镜像有效,而且主机也没有发出对该部分进行重新镜像的命令,引导加载程序就会把控制权交给可加载引导应用。我们可以看到可加载引导镜像紧邻引导加载程序镜像结束的位置。这样能将用于可加载引导镜像的存储器空间实现最大化。在最后的镜像图中,有两部分存储器用于两种不同的加载引导事件。这种情况下,引导加载程序会根据主机要求决定在不同的启动操作下运行哪个应用。这种方法会占用双倍的闪存空间,因为它需要保存两个完整的应用程序,但它也是一种高效的设计方法,有助于工程师让单一器件在不同的主机指令条件下运行不同的工作。 《电子设计技术》网站版权所有,谢绝转载 引导加载程序最明显的优势就在于能现场解决故障。产品也能在功能升级方面受益。举例来说,我们知道客户会推出一些只提供基本功能的产品,以便加快投放市场的速度,随后再发布加载引导更新来升级操作系统驱动程序、产品功能和电源管理选项等。引导加载程序能够让设计团队在产品投放市场的同时制定未来硬件更新路线图。再举例来说,一些公司用无线电链路进行通讯,以实现设备的远程监控。这些公司发现通过无线电链路进行设备升级比让技术人员到远程站点更新固件的成本更低。可以设想一下在卡车运输领域对整个车队进行管理的情况。为代码升级改进这种小事就让一辆卡车暂停运输服务,那成本太高了。仅仅进行代码现场升级的成本就高达好几百美元。远程加载引导对需要现场更新的产品来说具有极大价值。 那么什么样的引导加载程序才是好的引导加载程序呢?这个问题会有很多答案,不过一个重要要求就是易用性。引导加载程序要能让设计人员方便地选择和连接到串行通讯端口,这非常重要。此外,要能通过简单的方法进入引导加载程序或绕开引导加载程序直接访问应用,这也非常重要。一旦创建出来,可加载引导镜像就依赖于引导加载程序。明确引导加载程序镜像在哪里结束以及应用从哪里开始,该过程非常繁琐且容易出错。好的引导加载程序应该可以自动解决这些问题,同时还要让设计人员灵活地使用多个应用镜像。可以实现双加载引导的系统有时被称为多应用引导加载程序。这种类型的引导加载程序会把新镜像载入到存储器中不同的区域。一旦确认,引导加载程序可能会复制新镜像以替代原有应用,或者直接执行新镜像。 下面看看赛普拉斯是如何在其PSoC3和PSoC5LP系列产品中支持引导加载程序的吧。如下图所示,通过下拉菜单选择通讯组件。可以设置用于进入引导加载程序的“命令等待”时间(图中为2秒)。设计人员还能选择校验和类型,这也非常方便。 图4:赛普拉斯引导加载程序配置工具。 在可加载引导侧提供识别版本修订的数字信息,这样固件就能自动确定新的可加载引导镜像是否已过期。图4显示出设计人员如何灵活地指定应用版本和ID。此外,设计人员还能手动将应用镜像移动到所需的存储器地址。最后要注意的一大关键问题就是存储器覆盖风险。工具链可自动确定引导加载程序结束和应用开始的地址,这样就能消除风险。由于使用引导加载程序的根本目的就是在战略上规避风险,因此这个功能的采用非常重要。 如果所有项目都按时进行,所有代码都完美,所有固件工程师都在硬件构造之前完成了代码,那么就无需使用引导加载程序了。但如果您与所有其他人一样处在现实世界中,那么您所在机构开发的任何嵌入式系统在采用引导加载程序后都会受益匪浅。引导加载程序能让产品在发布之后进行更新,实现灾难问题修复以及产品预订特性升级等不同需求。加载引导的主要问题在于必须考虑引导加载程序本身的灵活性和易用性,还有引导加载程序所使用的代码空间和配置。不过说到底,设计良好的引导加载程序可以挽救您的产品,挽救您的团队,帮您排忧解难。 《电子设计技术》网站版权所有,谢绝转载
  • 热度 20
    2013-7-25 00:52
    1012 次阅读|
    0 个评论
    世界上很少有什么项目能给嵌入式固件开发人员提供足够多的开发时间。事实上,嵌入式固件开发就好像气体一样,会占据它所在的整个空间。而这往往意味着项目结束阶段的测试和质量评估承受压力,进而提高风险。项目经理为如何跟上项目计划进度发愁,嵌入式设计人员和测试工程师也面临开发时间和测试覆盖质量之间的矛盾。要是所有人都能实现自己的目标该多好。要是硬件设计能在代码完成前就进一步推进该多好。要是固件测试在生产构造阶段也能继续进行该多好。要是整个团队都能明确如果设计情况不好,他们总是能够通过现场升级实现重大修改该多好。这样,所有人晚上都能睡个安稳觉,而通过适当利用嵌入式引导加载程序(bootloader),这完全有可能实现。 首先我们先明确一下有关术语。引导加载程序是一段常驻微处理器中的代码,有时也位于只读存储器(ROM)中(在工厂制造时编写)或者位于板载闪存存储器的预留区域。可加载引导代码能载入内存并作为正常工作期间在微处理器上运行的主应用代码。可加载引导代码可通过引导加载程序更新。产品固件的现场升级正是通过板载引导加载程序实现的。 那么,什么是引导加载程序呢?引导加载程序就是位于给定微控制器上受保护程序存储器中的一部分代码。它通常是加电启动或重启后运行的第一个软件,往往针对具体处理器和电路板。引导加载程序可视为一种“笨”代码,因为它并不了解需要执行什么应用,甚至也不了解器件功能是什么。引导加载程序专门用来理解如果通过任意数量的通讯协议与外部进行通讯(这些协议包括UART、I 2 C、SPI、CAN、以太网等),也可用来了解微控制器的存储器映射。引导加载程序在发挥作用时,负责与外部或主机进行通讯;读取主机发送的数据文件;更新它所在的微处理器,从而运行所提供的最新应用代码。 图1:典型的嵌入式硬件架构。 引导加载程序可以在接收到人工操作员(也就是手动重启)或外设设备(即系统主机)的启动信号后开始工作,视具体嵌入式系统而定。引导加载程序信号首先确认引导加载程序本身是否有效,明确当前器件应用是否有效,与主机通讯并载入提交的新应用,随后根据指令执行应用闪存重写。大多数现代微控制器都能对自己的闪存重新编程。典型的引导加载程序在几微秒内就能完成这一工作。不过,存储器尺寸较大情况下,该时间就会大幅延长,有时甚至要花几秒钟才能完成一次更新。一旦完成加载引导,引导加载程序必须确认加载引导镜像,并将控制权交给加载引导代码。用于中断矢量的指针也必须进行设置。典型情况下,引导加载程序将进行软重启,以便让应用掌握控制。图2给出了引导加载程序的逻辑流程实例。 图2:引导加载程序的逻辑流程。 由于引导加载程序是在制造过程中被编程到器件中,并且不是器件工作所必需的首要应用,因此实际上可以把它看作是“开销”代码。项目经理和嵌入式设计人员必须要考虑引导加载程序所带来的风险保护功能与其所占用的代码空间相比是否值得。由于这段代码要占用空间,许多设计人员需要尽可能减小引导加载程序的存储器占用量,从而将用于应用代码的存储器空间实现最大化。引导加载程序至少应提供:通讯通道、擦写并重新编程闪存存储器的方法以及确认和执行新应用代码的方法。 此外,引导加载程序应该能够检测、报告和处理加载引导操作过程中出现的错误,如断电、通讯损失、闪存写入错误等。一般通过存储应用的校验和或循环冗余代码(CRC)来实现闪存错误保护功能。加载引导操作开始后,这些位就会被清空。如果新的应用成功下载并安装,校验和就会被更新。如果下载过程中出错(通讯损失、断电等),那么引导加载程序会检测无效的校验位,且不会开始应用操作,而是与主机通讯,等待有效的加载引导操作。 《电子设计技术》网站版权所有,谢绝转载 还有一个重要的加载引导考虑因素,那就是避免代码本身覆盖引导加载程序所在的区域。如果引导加载程序尝试或无意中确实覆盖了自身,并出现了某种错误事件,那么引导加载程序会无法工作。下次处理器启动时,引导加载程序很可能会损坏。这种情况造成的影响可能有不同反映。引导加载程序可能无法打开到主机的通讯通道,或者系统可能无法将控制权交给上次有效的加载引导镜像。不管是什么情况,结果都需要对整个系统进行再编程。再编程通常需要由合格的技术人员利用可插入板上的开发工具来完成。这可能会影响人们对引导加载程序的兴趣。开发引导加载程序时,必须对器件存储器位置进行适当的控制,特别要注意确保存储器位置得到妥善管理,同时应用大小的变化不会错误地擦写或重写引导加载程序的存储区域。为了避免潜在的重写问题,某些微控制器甚至把引导加载程序放到硬编码的加载引导只读存储器(ROM)中,实现与闪存相分离,如图3所示。 下图显示了四个存储器空间实例。最左边的图是正常的非引导加载程序应用程序,典型的工具链将把应用代码放在地址0上,整个闪存存储器阵列都能作为应用代码空间。如果这种类型的系统作为发布产品进行实地使用,将无法实现远程修改。重启后,应用代码将开始执行。应用代码中的任何问题或瑕疵都将是永久性的。 图3:引导加载程序和应用位置的存储器映射实例。 中间靠左的引导加载程序具备在ROM中存储的可加载引导镜像。这种配置能让全部闪存空间为应用所用,因为引导加载程序位于单独的ROM存储器中。这种方式能避免引导加载程序被错误地覆盖。不过,这种方法也无法对引导加载程序进行更新。ROM只能写入一次,如果发现瑕疵将无法再编程或修改。 中间靠右侧的图片中,引导加载程序位于地址0,重启后首先运行。一旦引导加载程序确定了可加载引导镜像有效,而且主机也没有发出对该部分进行重新镜像的命令,引导加载程序就会把控制权交给可加载引导应用。我们可以看到可加载引导镜像紧邻引导加载程序镜像结束的位置。这样能将用于可加载引导镜像的存储器空间实现最大化。在最后的镜像图中,有两部分存储器用于两种不同的加载引导事件。这种情况下,引导加载程序会根据主机要求决定在不同的启动操作下运行哪个应用。这种方法会占用双倍的闪存空间,因为它需要保存两个完整的应用程序,但它也是一种高效的设计方法,有助于工程师让单一器件在不同的主机指令条件下运行不同的工作。 《电子设计技术》网站版权所有,谢绝转载 引导加载程序最明显的优势就在于能现场解决故障。产品也能在功能升级方面受益。举例来说,我们知道客户会推出一些只提供基本功能的产品,以便加快投放市场的速度,随后再发布加载引导更新来升级操作系统驱动程序、产品功能和电源管理选项等。引导加载程序能够让设计团队在产品投放市场的同时制定未来硬件更新路线图。再举例来说,一些公司用无线电链路进行通讯,以实现设备的远程监控。这些公司发现通过无线电链路进行设备升级比让技术人员到远程站点更新固件的成本更低。可以设想一下在卡车运输领域对整个车队进行管理的情况。为代码升级改进这种小事就让一辆卡车暂停运输服务,那成本太高了。仅仅进行代码现场升级的成本就高达好几百美元。远程加载引导对需要现场更新的产品来说具有极大价值。 那么什么样的引导加载程序才是好的引导加载程序呢?这个问题会有很多答案,不过一个重要要求就是易用性。引导加载程序要能让设计人员方便地选择和连接到串行通讯端口,这非常重要。此外,要能通过简单的方法进入引导加载程序或绕开引导加载程序直接访问应用,这也非常重要。一旦创建出来,可加载引导镜像就依赖于引导加载程序。明确引导加载程序镜像在哪里结束以及应用从哪里开始,该过程非常繁琐且容易出错。好的引导加载程序应该可以自动解决这些问题,同时还要让设计人员灵活地使用多个应用镜像。可以实现双加载引导的系统有时被称为多应用引导加载程序。这种类型的引导加载程序会把新镜像载入到存储器中不同的区域。一旦确认,引导加载程序可能会复制新镜像以替代原有应用,或者直接执行新镜像。 下面看看赛普拉斯是如何在其PSoC3和PSoC5LP系列产品中支持引导加载程序的吧。如下图所示,通过下拉菜单选择通讯组件。可以设置用于进入引导加载程序的“命令等待”时间(图中为2秒)。设计人员还能选择校验和类型,这也非常方便。 图4:赛普拉斯引导加载程序配置工具。 在可加载引导侧提供识别版本修订的数字信息,这样固件就能自动确定新的可加载引导镜像是否已过期。图4显示出设计人员如何灵活地指定应用版本和ID。此外,设计人员还能手动将应用镜像移动到所需的存储器地址。最后要注意的一大关键问题就是存储器覆盖风险。工具链可自动确定引导加载程序结束和应用开始的地址,这样就能消除风险。由于使用引导加载程序的根本目的就是在战略上规避风险,因此这个功能的采用非常重要。 如果所有项目都按时进行,所有代码都完美,所有固件工程师都在硬件构造之前完成了代码,那么就无需使用引导加载程序了。但如果您与所有其他人一样处在现实世界中,那么您所在机构开发的任何嵌入式系统在采用引导加载程序后都会受益匪浅。引导加载程序能让产品在发布之后进行更新,实现灾难问题修复以及产品预订特性升级等不同需求。加载引导的主要问题在于必须考虑引导加载程序本身的灵活性和易用性,还有引导加载程序所使用的代码空间和配置。不过说到底,设计良好的引导加载程序可以挽救您的产品,挽救您的团队,帮您排忧解难。 《电子设计技术》网站版权所有,谢绝转载
  • 热度 36
    2013-7-12 15:37
    964 次阅读|
    0 个评论
    世界上很少有什么项目能给嵌入式固件开发人员提供足够多的开发时间。事实上,嵌入式固件开发就好像气体一样,会占据它所在的整个空间。而这往往意味着项目结束阶段的测试和质量评估承受压力,进而提高风险。项目经理为如何跟上项目计划进度发愁,嵌入式设计人员和测试工程师也面临开发时间和测试覆盖质量之间的矛盾。要是所有人都能实现自己的目标该多好。要是硬件设计能在代码完成前就进一步推进该多好。要是固件测试在生产构造阶段也能继续进行该多好。要是整个团队都能明确如果设计情况不好,他们总是能够通过现场升级实现重大修改该多好。这样,所有人晚上都能睡个安稳觉,而通过适当利用嵌入式引导加载程序(bootloader),这完全有可能实现。 首先我们先明确一下有关术语。引导加载程序是一段常驻微处理器中的代码,有时也位于只读存储器(ROM)中(在工厂制造时编写)或者位于板载闪存存储器的预留区域。可加载引导代码能载入内存并作为正常工作期间在微处理器上运行的主应用代码。可加载引导代码可通过引导加载程序更新。产品固件的现场升级正是通过板载引导加载程序实现的。 那么,什么是引导加载程序呢?引导加载程序就是位于给定微控制器上受保护程序存储器中的一部分代码。它通常是加电启动或重启后运行的第一个软件,往往针对具体处理器和电路板。引导加载程序可视为一种“笨”代码,因为它并不了解需要执行什么应用,甚至也不了解器件功能是什么。引导加载程序专门用来理解如果通过任意数量的通讯协议与外部进行通讯(这些协议包括UART、I 2 C、SPI、CAN、以太网等),也可用来了解微控制器的存储器映射。引导加载程序在发挥作用时,负责与外部或主机进行通讯;读取主机发送的数据文件;更新它所在的微处理器,从而运行所提供的最新应用代码。 图1:典型的嵌入式硬件架构。 引导加载程序可以在接收到人工操作员(也就是手动重启)或外设设备(即系统主机)的启动信号后开始工作,视具体嵌入式系统而定。引导加载程序信号首先确认引导加载程序本身是否有效,明确当前器件应用是否有效,与主机通讯并载入提交的新应用,随后根据指令执行应用闪存重写。大多数现代微控制器都能对自己的闪存重新编程。典型的引导加载程序在几微秒内就能完成这一工作。不过,存储器尺寸较大情况下,该时间就会大幅延长,有时甚至要花几秒钟才能完成一次更新。一旦完成加载引导,引导加载程序必须确认加载引导镜像,并将控制权交给加载引导代码。用于中断矢量的指针也必须进行设置。典型情况下,引导加载程序将进行软重启,以便让应用掌握控制。图2给出了引导加载程序的逻辑流程实例。 图2:引导加载程序的逻辑流程。 由于引导加载程序是在制造过程中被编程到器件中,并且不是器件工作所必需的首要应用,因此实际上可以把它看作是“开销”代码。项目经理和嵌入式设计人员必须要考虑引导加载程序所带来的风险保护功能与其所占用的代码空间相比是否值得。由于这段代码要占用空间,许多设计人员需要尽可能减小引导加载程序的存储器占用量,从而将用于应用代码的存储器空间实现最大化。引导加载程序至少应提供:通讯通道、擦写并重新编程闪存存储器的方法以及确认和执行新应用代码的方法。 此外,引导加载程序应该能够检测、报告和处理加载引导操作过程中出现的错误,如断电、通讯损失、闪存写入错误等。一般通过存储应用的校验和或循环冗余代码(CRC)来实现闪存错误保护功能。加载引导操作开始后,这些位就会被清空。如果新的应用成功下载并安装,校验和就会被更新。如果下载过程中出错(通讯损失、断电等),那么引导加载程序会检测无效的校验位,且不会开始应用操作,而是与主机通讯,等待有效的加载引导操作。 《电子设计技术》网站版权所有,谢绝转载 还有一个重要的加载引导考虑因素,那就是避免代码本身覆盖引导加载程序所在的区域。如果引导加载程序尝试或无意中确实覆盖了自身,并出现了某种错误事件,那么引导加载程序会无法工作。下次处理器启动时,引导加载程序很可能会损坏。这种情况造成的影响可能有不同反映。引导加载程序可能无法打开到主机的通讯通道,或者系统可能无法将控制权交给上次有效的加载引导镜像。不管是什么情况,结果都需要对整个系统进行再编程。再编程通常需要由合格的技术人员利用可插入板上的开发工具来完成。这可能会影响人们对引导加载程序的兴趣。开发引导加载程序时,必须对器件存储器位置进行适当的控制,特别要注意确保存储器位置得到妥善管理,同时应用大小的变化不会错误地擦写或重写引导加载程序的存储区域。为了避免潜在的重写问题,某些微控制器甚至把引导加载程序放到硬编码的加载引导只读存储器(ROM)中,实现与闪存相分离,如图3所示。 下图显示了四个存储器空间实例。最左边的图是正常的非引导加载程序应用程序,典型的工具链将把应用代码放在地址0上,整个闪存存储器阵列都能作为应用代码空间。如果这种类型的系统作为发布产品进行实地使用,将无法实现远程修改。重启后,应用代码将开始执行。应用代码中的任何问题或瑕疵都将是永久性的。 图3:引导加载程序和应用位置的存储器映射实例。 中间靠左的引导加载程序具备在ROM中存储的可加载引导镜像。这种配置能让全部闪存空间为应用所用,因为引导加载程序位于单独的ROM存储器中。这种方式能避免引导加载程序被错误地覆盖。不过,这种方法也无法对引导加载程序进行更新。ROM只能写入一次,如果发现瑕疵将无法再编程或修改。 中间靠右侧的图片中,引导加载程序位于地址0,重启后首先运行。一旦引导加载程序确定了可加载引导镜像有效,而且主机也没有发出对该部分进行重新镜像的命令,引导加载程序就会把控制权交给可加载引导应用。我们可以看到可加载引导镜像紧邻引导加载程序镜像结束的位置。这样能将用于可加载引导镜像的存储器空间实现最大化。在最后的镜像图中,有两部分存储器用于两种不同的加载引导事件。这种情况下,引导加载程序会根据主机要求决定在不同的启动操作下运行哪个应用。这种方法会占用双倍的闪存空间,因为它需要保存两个完整的应用程序,但它也是一种高效的设计方法,有助于工程师让单一器件在不同的主机指令条件下运行不同的工作。 《电子设计技术》网站版权所有,谢绝转载 引导加载程序最明显的优势就在于能现场解决故障。产品也能在功能升级方面受益。举例来说,我们知道客户会推出一些只提供基本功能的产品,以便加快投放市场的速度,随后再发布加载引导更新来升级操作系统驱动程序、产品功能和电源管理选项等。引导加载程序能够让设计团队在产品投放市场的同时制定未来硬件更新路线图。再举例来说,一些公司用无线电链路进行通讯,以实现设备的远程监控。这些公司发现通过无线电链路进行设备升级比让技术人员到远程站点更新固件的成本更低。可以设想一下在卡车运输领域对整个车队进行管理的情况。为代码升级改进这种小事就让一辆卡车暂停运输服务,那成本太高了。仅仅进行代码现场升级的成本就高达好几百美元。远程加载引导对需要现场更新的产品来说具有极大价值。 那么什么样的引导加载程序才是好的引导加载程序呢?这个问题会有很多答案,不过一个重要要求就是易用性。引导加载程序要能让设计人员方便地选择和连接到串行通讯端口,这非常重要。此外,要能通过简单的方法进入引导加载程序或绕开引导加载程序直接访问应用,这也非常重要。一旦创建出来,可加载引导镜像就依赖于引导加载程序。明确引导加载程序镜像在哪里结束以及应用从哪里开始,该过程非常繁琐且容易出错。好的引导加载程序应该可以自动解决这些问题,同时还要让设计人员灵活地使用多个应用镜像。可以实现双加载引导的系统有时被称为多应用引导加载程序。这种类型的引导加载程序会把新镜像载入到存储器中不同的区域。一旦确认,引导加载程序可能会复制新镜像以替代原有应用,或者直接执行新镜像。 下面看看赛普拉斯是如何在其PSoC3和PSoC5LP系列产品中支持引导加载程序的吧。如下图所示,通过下拉菜单选择通讯组件。可以设置用于进入引导加载程序的“命令等待”时间(图中为2秒)。设计人员还能选择校验和类型,这也非常方便。 图4:赛普拉斯引导加载程序配置工具。 在可加载引导侧提供识别版本修订的数字信息,这样固件就能自动确定新的可加载引导镜像是否已过期。图4显示出设计人员如何灵活地指定应用版本和ID。此外,设计人员还能手动将应用镜像移动到所需的存储器地址。最后要注意的一大关键问题就是存储器覆盖风险。工具链可自动确定引导加载程序结束和应用开始的地址,这样就能消除风险。由于使用引导加载程序的根本目的就是在战略上规避风险,因此这个功能的采用非常重要。 如果所有项目都按时进行,所有代码都完美,所有固件工程师都在硬件构造之前完成了代码,那么就无需使用引导加载程序了。但如果您与所有其他人一样处在现实世界中,那么您所在机构开发的任何嵌入式系统在采用引导加载程序后都会受益匪浅。引导加载程序能让产品在发布之后进行更新,实现灾难问题修复以及产品预订特性升级等不同需求。加载引导的主要问题在于必须考虑引导加载程序本身的灵活性和易用性,还有引导加载程序所使用的代码空间和配置。不过说到底,设计良好的引导加载程序可以挽救您的产品,挽救您的团队,帮您排忧解难。 《电子设计技术》网站版权所有,谢绝转载
  • 热度 21
    2012-12-14 10:15
    1375 次阅读|
    0 个评论
        WIZSmartScript 是一款WIZnet为方便用户配置、使用WiFi模块而开发的配置工具,且支持固件升级功能。此工具的诞生为WIZnet产品配置,升级提供了更加便捷的途径。     昨天给大家介绍了Wizfi210用WIZSmartScript固件升级的过程。我们对WIZSmartScrip的方便快捷也一定有了体验。今天为大家详细介绍WIZSmartScript中所有支持到的功能,以便您做更多的应用! 1. 基本模式 1-1) 运行程序 如果运行 WIZSmartScript 程序 , 可以看见以下所示的 KEY Confirm Dialog 。 如果输入接收到的 CODE 和 KEY, 可以在正常模式下运行该程序   1-2) 检查基本信息 输入 PC 的 COM 口和波特率 ( 默认波特率 : 115200) 选择模块 WizFi210, Group 选 “ A. Basic ” , Script 选“ 1. Module Information ” 。 点击“ Start Script ” , 可以看见 WizFi210 的基本信息如下所示。   1-3) 浏览 AP 选择模块“ WizFi210 ” , Group 选“ B. Function ” , Script 选“ 1. AP Scan ” 。 点击“ Start Script ” , 可以看见相邻的 AP 列表 .   1-4) 用 DHCP 连接到 AP 选择“ C. Association ” 和“ 1. WPA, DHCP ”。 输入有效的值到 SSID 和 Key 字段。 点击“ Start Script ” , WizFi210 将用 DHCP 连接到 AP ,可以看见以下过程。   1-5) 用静态 IP 连接到 AP 选择 “ C. Association ” 和“ 2. WPA, Static IP ”。 输入有效的值到 SSID 和 Key 字段。 输入有效的值到 IP 和 Gateway 字段。 点击“ Start Script ” , WizFi210 将用静态 IP 连接到 AP ,可以看见以下过程。   1-6) 发起自动连接 (1/2) 选择“ D. Auto Connection ”和“ 1. WPA, Static IP, Raw Option ”。 输入有效的值到 SSID 和 Key 字段。 输入有效的值到 IP 和 Gateway 字段。 输入连接类型到 Connection 字段。 点击“ Start Script ” , WizFi210 将用静态 IP 连接到 AP ,并准备串口到 WiFi 通道。 (TCP, 服务器 , 端口 5000) 1-7) 发起自动连接 (2/2) 运行串口终端程序并连接到 COM 口。 运行客户程序并连接到 WizFi210 。 (192.168.3.201:5000) 用程序确认双向数据通信。   2. 向导模式 2-1) 运行 Wizard 点击“ Wizard ” 按钮 , WIZSmartScript 将运行在向导模式。 2-2) 步骤 1 : 找到 WizFi 打开 WizFi210 并连接串口线到 PC. 输入有效的值到 COM 和 Baud 字段并点击“ Find WizFi and Set Command Mode ” 按钮。 如果没有错误 , 可以看见如下所示的 WizFi 模块名 WizFi210( 或 WizFi220) 和版本。 点击“ Next ” 按钮以进入下一步。 2-3) 步骤 2:AP 扫描 点击“ AP Scan ” 按钮搜索相邻的 AP (无线接入点) . 选择一个 AP 以进行连接 点击“ Next ” 按钮以进入下一步。   2-4) 步骤 : WiFi 安全性 输入有效的值到 WiFi 安全性字段。 如果有需要 , 检查 EAP Configuration. 点击“ Next ” 按钮以进入下一步。 2-5) 步骤 4 : WiFi 网络 WizFi210 的 IP 地址配置 .(DHCP 或 静态 IP) 点击 “ Next ” 按钮以进入下一步。 2-6) 步骤 5 : 串口 如果有需要 , 改变 WizFi210 的波特率。 点击 “ Next ” 按钮以进入下一步。 2-7) 步骤 6 : S2W 通道 配置串口到 WiFi 通道 ( 协议 , 模式 , IP 和端口 ) 点击 “ Next ” 按钮以进入下一步。 2-8) 步骤 7 : 保存选项 选择是否立即建立串口到 WiFi 通道或是保存配置到闪存以备下次重启。 选择是否发送调试消息到 UART 。 点击 “ Next ” 按钮以进入下一步。   2-9) 步骤 8 : 完成 ( 保存脚本 ) 如果想保存 AT 命令 , 点击“ Save Script ” 按钮。 最后 , 点击“ Finish ” 按钮。   2-10) 执行 Script 可以看见在向导模式创建的命令执行过程。   以上是WIZSmartScript配置工具的详细介绍.感谢支持! 若您有更好的建议,欢迎留言,更多信息可登录WIZnet中文官网 (www.iwiznet.cn)
  • 热度 27
    2012-12-13 11:05
    936 次阅读|
    0 个评论
        WIZSmartScript 是一款WIZnet为方便用户配置、使用WiFi模块而开发的配置工具,且支持固件升级功能。用户可以通过此工具方便快捷的给WIZnet Wifi系列模块升级,每一款Wifi产品都有其对应的WIZSmartScript,今天我们给大家介绍一下WizFi210固件升级的全过程,以备大家参考:    1. 检查旧 版 本 输 入PC 的COM 口和波特率 。( 默 认 波特率: 115200) Model 选择 “WizFi210 ”, Group 选择 “A. Basic ”, Script 选择 “1. Module Information ”。 点 击 “Start Script ”, 可以看 见WizFi210 的版本。 该WizFi210 的版本是 ,如下所示。 2. 复 制固件文 件 给旧 的固件文件重命名 复 制新的固件文件到 “WIZSmartScript/AppFWFile ” 文件 夹 。   3. 切 换 到程序模 式 用 切 换 到 “Program Mode ”。 用 重 启WizFi210 。 4. 写Flash Model 选择“ WizFi210 ” , Group 选择“ U. JIG ”, Script 选择“ 1. Flash Write(WLAN, APP) ”。 点击“ Start Script ” 按钮 , 新的固件文件将被写入 flash 。 通常需要 60~90 秒更新固件。  5 . 切换到运行模式 用 切换到“ Run Mode ” 。 用 复位 WizFi210 。 6. 出厂默认值 在“ Run Mode ” , 按下 按钮 ( 或 button) 2 次可恢复出厂默认值。 完成恢复出厂默认值后 , LED 灯闪烁 2 次。 用 复位 WizFi210 。 7. 检查新版本 用和 1. Check Old Version 同样的方法检查 Wizfi210 的版本。 确认 WizFi210 的版本,如下所示 。   8. 清除所有闪存 #1 如果在升级 WizFi210 的过程中出现错误 , 需要清楚 WizFi210 的所有闪存。 Model 选择“ WizFi210 ” , Group 选择“ U. JIG(User) ”, Script 选择“ 2. Flash Write(WLAN, APP, Clear) ”。 点击“ Start Script ” 按钮 , 新的固件文件将被写入闪存,且所有闪存将被清除。 使用该方法升级 WizFi210 时 , 需要手动写入 WizFi210 的 MAC 地址。 9. 清除所有闪存 #2 在清除 Wizfi210 的所有闪存后 , 需要写入 WizFi210 的 MAC 地址。 写 MAC 地址在 中进行。         以上是Wizfi210通过WIZSmartScript固件升级的全过程。     感谢您的关注!更多信息请关注WIZnet中文官网
相关资源