Image
Image

铁血丹心LLLL

+ 关注

粉丝 1     |     主题 75     |     回帖 542

STM32/GD32 IAP/Bootloader升级APP
2022-11-23 15:40
  • 灵动MM32 MCU
  • 26
  • 1274
  APP地址偏移不能随意,CortexM3 M4权威指南中有如下描述。且还要关注该型号单片机的Flash每页大小,因为写F ...  
  NVIC_VECTTAB_OFFSET_MASK掩码为0x1FFFFF80是因为VTOR寄存器的格式  
  如果在Bootloader跳转APP前就设置了中断向量偏移,则略过。  
  跳转APP后的处理  
  Bootloader升级APP 从串口接收到hex文件的一行,校验后调用以下函数写入FLASH。以下是简单的一个写入流程 ...  
  需要特别注意的是,如果使能了Systick等内核级别的中断,用__disable_irq(); 之类的屏蔽中断的语句是无法关 ...  
  跳转前关闭中断,防止 1)已经跳转到APP了但来了一个中断并落在了Bootloader, 2)中断向量表已偏移但来了 ...  
  application为一个void类型的函数指针,并将其指向Reset_Handler的地址。application()表示执行指针指向的 ...  
  跳转到APP不是跳转栈顶指针,而是跳转Reset_Handler,而Reset_Handler在栈顶指针后,所以需要偏移32位。 ...  
  (0x20000000 == (((__IO uint32_t)APP_LOADED_ADDR) & 0x2FFE0000)) 表示的是从地址0x5000取出栈顶指针,通 ...  
  所以如果正确写入了APP,则 地址 (__IO uint32_t *)APP_LOADED_ADDR 处的栈顶指针必然在该型号单片机的SRAM ...  
  宏 APP_LOADED_ADDR 是APP的起始地址,而APP程序的起始是栈顶指针。 为什么加载地址不是0x8005000? 因为选 ...  
  升级APP完成后,调用如下代码 @ CSDN Tyrion.Mon /* APP栈顶指针合法 */ if (0x20000000 == ((*(__IO uint ...  
【MM32F5270开发板试用】CoreMark程序移植
2023-2-4 13:25
  • 灵动MM32 MCU
  • 28
  • 1762
  将如上几个文件添加到工程中,其中core_portme.c和core_portme.h是需要进行修改的文件,我就放在app文件夹 ...  
  其中simple文件夹下面有两个文件需要用到。 所有需要的文件整理如下: core_list_join.c core_main.c core_ ...  
  开始移植 提取CoreMark源代码并添加工程 下载好的源代码有很多文件和文件夹,但是我们需要的只有很少的几 ...  
  ......  
  下载CoreMark源代码 CoreMark源代码可以点击上面的链接进入下载:  
  移植前准备 在正式移植之前需要准备一个具有uart打印功能和1ms中断周期的定时器(使用systick也可以)。 ...  
  前言 CoreMark是一项测试处理器性能的基准测试。代码使用C语言写成,包含:列举,数学矩阵操作和状态及CRC ...  
2
3
近期访客