i.MX6Q的qnx调试笔记------调试imx6的LVDS显示配置-imx6的LVDS显示屏调试

来源:互联网 发布:图拉丁 淘宝 编辑:程序博客网 时间:2024/06/11 05:29

锋影

e-mail 174176320@qq.com



QNX提供给imx6-SebreSmart的BSP默认是HDMI显示的,我板子是LVDS接显示屏的,所以需要修改显示这块。从资料介绍来看,QNX是采用了一个OpenWF的API集,具体如何实现的不关心,这里只需要关心的是如何去配置LCD的参数和时序供OpenWF使用即可


OpenWF™是一个免版税,跨平台APIs,它提供了一个底层硬件抽象接口,利用组成成分和显示硬件合成窗口系统。当有新的显示器接入,只需要通过OpenwF的显示配置API(Wfdcfg Library)提供显示器的参数。Wfdcfg Library把显示器的属性和模式提供显示驱动和屏幕,交互图如下:


整个配置过程其实就是生成一个wfdcfg函数库供OpenWF调用


1、修改源码

wfdcfg源码目录:QNX_BSP_sabresmart/src/hardware/wfd/imx6x/wfdcfg,在该目录已经有 imx6x-hdmi目录的存在,拷贝一份hdmi为lvds

$:cp imx6x-hdmi imx6x-lvds$:cd imx6x-lvds$:mv hdmi.c mylvds.c

根据自己LCD参数修改mylvds.c

static const struct mode modes[] = {// 1280x720 @ 60 Hz{.timing = {.pixel_clock_kHz =  74250,.hpixels = 1280, .hfp=110, .hsw= 40, .hbp=220,  // 1650 total.vlines  =  720, .vfp=  5, .vsw=  5, .vbp= 20,  //  750 total.flags = 0,},},};

退出重新编译后,会在QNX_BSP_sabresmart\src\hardware\wfd\imx6x\wfdcfg\imx6x-lvds\nto\arm\dll.le.v7中生成一个wfdcfglibrary-----libwfdcfg-imx6x-lvds.so
libwfdcfg-imx6x-lvds.so拷贝到QNX_BSP_sabresmart\prebuilt\armle-v7\usr\lib\graphics\iMX6X

2、修改配置文件
QNX_BSP_sabresmart\prebuilt\armle-v7\usr\lib\graphics\iMX6X目录中有个graphics.conf的配置文件,可以配置LCD的模式、分辨率等等,其中的分辨率配置得在上面mylvds.c中支持

3、修改Buildfile
在Buildfile的Graphics support部分,添加lvds库文件

在QNX_BSP根目录 make clean  然后 make,生成新的QNX-IFS,拷贝到SD卡中启动板子:
Welcome to QNX Neutrino Initial Program Loader for Freescale i.MX6Q Sabre-Smart (ARM Cortex-A9 MPCore)SDMMC download...load image done.Found image               @ 0x18000008Jumping to startup        @ 0x108068F8SCU_CONFIG = 00005503, 4 cpusL2 cache enabledCPU0: L1 Icache: 1024x32CPU0: L1 Dcache: 1024x32 WBCPU0: VFP-d32 FPSID=41033094CPU0: NEON MVFR0=10110222 MVFR1=01111111CPU0: 412fc09a: Cortex A9 MPCore rev 10 792MHzDetected i.MX6 Dual/Quad, revision Unknown RevisionPLL1 - System     : 792MHzPLL2 - System Bus : 528MHzPLL3 - OTG USB    : 480MHzPLL4 - Audio      : 36MHzPLL5 - Video      : 339MHzPLL7 - Host USB   : 480MHzPLL8 - Enet       : 50MHzIPG clock     : 66000000HzIPG per clock : 66000000HzUART clock    : 80000000HzCSPI clock    : 60000000HzAHB clock     : 132000000HzAXI clock     : 264000000HzEMI_SLOW clock: 29333333HzDDR clock     : 528000000HzUSDHC1 clock  : 198000000HzUSDHC2 clock  : 198000000HzUSDHC3 clock  : 198000000HzUSDHC4 clock  : 198000000HzENFC clock    : 24000000HzCPU1: L1 Icache: 1024x32CPU1: L1 Dcache: 1024x32 WBCPU1: VFP-d32 FPSID=41033094CPU1: NEON MVFR0=10110222 MVFR1=01111111CPU1: 412fc09a: Cortex A9 MPCore rev 10 792MHzCPU2: L1 Icache: 1024x32CPU2: L1 Dcache: 1024x32 WBCPU2: VFP-d32 FPSID=41033094CPU2: NEON MVFR0=10110222 MVFR1=01111111CPU2: 412fc09a: Cortex A9 MPCore rev 10 792MHzCPU3: L1 Icache: 1024x32CPU3: L1 Dcache: 1024x32 WBCPU3: VFP-d32 FPSID=41033094CPU3: NEON MVFR0=10110222 MVFR1=01111111CPU3: 412fc09a: Cortex A9 MPCore rev 10 792MHzcpu_startnext: cpu1 -> fc411d58cpu_startnext: cpu2 -> fc411d58cpu_startnext: cpu3 -> fc411d58System page at phys:10023000 user:fc410000 kern:fc410000Starting next program at vfe054e3ccpu_startnext: cpu0 -> fe054e3cWelcome to QNX Neutrino 6.6.0 on the i.mx6 Smart-Device (ARM Cortex-A9 MPCore)Starting watchdog... Starting SD3 memory card driver...Starting SD1 (microSD connector) memory card driver...Unable to access "/dev/sd20" (2)setting env variables.Starting Screen Graphics...Mempool Map addr range[28100000-2c700000]Mempool Map paddr range[4b600000-4fc00000][Interrupt] Attached irqLine 41 with id 6.[Interrupt] Attached irqLine 42 with id 7.Attached resmgr to /dev/galcore with id:0.done.Launching devb-umass...done# 

从上面打印信息来看Screen已经启动OK了,运行OpenGL的测试程序gles2-gears,可以看到三个齿轮旋转,色差没什么都正常就说明Wfdcfg Library是OK了



阅读全文
0 0
原创粉丝点击