c10l05 bld - d1.amobbs.comd1.amobbs.com/bbs_upload782111/files_30/ourdev_565971uxw38g.pdf · msd...
TRANSCRIPT
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 1 页
使您的USB应用支持“自举程序”
C10L05 BLDC10L05 BLD
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 2 页
课程目标
l 了解在嵌入式应用中, 自举程序的应用
l 了解USB设备自举程序的原理
l 了解USB嵌入式主机自举程序的原理
l 掌握怎样实现USB自举程序的功能
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 3 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 4 页
概述
l 自举程序概念
l 自举程序就是在应用程序之前运行的一小段程序。通过这段程序,我们可以初始化硬件设备、建立内存空间的映射图,更新应用程序。
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 5 页
概述
l 应用场合及优点
l 修复设计中的BUGl 更新现有的设计,添加新的功能
l 不需要工程师去产品现场,可以远程更新或者通过终端用户完成
l 升级方便,不需要额外的烧录工具
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 6 页
概述
l 自举程序的分类l 串口自举程序
l 以太网自举程序
l SD卡自举程序
l CAN自举程序
l USB自举程序
---- USB 设备自举程序
---- USB 嵌入式主机自举程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 7 页
概述
l 串口自举程序l AN1094 – dsPIC30F/33F和PIC24F/24H器件的
自举程序
l AN1157 – A Serial Bootloader for PIC24F Devices
l AN732 – Implementing a Bootloader for the PIC16F87x
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 8 页
概述
l 以太网自举程序l 下载我们的TCP/IP协议栈
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en537041
l 请参考默认的安装路径:
C:\Microchip Solutions\Internet Bootloader App
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 9 页
概述
l SD 卡自举程序
l PIC18F入门工具包
l Beta版的源代码
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 10 页
概述
l CAN自举程序
l AN247-A CAN Bootloader for PIC18F CAN MCUs
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 11 页
概述
l USB自举程序
l 最新的USB协议栈Microchip Application Libraries v2009-08-31.ziphttp://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2680&dDocName=en537044
l 包括上位机的应用软件和PIC单片机的固件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 12 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 13 页
自举程序的原理
l 自举程序原理l 先用烧录工具在MCU里面烧录一段程序。
这段程序的功能是能够从外部(PC/SD卡/U盘等)读取应用程序,然后自身烧录到程序空间,然后运行应用程序的功能。
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 14 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 15 页
USB的协议规范
l USB Specification 1.1l USB Specification 2.0l On-The-Go Supplement to USB
2.0l USB Specification 3.0
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 16 页
USB相关的术语及缩写
l USB----Universal Serial Bus(通用串行总线)
l SIE ---- Serial Interface Engine(串行接口引擎)
l Device/Host/OTG/DRD(设备/主机/OTG/DRD)
l USB Class(USB类)
l Endpoint(端点)
l Pipe(管道)
l Descriptor(描述符)
l Enumeration(枚举)
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 17 页
全速USB基础知识l USB是“单主 + 多从”查询式总线
鼠标 扬声器打印机
USB主机控制器(主)和根集线器(Root Hub)
SOF SOF SOFIntEP1
IsoEP1
BulkEP2
IntEP1
IntEP1
BulkEP2
帧的开始
IsoEP1
IsoEP1
IsoEP1
IsoEP1
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 18 页
“逻辑”USB设备
设备(生产商:Microchip Technology)(产品:Mouse in a Circle Demo)(VID_PID:04d8_0000)
配置(活动)
接口(鼠标)
端点0(控制 – OUT)USB系统软件
(默认控制管道)
USB设备特定的管道(HID)
MCHPFSUSBHID TX/RX功能
模拟/数字I/O
端点0(控制 – IN)
端点1(中断 – IN)
端点1(中断 – OUT)
逻辑设置由设备描述符表来表示,保存在设备固件中。
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 19 页
最大传输速率-USB全速
传输/端点类型
查询间隔 对于这一类型的所有传输,
% 保留BW/帧
最大数量的数据字节/帧/端点(每帧的最大事务数@ 最大Ep长度)*
数据
完整性
中断 固定,定期 90 64 (1 x 64) Y
同步 固定,定期 90 1023 (1 x 1023) N
批量 可变,使用空闲带宽
0 1216 (19 x 64) Y
控制 可变 10 832 (13 x 64) N
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 20 页
USB的类
操纵杆
鼠标
外部硬盘驱动器
ICD2
调制解调器
软盘驱动器数据手套
键盘
以太网适配器
人机接口设备类(HID)
海量存储设备类(MSD)
通信设备类(CDC)
定制类(供应商类)
更多的类….
PICkit™ 2入门工具包
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 21 页
USB驱动程序选择
功能特性 HID CDC mchpusb.sys(v1.0.0.6)
WinUSB
Windows内建驱动程序支持
Y 需要 .inf N 需要 .inf
64位PC支持 Y Y Y Y
XP支持 Y Y Y Y
Vista支持 Y Y Y Y
传输类型
控制 Y N Y Y
中断 Y N Y Y
批量 N Y Y Y
最大速度 64KB/s ~80KB/s ~1.0 MB/s ~1.0MB/s
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 22 页
USB设备的枚举过程
其他端点
端点0 IN(控制数据)
端点 0 OUT(控制数据)
双口RAM
描述符
控制传输
总线复位 设置地址(0) 得到描述符 配置设备设备准备好数
据通信
l 请参考USB规范第9章获得更多信息
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 23 页
描述符
是什么设备
l 每个USB设备包含了一些自身数据结构的信息被称作描述符。当设备连接到USB总线时,它将发送描述符给主机。描述符允许主机识别新插上的设备,配置设备,下载必要的驱动。
l 有5种标准的描述符类l 设备描述符l 配置描述符l 接口描述符l 端点描述符l 字符串描述符
设备
描述符
是鼠标。
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 24 页
描述符
设备
配置 1
接口 0
端点
接口 1
端点 端点 端点
其他的配置描述符 …
字符串 0字符串 1
字符串 N
其他的接口描述符 …
l 描述符被存储在非易失性的闪存存储器中
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 25 页
描述符—示例
PICDEM USB
Microchip
设备
配置 1
接口 0
端点
Manu. String
Prod. String
USB 2.0, VID = 0x04D8,PID = 0x0007, Num. Configurations,
Strings?
Configuration #1: Bus-Powered,Remote Wakeup, 500mA, Num.
Interfaces
Interface #0: HID Class, Num. Endpoints
Endpoint 1 IN, Interrupt Transfer Type, 64-byte buffer, Poll every 3 ms
Unicode Characters
Go USB!
Other String
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 26 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 27 页
Microchip USB协议栈的介绍
l 我们一直在更新USB的协议栈,版本从最初的1.1到现在的2.5b
l 协议栈覆盖Microchip所有的带USB SIE的MCU,包括8位\16位\32位
l 协议栈包括了常用的USB类:HID类/ MSD类/CDC类/客户定制类
l 协议栈也包括设备/主机/OTG/DRD示例程序,还有要在PC中运行的示例程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 28 页
Microchip USB协议栈的介绍
l 免费
l 开源代码
l 下载地址
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2651¶m=en534494
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 29 页
Microchip USB协议栈的介绍
l 安装后默认路径C:\Microchip Solutions
PC自举程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 30 页
Microchip USB协议栈的介绍
l 安装后默认路径C:\Microchip Solutions(续)
U盘自举程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 31 页
Microchip USB协议栈的介绍
l 方便移植和修改
在同一个USB 类目录下,有不同系列PIC单片机的项目文件
l 有用Visual C++ express 2008的示例程序
l 有提供DLL文件和驱动程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 32 页
Microchip USB协议栈帮助文件
l 默认路径:C:\Microchip Solutions\Microchip\Help
l MDDFS Library Help.chml USB Device Library Help.chml USB Embedded Host Library
Help.chm
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 33 页
Microchip USB协议栈MDDFS 帮助文件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 34 页
Microchip USB协议栈USB 设备库帮助文件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 35 页
Microchip USB协议栈USB 嵌入式主机库帮助文件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 36 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 37 页
USB 设备自举程序的特点
l 需要PC或者嵌入式主机
l 需要一个小的应用程序
l USB 设备自举程序占用较少程序空间
l PIC18/PIC24/PIC32都支持
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 38 页
USB 设备自举程序的分类
l 客户定制类
l HID 类
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 39 页
USB 设备自举程序
l 客户定制类l 程序代码
C:\Microchip Solutions\USB Device -Bootloaders\Vendor Class - MCHPUSB Bootloader
l PC端的应用程序(部分代码)
l 需要驱动程序和inf文件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 40 页
USB 设备自举程序
l PC 端的应用程序-客户定制类
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 41 页
USB 设备自举程序
l 怎样修改应用程序-客户定制类l 针对PIC18F4550,修改lkr文件
l 参考传统的USB stack version1.2/1.3l 驱动
C:\Microchip Solutions\USB Tools\MCHPUSB Custom Driver\MCHPUSB Driver\Release
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 42 页
USB 设备自举程序----客户定制类
l 演示 I演示通过PC用客户定制类更新应用程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 43 页
USB 设备自举程序
l HID 类l 程序代码
C:\Microchip Solutions\USB Device -Bootloaders\HID - Bootloader
l PC 端的应用程序(用Visual C++2005 express Edition)
l 不需要驱动程序和inf文件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 44 页
USB 设备自举程序
l PC 端的应用程序-HID 类
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 45 页
USB设备自举程序----HID类
l 在我们的协议栈中,应用程序默认添加了此功能
l PIC24F/PIC32l 添加文件PIC24 HID Bootloader
Remapping.sl 怎样处理中断程序,参见AN1157
方法一:修改中断向量,指向中断函数
方法二:修改中断向量,指向中断向量跳转表
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 46 页
USB 设备自举程序----HID类
l 在我们的协议栈中,应用程序默认添加了此功能
l PIC18 USBl 修改中断入口向量地址
l 修改lkr文件的程序起始地址
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 47 页
USB 设备自举程序----HID类
l 演示 II演示通过PC用HID类在更新应用程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 48 页
课程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 49 页
USB 嵌入式主机自举程序的特点
l 不需要PC,需要U盘
l 不需要PC的应用程序和驱动程序
l 只有PIC24/PIC32支持
l 占用较大的程序空间
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 50 页
USB 嵌入式主机自举程序
l 支持文件系统FAT16/FAT32l 自举程序代码
C:\Microchip Solutions\USB Host - Bootloaders\Mass Storage Bootloader
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 51 页
USB 嵌入式主机自举程序的流程图
复位 main() BLIO_InitializeIO()
当下载成功后
LoadApplication()
BootApplication()
当自举程序条件成立
USBTasks()在哪里调用的
呢?
while(1)
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 52 页
USB 嵌入式主机自举程序的源程序
l 项目文件里的源文件
USB协议栈和文件系统
配置PIC使能自举程序的条件
从U盘读文件主程序
写hex文件到闪存
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 53 页
Intel Hex文件的格式
l 记录格式 : :llaaaatt[dd...]cc: Intel hex记录的开始符
ll 记录的长度
aaaa 记录的起始地址
tt 记录的类型
dd… 记录的数据
cc 记录的校验码
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 54 页
USB 嵌入式主机自举程序
l 自举程序与应用程序的差别l 不同的gld文件,p24FJ256GB110.gld
C:\Microchip Solutions\USB Host -Bootloaders\Mass Storage Bootloader
l 部分中断向量表…
LONG(ABSOLUTE(__DefaultInterrupt)); /* __Interrupt4 not implemented */LONG(ABSOLUTE(0xA828)); /* __IC2Interrupt*/LONG(ABSOLUTE(0xA82C)); /* __OC2Interrupt*/LONG(ABSOLUTE(0xA830)); /* __T2Interrupt*/LONG(ABSOLUTE(0xA834)); /* __T3Interrupt*/LONG(ABSOLUTE(0xA838)); /* __SPI1ErrInterrupt*/LONG(ABSOLUTE(0xA83C)); /* __SPI1Interrupt*/LONG(ABSOLUTE(0xA840)); /* __U1RXInterrupt*/LONG(ABSOLUTE(0xA844)); /* __U1TXInterrupt*/LONG(ABSOLUTE(0xA848)); /* __ADC1Interrupt*/LONG(ABSOLUTE(__DefaultInterrupt)); /* __Interrupt14 not implemented */
…
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 55 页
USB 嵌入式主机自举程序
l 怎样修改应用程序
l 添加两个文件到应用程序的项目
C:\Microchip Solutions\USB Host - Bootloaders\Mass Storage Bootloader\Application Files
l MSD Bootloader Remapping.cl p24FJ256GB110_Host_MSD_Boo
tloader.gld
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 56 页
USB 嵌入式主机自举程序
l 为什么要添加MSD Bootloader Remapping.c
#include "usb_config.h"void __attribute__((address(0xA800))) _InterruptRemapping(){
asm("reset");Nop();asm("goto __DefaultInterrupt"); //asm("goto __ReservedTrap0");asm("goto __DefaultInterrupt"); //asm("goto __OscillatorFail");asm("goto __DefaultInterrupt"); //asm("goto __AddressError");asm("goto __DefaultInterrupt"); //asm("goto __StackError");asm("goto __INT0Interrupt "); //asm("goto __INT0Interrupt");
…
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 57 页
USB嵌入式主机自举程序
l 应用程序的gld文件
l p24FJ256GB110_Host_MSD_Bootloader.gld----修改复位的入口地址
----修改程序的起始位置
----删除中断向量表
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 58 页
USB 嵌入式主机自举程序
l 把编译后生成的文件改名为image.hexl 注意进入自举程序的条件
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 59 页
USB 嵌入式主机自举程序----代码保护
l MCU本身的代码保护功能
可参考MCU的数据手册第25.4节l 添加额外的保护措施
自举程序前备份应用程序在外部的存储空间,当自举程序运行不成功或者有异常时可以恢复。
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 60 页
USB 嵌入式主机自举程序
l 演示 III存储hex文件在U盘,然后通过U盘来更新应用程序
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 61 页
USB自举程序对比
功能特性 USB设备自举程序
客户定制类
USB设备自举程序HID类
USB嵌入式主机
自举程序
外部资源 需要PC 需要PC U盘
驱动 需要 不需要 不需要
PIC PIC18/PIC24/PIC32 PIC18/PIC24/PIC32 PIC24/PIC32
程序空间 大约4K 大约4K 大约15K
使用方便性 ★ ★ ★ ★ ★ ★ ★ ★ ★
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 62 页
日程安排
l 概述
l 自举程序的原理
l USB基础的回顾
l Microchip USB协议栈的介绍
l USB 设备自举程序
l USB 嵌入式主机自举程序
l 总结
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 63 页
总结
l 自举程序的原理与分类
l USB的基础概念回顾
l USB自举程序
l 演示及对比特点
l 参考资料
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 64 页
问题
和
致谢 !!!
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 65 页
资料及参考文献
l 应用笔记l AN1094l AN1157l AN732
l 网站链接l www.usb.org(USB规范及类定义)l www.lvr.com(USB示例)l www.microchip.com/usb
l 论坛l http://www.microchip.com/forums/tt.aspx?forumid=102l http://www.picpic.cn/bbs/forumdisplay.php?fid=35
© 2009 Microchip Technology Incorporated. 版权所有。 C10L05 BLD 第 66 页
商标
l Microchip的名称和徽标组合、Microchip徽标、dsPIC、KeeLoq、KeeLoq徽标、MPLAB、PIC、PICmicro、PICSTART、rfPIC和 UNI/O均为Microchip Technology Inc.在美国和其他国家或地区的注册商标。
l FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MXDEV、MXLAB、SEEVAL和The Embedded Control Solutions Company 均为Microchip Technology Inc.在美国的注册商标。
l Analog-for-the-Digital Age、Application Maestro、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPLAB Certified徽标、MPLIB、MPLINK、mTouch、Octopus、Omniscient Code Generation、PICC、PICC-18、PICDEM、PICDEM.net、PICkit、PICtail、PIC32徽标、REAL ICE、rfLAB、Select Mode、Total Endurance、TSHARC、UniWinDriver、WiperLock和ZENA均为Microchip Technology Inc.在美国和其他国家或地区的商标。
l SQTP是Microchip Technology Inc.在美国的服务标记。
l 在此提及的所有其他商标均为各持有公司所有。
l © 2009, Microchip Technology Inc.版权所有。