由于默认的UBOOT不支持OMAPL138开机画面,所以需要手动移植, 我的移植分为3个阶段,前2个阶段都以失败告终,如果不想耽误时间可以直接跳转到第3阶段处.
先说说环境 OMAPL138 软件以TI为主, 开发板是我们自己做的, 仿真器是闻亭的
第一阶段:在TI官方提供的开发包里,找到用CCS测试LCD的程序,将此程序稍作修改生成2个文件,my_lcd.h和my_lcd.c
修改后把这2个文件放入common文件夹中,并强制修改common文件夹的Makefile,以生产my_lcd.o
然后在board/davinci/da8xxevm/da850evm.c中增加RASTER_init调用
开机,应该出现整屏的蓝色,但颜色变成了渐变色而且分成了好几块,且一段时间后会花屏,跟彩色电视机的雪花一样,然后在linux的开机画面出现前1s,出现了一个错位/缩小的linux开机画面.
第二阶段,利用CONFIG_LCD
自己写驱动失败,于是想利用UBOOT里的CONFIG_LCD和CONFIG_LCD_LOGO.于是寻找带这2个标记的代码段,在添加这2个选项后,编译会报很多错,主要因为需要指定一款LCD,而UBOOT里没有对138的支持,在drvier/video里找到atmel的驱动,这个对LCD支持比较强,准备在此基础上改,把驱动的核心代码换成上面第一阶段的代码.而思想就是对LCDC进行控制.此过程持续了2,3天,最终因为关联东西太多而放弃.
第三阶段,参考HAWK
在QQ群里有人提到了,/p/hawkboard/downloads/list
作为TI的138的合作伙伴,hawkboard也出了开发板,下载他的UBOOT代码,编译,可以看见启动画面了,只是在uboot和linux直接会有1s的时间图像错位,这点至今我也不会改.
Hawk的源代码在TI的基础上做了不大不小的改动,在LCD方面,他没有修改现有的驱动(如atmel),也没有建立单独的c文件,也就是说它没有用到CONFIG_LCD选项.他的思想和我的第一阶段比较相似,直接写寄存器,只不过他做的更简单,下面给出了我修改的文件:
最后附上UBOOT 启动流程(从LCD角度)
start_armboot ()
{
board_init ()
{
logo_init()
{
初始化LCDC
设置进度条 0%
}
}
.... 其他初始化
设置进度条10%
misc_init_r
{
关闭LCDC控制器
}
设置进度条20%
main_loop
{
加载内核从NAND到内存后, 40%
BOOTM执行后50%
}
}