编辑: 摇摆白勺白芍 2019-07-07

3 of

49 功能说明 USBFS 用户模块提供: ? 符合第

9 章的 USB 全速器件框架. ? 对USB 主机发出的请求进行解码和调度的控制端点的低层驱动程序. ? 便于轻松构建描述符的 USBFS 设置向导. 您可以选择构建基于 HID 的器件或普通 USB 器件. 选择 USBFS 用户模块时进行您的选择. 要在初始选 择后更改您的选择,请删除 USBFS 用户模块的现有实例,然后添加新实例. 部署含有引导加载程序的项目后,将不再对以红色突出显示的存储器位置进行重新编程. 可以通过运行引 导加载程序来更改应用程序代码以及校验和. 程序空间的前两个模块除外,您可以将其他主要功能代码组 移动到您确定的位置. 除了用户模块中调整的参数,还提供了两个其他重要功能. 可以通过右键单击器件管理器视图中的引导加 载程序图标来访问一组内置工具. 另外,提供了主机应用程序 (包括源代码)以及有关如何在系统中设置 和使用它以展现引导加载程序功能的指南. 有关 USB 的信息 (包括有关 USB 用法的规范、资源示例和论坛) ,请访问 www.usb.org. 操作原理 要创建引导加载程序项目,需要对 PSoC Designer 标准模型进行一些非标准的修改. 为了简化此过程,引 导加载程序用户模块提供了自定义文件和专用工具来帮助您进行引导加载程序项目开发. 可以通过切换到 器件编辑器视图,然后右键单击 USBFS 引导加载程序用户模块图标来访问这些专用工具. 除了作为用户 模块一部分提供的工具和文件,还提供了带有可演示引导加载程序基本功能的用户模块安装的主机应用程 序示例. 此Microsoft Visual Studio?

2005 的基于 PC 的应用程序和源代码包含在 PSoC Programmer

3 安装目录中的一个 .zip 文件中. \Cypress\Programmer\3.xx\Bootloaders\BootLdrUSBFS\USB_BootLoaderHostApp\… 使用此应用程序要求安装和有限自定义一个普通 USB 驱动程序,该驱动程序应当支持主机演示应用程序. 此文件作为安装的一部分提供,可以在初始操作引导加载程序器件时注册此文件. 使用窗口手动安装方法 可以指定前面所指定位置的 \USB driver 目录中包含的驱动程序的位置. [+] Feedback USBFS Bootloader Document Number: 001-67329 Rev. ** Page

4 of

49 必须修改包括的 driver.inf 文件才能正确指定所选引导加载程序器件的 VID 和PID. 请注意,必须在 driver.inf 文件中的两个位置进行此更改:一个位置靠近文件顶部,另一个位置靠近底部. Figure 2. USBFS 引导加载程序存储器组织 [+] Feedback USBFS Bootloader Document Number: 001-67329 Rev. ** Page

5 of

49 USBFS 引导加载程序存储器组织 PSoC Designer ? 使用标准化文件、有关部件系列的内置数据和特定器件的属性来创建可编译项目和更正 API 定义. 具有引导加载程序的项目需要的存储器映射与标准 PSoC Designer 项目的存储器映射有很大区 别. 存储器区域的选择代表核心的设计决策,在设计的整个生命周期中都坚持这一决策. 不需要引导加载 程序的项目仅允许编译器和连接器分配 RAM 和ROM. 但是,引导加载程序必须将 RAM 和ROM 分组在特定 区域,以便该程序在加载新应用程序时不会崩溃. 在如下图所示的存储器布局 五图

2 中个重要受管理 ROM 区域: ? 第一个区域是 ROM 的模块

0 和1. 这些模块包含关键的中断矢量和重启矢量. 由于几乎不可能通过 任何操作器件来控制对这些模块的读取访问,因此无法将这些模块擦除和重新编程. 不能修改 ROM 的 前两个模块,且不能将它们放置在任何其他位置. ? 要定义的第二个存储器区域是包含引导加载程序代码自身的区域. 该区域可以放置在不同的 ROM 位置. 但是,在部署包含引导加载程序的项目或器件后,该区域不可重新编程,且不能进行现场升级. ? 第三个存储器区域是可重定位中断表. 根据器件结构的不同,此表可能由一个或两个模块组成. 这一 区域包含中断矢量以及通用矢量,为中断或使用引导加载程序加载新应用程序时可能更改的代码条目 提供跳转表. 例如,这一区域包含应用程序起始地址. 在加电时验证校验和后,引导加载程序可以使 用此地址启动新应用程序. 您可以在设计时确定此区域的位置. 部署应用程序和引导加载程序后,可 以重新写入此区域,但是不能修改其位置. 此区域的特性类似于本节稍后描述的校验和区域. ? 第四个存储器区域是应用程序区域. 应用程序区域包含一组中断矢量,可以对这些矢量重新编程,但 前提是当重新写入它们时不再访问它们. 请考虑若在执行代码期间更改代码,程序可能遇到的问题. 通过在引导加载期间关闭所有应用程序中断,可轻松满足此要求. 当引导加载程序启动时,会自动完 成此操作. 除了中断矢量,应用程序区域还包含大多数器件引导代码和所有前台运行时应用程序. ? 第五个定义的 ROM 为校验和区域. 此区域包含重要数据,引导加载程序软件使用这些数据下载和验证 前台应用程序. 校验和区域包含起始地址以及以模块表示的前台应用程序的大小. 校验和模块的前两 个字节是校验和模块自身的校验和,后两个字节是运行时应用程序的校验和. 除了引导加载程序使用 的空间,校验和模块的结构还包含供您自定义数据的空间. 此结构以 C 结构定义的形式公开,只要引 导加载程序实用程序使用的数据未更改或重新放置在模块中,就可以修改此结构. 如果应用程序具有一些必须始终可运行 (包括在引导加载过程中)的代码,引导加载程序用户模块的设计 可提供充分的定制来满足这一需求. 这可以通过使用汇编程序 AREA 指令将代码添加到引导加载程序 ROM 区域中来完成. 引导加载过程中代码所使用的任何 RAM 必须添加到为引导加载程序定义的 RAM 区域中. 用户模块参数中存储器区域的定义 通过 USBFS 引导加载程序用户模块参数,您可以自定义主程序元素在 ROM 中的放置位置. 用户模块中的 默认值提供了有效初始设置. 用户应该使用这些设置,直到完整的项目成功编译完成. 编译项目后,可以 查看程序存储器映射和 .hex 输出文件,以确定如何优化程序结构. 如果用户对参数重新进行配置并意外 造成存储器区域冲突,那么在没有有效存储器映射可供查看的情况下很难确定正确的位置. 引导加载实用程序 引导加载程序用户模块提供了与前台应用程序共存的完整实用程序. 当器件启动或复位时,会始终调用引 导加载实用程序. 一旦在系统启动时调用引导加载程序,引导加载程序通过计算前台应用程序 ROM 区域 中的校验和来验证前台应用程序. 计算出的校验和与存储在校验和模块上的校验和 (随应用程序创建)进 行比较. 如果两个校验和相等,则引导加载实用程序允许前台应用程序执行. 如果两个校验和不相等,则 引导加载程序进入等待循环,等待主机应用程序下载有效应用程序. 它还使自己的 USB 子系统允许主机 传输数据. 如果主机系统发现此接口处于启用状态,它可能会选择执行其自己的一组应用程序. 虽然提供 了与给定示例一起成功运行的默认 USB 描述符,但是您可以选择在主机或 PSoC 器件上更改任何参数. 为 主机应用程序包括了 VisualStudio

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题