在线时间10 小时
UID269586
注册时间2014-8-27
NXP金币0
TA的每日心情 | 开心 2020-3-27 22:02 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
注册会员

- 积分
- 56
- 最后登录
- 2020-4-3
|
目标平台:S32K146
环境:S32DS
问题描述:
FLash Driver: 封装了Flash的基本操作:Init, erase, write
通过CAN将Flash driver下载到RAM中,然后进行flash操作的时候,就调用RAM中的函数,在操作flash之前会关闭全局中断,操作flash之后再打开全局中断。但是在erase flash的时候,出现了异常,程序进入了default_isr()。
搜索了论坛的相关帖子,基本上都是没有关中断引起来的,我已经关闭了中断
LD文件如下
- /* SRAM_L */
- m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00008000
- m_ram_flag (RX) : ORIGIN = 0x1FFF8000, LENGTH = 0x00000010
- m_flash_driver (RX) : ORIGIN = 0x1FFF8010, LENGTH = 0x00007FF0
-
- /* SRAM_U */
- m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x0000F000
复制代码- .boot_driver :
- {
- . = ALIGN(4);
-
- KEEP(*(.g_FlashHeader))
- KEEP(*(.Flash_Init))
- KEEP(*(.Flash_Deinit))
- KEEP(*(.Flash_Erase))
- KEEP(*(.Flash_Write))
- KEEP(*(.flash_cmd_launch))
- . = ALIGN(4);
- } > m_flash_driver
复制代码
另外:该Flash操作的函数之前是放在flash中的,是可以正常操作的,放在RAM中才会出现异常。
请教版主和各位大神,有没有遇到过该问题,或者有没有相关经验,能够帮助解决该问题,谢谢。
|
|