找回密码
 立即注册
查看: 432|回复: 11

32g12k128设置ROM开始地址问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-11-09 18:49:38

4

主题

15

回帖

102

积分

注册会员

积分
102
发表于 2024-11-13 14:33:10 | 显示全部楼层 |阅读模式
本帖最后由 nvnv-sunny 于 2024-11-13 15:56 编辑

昨天成功进行了加密后EEPROM的读写操作,但是后来发现个奇怪现象,当开始地址设置小于等于0xFE0116,main里的程序会跳过部分代码直接执行while里的,如果开始地址设置为大于0xFE0116,那么代码会按照顺序一条条执行。 b5c6b50d-fd34-475e-a341-9aae07e4aa89.png



以下为main里的代码片段,我尝试将OLED屏幕初始化代码移到读取EEPRON数据函数之前,在ROM开始地址设置为小于等于0xFE0116时候,可以看到屏幕点亮,但是直接跳过了显示图片的代码并进入了while程序。如果我删除读取EEPROM后的写入EEPROM的函数,那么这个问题将消失。如果将开始地址设置为大于0xFE0116,那么这个问题也不存在,非常奇怪,请大神帮忙找找原因。谢谢
void main()
{
//IO口初始化
sys_init();
//i2c总线初始化
IIC_init();        


//读取EEPRON数据函数
EEPROM_RR(EEPROM_ADDRESS, -1);

//读取EEPRON数据后的数据规范判断
if(EEPROM_PAGE==255){
***********
//将规范后的数据重新写入EPPROM
EEPROM_WW(EEPROM_ADDRESS);
}

//OLED屏幕初始化
SSD1306_Init();
delay_ms(50);

//两个i2c写设备操作
***_download();
Set****();

//屏幕显示图片并维持2秒
SSD1306_DrawBitmap(0,0,logo1, 128, 64, 1);
SSD1306_UpdateScreen();
delay_ms(2000);

while (1)
{
************






这是我加密后的代码最大地址,大概71K,EEPROM的读写操作地址设置的是0xFFFC00
eeee.png


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-11-13 15:07:56 | 显示全部楼层
可能是IAP操作意外修改了用户程序,注意地址分配和中断跳转问题
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-11-09 18:49:38

4

主题

15

回帖

102

积分

注册会员

积分
102
发表于 2024-11-13 15:51:29 | 显示全部楼层
本帖最后由 nvnv-sunny 于 2024-11-13 15:57 编辑
Debu*** 发表于 2024-11-13 15:07
可能是IAP操作意外修改了用户程序,注意地址分配和中断跳转问题

IAP我将EEPROM设置为128K最大尺寸,请教中断跳转怎么看,谢谢

点评

中断向量位置不能当EEPROM用,要用LJMP(02H)跳转到用户程序实际的中断函数入口地址  详情 回复 发表于 2024-11-13 16:18
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-11-13 16:18:11 | 显示全部楼层
nvnv-*** 发表于 2024-11-13 15:51
IAP我将EEPROM设置为128K最大尺寸,请教中断跳转怎么看,谢谢

中断向量位置不能当EEPROM用,要用LJMP(02H)跳转到用户程序实际的中断函数入口地址
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-13 16:24:20 | 显示全部楼层
flash rom 冲突,  EEPROM 的设置, 必须以页 512字节(0x1ff)的整数倍 进行!

所以, 楼主的两种设置都是错的, 起始位置应设成 0xfe0200
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-11-09 18:49:38

4

主题

15

回帖

102

积分

注册会员

积分
102
发表于 2024-11-13 16:53:44 | 显示全部楼层
LAO*** 发表于 2024-11-13 16:24
flash rom 冲突,  EEPROM 的设置, 必须以页 512字节(0x1ff)的整数倍 进行!

所以, 楼主的两种设置都是错的, ...

感谢提出意见。截图只是说明问题是起始地址必须大于116才行,只要小于等于116并且有EEPROM写入动作就会出问题,就算起始地址是0xFE0000也是一样。

点评

设置0xFE0000, 就不存在 EEPROM 了, 当然写入不了 用错误的前提, 无论如何测试, 结论也是错误的, 不管程序是否路飞都一样。 程序的最低位置 rom, 和 EEPROM 地址重叠, 程序的开始地址设置(决定了保留 EEPROM长度)  详情 回复 发表于 2024-11-14 03:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-11-09 18:49:38

4

主题

15

回帖

102

积分

注册会员

积分
102
发表于 2024-11-13 16:58:06 | 显示全部楼层
Debu*** 发表于 2024-11-13 16:18
中断向量位置不能当EEPROM用,要用LJMP(02H)跳转到用户程序实际的中断函数入口地址 ...

感谢版主,但是我用的是C不是汇编,而且就一个外部中断,用来读取EC11旋转编码器状态。目前发现问题锁定在EEPROM写入上,只要ROM起始地址小于等于0xFE0116(包含0xFE0000),执行EEPROM写入后就会导致程序启动异常。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:154
  • 最近打卡:2025-04-30 08:40:57
已绑定手机

15

主题

630

回帖

730

积分

高级会员

积分
730
发表于 2024-11-13 18:13:34 来自手机 | 显示全部楼层
学习了  这个问题不常见
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-11-14 03:32:55 | 显示全部楼层
nvnv-*** 发表于 2024-11-13 16:53
感谢提出意见。截图只是说明问题是起始地址必须大于116才行,只要小于等于116并且有EEPROM写入动作就会出 ...

设置0xFE0000, 就不存在 EEPROM 了, 当然写入不了

用错误的前提, 无论如何测试, 结论也是错误的, 不管程序是否路飞都一样。

程序的最低位置 rom, 和 EEPROM 地址重叠, 程序的开始地址设置(决定了保留 EEPROM长度),

当程序的最低位置 rom 小于一定值时, 写入 EEPROM 地址 超出 保留 EEPROM长度时, 程序的

最低位置 rom 被改写, 所以, 就有了执行EEPROM写入后就会导致程序启动异常。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-11-09 18:49:38

4

主题

15

回帖

102

积分

注册会员

积分
102
发表于 2024-11-14 12:01:52 | 显示全部楼层
LAO*** 发表于 2024-11-14 03:32
设置0xFE0000, 就不存在 EEPROM 了, 当然写入不了

用错误的前提, 无论如何测试, 结论也是错误的, 不管 ...

但是如果需要加密,手册里是要求128k全部设置为EEPROM,我理解是在这个条件下,所有空间全部被设定为可写的,这样程序就不存在EEPROM地址重叠的问题,况且我程序设定的EEPROM写入地址是在空间末尾,理论上不会影响程序本身,所以这是我比较疑惑的地方

点评

32G12K128,EEPROM地址设置,必须在程序的最前面(低端)开始,你仔细想想吧  详情 回复 发表于 2024-11-14 12:27
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 00:20 , Processed in 0.128428 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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