• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32被识别为U盘直接丢进去个hex就可以运行的原理?

shiyu 2018-11-29 浏览量:2483
如题,STM32开发板被识别为U盘,直接将你编译好的hex丢进去,就可以直接运行了,免去了下载过程,这个是怎么程序定位并运行起来的?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个是MBED方式,在芯片上其实是已经有了一个程序的了,这个程序就是把芯片识别为U盘的程序
    这个程序还可以把U盘中的代码烧写到芯片的Flash中,再把U盘中的文件删除,再让芯片,从运行写入的程序

    • 发布于 2018-12-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:13
  • 这是ARM的MBED方式,只要有ARM的支持都可以用这种方式下载hex文件,实际是在bootloader中将STM32作为一个虚拟U盘,开机时检测到是否有hex文件,如果有,则将hex文件覆盖到程序区,再从程序区启动。
    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以自己写个bootload程序

    我的策略是这样的:

    BL把自己模拟一个U盘,开辟一个空间用来保存文件。

    USB断开连接后,去检查是否存在HEX文件,文件是否合法。

    然后把文件内容写入Flash,删掉原文件。

    从程序区启动

    ----------------------

    HEX文件是有格式的,不能直接写入Flash,还需要解码。如果传的是BIN文件就简单了。

    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 你说的这种方式是ARM推的MBED开发方式。安装驱动后,STM32板子会被识别成U盘,在MBED在线开发后,将生成的文件放入U盘,然后就运行了。

    还是检测是否有hex文件,然后加载这个文件到程序区。

    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 通过文件系统读取文件然后iap更新代码
    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个方式在原子哥的F4和F7上都有体现,电脑上的U盘是板载的NAND FLASH   建议楼主研究一下原子哥的代码来实现
    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个只是一种烧录方式,ST 的官方的板子,板载 st link,是 st link 虚拟的一个U盘,你把 hex 文件复制到u盘上,相当于你把 hex 文件给了 st link,st link 用这个文件又去烧录单片机,跟 keil 直接编译烧录是一眼的,keil 是先编译出文件,然后也是用 st link 把这个文件烧录进去。

    定位主要靠 hex 文件,hex 文件自带定位信息,可以百度 hex 文件就知道了

    bin 文件就不行,bin 只有代码信息,没有定位信息

    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 这不是烧录程序,一般这样的情况是为了升级单片机内部的程序而设计的,这样的单片机内部其实是有两个工程程序的,第一个就是你说的电脑识别为优盘,那个是通过配置单片机的USB实现的,然后电脑把HEX数据传输给单片机后,单片机将数据写到flash里,然后跳转到刚刚写入的区域执行(这个是第二个工程程序)。
    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是通过bootload虚拟成u盘

    开机时自动加载程序到内存里

    • 发布于2018-11-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是丢HEX是丢BIN,是mbed编程方式。

    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 就是初始化个USB外设,再通过USB接收数据后烧写到Flash中
    • 发布于2018-11-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种是下载器的功能来的,下载器先划出一块缓冲区域,然后从PC端获取到hex文件,解析之后通过SWD或者JTAG协议发给目标MCU
    • 发布于2018-12-13
    • 举报
    • 评论 0
    • 0
    • 0

  • 实际也是通过一个BootLoader的方式。里面有一个引导程序在不停的读取和写入数据
    • 发布于2018-12-31
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32被识别为U盘直接丢进去个hex就可以运行的原理?