0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何更简单的给单片机更新固件?

UtFs_Zlgmcu7890 来源:互联网 作者:丁德辉 2017-10-23 18:19 次阅读

单片机已经焊接到威廉希尔官方网站 板上时,如何更简单更便捷的为单片机升级固件便成了一件值得深思的问题。纵观市面上现有的大多数升级方式,不仅需要硬件支持,还需要专用的烧写工具或软件来升级固件,升级过程较为复杂。本文介绍了一种更简单更便捷的固件升级方式,不需要任何专用工具,只是简单的一个删除粘贴操作,便可实现固件更新

当程序运行时,按住指定的按键后按一下复位按键。就启动了升级程序,此时将单片机的USB从机端口连接电脑。在电脑中可以发现一个U盘设备,如图1和图2所示。

1 U盘显示

2 U盘文件

将原文件删除,然后将最新固件的bin文件复制到此U盘中,此时U盘中只有用户用于升级的bin文件。然后拔下USB线,复位重启,便可运行最新固件。

以上就是详细的升级步骤,相比其他方法更便捷也更简单。接下来以NXP公司LPC54608单片机为例来介绍这种升级方法的制作流程。

1.硬件基础

此升级方法的制作至少需要单片机有一个硬件的USB从机。和足够的flash用来存放一段bootloade的代码。

2.编写USB驱动程序

首先要写好USB驱动程序,将片内FLASH的前半段用作代码空间,后半段用作存储空间。使电脑能将其识别为一个U盘,并能够进行读写操作。USB驱动的编写可参考官方例程。

3.对存储空间进行修改

在步骤2中,我们已经将FLASH的后半段用作U盘的存储空间,在LPC54608中,片内flash是512K,存储起始地址是0x40000;结束地址是0x80000。根据FAT文件系统的存储协议,存储起始地址开始的前几个扇区存放的是引导部分,FAT表项部分和根目录部分。数据是从根目录结束扇区的下一个扇区的开始存储。

在本步骤中,对程序的改进就是将数据扇区之前的几个扇区,放在RAM中,使0x40000地址开始存放的即为bin文件的数据。框图如图3所示。

3 存储模型

4.对存储内容进行修改

完成步骤3之后。每次接上USB线,电脑都要对u盘进行格式化,因为RAM区的数据为0,电脑需要从新格式化建立FAT文件系统并将存储的相关信息写到RAM中对应的区域。在window10的电脑中,格式化之后电脑还会在U盘中增加几个必要文件使我们写入的bin文件数据并不是从0x40000开始,因此要进行优化。

在程序初始化的时候。根据FAT的协议填充RAM区域数据。包括引导扇区,FAT表项和根目录。可以在引导扇区中优化FAT表个数和根目录大小来节省RAM空间。并在根目录中放入一个大小为整个U盘大小的bin文件,之后在FAT表项中填充所有可用的簇,使USB线连接上之后,电脑端不需要再格式化并如图1和图2所示。

5.编写bootloader

完成步骤4之后,大部分工作已经完成。接下来就要编写跳转函数来实现向用户程序的跳转。在LPC54608中,我们以flash的前32K用作升级程序的bootloader区域,就是0x0~0x8000之间。32K之后用作用户代码区域。

对于我们制作的U盘存储空间来说,0x8000处开始存放的就是用户bin文件。因此,我们只要在更新完固件后跳转到0x8000处执行程序就行了。跳转代码要包括SP指针的重新赋值,中断向量表的重映射。

6.增加按键判断

程序在上电之后,从0x0地址处取址,此处运行的是bootloader程序,程序在开始的时候判断按键是否按下,如果按下,就进入bootloader程序,如果没有按下,就跳转到用户代码。

至此,整个升级方法的时间就完成了!现在开始体验便捷的升级方式吧。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:如何更简单的给单片机更新固件

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AirPods如何进行固件更新

    AirPods的固件更新通常是通过与iPhone、iPad或Mac等苹果设备连接时自动进行的。以下是更新AirPods固件的介绍: 一、准备工作 确保设备连接 : 将AirPods放入
    的头像 发表于 12-05 14:59 331次阅读

    单片机的中断机制

    单片机的中断机制是一种重要的处理方式,它允许单片机在执行主程序的过程中,能够暂停当前任务,转而处理外部或内部紧急事件。这种机制极大地提高了系统的响应速度和处理能力,使得单片机在各种应用领域中得到广泛应用。以下是对
    的头像 发表于 10-17 18:03 663次阅读

    MSP MCUs的安全现场固件更新

    电子发烧友网站提供《MSP MCUs的安全现场固件更新.pdf》资料免费下载
    发表于 10-09 09:21 0次下载
    MSP MCUs的安全现场<b class='flag-5'>固件</b><b class='flag-5'>更新</b>

    单片机方案开发:如何电子产品单片机选型?

    在给电子项目做IC方案开发时,总是需要考虑到许多关键因素。在本文中,对于即将开发的电子产品做好单片机选型。英锐恩单片机开发工程师将从以下几点进行介绍。 一、选择制造商: 许多生产单片机
    发表于 09-25 10:56

    单片机烧录程序的基本步骤是什么

    单片机烧录程序是单片机开发过程中非常重要的一步,它涉及到将编写好的程序代码通过一定的方式传输到单片机内部的存储器中,使单片机能够按照预定的逻辑执行任务。 一、硬件准备
    的头像 发表于 09-02 09:47 1036次阅读

    stm32和51单片机的区别是什么

    。 性能差异: STM32具有更高的主频和更大的内存空间,可以处理复杂的任务和算法。 51单片机的主频和内存空间相对较小,适用于简单的控制和数据处理任务。 外设差异: STM32具有
    的头像 发表于 09-02 09:33 739次阅读

    单片机为什么被认为是一门简单的技术?

    单片机(Microcontroller Unit, MCU)技术被广泛认为“简单”可能源于几个方面的误解或相对性考虑,但实际上,单片机技术的复杂性和应用广度远超过“简单”一词所能涵盖的
    的头像 发表于 08-21 09:15 314次阅读
    <b class='flag-5'>单片机</b>为什么被认为是一门<b class='flag-5'>简单</b>的技术?

    如何系统、科学地自学单片机

    很多初学者都会面临这个问题,我想学习单片机、我也想学好单片机、我也想系统地学习单片机,但是单片机涉及到的学科多且杂根本不是三天两天就能学完的,很多人都逃脱不了从入门到放弃的怪圈?那么我
    的头像 发表于 03-28 08:03 1080次阅读
    如何系统、科学地自学<b class='flag-5'>单片机</b>?

    单片机抗干扰措施有哪些?

    电磁干扰(EMI)问题日益成为影响单片机稳定性与可靠性的主要障碍。因此,探讨和实施有效的抗干扰措施对于提高单片机系统的性能至关重要。下面为大家简单介绍一种单片机抗干扰措施
    的头像 发表于 03-15 16:36 2472次阅读
    <b class='flag-5'>单片机</b>抗干扰措施有哪些?

    fpga和单片机的区别和联系 fpga和cpu区别

    。FPGA偏向于硬件威廉希尔官方网站 ,其结构是查找表结构,其程序不需要过多考虑芯片的结构,而主要关注时序问题。相比之下,单片机偏于软件方向,它是一个微控制器,通过加载模块软件来实现某种功能。单片机
    的头像 发表于 03-14 17:33 1123次阅读

    单片机的BootLoader高阶玩法

    经过串口传输最终由单片机接收到的固件数据是可能出现差错的,而有错误的固件冒然直接写入到APP区,是一定运行不起来的。
    发表于 03-08 13:58 719次阅读
    <b class='flag-5'>单片机</b>的BootLoader高阶玩法

    学习ARM和单片机哪个实用

    一般在8位单片机与ARM方面的嵌入式系统是有层次上的差别,ARM适用于系统复杂度较大的高级产品,如PDA、手机等应用。
    的头像 发表于 02-02 14:16 963次阅读

    单片机的最小系统由什么组成 单片机的最小系统包括哪些

    单片机(Microcontroller Unit,MCU)的最小系统包括以下几个主要组成部分: 单片机芯片:单片机是整个最小系统的核心部分,它集成了中央处理器(Central Processing
    的头像 发表于 02-02 11:27 1.1w次阅读

    PY32C613单片机简单介绍

    PY32C613单片机是普冉新推出的高性能的 32 位 ARM Cortex-M0+ 内核,宽电压工作范围的 MCU。
    的头像 发表于 01-16 18:06 1085次阅读
    PY32C613<b class='flag-5'>单片机</b><b class='flag-5'>简单</b>介绍

    单片机通过USB升级固件的方法

    单片机升级固件的方法有很多中,比如:ISP(在系统编程)、ICP(在威廉希尔官方网站 编程)、IAP(在应用编程)等。
    的头像 发表于 01-11 09:37 1973次阅读
    <b class='flag-5'>单片机</b>通过USB升级<b class='flag-5'>固件</b>的方法