OK335XD uboot移植(二)logo显示

上一篇写到,OK335XD移植uboot已经能支持从SD卡写入程序到Nandflash里。但是logo的显示还未完成,这篇主要是研究移植logo的过程。

因为我不知道飞凌有没修改过管脚,所以和TI下载的核心板原理图对比了一下,还有LCD的定义,发现管脚没有更改,所以代码移植不必修改管脚的定义。

博客参考:

阿尔法:AM335x uboot下移植logo http://blog.sina.com.cn/s/blog_a7d7f4c60102uws7.html

David_HuAm335x之u-boot LOGO的增加 http://blog.csdn.net/hudaweikevin/article/details/17019707 

以及TI论坛:http://e2e.ti.com/support/arm/sitara_arm/f/791/t/217383.aspx


移植步骤如下:

1,下载AM335X_StarterWare_02_00_00_07_Setup.exe,可以从TI官网下载,也可以从 http://download.csdn.net/detail/hudaweikevin/6628705 下载 

(这个文件,主要的作用,是把你的logo图片转换为相应的C语言数组)

2. 安装上述文件

3. 安装完成后,找到该文件的目录/tools/bmpToRaster,装它拷贝到linux系统下。

(注意是你的linux系统,不是uboot,是生成uImage的那个)

4. 进入文件tools / bmptoraster / BitmapReader.h,里面头文件里屏蔽#define COMPRESS,然后make它,生成a.out

(这里#define COMPRESS在tools / bmptoraster / bmptoraster.c中有被引用到,具体我不知道是干什么的,看名字,是把图片压缩成什么的,先不管不影响我们操作。还需要注意的是,如果没有屏蔽COMPRESS,图片最好出来的,可能是纯色,纯红纯绿什么的,一定要屏蔽。如果操作不成功,bmptoraster.c那里,你把#ifdef COMPRESS,全改为#ifdef 0,这样就一定能屏蔽了)

5. 自己做一个24位图,我用ps软件做的,这个不详细介绍了。把图片拷贝到上面生成的a.out目录下。(/ tools / bmpToRaster)

6. 在终端,运行命令:./a.out 480 272 ./logo.bmp ./image.h 24 BGR

(上面,480 272是你图片的像素大小,可自定义修改。logo.bmp是你图片的名称,也可自定义。image.h是生成对应的C图片数组。24 BGR,是生成的图片是24位RGB均为8位的图片,如果你想变成565的图片,可改为565 BGR,相应代码里有的。)

7. 下载UBOOT补丁http://download.csdn.net/detail/hudaweikevin/6628727解压,然后拷贝/lcd到/u-boot/drivers下面。

(注意这里我们已经跳回到Uboot操作了,这个补丁,功能就是使AM335X支持Uboot logo的显示)

8. /u-boot/Makefile 增加:LIBS  = drivers/lcd/liblcd.o

(在编译失败时,不要make clean,这样里面的liblcd.o会消失的,修改完直接make am335x_evm,不要clean了)

9. /u-boot/board/ti/am335x/evm.c:board_evm_init();后面增加:Lcd_Init(); // Initialize

  在/uboot/include/configs/am335x_evm.h加上定义#define CONFIG_LCD_TCM 

10. 在/ uboot / drivers /lcd目录下,有个image.h文件。把里面的数组,换成我们刚在linux下操作,生成的image.h数组( linux / tools / bmpToRaster)

到这里, linux的任务已经完成,不用编译啥的,也不用再管linux了。这时候,如果你就编译Uboot,估计是黑屏,要进入下面的步骤。

11. 取消lcd.c中LCDBackLightEnable()函数注释 (/uboot /drivers /lcd /lcd.c)

12. 因为我们没有用到cpld,所以注释掉LCDBackLightEnable()里的GPIO0Pin7PinMuxSetup(); 否则会开不了机

(这个函数是设置背光的引脚模式和启动的,控制LCD_ENBKL的是GPIO0_7管脚)


13. 这时候会用到gpio_v2.c中的函数,从starterware中拷贝该文件到/uboot /drivers /lcd 驱动中,在makefile中添加该文件编译(别忘记把头文件.h都拷贝进去)

如果编译,会出现未定义GPIO0ModuleClkConfig();编译出错。那么这个函数在哪里?

14. starterware中,找到platform/ evam335x/ gpio.c,513行,里面有GPIO0ModuleClkConfig();函数,把这段函数,拷贝到/uboot /drivers /lcd /lcd.c里,所用到的.h文件,也要在lcd.c中定义,并把文件拷贝到相应目录

到了这一步,lcd基本能亮起来的了,但是lcd的一些参数,貌似还没有设置,显示会有问题的,接下来设置相应屏幕的参数。


设置屏幕参数:

我所使用的屏幕,是飞凌原装的,4.3寸屏 WXCAT43-TG3#001_V1.2

参数:


15. 打开/uboot /drivers /lcd /rasterDisplay.c文件,95行,有个static void SetUpLCD(void)函数,在这里面设置参数

根据自己需要修改参数,里面的BPP,管脚等,但是由于我这里管脚没改,所以只需要设置PCLK、LCD_HSYNC和LCD_VSYNC就可以了

第113行改为: RasterClkConfig(SOC_LCDC_0_REGS, 525*286*60/*23040000*/, 192000000);

第134.137行:    RasterHparamConfig(SOC_LCDC_0_REGS, 480, 41, 2, 2);
    RasterVparamConfig(SOC_LCDC_0_REGS, 272, 10, 2, 2);

16. 编译



步骤和内容比较多,如果编译有问题,请耐心看看。可能不同版本,函数的注释与否也不同,根据自己的需要找到相关的函数加进去就行了。所需要用到的函数,都在AM335X_StarterWare和LCD补丁中。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值