PIC32MZ 通过U盘在线升级 -- USB Host bootloader

发布者:翅膀小鹰最新更新时间:2019-11-29 来源: eefocus关键字:PIC32MZ  U盘在线升级  USB  Host  bootloader 手机看文章 扫描二维码
随时随地手机看文章

上一篇博文介绍的PIC32MZ HID bootloader是其中之一,这次将要介绍的是PIC32MZ U盘bootloader,也是其中之一。大概在今年6月份,我有尝试过实现PIC32MZ U盘bootloader, 但没有成功。放假了,效率果然不一样,之前一直没能完成,这次也轻松搞定。PIC32MZ U盘bootloader也是在harmony的bootloader例程基础上修改而成。开发环境如下,


1. IDE: MPLABX IDE 4.01


2. Compiler:  XC32 v1.40


3. Library: Harmony 1.07


4. Example: c:/microchip/harmony/v1_07_01/apps/bootloaer/basic/firmware/basic.X.


和PIC32MZ HID bootloader一样,PIC32MZ U盘bootloader在harmony 例程的基础上,首先修改的是项目属性,芯片类型,接着修改的是Bootloader 的Linker file, bsp file, 以及peripheral Libray。 让它们适配我的硬件板子。


接着规划bootloader和应用程序的存储空间,我自建了应用程序的Linker Script. 然后再PIC32MZ U盘bootloader的system_config.h中修改了一下与地址相关的宏定义(这个和HID bootloader修改是一样的):


/*2)The base address and end address must align on boundaries according to the flash page size */

#define BOOTLOADER_FLASH_BASE_ADDRESS   0x9D000000

#define BOOTLOADER_FLASH_END_ADDRESS    (0x9D000000 + 0x200000 - 1)


/* Address of  the Flash from where the application starts executing */

/* Rule: Set BOOTLOADER_FLASH_BASE_ADDRESS to _RESET_ADDR value of application linker script*/

#define BOOTLOADER_RESET_ADDRESS    0xBD000000        //(BOOTLOADER_FLASH_BASE_ADDRESS + 0x1000)

然后是编译U盘bootloader, 也是一次成功。然后是测试bootloader的功能。 我准备了两个测试用的应用程序,一个是简单的点灯程序,另一个是简单的USB device程序,应用程序编译时都用到了客制的Linker Script. 准备了一个8G U盘。 先Copy点灯程序的hex到U盘,重命名为image.hex, 将U盘插上硬件板子。 然后按住SW3按键,重启硬件板子,可以看到LED1一闪一闪,指示正在烧写应用程序。完成后,点灯程序运行正常。但是当我试第二个测试用的应用程序时(简单的USB device程序)。烧写没问题,但是USB device程序运行不正常。我怀疑是U盘bootloader初始化USB为USB host, 最后跳转到USB device的应用程序后,可能某个地方有冲突,所以我优化了我的U盘bootloader, U盘bootloader运行时在初始化阶段,就检测SW3是否有按下,只有SW3按键有按下才初始化成USB host,否则就跳到应用程序。 检测SW3是否有按下的代码如下:


    if (APP_ForceBootloaderCheck() == 1)

    {

        

    }

    else

    {

        if (0xFFFFFFFF == *(unsigned int *)BOOTLOADER_RESET_ADDRESS)

        {

            

        }

        else

        {

            ((void (*)(void))BOOTLOADER_RESET_ADDRESS)();

        }

    }

然后再测试,U盘烧写完第二个测试用的应用程序后, USB device的程序, 运行也正常了。反复测试了多次,都没有问题。


不管HID bootloader或者CDC bootloader, 还是要有电脑才行,U盘bootloader完全不用电脑,只需要U盘就行,有点脱机烧写的感觉,是成本非常低的一种方式。速度也很快。烧写步骤同样简单。


1. 将要更新的应用程序放到U盘,并命名image.hex


2. 插上U盘到硬件板子上


