硬汉嵌入式论坛

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

请教硬汉哥freeRTOS-flash擦除问题

[复制链接]

4

主题

7

回帖

19

积分

新手上路

积分
19
发表于 2021-2-2 14:03:19 | 显示全部楼层 |阅读模式
在裸机编程时候,为了方便用户二次开发,就在flash一个扇区或者多个扇区定义一个大的const数组,用__at指令写入到指定的flash地址,这个const数组通常还会初始化一些配置参数在里面的,然后后续用户有二次开发的解释性代码通过串口下载时候,就会擦除这个const常量起始的区域,重新flash编程进去用户数据,然后自己写的解释器就会根据指针去这个区域执行解释用户的指令,以前一直用这个方式裸机编写的PLC软件都没有问题,现在初学freeRTOS,就将代码移植到了操作系统下,现在的问题是,在只移植好freeRTOS的工程里,任然用const定义一个全局常量数组到flash指定地址,但是这个数组所在的flash区域,那怕只要用stlink去扇区擦除的话,更别提重新对这个区域重新编程,直接就将freeRTOS擦死机了,flash这个地址区域确实是空闲的区域,没有覆盖程序指令的风险,经过调试,有时候是死机在解除任务调度锁的函数里,有时是在hradfault死循环里,望硬汉哥指教,这应该怎么处理好,

裸机情况下源码.rar

9.03 MB, 下载次数: 4

带有freeRTOS源码.rar

20.48 MB, 下载次数: 3

回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2021-2-2 16:32:32 | 显示全部楼层
很奇怪,“stlink去扇区擦除” ?? 既然mcu在运行中,就只能使用自身的flash操作函数,标准库,HAL库都有flash读写擦除函数。当然不能用stlink了。 stlink连接上以后,mcu会进入debug模式,mcu运行就改变了,rtos自然也不能正常运行了哦。
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2021-2-2 22:00:48 | 显示全部楼层
caicaptain2 发表于 2021-2-2 16:32
很奇怪,“stlink去扇区擦除” ?? 既然mcu在运行中,就只能使用自身的flash操作函数,标准库,HAL库都有f ...

使用库的函数去擦写也是一样的进入hardfault里面了,是确定了429IG的最后那个128KB扇区没有使用的,这只是为了更快比较下裸机和带RTOS情况,采用STLink去直接扇区擦的,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-2-3 07:59:44 | 显示全部楼层
将你FreeRTOS工程里面main函数中所有代码注释掉,改为基本的外设初始化后,直接操作擦写是否正常。
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2021-2-5 15:56:29 | 显示全部楼层
eric2013 发表于 2021-2-3 07:59
将你FreeRTOS工程里面main函数中所有代码注释掉,改为基本的外设初始化后,直接操作擦写是否正常。

感谢版主和硬汉哥指导,学FreeRTOS也是看着硬汉哥的PDF学习的,找到解决的办法了,我把那个全局定义的程序块不要了,在开机上电初始化时候检查flash程序存储区首地址是否有写入系统参数,如果没有就用flash字节写入方式把数据写入flash,然后程序任务中其他地方改成flash直接地址操作数据,不用数组加下标方式了,就没有问题了。[img][/img]
参数区3.PNG
数据区2.PNG
数据区1.PNG
回复

使用道具 举报

5

主题

30

回帖

45

积分

新手上路

积分
45
发表于 2021-2-5 17:16:48 | 显示全部楼层
lchao78 发表于 2021-2-5 15:56
感谢版主和硬汉哥指导,学FreeRTOS也是看着硬汉哥的PDF学习的,找到解决的办法了,我把那个全局定义的程 ...

老哥,有没有可能是数组加下标的方式导致指针飞了,所以掉进了硬件异常里面。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 06:17 , Processed in 0.178368 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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