基于PSoC的I2C Bootloader

出处:ryyhf 发布于:2011-08-26 18:01:11

  PSoC介绍

    PSOC的重点都是在工业控制领域,把  数字模拟模块集合到一个片子上倒是个不错的想法,但是主要是应用到逻辑,算法等较为简单的领域。对通信,无线,网络,数据处理等这些技术涉及的不多。我认为现在这一行业的竞争力在技术上。

  PSoC是一个8位的核,包括SRAM、SROM和Flash等模块,重要的是PSoC集成了可供设计者随意配置的数字模块和模拟模块。

  psoc的特点就是集成度高,设计灵活。可以看成是MCU,FPGA/CPLD,ispPAC集合。

  1.它里面包含MCU(psoc1为m8c,psoc3为51,psoc5为arm9),这是和你讲的那几种是有区别的。它可以很方便的实现系统设计,虽然fpga可以通过设计实现软核,但增加了设计难度,性能也达不到硬核的程度。

  2.PSoC还包含可编程数字模块(类似FPGA/CPLD),以及可编程模拟模块(类似ispPAC),即具有处处理数字和模拟两种信号的能力,此外,psoc具有的a/d,d/a模块解决了两种信号的接口问题。

  3.PSoC设计很简单,并且可以实现重构。

  4.psoc除了具备一般单片剂的资源外,还有可编程时钟,低电压检测,升压泵,内部精密参考电压等等资源。

  基于PSoC的I2C ISSP方式

  PSoC器件可以基于I2C协议实现在系统中串行编程(ISSP),Power-On模式下通过SDA/SCL和VDD/GND就能够编程整个代码空间,Reset模式下则是使用SDA/SCL和XRES/GND编程。在很多PSoC CapSense触摸按键应用中,如果改变了机械布局因而需要重新定义按键引脚,或者需要赋予新的按键触发行为,主机端通过集成ISSP协议,可以在需要的时候新的。hex代码到PSoC端,实现代码的现场快速升级。

图1ISSP编程流程图

图2Bootloader存储方式框图

  图1是ISSP编程流程图,首先使PSoC进入编程模式,校验其内部的Solicon ID,保证是对正确的PSoC编程,对PSoC内部的Flash块(64字节)逐一擦除/编程,并读出Flash内容进行比较;ISSP随后编程用户自定义的Flash块保护模式,每个Flash块可以被指定为W - 写保护 / R - 读保护 / U - 不保护 / F - 工厂更新;,每个Flash块的校验和被读出并计算出全部Flash空间的总校验和,如果与。hex文件中的总校验和一致,代码已经被成功升级。

  I2C Bootloader方式

  用户也可以使用标准的I2C系统接口,通过I2C Bootloader方式更新PSoC器件内的用户代码。从图2可以看出,整个Flash空间由红色的不可编程的Bootloader区,灰色的可以现场编程的用户应用程序区,以及黄色的Bootloader校验和区组成。PSoC复位时,Bootloader接管程序控制权,它会计算和校验用户代码的校验和,仅当匹配时才转到用户代码的首地址,开始运行用户代码。与ISSP方式不同,I2C Bootloader方式仅更新可以现场编程的用户代码区,Flash空间的其他区用于此方式的控制和校验。

图3I2C Bootloader方式头部数据

  I2C Bootloader方式在数据传输时分三种命令格式,FF38是进入Bootloader命令,FF39是写Flash块命令,FF3B是退出Bootloader命令。图3是I2C Bootloader方式传输的头部数据,图4则是成功的数据。

图4I2C Bootloader方式成功的数据

  Bootloader方式工作时,需要更新的PSoC器件做为一个I2C Slave。图3中,行数据传输将进入Bootloader方式,它由0x70 - Slave 7bit地址0x38的写地址,需要忽略的两个前缀字节380a ,FF38命令和8个字节的Bootloader key组成。所有的Bootloader命令都必须包含正确的Bootloader key,否则将被Slave器件忽略。第二行由71 - Slave 7bit地址0x38的读地址和状态响应字节0x20组成,状态响应字节的其他值标识各种出错状态 - 02/Image verify error, 04/Flash checksum error, 08/Flash protection error, 10/Comm checksum error, 40/Invalid bootloader key, 80/Invalid command error.

图5BootLdrI2C用户模块参数设置

  写Flash块命令传输了绝大部分数据量,除了一个块以外,其他都有相同的格式。图3中,写Flash块命令包含0x70, 需要忽略的两个前缀字节3810 (Slave 7bit地址和后续字节长度),FF39命令, Bootloader key,Flash块的块号,64字节数据,0x18 - 64字节数据的校验和,0x86 - 此传输78字节的校验和(包括FF, 39, Bootloader key, 块号, 64字节数据, 0x18)。仅在以上数据传输完后需要传输读地址0x71,并读出正确的状态响应字节0x20.

图6BootLdrI2C用户模块提供的BootLoaderTools

  写Flash块命令包含了一些特殊信息,参见图4,(0d, d4) 是随后直到(85, f4)的字节校验和,(08,80)是图2灰色用户代码区中可重定位中断矢量表的地址,(12,00)是图2灰色用户代码区中用户代码空间的开始地址,(3f,80)则是用户代码结束块的地址,(00,b7)是用户代码占用的块数量,(85,f4)是Bootloader计算的用户代码检验和,0xb5是以上64字节数据的检验和,0xbd是此传输78字节的校验和。

  通过PSoC Designer的用户模块实现I2C Bootloader方式

  PSoC Designer是功能全面的基于图形用户接口的PSoC软件开发环境,它的用户模块可通过配置PSoC器件内部资源创建Timer、PWM、ADC/DAC,I2C等多种有用功能。一个用户模块包括硬件配置数据、启动代码、中断服务例程以及应用编程接口,这些API可对用户模块的各个方面进行即时控制。用户使用PSoC Designer中的BootLdrI2C用户模块可以很方便的实现启动时的引导载入。

  用户先在项目中添加BootLdrI2C用户模块,然后选择“I2C for Bootloader Only”或“Full I2C API Support with Bootloader”;之后设置图五中的用户模块参数,这些参数定义了I2C的引脚和通信速率,Bootloader的I2C地址,用于其他I2C操作的地址,以及图2中各个存储区的参数。用户随后可以通过图6提供的“Boot Loader Tools”设置中断向量和重启动向量,编译项目后生成应用程序校验和,以及从hex 项目输出文件中生成一个可以升级PSoC器件的dld 文件。

  其它需要设置的包括在菜单Project -> Settings -> Linker中,设置Relocatable起始地址,在flashsecurity.txt中指定Flash块的访问属性——可以现场编程的区域需要设置为可写操作。

  在PSoC器件上加入I2C Bootloader功能后,我们还可以通过Cypress提供的I2C-USB Bridge工具通过PC更新代码到PSoC器件来验证以上设计。


  

参考文献:

[1]. PSoC datasheet https://www.dzsc.com/datasheet/PSoC_555958.html.
[2]. SROM datasheet https://www.dzsc.com/datasheet/SROM_622730.html.
[3]. dld  datasheet https://www.dzsc.com/datasheet/dld+_1881046.html.


版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!