|
关于lpc2292 arm的初始化外部总线控制器 问题
[复制链接]
我现在程序在外部flash运行,LPC2292,外部flash是sst39vf1601,在外部flash的0x10000地址(也就是arm看到的0x80010000地址开始我是烧的fpga程序,这个已经是没问题的),在用EASYJTAG-H外部仿真的时候,在MAIN入口处,我也看到了数据。startup.s的设置参照zlg的设置:
ResetInit
;初始化外部总线控制器,根据目标板决定配置
LDR R0, =PINSEL2
IF :DEF: EN_CRP
LDR R1, =0x0f814910
ELSE
LDR R1, =0x0f814914
ENDIF
STR R1, [R0]
LDR R0, =BCFG0
LDR R1, =0x1000ffef
STR R1, [R0]
LDR R0, =BCFG1
LDR R1, =0x1000ffef
STR R1, [R0]
; LDR R0, =BCFG2
; LDR R1, =0x2000ffef
; STR R1, [R0]
; LDR R0, =BCFG3
; LDR R1, =0x2000ffef
; STR R1, [R0]
BL InitStack ;初始化堆栈
BL TargetResetInit ;目标板基本初始化
B __main ;跳转到c语言入口
由于A23我是用作GPIO,所以PINSEL2的[25]BIT我要置0,因此在MAIN中,我是这样设置的:
int main()
{
PINSEL0 = 0x55;
PINSEL1 = 0x14000;
PINSEL2 = PINSEL2 & 0xfdffffff;
IO0DIR = 0x100;
IO1DIR = 0xe0000;
IO2DIR = 0xfff0ffff;
IO3DIR = 0x00800000;
................
...............
}
现在问题是:当我在MAIN中单步运行到“PINSEL2 = PINSEL2 & 0xfdffffff;”后,
0x80010000地址就都变成"ff"了,无法正确读出flash 这个地方的数据(并不是擦除,而是无法看到,无法读出),如果这句隐去,就没有问题,后面的“IO0DIR =
0x100;IO1DIR = 0xe0000;IO2DIR = 0xfff0ffff;IO3DIR = 0x00800000; ”也都是同样的情况,这些设置在arm的片内flash运行都是好的。不知道为什么,清哪位高手指点一下,万分感谢~~~~
|
|