UCD3138数字电动工具:Boot ROM和程序闪存校验和

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • UCD3138数字电动工具:Boot ROM和程序闪存校验和
  • 登录
现在,我将简要概述在写入编程闪存时 用于 UCD3138及校验和安置的 引导 BOM 程序。 这些校验和提供了一种在允许 ARM 内核 执行编程闪存中的代码前 让引导 ROM检查编程闪存 完整性的方法。 这是 UCD3138 中32 KB 编程闪存 图示。 引导程序可置于编程闪存的 前两个 KB 中。 如果编程闪存的前 2 KB 用于引导程序,则该 2 KB 块的最后 4 个字节 将保留用于 4 字节的校验和。 该校验和的计算方式是 将前 2 KB 编程闪存上 每字节编程闪存的内容相加。 如果无需引导程序, 则将保留编程闪存的最后 4 个字节 供另一4 个字节的校验和使用, 其计算是通过在整个 32 KB 范围内 将编程闪存的各字节内容 相加。 加电或复位后,引导 ROM 例程 将在两个位置验证校验和, 并根据结果,决定是 始终处于 ROM 模式,还是开始执行代码和编程 闪存。 这就是我们所说的闪存模式。 校验和提供了一种在执行 代码和编程闪存前检查编程闪存中的 内容是否完整的方法。 从用户角度来看,我们在写入 编程闪存时,纳入或排除了 这些校验和。 排除校验和会强制器件在加电复位后 仍始终处于 ROM 模式。 纳入校验和会强制器件在加电复位后 在闪存模式下运行,当然,前提是编程闪存未 损坏。 我现将展示 UCD3138 上有关引导 ROM 程序的 程序流程简图。 请注意,该引导 ROM 例程 与 UCD3138 的 3138系列产品的其他成员 略有不同。 请参阅各种程序员 手册以了解确切详情。 但实质上,我将讨论的原则 与整个 UCD3138 系列均有关。 加电或复位后,引导 ROM 程序 将初始化一些外设。 然后,它计算编程闪存前两个 KB 的校验和, 这可用于存储引导程序, 以及将最新计算的校验和 与在该 2 KB 编程闪存块的最后 4 个字节 中存储的值进行比较。 如果校验和的值相符,引导 ROM 例程 会强制 ARM 内核开始执行编程闪存中的 代码,从而它从 ROM 模式转变为闪存模式。 如果校验和的值不相符, 则引导 ROM 程序会计算整个 32 KB 编程 闪存的校验和。 然后,它会将此最新计算所得的校验和 与该 32 KB 编程闪存的最后 4 个字节中存储的值 进行比较。 如果校验和的值相符,它会开始执行 编程闪存中的代码,从而它从 ROM 模式转变 为闪存模式。 如果校验和的值不相符, 它将跳至 PMBus处理程序例程。 该例程不断通过 PMBus 接口 轮询来自主控的有效命令, 例如 UCD器件 GUI。 这些 PMBus 命令可用于读取、写入和擦除 程序和数据闪存。 此外,还有命令可执行 编程闪存中的代码。 使用此命令,我们可以在 ROM 模式下 执行代码和编程闪存, 而不会在对器件编程时写入任何一个校验和。 我们不建议编写这两种校验和中的任一种 以及在代码开发期间使用该命令, 因为它将确保该闪存不会变为锁定状态。 现在,我将演示闪存可以 如何变为锁定状态,这表示无法再将其 擦除和对其重新编程。 这是主程序中代码的简单图示。 这是将写入编程闪存的代码。 此时,假设已对一个或全部两个校验和 编程,从而引导 ROM例程将指示 ARM 内核在加电或复位后执行闪存中的 代码。 一般而言,我们在主程序开头 设有初始化函数,然后是主循环。 在主循环内部,我们始终调用 PMBus 处理程序 例程,从而我们可以通过 PMBus 接口 擦除闪存并对其重新编程。 一切运行正常,每次经过主循环时, 均会调用PMBus 处理程序例程。 但是,当程序中有妨碍到达 主循环的错误时,应当如何应对? 这意味着将永不调用PMBus 处理程序例程, 从而防止我们访问和擦除闪存 以及对闪存重新编程。 因此,编程闪存变为锁定 且永不能对该部分重新编程。 所以,我们建议将后门置于主程序的开头 以规避该问题。 clear_integrity_word 将清除该编程闪存校验和。 您应在处于闲置状态的 输入引脚上依情况调用 clear_integrity_word。 将其就置于主程序开头可最大限度 降低因错误导致 clear_integrity_word 在需要执行时无法执行的发生概率。 所以,如果有错误阻碍 主循环中的PMBus 处理程序例程 执行,您可以 更改输入引脚的状态,复位器件, 当执行代码和编程闪存时, 将即时调用clear_integrity_word, 它将清除校验和。 然后,在复位时,引导 ROM 代码 不会跳至编程闪存,因为启动时 执行的校验和将失败,但是仍将处于 ROM 模式 并执行 PMBus处理程序例程。 从此以后,您可以擦除并重新写入编程闪存。 函数clear_integrity_word 会清除编程闪存校验和, 从而它会清除编程闪存 4 或 8 字节的内容。 擦除或写入闪存要求该器件 处于特权模式。 为将器件置于特权模式, 我们采用了软件的中断机制。 软件中断不是常规意义上的中断。 软件中断的发起是由软件的 顺序执行和调用 特定函数实现的。 对软件中断函数的调用 看上去与对任何其他标准函数的调用别无二致。 使函数基于软件中断 会强制 ARM 以特权模式运行。 在特权模式下,软件 可启用或禁用中断,操纵程序 和数据闪存内容及其他。 当 ARM 处于用户模式下时,这些功能 全都不允许使用。 在 UCD3138 ARM 和数字系统程序员手册中, 您可以阅读有关软件中断机制的更多
课程介绍 共计6课时,36分25秒

