我用的是LPC2378(ARM7)处理器;通过EMC接口外扩了一片SRAM,单独访问SRAM时正常,但是以太网初始化后,就不能访问SRAM了,不知道怎么回事?请大家帮忙分析下,谢谢了!!!
如下,init_network()之前访问SRAM正常;
int main (void) {
/* Main Thread of the TcpNet */
U8 cnt,i;
U8 buf[30];
U8 *temp;
U8 *temp2;
init_led();
init_serial();
EmcInit();
sendchar('a');
sendchar('b');
temp= (BYTE *)0x80000000;
temp2= (BYTE *)0x80000000;
for (i=0;i<26;i++)
{
*(temp+i) = 'a'+i;
}
for (i=0;i<26;i++)
{
sendchar(*(temp2+i));/*串口发送a~z正常*/
}
memcpy (buf, temp2, 26);
init_network();
cnt=0;
while (1)
{
timer_poll ();
main_TcpNet ();
if (tick == __TRUE) {
if (++cnt == SPEED) {
net_Send_Data(buf,26);/*以太网发送a~z正常*/
cnt = 0;
}
tick = __FALSE;
}
}
}
但是把init_network()往前放,放到EmcInit()后,就不能正常访问SRAM了,读出来都是0.如下
int main (void) {
/* Main Thread of the TcpNet */
U8 cnt,i;
U8 buf[30];
U8 *temp;
U8 *temp2;
init_led();
init_serial();
EmcInit();
init_network();/*移到前面*/
sendchar('a');
sendchar('b');
temp= (BYTE *)0x80000000;
temp2= (BYTE *)0x80000000;
for (i=0;i<26;i++)
{
*(temp+i) = 'a'+i;
}
for (i=0;i<26;i++)
{
sendchar(*(temp2+i));/*串口发送全是0x00*/
}
memcpy (buf, temp2, 26);
cnt=0;
while (1)
{
timer_poll ();
main_TcpNet ();
if (tick == __TRUE) {
if (++cnt == SPEED) {
net_Send_Data(buf,26);/*以太网发送全是0x00*/
cnt = 0;
}
tick = __FALSE;
}
}
}
|