上次的简易bootloader虽然下载验证成功,可以成功引导内核启动linux,但是LCD一直处于白屏状态,没有显示。而mini2440的vivi就没有这情况,所以问题可能出在一些与LCD有关的初始化上。经过查看原理图和对照源代码,做了一些修改,最后LCD可以正常工作。
修改工作主要就是将对应LCD控制线和数据线的GPIO口进行初始化:
主要代码如下:
void port_init(void)
{
GPACON = 0x7fffff;
GPBCON = 0x044555;
GPBUP = 0x7ff; // The pull up function is disabled GPB[10:0]
GPCCON = 0xaaaaaaaa;
GPCUP = 0xffff; // The pull up function is disabled GPC[15:0]
GPDCON = 0x00151544;
GPDDAT = 0x0430;
GPDUP = 0x877A;
GPECON = 0xaa2aaaaa;
GPEUP = 0xf7ff; // GPE11 is NC
GPFCON = 0x55aa;
GPFUP = 0xff; // The pull up function is disabled GPF[7:0]
GPGCON = 1<<8;
GPGDAT = 0;
GPHCON = 0x16faaa;
GPHUP = 0x7ff; // The pull up function is disabled GPH[10:0]
EXTINT0 = 0x22222222; // EINT[7:0]
EXTINT1 = 0x22222222; // EINT[15:8]
EXTINT2 = 0x22222222; // EINT[23:16]
}
将 port_init 函数加到boot.c中的主函数里即可。