UCD3138数字电动工具

数字 UCD3138 电动工具

现在,我将简要概述 在写入编程闪存时 用于 UCD3138 及校验和安置的 引导 BOM 程序。 这些校验和提供了 一种在允许 ARM 内核 执行编程闪存 中的代码前 让引导 ROM 检查编程闪存 完整性的方法。

猜你喜欢 换一换

推荐帖子

低侧电流感应用于高性能、成本敏感型应用
     需要控制电机的应用通常包含某种类型的电流感应电路。感应通过电机电流的能力可以帮助设计师根据电机电流状态做出如速度之类的调整。      例如,在无人机的应用中,每个控制螺旋桨的电机通常使用低侧电流感应电路,操控无人机在空中行进、停留或上升。在钻机和往复锯等电动工具中,低侧电流感应根据用户按动扳机的力度来控制工具的速度。这些...
Aguilera 模拟与混合信号
单片机通信Proteus仿真实验
本实验是设置八个按键在上位机按下,下位机接收到数据后执行。分别控制八个LED灯,内部有介绍一些关于ASCII可显示字符的使用。在低一个显示字符我改动原来是1=31的一个值。改成/=2F...很好理解的,自己多试试改别的也可以。 仿真原理图如下. 单片机源程序如下: /*************************************************************...
Jacktang 微控制器 MCU
嵌入式处理器的体系架构与内核
      嵌入式系统已经广泛地应用到当今各个领域,与我们的生活息息相关,小到掌上的数字产品,大到汽车、航天飞机。 提到嵌入式系统我们很快会联想到单片机,不错,MCU是最基础和常用的嵌入式系统,但是目前像FPGA、ARM、DSP、MIPS等其他嵌入式系统应用越来越广泛。嵌入式系统与模拟电路或其他功能电路组成的SoC(System on Chip,片上系统)或SiP(S...
fish001 微控制器 MCU
TMS320F28335GPIO实例——点亮发光二极管
电路原理图如下所示: 代码: #include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File &nbs...
fish001 DSP 与 ARM 处理器
分享到X
微博
QQ
QQ空间
微信

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved