第十七课--MicroWRT USB 显示屏

来自Microduino Wikipedia
跳转至: 导航搜索

本节教程主要介绍如何在microWRT上完成对RoboPeak Mini USB Display的支持。Robopeak Mini USB是一个知名创客团队的产品, 他为小型嵌入式设备提供了一个非常好用的USB Display,并提供了完善的驱动,方便用户使用。下面就介绍如何在microWRT上使用USB Display。


获取 RoboPeak Mini USB Display 驱动代码

1:RoboPeak Mini USB Dispaly 源码 https://github.com/robopeak/rpusbdisp/tree/master/drivers/linux-driver/

在Linux kerenle 的 /driver/video目录下新建目录robopeak,并将驱动源码放到此目录下。 但是在编译过程中,会因为头文件缺失导致编译出错。所以我们提供了编译通过的源码包,玩家只需要直接下载即可。 将下载驱动源码放到 drivers/video下并解压。

 $ tar -jxvf robopeak.tar.bz2

Robopeak Source Code 文件:Robopeak USB Display

修改配置文件及Makefile

1:在drivers/video/Kconfig添加 source "drivers/video/robopeak/Kconfig" $(Dir)是driver所在的路径,就是openwrt中linux kernel的目录路径。

 vi $(Dir)/drivers/video/Kconfig
 comment "Frame buffer hardware drivers"
 source "drivers/video/robopeak/Kconfig"
 depends on FB
   

2:在drivers/video/Makefile添加 obj-$(CONFIG_FB_RPUSBDISP) += robopeak/

 vi $(PATH)/driver/video/Makefile
 obj-$(CONFIG_FB)  += fb.o
 obj-$(CONFIG_FB_RPUSBDISP)   += robopeak/

配置USB Display in Kernel

在openwrt的根目录下运行kernel的配置命令,并选择下面列出的配置选项。

 $make kernel_menuconfig
 Device Drivers:
  USB Support:
   <*> Support for Host-side USB
  Graphics support:
   <*> Support for frame buffer devices:
   <*> Enable firmware EDID
   <*> Framebuffer foreign endianness support
   <*> Enable Video Mode Handling Helpers
   <*> Enable Tile Blitting Support
   <*> Robopeak USB Display  
   <*> Displaylink USB Framebuffer support
  [*]Bootup logo:
    <*> Standard 224-color Linux logo
  Character devices:
   <*> Virtual terminal
   <*> Enable character translations in console
   <*> Support for console on virtual terminal
   <*> Support for binding and unbinding console drivers
  Graphics support:
    Console display driver support:
     <*> Framebuffer Console support
     <*> Map the console to the primary display device
     <*> Framebuffer Console Rotation
     <*> Select compiled-in fonts
     <*> VGA 8x16 font

编译及烧写固件

运行命令 make V=s 来编译固件,编译完成后,将固件下载到板子上。玩家也可以直接将下面编译好的固件烧写到板子上去测试。

USB Display Firmware 文件:USB Display Firmware

测试固件

将USB Display 通过USB接口连接到microWRT上,显示屏会显示RoboPea的图标,大约3s后就会变白屏。

如果屏幕显示白色的噪点并打印出字符:Waiting for signal,你就必须用“dmesg”命令来查看启动的日志,正常情况下,如果USB display被识别,会有如下信息输出。

 [ 1814.173232] rp-usbdisp 4-1:1.0: RP USB Display found (#1), Firmware Version: X.XX, S/N: XXXXXXXXXXXX
 Once the driver recognizes the display, a framebuffer device will be created. (e.g. /dev/fb0)

当USB display被正确检测到后,会在/proc 目录下创建帧缓冲设备,如/proc/fb0, 可以用下面的命令检测帧缓冲设备是否正常。

 # cat /dev/urandom > /dev/fb2
 屏幕将显示随机的色点。
 

下面我们演示如何显示一幅图片到屏幕上:

下载logo.bmp 并将它放到/tmp目录下。

logo 文件:Logo picture

 #cat /tmp/picture.bmp > /dev/fb0

logo.bmp 要求是bmp格式,分辨率320*240,16位图。将会看到一张图片显示在屏上。

文件:Usb-1.jpg
USB Display