FCS Warning (ID 25): writing to reserved register
- UID
- 142881
- 性别
- 男
|
FCS Warning (ID 25): writing to reserved register
我在软件debug的时候,在运行_startup的Init程序时,command栏里出现如下错误信息
FCS Warning (ID 25): writing to reserved register at pc = 0xc033. 这是什么原因呢?
难道是由于我在调用_startup之前改变了寄存器和ram的映射?
我用的是D64,register映射到0x1000,ram从0到0x0fff。 |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
你如果改变了寄存器的映射,那么也要相应地修改PRM文件中的参数。 |
|
|
|
|
|
- UID
- 142881
- 性别
- 男
|
多谢回复,我想知道,对寄存器和ram以及eeprom的映射进行修改应该在_startup函数之前还是之后呢?
我现在是在_startup函数开始之前修改的
#pragma NO_FRAME
#pragma NO_ENTRY
#pragma NO_EXIT
#pragma NO_RETURN
void near LIN_Startup( void )
{
INITRM = 0; /* fisrt step: Initialize INITRM register (RAM allocation) */
INITRG = 10; /* last step: initialize INITRG registers (I/O registers allocation) */
asm /* Jump to normal startup */
{
jmp _Startup
}
}
还是应该在执行完_startup后在main()里修改?
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 142881
- 性别
- 男
|
采用上述方法时,再debug中发现一个问题,百思不得其解
INITRM和INITRG的赋值语句为
INITRM = xxx; xxx为一个变量等于0
INITRG = yyy; yyy为一个变量等于0x10
相应的汇编语句分别为:
C166 LDAB 0xC056 ;0xC056为xxx的地址,我看了值为0
C169 STAB 0x10 ;0x10是INITRAM的初始化地址
C16B LDAB 0xc057 ;0xC056为xxx的地址,我看了值为0x10
C163 STAB 0x11 ;0x11是INITRG的初始化地址
但是我单步执行时
commond栏里出现如下warning
writing to unimplemented register at pc = 0xc16b.
我就纳闷了,为什么0x10和0x11是未使用的寄存器呢?
而且虽然出现了warning,但是能一直运行下去。
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|