Am335x U-boot LCD简易驱动
参考此文档说明,自行添加相关代码:
https://pan.baidu.com/s/1i5gLE89
相关代码:
https://pan.baidu.com/s/1qXL8Bne
在文档说明第四步1中,需要手动添加rasterDisplay.h文件,主要是定义rasterDisplay.c中的函数,方便在xxx/board/ti/board.c中调用。
修改rasterDisplay.c中对应于自己的LCD屏的参数(NHD-4.3-480272)

由NHD-4.3-480272数据手册获得LCD参数
hactive---480
hsw-----41
hfp------2
hbp-----2
vactive-----272
vsw-----10
vfp------2
vbp------2
pclk=9000000Hz(pix-clk)
RasterClkConfig(SOC_LCDC_0_REGS, , );
RasterTiming2Configure(SOC_LCDC_0_REGS, RASTER_FRAME_CLOCK_HIGH |
RASTER_LINE_CLOCK_HIGH |
RASTER_PIXEL_CLOCK_HIGH|
RASTER_SYNC_EDGE_RISING|
RASTER_SYNC_CTRL_ACTIVE|
RASTER_AC_BIAS_HIGH , , );
RasterHparamConfig(SOC_LCDC_0_REGS, , , , );
RasterVparamConfig(SOC_LCDC_0_REGS, , , , );
第四步2中添加相关宏,除了添加CONFIG_LCD_UBOOT还要添加CONFIG_CMDLINE(第五步中控制LCD用),。
第四步3中添加lcdblacklight时要根据自己的板子看一看是哪个GPIO控制的LCD背光,还要确定是该电平背光开还是低电平背光开。
第五步3中在配置文件中添加复位LCD时,若按源文档说明,在RESET_LCD出老报错,所以直接将run RESET_LCD修改为run ULCD reset\0
第三步中获得自己的image.h:在第7小步中再生成自己的image.h中命令的最后需为RGB ./a.out 480 272 ./图片名称.bmp ./image.h 24 RGB,要不然生成的image.h在LCD上显示时黄色显示非标准色。
相关代码修改处:
xxxx/drivers/makefile
obj-$(CONFIG_SPL_WATCHDOG_SUPPORT) += watchdog/
obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += usb/host/
obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/
obj-$(CONFIG_SPL_SATA_SUPPORT) += block/
obj-$(CONFIG_LCD_UBOOT) += lcd/
else
obj-y += adc/
obj-$(CONFIG_DM_DEMO) += demo/
obj-$(CONFIG_BIOSEMU) += bios_emulator/
obj-y += block/
obj-$(CONFIG_BOOTCOUNT_LIMIT) += bootcount/
obj-$(CONFIG_CPU) += cpu/
obj-y += crypto/
obj-$(CONFIG_FPGA) += fpga/
obj-y += hwmon/
obj-y += misc/
obj-y += pcmcia/
obj-y += dfu/
obj-$(CONFIG_X86) += pch/
obj-y += rtc/
obj-y += sound/
obj-y += timer/
obj-y += tpm/
obj-y += twserial/
obj-y += video/
obj-y += lcd/
obj-y += watchdog/
xxxx/drivers/lcd/rasterDisplay
#include "soc_AM335x.h"
#include "evmAM335x.h"
#include "raster.h"
#include "image2.h"
#include "rasterDisplay.h"
xxx/board/ti/board.c
#include "../../../drivers/lcd/rasterDisplay.h"
int board_init(void)
{
#if defined(CONFIG_HW_WATCHDOG)
hw_watchdog_init();
#endif
gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
#if defined(CONFIG_NOR) || defined(CONFIG_NAND)
gpmc_init();
#endif
#if !defined(CONFIG_SPL_BUILD)
#if defined(CONFIG_LCD_UBOOT)
Lcd_Init();
lcdbacklight((3*32+17),"lcdbacklight",0);
#endif
#endif
#if defined(CONFIG_LCD)
am335xfb_init( &lcd_panel_NHD480272 );
gpio_request( (3*32+17), "led_light" );
gpio_direction_output( (3*32+17), 0 );
#endif
#if defined(CONFIG_LCDB)
board_video_init();
//configure_module_pin_mux(bld_pin_mux);
gpio_request( (3*32+17), "led_light" );
gpio_direction_output( (3*32+17), 0 );
//board_video_init();
#endif
return 0;
}
xxxx/cmd
添加lcd_cmd.c
/*
+ * DATE 2017.6
+ * writer:ZYR
+ * Uboot LCD
+ */ #include <common.h>
#include <config.h>
#include <command.h>
#include <asm/io.h>
#include "../drivers/lcd/rasterDisplay.h"
#include "../board/ti/am335x/board.h" int get_int(char *num)
{
int len = strlen(num);
int i, result = ;
for(i=; i<len; i++)
{
result = result * + ( num[i] - '' );
}
return result;
} int get_lcd_cmd(char *var)
{
if ( strcmp(var, "off") == )
return ; if ( strcmp(var, "on") == )
return ; if ( strcmp(var, "reset") == )
return ; if ( strcmp(var, "set") == )
return ; return -; } static int do_lcd( cmd_tbl_t*cmdtp, int flag, int argc, char *const argv[] )
{
int cmd;
/*Validate arguments */
if( ( argc<)||(argc>) )
return CMD_RET_USAGE; cmd = get_lcd_cmd( argv[] ); //
if( cmd < )
{
return CMD_RET_USAGE;
}
#ifdef CONFIG_CMDLINE
if( cmd== )
{
printf("lcd off\n");
lcdbacklight_off(*+);
}
else if( cmd== )
{
printf("lcd on \n");
lcdbacklight_on(*+);
}
else if( cmd== )
{
printf(" lcd reset\n");
board_lcd_reset(*+);
} return ;
#else
return ;
#endif
} U_BOOT_CMD(
ULCD, , , do_lcd,
"lcd open or close or reset \n",
"ULCD [on|off|reset]\n"
);
xxxx/cmd/makefile
obj-y += help.o
obj-y += version.o
obj-y += lcd_cmd.o
# command
obj-$(CONFIG_LCD_UBOOT) += lcd_cmd.o
obj-$(CONFIG_CMD_AES) += aes.o
obj-$(CONFIG_CMD_AMBAPP) += ambapp.o
xxx/include/configs/am335x_evm.h
#define CONFIG_BOOTCOMMAND \
"run findfdt; " \
"run ULCD reset\0; " \
"run distro_bootcmd"
Am335x U-boot LCD简易驱动的更多相关文章
- linux lcd设备驱动剖析四
在"linux lcd设备驱动剖析二"文章中,我们详细分析了s3c24xxfb_probe函数. 文章链接:http://blog.csdn.net/lwj103862095/ar ...
- linux lcd设备驱动剖析一
s3c2440 lcd驱动源码文件是:drivers/video/s3c2410fb.c 看驱动源码首先当然是先看入口函数,这里是s3c2410fb_init函数 [cpp] view plain? ...
- [STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!
[STM8L]基于STM8L152的TAB段式LCD液晶驱动的分析 - 单片机干货 - 中国电子技术论坛 - 最好最受欢迎电子论坛!.md 主控芯片为STM8L152C4T6自带LCD控制器,低功耗系 ...
- LCD底层驱动分析
根据分析的框架,自己写一个LCD驱动程序 1分析LCD硬件原理图 Von和Voff接的是一个电源电路,通过LCD_POWER接的是GPG4来控制LCD电源,高电平表示开启LCD电源 VM接的是CPU的 ...
- MSP430常见问题之LCD 显示驱动类
Q1:晶体一般都是接32768,然后使用液晶很正常.我打算将晶体接6M的替换32768,那么液晶还能正常显示吗A1:看你所用的LCM 模块时序极限是多少HZ,然后看6M情况下,MSP430去驱动LCM ...
- LCD framebuffer驱动设计文档
内容提要:1. android display相关的名词2. 调试LCD驱动需要注意的步骤3. 关于帧缓冲区及I/O内存---------------------------------------- ...
- LPC1788的LCD接口驱动真彩屏
#ifndef __LCD_H_ #define __LCD_H_ #include "common.h" #include "debugserial.h" # ...
- AM335x(TQ335x)学习笔记——USB驱动移植
对于AM335x来讲,TI维护的USB驱动已经非常完善了,本文称之为移植,实际上仅仅是配置内核选项使能USB HOST/OTG功能.废话少说,直接动手开启AM335x的USB驱动配置项. Step1. ...
- AM335x(TQ335x)学习笔记——触摸屏驱动编写
前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题.由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱 ...
随机推荐
- Atcoder arc077 D - 11 组合
Link 题意:给出n个数,其中有一个数会出现两次,其余数只出现一次,问不同长度且不同的子串的数量.取模1e9+7 思路:组合求出所有情况,减去重复情况,注意用逆元即可 /** @Date : 201 ...
- SCI 投稿全过程信件模板一览
- JAVA中反射机制六(java.lang.reflect包)
一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...
- 动态加载js和css的jquery plugin
一个简单的动态加载js和css的jquery代码,用于在生成页面时通过js函数加载一些共通的js和css文件. //how to use the function below: //$.include ...
- 聊聊spring的那些扩展机制
1.背景 慎入:本文将会有大量代码出入. 在看一些框架源码的时候,可以看见他们很多都会和Spring去做结合.举个例子dubbo的配置: 很多人其实配置了也就配置了,没有去过多的思考:为什么这么配置s ...
- scrapy 爬虫踩过的坑(I)
问题1:正则表达式没问题,但是爬虫进不了item方法 分析: 1. 可能是下载不到list 页面的内容.可以用 scrapy shell url 进行测试 2. 可能是allowed_domains ...
- 如何通过掩码计算可用的IP数量
假设掩码是28,28也就是28个1.本身掩码是255.255.255.255那么转换成二进制也就是 11111111,11111111,11111111,11111111 那么28个1也就是: 111 ...
- ISG2018 web题Writeup
0x01.命令注入 这题可以使用burpsuite扫出来,但是可能需要测一下. 得知payload为:i%7cecho%20gzavvlsv9c%20q9szmriaiy%7c%7ca%20%23'% ...
- windos8设置cpu数量和内存大小
转自:http://smilejay.com/2012/03/windows_cpu_memory_setting/ Windows 8(测试版)在作为Xen Guest中的benchmark测试.我 ...
- pip安装使用详解【转】
转自:pip安装使用详解 – 运维生存时间http://www.ttlsa.com/python/how-to-install-and-use-pip-ttlsa/ pip类似RedHat里面的yum ...