cubieboard 通过VGA点亮电脑屏幕笔记

前题:由于公司某些方面的需要,于是就开始尝试了来通过VGA输出--因为不可能每个地方都是高清电视,这是其一;如果要买一个HDMI转VGA的话,成本上就有所上升:反正吧,各种理由,都觉得直接通过VGA输出是必须有的。当然,cubieboard本身也支持VGA输出,只是需要自己动手搞搞罢了。

--------------------------

硬件方面的准备:

VGA的相关资料:

1,首先VGA分为公头和母头,一般电脑屏幕是公头,那么就得自己准备母头,公母一配对,才会有下文。那么下面是VGA的线序图:

cubieboard 通过VGA点亮电脑屏幕笔记

VGA一共15个引脚,从宽到窄。每个引脚定义如下图:

cubieboard 通过VGA点亮电脑屏幕笔记

我们这里需要的是图形的输出,和图形的颜色的输出。这包括两方面的内容:

a,图形的输出--图形的横坐标和纵坐标的输出,然后才会组成一幅图:于是这里需要行同步和场同步,当然也有叫帧同步的。

b,图形的颜色输出--RGB三原色,然后三原色进行混杂就可以组成各种颜色了。

由上面两点可以知道,我们需要VGA的1、2、3、13、14这几个引脚;同时,因为接地的原因,VGA上的所有的地引脚都要接上,于是6、7、8、10都需要接上地。当然,论坛上有的图中把5和11也接上的,这个不知道基于什么理由。

--------------

cubieboard板子上的接法:

VGA是接到板子上的引出引脚上的,也就是那两排48根引脚,它们似乎都是直接从A10的芯片上引出来的,具体可参考如下链接的说明:

http://linux-sunxi.org/Cubieboard

这两排插针引脚的定义,上面都已经说了,在网口和USB之间的是U15,在SATA口旁边的是U14。而VGA的行和场的接线是接到U14的27号脚和30号脚上的;RGB和RGB的地线等都是接到U15上的,参看下面截图<来自官网>:

cubieboard 通过VGA点亮电脑屏幕笔记

cubieboard 通过VGA点亮电脑屏幕笔记

那么接下来就开始连接,这个连接成功的过程我花了两天的时间,因为开始不知道是什么原因,到底是软件的原因还是硬件的原因。

开始我是直接按上面的资料连接,使用的是杜邦线,直接插上去就算了,然后把软件修改好以后,用tf卡启动,屏幕不亮。于是怀疑是我的系统某些参数设置的不对,于是修改,还是不行。最后拿了另外一块扩展板来试,这个系统是可以从VGA输出的,那就确定了系统参数没问题,是接线可能有问题。于是按照论坛上提供的资料来做,在U14和VGA之间加了一个74hc04的芯片,然后在RGB和地之间各自加上R75的电阻,再然后怕插线不稳,索性就把它们直接焊接起来,这下可不能怪线的接触不良了。

但是事情还是挺纠结的,VGA依然不可以输出。因为论坛上,网上已经有成功的案例了,他们有的是加了一些芯片,有的是直接连接的,不管怎么样,都已经成功输出了,最后犹豫了两个小时候,果断的拿掉74hc04芯片然后VGA和U14直接连接,保留RGB下面的电阻,接上一试,成功了,能通过VGA输出了。

--------------

接线图如下,是别人的:

cubieboard 通过VGA点亮电脑屏幕笔记

这个图上的VGA母头的13 和14是接到了U14的27和30两个引脚了,当然,这里它是加了芯片的,也成功了。这个图的来源可参考下面链接:

http://www.cubieforums.com/index.php/topic,104.0.html

------------------------------------

下面是系统参数需要修改的部分:<默认是HDMI输出>

方法一,如果是lubuntu的话,直接把tf卡插到电脑上,会弹出第一分区的67M,在这67M里有一个uEnvt.txt的文件,用记事本打开这个文件,在其中添上这么一行代码:

disp.screen0_output_type=

那么修改后的uEnvt.txt文件可能就像下面这个格式了:

extraargs=console=ttyS0, console=tty0 disp.screen0_output_mode=1440x900p60  disp.screen0_output_type= hdmi.audio=EDID: mmc0_led= mac_addr=ca::f0::3e:7d rootfstype=ext4 bootdelay=

方法二,也可以直接修改script.bin文件,先把script.bin 转换成script.fex文件,在[disp_init]下面修改成如下的格式:

[disp_init]
disp_init_enable =
disp_mode = screen0_output_type =
screen0_output_mode = screen1_output_type =
screen1_output_mode = fb0_framebuffer_num =
fb0_format =
fb0_pixel_sequence =
fb0_scaler_mode_enable = fb1_framebuffer_num =
fb1_format =
fb1_pixel_sequence =
fb1_scaler_mode_enable =

上面参数的意思,在linux-sunxi.org上是有解释的,详情可参看下面链接:

http://linux-sunxi.org/Fex_Guide#.5Bdisp_init.5D

而将script.bin转换成script.fex的方法,可参考下面的帖子,写的已经非常详细了:

http://forum.cubietech.com/forum.php?mod=viewthread&tid=141&highlight=script

当然,修改完整后,别忘记了将script.fex再转换成script.bin并放入tf卡的第一分区,然后插到CB上,上电开机,可以运行了。如果怀疑内核驱动没有VGA的话,可以自己选择编译一遍驱动,编译的方法都是一样的,网络资源较多,给一个链接作为参考:

http://onefishum.blog.163.com/blog/static/5184730520131151385937/

最后,感谢论坛中已经成功VGA输出并分享了资料的童鞋们,笔记中引用了很多他们的东西,当然这里我就不一一的给出链接了。

2013/06/22

上一篇:Java基础学习笔记十五 集合、迭代器、泛型


下一篇:Java学习笔记13---如何理解“子类重写父类方法时,返回值若为类类型,则必须与父类返回值类型相同或为其子类”