回  复

查看: 40 | 回复: 1

CH554T 安全寄存器读写问题
zircon 发表于:2017-11-14 09:31:41 1# 编辑

1

主题

1

帖子

21

积分
等级

幼儿园

私信

我在CH554T上写代码发现一个问题,下面的三条语句


SAFEMOD    = 0x55;

SAFEMOD    = 0xAA;

GLOBALCFG |= (1<


如果通过编译器放在0到10K的代码地址空间,可用正常控制mcu复位。

但是通过编译器放到0x3400到0x3800的代码空间,那么执行不会成功的。


我想问一下,CH554T是不是在硬件上控制SAFEMOD这个寄存器,只有低端的地址代码才能正常操作。


因为我在实现一个IAP的代码,需要把IAP放在0x3400到0x3800的地址上,目前整个代码功能都已经好了,就是发现 SAFEMOD    = 0x55; SAFEMOD    = 0xAA;执行后,对有安全要求的寄存器都无法操作。


请问CH554T是否存在这样的问题?



TANK 发表于:2017-11-16 11:02:09 2#

1

主题

34

帖子

54

积分
等级

小学一年级

私信

引用:
                 
                   

我在CH554T上写代码发现一个问题,下面的三条语句


SAFEMOD    = 0x55;

SAFEMOD    = 0xAA;

GLOBALCFG |= (1<


如果通过编译器放在0到10K的代码地址空间,可用正常控制mcu复位。

但是通过编译器放到0x3400到0x3800的代码空间,那么执行不会成功的。


我想问一下,CH554T是不是在硬件上控制SAFEMOD这个寄存器,只有低端的地址代码才能正常操作。


因为我在实现一个IAP的代码,需要把IAP放在0x3400到0x3800的地址上,目前整个代码功能都已经好了,就是发现 SAFEMOD    = 0x55; SAFEMOD    = 0xAA;执行后,对有安全要求的寄存器都无法操作。


请问CH554T是否存在这样的问题?




           

没有这样的问题,软复位没有这样的设置。

1.读GLOBAL_CFG ,看写入后的数据是什么,是不是自己写错标志位了、

SAFE_MOD = 0x55;

SAFE_MOD = 0xAA;

GLOBAL_CFG |= bSW_RESET;

// SAFE_MOD = 0x00;

2.检查代码是否超出37FFH,超出会出现异常的。

3.如果还是不能解决,可以讲相关代码发送至rz@wch.cn。帮你查看一下

楼层回复

关闭

评分

关闭
积分 评分区间 今日剩余
评分扣除自身相应积分,普通会员最高加分3分 0~10 5
你需要登录才可以发帖