微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LPC1300通过USB在线系统编程ISP

LPC1300通过USB在线系统编程ISP

时间:11-27 来源:互联网 点击:
1、简介

基于ARMCortex-M3CPU架构的LPC1300系列微控制器,在嵌入式应用中具有高级别块集成支持和低功耗的特点。LPC1300辅助外设,包括高达32KB的flash存储器,8KB的数据存储器,USB接口,1个UART,1个SSP控制器,SPI接口,I2C接口,8通道10位ADC,4个通用定时器/PWMs,以及高达40个通用I/O引脚。

另外,可在线系统编程的片上ROM(abootloader)支持UART和USBflash编程,类似于APIs的用户代码编程方式。flashAPI通过一个简单的接口实现板上flash编程功能,并可随时进入ISP模式。USBAPI能够兼容人机接口设备(HID)和大容量存储设备(MSC)的新产品,既不需要用户编写驱动程序,也不需要存储在flash上。

包含在该使用手册上的条目如下

1、USB在线系统编程概述

2、USBISP详述

3、自动化的USBISP

4、USBISP的自动化入口

5、软件实例

6、结论

2、USBIn-SystemProgramming(ISP)概述

LPC1300片上的USBISP固件,终端用户可以通过标准个人电脑操作系统对其进行编程和更新。本文档引用了一部分LPC1343的内容,其他同样带有片上USB的LPC1300系列产品也作了类似处理。

在上电期间保持PIO0_1低电平将引发片上ISP固件进入ISP模式(除非被NO_ISP代码读保护[CRP]模式所禁止)。一旦进入ISP模式,USBVBUS上的PIO0_3口将会进行电平检测。如果是高电平,将会进入USBISP;若是低电平,则进入UARTISP。在用户指南手册标题为“BootProcessFlowchart”的章节中,有图表详细的介绍了这一过程。

进入USBISP模式后,LPC1300可以把片上全速USB接口作为大容量存储设备使用。这个磁盘设备含有FAT12文件系统,是大多数操作系统的标准磁盘设备。盘符将指出CRP状态而且盘中将包含单个文件firmware.bin。在代码保护的设置允许的情况下,删除和重写这个文件将写到flash存储器。读flash存储器上的内容,就像复制firmware.bin文件一样简单。

图1LPC1300USBISP系统

图2WindowsXP上的USBISPfirmware.bin文件

3.USBISP详述

LPC1300片上USBISP固件,虚拟FAT文件系统,这样就可以通过PC软件读写固件。我们详细描述了在几种标准的主流操作系统上更新固件的模拟过程和技巧。

LPC1300连接USB主机,并初始化USBISP模式之后,枚举了USB供应商ID0x04CC和设备ID0x0003。这些信息通常对终端用户屏蔽,但通过固件更新软件,这些信息可以用来寻找已经连接到计算机上的,含有LPC1300的USB设备。一旦找到这些设备,将会发送存储设备查询指令,之后会返回一串描述LPC微控制器产品的附件。LPC134X产品的查询字符串是“NXPLPC134XIFLASH1.0”。通过设备产商的名称“NXP”以及设备型号“LPC134XIFLASH”也可以识别这些设备。这样,设备型号ID的全称为“NXP_LPC13XX_IFLASH”。

LPC1300模拟的磁盘有不用的卷标号,卷标号取决于代码读保护(CRP)的设置和重新编程过程中的细微改变。这些内容在下面会给出简要介绍,完整的文档请参考LPC1300用户手册中的UM10375部分。

如果CRP1或者CRP2可用,当文件被删除或复制新文件而导致原文件改变,用户flash将被擦除。

如果CRP1可用,或者两个CRP都不用,用户flash将被擦除或重新编程(当复制新文件时)。尽管这样,也只有被新文件覆盖的区域才会被擦除或重新编程。因此,理想情况下,新的编程文件将包含整个flash容量(LPC1300为32KB),这样,整个flash容量将处于已知状态。使用填补(32KB或flash大小)编程文件,也可以通过编程工具,对已连接的LPC部件进行错误检查(比较新的固件文件与设备上firmware.bin文件的大小),而不需要额外的配置信息。

注意:只有Windows命令支持LPC1300flash映像文件夹的复制和删除。在覆盖的过程中虚拟盘的空间不足以存储Windows创建的临时文件时,覆盖操作使用Windows的资源管理器将不成功。

3LPC1300用户手册-CRP磁盘卷标号

引导盘虚拟的FAT文件系统,组成了一个单一的文件firmware.bin,文件中包含了整个flash容量的信息。通常,一个盘的容量必须稍大于所需的存储容量,取决于目录和顶层的文件系统分配表。在LPC1300虚拟的FAT文件系统下,需要4个额外的块提供给引导块、根目录、文件分配表。因为MCU需要使用ISP来编程整个flash存储器,这些额外的块使用RAM和ROM上的数据模拟,而不是映射到flash上作为代码存储。因此,掉电时文件系统的元数据将丢失,只有通过文件写的方式编入flash的数据才会被保存。

在 flash上,写进文件系统的数据按照磁盘块的顺序存储,以块4作为起点。如果firmware.bin文件被删除,PC在运行Windows时将以块4 作为起点分配任一新的文件,并随着写入数据的增多而使用更多的块。这意味着,在Windows中,可以使用任一标准的程序或工具,把固件写进 LPC1300。在Windows浏览器窗口中,用户可以删除firmware.bin文件,并拖动一个新文件来编程flash。不幸的是,Mac和 Linux机器上的FAT文件系统以不同的规则分配块,数据写进ISP磁盘,固件写进flash,重新编排。这样,将导致固件更新不成功。为此,有两种变 通方法。最常用的方法是适当的覆盖firmware.bin文件,另一个更暴力的方法是获得管理权限直接进行磁盘设备写/dev操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top