硬汉嵌入式论坛

 找回密码
 立即注册
查看: 736|回复: 2
收起左侧

[Flash] 制作了FMC Norflash的FLM

[复制链接]

10

主题

53

回帖

83

积分

初级会员

积分
83
发表于 2025-2-18 21:04:51 | 显示全部楼层 |阅读模式
在制作过程中遇到了不少问题在这里记录一下。



首先我是使用CubeMX(6.13.0)生成了外设初始化及其代码。
我使用的是STM32H7S7,生成代码前,勾选只生成BOOT以及不生成main函数
1.png

其次,不编译启动文件(stm32xxxxx.s)
2.png

在Keil的底层文件夹中,把下面图中框出来的文件,放入生成的项目中,其中Target.lin是分散加载文件。
6.png
7.png

在MDK中在设置一些
3.png
4.png
5.png

再往后就是修改FlashDev.c的内容以及实现FLashPrg.C中的函数。在system_stm32xxxx.c中可以把SCB->VTOR那一行注释掉


值得注意的是:
1.使用HAL库的话,一些函数需要重定向
[C] 纯文本查看 复制代码
HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority)
{
	return HAL_OK;
}

uint32_t HAL_GetTick (void) 
{ 
  static uint32_t ticks = 0U; 
         uint32_t i; 
 
  for (i = (SystemCoreClock >> 14U); i > 0U; i--) { 
    __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); 
    __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); __NOP(); 
  } 
  return ++ticks; 
}


void HAL_Delay(uint32_t Delay) 
{ 
  uint32_t tickstart = HAL_GetTick(); 
  uint32_t wait = Delay; 
 
  /* Add a period to guaranty minimum wait */ 
  if (wait < HAL_MAX_DELAY) 
  { 
    wait += (uint32_t)(1U); 
  } 
 
  while((HAL_GetTick() - tickstart) < wait) 
  { 
    __NOP(); 
  } 
}


2.注意变量的地址,可以从map文件查看,发现一些变量地址有冲突,我自己定义了一个不使用的空buffer
8.png

3.一些全局变量并不是0初始化,因此,在一些初始化中会出现错误,比如下面这个(我选择了注释掉)
9.png

最终是能完成烧录,但会显示Verify Fail,但是查看数据是对的,这里可以把Verify函数默认返回成功。
10.png

项目代码如下
FLM_Make_2.7z (1.66 MB, 下载次数: 3)

回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
 楼主| 发表于 2025-2-23 15:36:38 | 显示全部楼层
发现之前做的FLM还是有一些问题,在这里再说明以下
4.如果BlankCheck默认返回0,会导致烧录时不进行擦写!
5.在调用HAL_NOR_Init 时会出现初始化失败,因此,做了如下修改
2.png
其中,这个数值1是根据norflash芯片设置的。
6.在对HAL_NOR_Init 修改之后,要适当加入一些延时
3.png
7.在进行BOOT跳转APP时,我关闭了MPU、ICache以及DCache,在APP里面如果没有再次开启MPU、ICache以及DCache,程序会跑一段时间就停止以及一些奇怪的情况,但内核没有报错。因此,在APP里面要重新打开MPU、ICache以及DCache。
FLM_Make_2.zip (12.77 MB, 下载次数: 4)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-2-19 09:03:48 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 05:48 , Processed in 0.048792 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表