STM32单片机中FLASH空间的分配之bootloader

根据程序运行流程:正常的程序启动流程:从FLASH启动时,首先从闪存的物理地址入口0x08000000进入,然后是复位中断跳转到复位中断服务程序;复位中断服务程序执行完成后,再跳转到main函数入口,main函数一般为死循环;当外部中断发生时,跳转到中断向量查找表,通过查找表找到对应的中断服务程序地址,跳转到对应的中断服务程序;中断服务程序结束后再次跳转到main函数,这样不断的循环,这是我们的应用程序段;当需要进行系统升级的时候,则需要在这个过程中添加一个bootloader程序段;那么bootloader程序段存在什么位置呢?一般是低地址区域存放bootloader程序段,紧接着的高地址区...

http://www.eeworld.com.cn/mcu/2018/ic-news081940860.html 发布时间: 2018-08-19



STM32 YMODEM实现bootloader

这几天一直在尝试学STM32 bootloader,在网上查阅了一番,发现实现方法不计其数。于是自己有了想动手实现一番的欲望。下面请听我细细道来,我选用的芯片是STM32F103ZE系类,该芯片是512k,每页是2k的。接下来就是你要重点了:其实bootloader说白了,就是在原有APP程序 再加上另一段程序---bootloader,这个bootloader可以对你flash进行擦写操作...
关键词: STM32 YMODEM bootloader

http://www.eeworld.com.cn/mcu/2018/ic-news081940859.html 发布时间: 2018-08-19



STM32F103c8t6通过串口实现IAP在线升级固件

STM32f103c8t6 IAP在线升级设计思路:(自己理解的哈,如果有问题,欢迎大家提出来,一起学习哈)首先程序每次执行都会从基地址0x0800 0000开始执行。IAP程序升级最重要的就是写BOOTLOADER程序,进行引导升级,加载,跳转app程序。每次上电后进入bootloader判断是否升级如果需要升级,就就收bin文件进行升级,如果不升级直接跳入原app程序执行。bootloader和app程序的FLASH大小根据实际情况自己确定分配就可以了下面是我自己画得一个流程图:主要介绍整个大的流程bin文件的生成方法可以百度一下,网上很多的代码:(我是根据正点原子的例程改的,代码只贴了重...

http://www.eeworld.com.cn/mcu/2018/ic-news081940858.html 发布时间: 2018-08-19



如何使用STM32F4的BootLoader和APP程序

通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。2.Bootloader在上述IAP的概念中,bootloader就是其第一个项目程序。bootloader主要实现的功能:从串口、USB等媒介接收数据;存储和搬运数据;程序跳转等功能。3.App程序对IAP概念中,对第二个项目代码的一种称呼Stm32的bootloader和App的...

http://www.eeworld.com.cn/mcu/2018/ic-news081940857.html 发布时间: 2018-08-19



STM32F103 bootloader下载调试过程总结

最近我参与了手机支付项目组的驱动调试,主要涉及到了对于STM32单片机的bootloader下载程序。对于发现和解决的问题在以下进行一个总结。1、对于使用FLASH_LOAD软件来说,当出现软件无法找到MCU的情况时,需要上st官网查询是否有软件更新,因为很可能这块MCU是新版本在以前的软件中没有该芯片的信息。2、对于使用MCU与MCU之间通过ISP下载的方式需要首先确认被下载的MCU的...

http://www.eeworld.com.cn/mcu/2018/ic-news081940856.html 发布时间: 2018-08-19



stm32 bootloader串口升级程序框架

1.IAPIAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过某种通信管道(如USB、USART)接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。2.Bootloader在上述IAP的概念中,bootloader就是其第一个项目程序。bootl...

http://www.eeworld.com.cn/mcu/2018/ic-news081940855.html 发布时间: 2018-08-19



stm32最简单的实现BootLoader

在成熟的产品中,通常都是采用BootLoader方式来升级产品的程序。也就是IAP升级。在了解完基本的实现原理后,可以做到用上位机升级(一般的产品大多采用这种方式,显得非常专业有专用的升级软件,其实背后原理就是BootLoader升级方式)。当然还有一些联网在线升级也是如此。网上有非常多的文件有介绍过stm32 BootLoader的实现。但是讲的可能比较深入难以理解,实现更是无从下手。今天这里...
关键词: stm32 BootLoader

http://www.eeworld.com.cn/mcu/2018/ic-news081940854.html 发布时间: 2018-08-19



STM32 BootLoader升级固件

地址。如在Keil下,可以进行如下的调整。6、实际上,在STM32系列的单片机中,Flash本身就是分扇区的,一个扇区16KB的样子,具体可以查看手册。那么就可以用从第一个扇区的首地址开始下载BootLoader的程序,而从第二个扇区的起始地址开始下载APP程序。如下为STM32F4系列芯片的Flash模块。7、单片机上电之后开始执行BootLoader程序,这是单片机会检测用户是否有升级应用程序...

http://www.eeworld.com.cn/mcu/2018/ic-news081940853.html 发布时间: 2018-08-19



STM32CubeMX Hal库的一些坑

使用的是stm32f103 V1.40版本的库UART DMA发送的问题发送函数 HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size); 发送完毕之后成功的回调函数也正常,可是再次发送的时候就发不出去了。一直返回错误。 我们看下这个函数的代码HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t S...
关键词: STM32 CubeMX Hal库

