Здравствуйте.

Имеется Core Module HBI-0056B на базе ARM7TDMI. Стоит задача изменить рабочие частоты для процессора и PCI шины. Делается это (теоретически) вот таким куском кода:

Код
UNLOCK_VALUE EQU 0xA05F
LOCK_VALUE   EQU 0xFFFF
HDR_OSC      EQU 0x10000008
HDR_LOCK     EQU 0x10000014
CLK50        EQU 0x0015C000
CLK20        EQU 0x00120000

SC_OSC       EQU 0x11000004
SCLOCK       EQU 0x1100001C
CLK_AP_30    EQU 0x70
CLK_AP_26    EQU 0x60


ENTRY
LDR r0,=HDR_LOCK
LDR r1,=UNLOCK_VALUE
STR r1,[r0]
LDR r2,=HDR_OSC
LDR r1,=CLK50
STR r1,[r2]
LDR r1,=LOCK_VALUE
STR r1,[r0]

LDR r0,=SCLOCK
LDR r1,=UNLOCK_VALUE
STR r1,[r0]
LDR r2,=SC_OSC
LDR r1,=CLK_AP_30
STR r1,[r2]
LDR r1,=LOCK_VALUE
STR r1,[r0]

END


В последнем сегменте кода, который начинается с загрузки значения SCLOCK в третьей сторке выскакивает exception (Cause: Data Abort). Я так подозреваю, что связано это с тем, что пишеться значение не туда куда надо (могу и ошибаться, т.к. профан). В процесе написания программы использовались ARM Integrator/AP User Guide и ARM CM7TDMI User Guide.

Может у кого-то есть опыт, в какую сторону надо копать?

Спасибо.