3. 按住硬件板子SW3按键,重启目标板


4. 看到LED1 一闪一闪时, 可以松开SW3按键


接着就是等待烧写完成,烧写完成后会自动跳转到应用程序。没有比这个更简单的更新方式了。


我也很疑惑,为什么之前在6月份的时候,花了几天时间都没有搞定U盘bootloader,这次却这么顺利呢。我想可能原因是接线方式不对,我的硬件板子是从Microchip官方购买的PIC32MZ EC starter kit 。 U盘接到硬件板子到J5, 这个没有异议。但是板子供电要通过J3,使用miniB-A USB线接到电脑。 然后一定要注意, 使用USB host功能时,


1.J4一定不能接USB 线,


2.JP1一定要用跳线短接,


U盘bootloader就是按照以上接线,才调试成功, 6月份那次,估计某处没接对,所以浪费了几天时间。

关键字:PIC32MZ  U盘在线升级  USB  Host  bootloader 引用地址:PIC32MZ 通过U盘在线升级 -- USB Host bootloader

上一篇:PIC32MZ 通过USB在线升级 -- USB HID bootloader
下一篇:PIC24 通过USB在线升级 -- USB CDC bootloader

推荐阅读最新更新时间:2024-11-12 17:45

Cypress推出一个高度集成、可编程、汽车级的USB-C控制器
Cypress半导体公司是领先的嵌入式系统解决方案的领导者,近日推出了拥有一个高度集成、可编程、汽车级且具有电力传输(PD)功能的USB-C控制器。这款汽车级EZ-PD CCG2控制器通过USB执行组织(USB IF)认证,确保了汽车用户的即插即用USB- C用户体验。这款集成控制器提供了更低的系统成本和更快的电力传输,符合PD 2.0标准。 “汽车采用USB-C的动力,是由于用户对移动设备的快速充电需求的增加。”Cypress公司的有线连接业务部副总裁Ajay Srikrishna说:“我们的汽车级EZ-PD CCG2控制器对汽车的充电端口和信息娱乐端口进行了优化,它正在与顶级汽车供应商合作设计,以实现快速充电和通用连接。”
[汽车电子]
USB总线的体系结构
USB(通用串行总线),由Intel公司提出,带宽为12Mbps,与传统接口总线相比,主要优点有三个,1.可接入多达127个设备,目前计算机外设越来越多,PC机内有限的插槽和接口已经不能满足要求,USB缓解了这一矛盾。2.可以热插拔,在电脑通电的情况下可以随时热插拔所连接的设备。3.可即插即用。   设计USB的设备就必须深入了解USB的体系结构。USB通用串行总线同其他串行并行接口不同,它是一个软硬件相结合的系统体系,对于刚刚进入USB设计的工程师来说,这个结构是复杂的。为此,下面论述了USB的一些体系结构和基本概念。 USB总线的总体结构 整个USB总线可以分为3个部分进行描述:USB连接、USB设备、USB主机(如图1
[嵌入式]
USB Type-C转音频+快充方案简介
概述 USB Type-C 转音频 + 快充芯片CH226, 主要针对 Type-C 耳机接口的手机在充电同时使用耳机问题。单芯片内嵌 USB PD控制器,轻松实现 PD 通讯控制,符合 USB Type-C 1.2 与 USB PD 3.0 规范,外围精简,可广泛用于 PD 适配器,Type-C 拓展坞,Type-C 转音频等各类应用。 特点 支持正反插,即插即用,免驱动安装 支持手机、平板、笔记本等 Type-C 接口音频拓展 单芯片完成 PD 协议相关通讯控制,外围精简 支持升压,提升充电功率 ESSOP10封装,便于小型化设计 CH225支持5V充电,CH226支持升压充电 典型应用
[嵌入式]
<font color='red'>USB</font> Type-C转音频+快充方案简介
Google工程师:廉价USB-C数据线有损坏设备隐患
现在越来越多的设备开始采用USB-C标准的接口,USB-C数据线的市场也开始繁荣了起来。但目前市面上USB-C数据线的质量实在是良莠不济,虽然其中有一些数据线的价格非常诱人,但是这些数据线往往也是不合规范的。近日,一位来自Chromebook Pixel团队的Google工程师Benson Leung对这些廉价的USB-C数据线进行了一系列测试。他发现实际上很多数据线并不能兼容他的Chromebook Pixel笔记本。 USB-C的一个重要的特性就是其能够提供高达3A的充电电流,而这正是大部分廉价USB-C所达不到的标准。令人担忧的是,充电电流不达标的话对硬件而言是非常危险的,因为一些传统的设备可能无法将其调节到合适的电流来
[嵌入式]
扩展USB连接
        USB(通用串行总线)是现在支持许多通用现成的外围设备,如键盘,鼠标,打印机和存储设备等的公认作为首选的连接方案。对于致力于工业和消费市场的设备制造商来说,USB也成为满足其连接至PC需求的一个优先的选择。事实上,对于任何一个使用标准的PC作为控制器设备的应用,USB接口的好处是显而易见的。虽然大批量短生命周期的通用外设可以不使用USB接口,一些有更长的生命周期的定制型应用则需要添加USB连接来解决现代PC缺乏传统的连接接口的问题。         在这些现代PC所不支持的接口中,RS-232串行接口是一个典型的例子,从软件的角度看,RS-232相比USB更容易实现且同样仍然满足多种应用需求。但是大多数现代PC已经
[电源管理]
扩展<font color='red'>USB</font>连接
PIC32MZ】开发环境的搭建
Microchip在新一代的32位PIC芯片采用了一种新的架构来进行开发,这就是Harmony。 Harmony类似于ST的STM32CubeMX,将芯片Library封装到中间层,采用统一接口,仅底层不同,不过底层已经由Microchip已经写好,所以,用户上层的同一份代码,理论上稍加修改MHC配置,就可以很方便的移植,有点像Qt的意思了,一次编写,处处编译(不同于Java)。 Harmony还有一个优势,就是可以采用Dynamic驱动,同一类型的外设,仅需要一份驱动代码,非常节省空间,不过Dynamic到目前为止,还有一些瑕疵,例如PWM就没有办法实现完全Dynamic,对应的Tmr只能使用Static,若是其他的Tm
[单片机]
【<font color='red'>PIC32MZ</font>】开发环境的搭建
tiny6410无法使用usb下载问题
开发板:友善之臂Tiny6410 superboot: http://download.csdn.net/detail/u012016202/8564895 主机操作系统:Debian 7 两点声明: 1. 配套光盘里的superboot-6410是烧不进去的,原因不明,用上面的链接中的那个可以。 2. 至今依旧没有解决minitools无法连上开发板的问题,笔者使用的是superboot中的下载运行功能,习惯终端操作,这样反而更方便些。 正文: 我使用的是dnw工具,这里记录下整个折腾流程吧,不愿意往下看的读者也可以直接在这里 点击http://download.csdn.net/detail/u012016202
[单片机]
tiny6410无法使用<font color='red'>usb</font>下载问题
WINCE 开机自动弹USB连接窗口问题(已解决)
平台:S3C6410+WinCE6.0 问题现像: 当启用UART0也就是COM1时,无论插没插USB线,一开机,它都会弹出个USB连接的窗口, 原因分析: 是因为在三星原版本BSP里的串口驱动上制定了UART0为modem(unimodem),没有人打开串口但串口有数据时,会引发modem事件,导致系统以为有人在连接,所以尝试连接主机,我在注册表中尝试过把unimodem弄掉但还是没有解决。 在SMDK6410.BAT把UART0关闭,打开UART3,就没有出现这个问题。所以打算在注册表里把UART0的键放到UART3来做试试,试了,还是不行,只要是打开UART0,也就是 DeviceArrayIndex =dword:0 ;
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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