http://www.eeworld.com.cn/mcu/2018/ic-news081940852.html 发布时间: 2018-08-19



结合固件库探讨STM32读写FLASH步骤、HardFault问题

在单片机系统中,程序的存储一般放在flash中,不易丢失的数据一般存放在EEROM中(比如说我们经常使用的AT24C02,、AT24C256),一般情况不建议将频繁读写的数据存放在Flash中,一方面FLASH在单片机中都是1K或2K为一页,在执行擦除指令时,一次最少要擦除一页的数据。FLASH支持单字节读写,但每次在更新数据前都必须先擦除原数据,然后才能重新写入数据,而不能在原数据基础上更新内容。另一方面,频繁读写Flash会缩短Flash的使用时间。flash的读写一般用作两种情况,第一种是通过程序下载或仿真将程序下载到单片机Flash,另一种是在单片机运行过程中实现在线升级(IAP)。对...

http://www.eeworld.com.cn/mcu/2018/ic-news081940851.html 发布时间: 2018-08-19



STM32cube直接生成内部FLASH做U盘的程序注意事项

使用STM32cube配置好相关引脚,开启USB的Mass Storage Class功能USB_DEVICE中的MSC_MEDIA_PACKET可以设置大一点,增大缓冲区可以提高速度,对于外部spi-flash来说,要大于4096bytes增加堆栈大小,否则USB无法正常工作usbd_storage_if.c添加代码:#define     FLASH_START_ADDR        0x08010000    // #define     FLASH_PAGE_NBR &nbs...
关键词: STM32cube 内部FLASH

http://www.eeworld.com.cn/mcu/2018/ic-news081940850.html 发布时间: 2018-08-19



STM32 HAL 库学习笔记之-------(系统时钟配置)

使用CubeMX工具,让开发者不用理会底层的实现,是整个配置变简单一、准备工具STM32_CubeMXST官网可下载 http://www.st.com/content/st_com/en/search.html#q=cubemx-t=tools-page=1二、打开STM32_CubeMX开始配置,使用内部RC,最大倍频至64MHZ,芯片大于64MHZ,应该选择HSE已STM32F103为例子HSI配置 HSE配置三、以下是STM32F103 HES 72MHZ配置例子:工具生成基本直接可以使用,需要注意是,外部晶振源,有8khz(默认),12khz,可以在System_...

http://www.eeworld.com.cn/mcu/2018/ic-news081940849.html 发布时间: 2018-08-19



STM32 Flash 擦除 读写 成功

参考:http://download.csdn.net/detail/my_friend_ship/4166970要点: 将数据写入flash之前,每次都要擦除,否则会写入不成功,出现的错误状态为:FLASH_Status=FLASH_ERROR_PG写入数据成功后可以在Memory 中查看刚刚写入的数据,具体在Memory 窗口中输入:0x08010000,既可以看到此处的数据为 :Data = 0x15041979;//要写入的地址擦除的起始地址与终止地址#define StartAddr  ((u32)0x08010000)#define EndAddr  ...
关键词: STM32 Flash 擦除 读写

