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,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

    单片机的BootLoader高阶玩法

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

    学习ARM和单片机哪个实用

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

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

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

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

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

    单片机boot脚干嘛的

    单片机boot脚是单片机的引导脚,用于控制单片机的启动和引导过程。在单片机系统中,boot脚的作用十分重要,它影响着整个单片机的工作状态和功
    的头像 发表于 12-19 09:47 9264次阅读

    STM32单片机实现固件在线升级(IAP)

    1,固件升级方案综述单片机固件升级方式有很多种。1、ICP:简单说就是在单片机开发时使用烧录器升级程序,比如使用J-Link烧录
    的头像 发表于 12-16 08:00 4884次阅读
    STM32<b class='flag-5'>单片机</b>实现<b class='flag-5'>固件</b>在线升级(IAP)

    pic单片机汇编程序实例

    以下是一个简单的PIC单片机汇编程序示例,这个程序将实现一个LED闪烁的功能。 首先,我们需要了解PIC单片机的结构和指令集。PIC单片机是一种基于哈佛结构的8位微控制器,具有丰富的指
    的头像 发表于 12-14 11:01 1757次阅读

    单片机如何检测电流?

    单片机如何检测电流? 随着科技的发展,单片机技术在电子设备中得到了广泛应用。其中,电流检测是单片机的一个重要功能之一。本文将详细介绍单片机电流检测技术的原理与应用,并着重探讨了A/D转
    的头像 发表于 12-07 15:37 3598次阅读

    stm32和51单片机的区别

    架构,STM32单片机具有更高的运行速度和更好的性能,可以运行复杂的任务。而51单片机的性能较低,只适合一些简单的任务。 存储 STM32单片机
    发表于 11-20 13:18

    单片机实现简单的LCD设计

    电子发烧友网站提供《单片机实现简单的LCD设计.pdf》资料免费下载
    发表于 11-17 09:29 0次下载
    <b class='flag-5'>单片机</b>实现<b class='flag-5'>更</b><b class='flag-5'>简单</b>的LCD设计