[KEAZN64] Writing in WDOG_CNTL by assembly

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

[KEAZN64] Writing in WDOG_CNTL by assembly

1,002 次查看
mohammedaboelna
Contributor III

Hello,

I am trying to write in register WDOG_CNTL by the following:

1. Saving address of register WDOG_CNTL in register r3

2. Writing needed value "A6" in register r2

3. Storing r2 value inside address of r3

asm ("MOVS r2,#0x40"); /* 40 */
asm ("LSLS r3,r2,#24");
asm ("MOVS r2,#0");
asm ("MOVS r2,#0x05"); /* 05 */
asm ("LSLS r2,r2,#16");
asm ("ADD r3,r2,r3");
asm ("MOVS r2,#0");
asm ("MOVS r2,#0x20"); /* 20 */
asm ("LSLS r2,r2,#8");
asm ("ADD r3,r2,r3");
asm ("MOVS r2,#0");
asm ("MOVS r2,#0x03"); /* 03 */
asm ("ADD r3,r2,r3");
asm ("MOVS r2,#0");

asm("MOVS r2,#0xA6");
asm("STRH r2,[r3]");

At the last assembly line, assembler jumps to "Hard_Fault" exception.

Would you help please ?

0 项奖励
回复
4 回复数

926 次查看
mohammedaboelna
Contributor III

Alright

thank you for your support

0 项奖励
回复

926 次查看
mohammedaboelna
Contributor III

Hi,

I also tried to read this register through "LDR" instruction instead of "STR" and also it jumps to "Hard_Fault" exception.

Would you have any idea why the program also crashes with "Read" instruction.

0 项奖励
回复

926 次查看
jiri_kral
NXP Employee
NXP Employee

This is only one byte - asm("LDRB r2,[r3]"); works fine. 

I'm not sure what you are trying to do, but writting into CTRL and CTRH  is used for WDOG reconfigure. More details you can find in reference manual - KEA64 Sub-Family Reference Manual, Rev. 2, July 2014 - page 218

Jiri 

0 项奖励
回复

926 次查看
jiri_kral
NXP Employee
NXP Employee

Hi, 

the CNTL register is read only - that's why your your program crashes. 

Jiri 

0 项奖励
回复