先上程序:
#define GLOBAL_CLK
#include"def.h"
#include"2440addr.h"
#include"2440lib.h"
#include"2440slib.h"
void Main()
{
char buffer[256];
ChangeMPllValue(92,1,1);
Port_Init();
Uart_Init(0,115200);
Uart_Select(0);
MMU_DisableICache();
MMU_DisableDCache();
Delay(0);
Uart_Printf("Uart Test:\n");
while(1){
Uart_Printf("Please press enter after input a string!\n");
Uart_GetString(buffer);
Uart_Printf("Your Inputing is:%s\r\n",buffer);
Uart_Printf("PCLK=%d\n",PCLK);
Uart_Printf("FCLK=%d\n",FCLK);
Uart_Printf("UCLK=%d\n",UCLK);
}
}
由于是初起步,通过单个的程序测试来进步。这个程序能够在Hjtag+AXD下载到SDRAM下调试成功,也能够直接烧写到NorFlash中运行,就是下载到Nand中却不能运行了,经过测试,我发现,程序在从启动汇编代码:bl Main之后进入Main()后就无情的跑飞了,因为在Main()中如果只点LED的话,是可以成功的,但只要在点灯操作之后******加上串口相关的代码,连灯都点不亮了。如果是串口程序的问题的话,也应该点亮LED再死啊。这里不明白。
这个程序编译完是大于4K的,但是我用的友善原2440init.s作为启动代码,本身就有Nand COPY到RAM的功能 ,我在汇编中通过一步步点灯测试,代码复制过程 是完成了的。
因为通常情况下程序都要在Nandflash中能够运行才算成功。呵呵,我这儿过不去了,请求大师们帮忙啊。
简单的说,也就是在NAndflash中的串口控制台程序运行不了,开机上电后,PC终端没有反应。而友善提供 的测试程序就可以。比较一下,我的程序和他的也没什么区别啊。只不过他实现了更多的功能。