http://www.eeworld.com.cn/mcu/2018/ic-news081940848.html 发布时间: 2018-08-19



STM32 SPI+DMA (HAL库)使用方法

/** SPI硬件初始化,内存地址初始化*/static void Init(void){    uint8_t i;    /*失能SPI1*/    HAL_SPI_DeInit(&hspi1);    /*清空FpgaRevData内存*/    for(i=0;i<REV_MAX_NUM;i++)    {        memset(FpgaRevData[i],0,FPGA_DATA_PAKET_LENGTH)...
关键词: STM32 SPI DMA

http://www.eeworld.com.cn/mcu/2018/ic-news081940847.html 发布时间: 2018-08-19



STM32:Flash擦除与读写操作(HAL库)

大小的扇区,这是flash的特性所决定的。对Flash操作前必需打开内部振荡器。 参考:stm32的学习—FLASH的操作和使用STM32F030F4P6的Flash存储简介STM32F030F4P6硬件配置:  FLASH (16KB)  RAM (4KB) (包含4个扇区,1个扇区包含4个页,每页有1Kbyte空间) 用户可以对Flash进行program 和...

http://www.eeworld.com.cn/mcu/2018/ic-news081940846.html 发布时间: 2018-08-19



STM32 FLASH模拟 EEPROM

);}for (VarValue = 0; VarValue < 200; VarValue++){EE_WriteVariable(2, VarValue);temp=0;EE_ReadVariable(3, &temp);//不换页读出数据是对的,换页后读出数据错误}}STM32 FLASH 模拟EEPROM 使用注意:不少人问该程序的FLASH 保存数据多少和使用寿命保存数据多少跟...
关键词: STM32 FLASH 模拟 EEPROM

http://www.eeworld.com.cn/mcu/2018/ic-news081940845.html 发布时间: 2018-08-19



STM32L系列flash操作陷阱

今天调试代码的时候发现程序出现HardFault了, 看了下堆栈,发现是执行FLASH_ProgramWord()函数的时候出现了异常,起初的时候以为是这块存储区域是坏的,因为其他变量是可以保存的,唯独保存这个变量时候就出异常,换了块板子还是这样, 这下我意识到程序里至少有个很大的bug, 试了多种方法,包括将存储扇区跟正常的对调也没发现什么不对劲的, 最后无意间发现要存储的变量地址是16位对齐的,不是32位对齐,看来问题肯定是出现在这里了;我找到很久以前正常运行的版本,看了下这个变量的地址, 果然是4字节对齐的;我在网上也搜了我这个问题,看来这个问题人家5年前就遇到了,今天又被我撞见了.建议...

http://www.eeworld.com.cn/mcu/2018/ic-news081940841.html 发布时间: 2018-08-19



stm32时钟分割

(1)        TIM_Perscaler来设置预分频系数;(2)        TIM_ClockDivision来设置时钟分割(时钟分频因子);(3)        TIM_CounterMode来设置计数器模式;时钟分割定义的是在定时器时钟频率 (CK_INT)与数字滤波器 (ETR,TIx)使用的采样频率之间的分频比例。&n...
关键词: stm32 时钟分割

http://www.eeworld.com.cn/mcu/2018/ic-news081940840.html 发布时间: 2018-08-19



stm32l476 内部flash HAL库操作方法

Kbyte), bank erase and mass erase (both banks) 摘自 STM32 RM0351 Reference manual 文档stm32l476 dual bank 地址表 写入操作流程FLASH解锁 HAL_FLASH_Unlock(); 擦除FLASH HAL_StatusTypeDef...

http://www.eeworld.com.cn/mcu/2018/ic-news081940839.html 发布时间: 2018-08-19



STOP状态下通过串口唤醒MCU

/*STOP状态下通过串口唤醒MCU唤醒机制:在MCU进入STOP状态后,不能直接通过UART等外设唤醒,在MCU进入STOP前将RX脚设为EXTI模式,并使能对应的中断。 *//***************************************************************************************** 函数名称: main** 功能描述: 起始入口**--------------------------------------------------------------------------------------** 修...

http://www.eeworld.com.cn/mcu/2018/ic-news081940838.html 发布时间: 2018-08-19




<上一页 12345678910111213141516 下一页> 相关结果约5,998个