OK335XD uboot移植(二)logo显示
来源:互联网 发布:ncre vb 编辑:程序博客网 时间:2024/06/10 19:17
上一篇写到,OK335XD移植uboot已经能支持从SD卡写入程序到Nandflash里。但是logo的显示还未完成,这篇主要是研究移植logo的过程。
因为我不知道飞凌有没修改过管脚,所以和TI下载的核心板原理图对比了一下,还有LCD的定义,发现管脚没有更改,所以代码移植不必修改管脚的定义。
博客参考:
阿尔法:AM335x uboot下移植logo http://blog.sina.com.cn/s/blog_a7d7f4c60102uws7.html
David_Hu:Am335x之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补丁中。
- OK335XD uboot移植(二)logo显示
- OK335XD uboot移植(一)
- (三)uboot移植--GSC3280芯片logo显示
- uboot移植(二)
- Ti-am335x-uboot-2015.07移植LCD显示logo功能
- uboot之logo显示
- (二)uboot移植
- uboot移植准备工作二
- Porting:uboot简介、移植、代码阅读、uboot添加启动logo
- 双framebuffer显示两张uboot logo
- uboot里开机LOGO显示功能解析
- 飞凌OK335xd-linux-4.9.41 移植
- uboot移植记录之二
- uboot移植记录之二
- uboot的2440移植 二
- MPC5125 uboot移植记录(二)
- smdkv210 uboot增加LCD显示(二)
- UBOOT-2010.06 移植 建立自己的demo板 (二)
- 动态规划(篇1)重叠子问题
- recyclerview layoutManager Tangram 的基础 —— vlayout(Android)
- 利用原始套接字实现tracert路由追踪
- imagesc demo
- java 基本数据类型 操作及相互转换
- OK335XD uboot移植(二)logo显示
- SAP在大中华区推出SAP数字化转型教育网络平台
- SQL中的case when then else end用法
- org.apache.log4j.Logger详解
- ubantu安装搜狗输入法
- 递推:Number Sequence(mod找规律)
- centos7 mysql 启动mysqld.service
- 公司项目—判断一个值是不是数字
- matlab图像处理为什么要归一化和如何归一化