a) zedboard中的OLED是如何内部连接的,是通过SPI、GPIO还是PL。如果是通过SPI/GPIO,那么是哪些引脚?
的第一个或第二个结果
网状物
搜索“zedboard oled pdf”-
http://zedboard.org/sites/default/files/ZedBoard_HW_UG_v1_1.pdf
然后在其中搜索“oled”(pdf文件的页码,不打印在文档中):
第3页:2.4.4 OLED。。。。。。19
第4页:128x32 OLED显示屏
第5页:ZYNQ XC7Z020-CSG484 OLED<-f_5->128x32 OLED
第20页:2.4.4 OLED
ZedBoard上使用了Intel/Wisechip UG-2832HSWEG04 OLED显示器。这
提供128x32像素无源矩阵单色显示器。显示器尺寸为30mm x11.5mm x 1.45mm。表11-OLED连接。。。界面
oled_pin symb EPP_pin Function
9 RES# U9 Power Reset for Controller and Driver
8 CS# N/C Chip Select â Pulled Down on Board
10 D/C# U10 Data/Command Control
11 SCLK AB12 Serial Clock Input Signal
12 SDIN AA12 Serial Data Input Signal
所以,我们知道OLED的模型
UG-2832HSWEG04
(数据表
http://www.adafruit.com/datasheets/UG-2832HSWEG04.pdf
具有关于数据接口的低级细节)和数据连接;这是具有1个串行数据输入和1个串行时钟的OLED。
Pinout pdf是
http://www.xilinx.com/support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf
(太长,无法阅读),但有较短版本的txt格式的pin列表:
http://www.xilinx.com/support/packagefiles/z7packages/xc7z020clg484pkg.txt
设备/包xc7z020clg484 2012年9月18日10:07:35
Pin Pin Name Memory Byte Group Bank VCCAUX Group Super Logic Region I/O Type
AA12 IO_L7P_T1_13 1 13 NA NA HR
AB12 IO_L7N_T1_13 1 13 NA NA HR
HR表示“3.3V高量程(HR)组”,两个数据引脚均来自“组13”。引脚名称为IO_*,因此它“支持输入和输出功能”,是“PL引脚”(PL=可编程逻辑=FPGA)的一部分。FPGA部件的默认Zedboard固件通过system.ucf文件将该引脚路由到某个内部processing_system GPIO引脚,从而将该引脚访问到具有linux内核的芯片的ARM部件(PS=处理系统=ARM):
NET processing_system7_0_GPIO_pin[5] LOC = AB12 | IOSTANDARD="LVCMOS25"; # "OLED-SCLK"
NET processing_system7_0_GPIO_pin[6] LOC = AA12 | IOSTANDARD="LVCMOS25"; # "OLED-SDIN"
然后在设备树(dts)中注册GPIO引脚
https://github.com/Digilent/linux-digilent/blob/master/arch/arm/boot/dts/digilent-zed.dts
在里面
zed_oled
组:
zed_oled {
compatible = "dglnt,pmodoled-gpio";
/* GPIO Pins */
vbat-gpio = <&ps7_gpio_0 55 0>;
vdd-gpio = <&ps7_gpio_0 56 0>;
res-gpio = <&ps7_gpio_0 57 0>;
dc-gpio = <&ps7_gpio_0 58 0>;
/* SPI-GPIOs */
spi-bus-num = <2>;
spi-speed-hz = <4000000>;
spi-sclk-gpio = <&ps7_gpio_0 59 0>;
spi-sdin-gpio = <&ps7_gpio_0 60 0>;
};
b) 我可以遵循任何教程或文档来为zedboard中的OLED使用SPI/GPIO创建用户空间驱动程序吗?
根据Avnet的Getting Started pdf,第17页的“演示2 OLED显示器”部分(网络搜索为“zedboard OLED”)
http://zedboard.org/sites/default/files/documentations/GS-AES-Z7EV-7Z020-G-14.1-V6%5B1%5D.pdf#page=17
有内核驱动程序
pmodoled-gpio.ko
(屏幕截图上显示为“pmodoled gpio spi”),所以OLED是用gpio引脚驱动的。
有两个助手脚本:
unload_oled
删除内核模块
load_oled
将其插入内核。驱动程序将创建特殊设备文件
/dev/zed_oled
从用户空间和
加载(_O)
还显示
/root/logo.bin
使用此文件
已编辑(_O)
界面
的典型用法
已编辑(_O)
就像
cat yourfile.bin > /dev/zed_oled
例如
http://people.mech.kuleuven.be/~lin.zhang/notes/emebedded-linux/zedboard-oled-display.html
更好
http://zedboard.org/content/zedboard-oled
.bin文件格式。。。屏幕从右到左、从上到下写入,每个像素由.bin文件中一个字节内的一位表示。从上到下8个像素读取位,然后移动到1个像素并写入下一个8位,然后继续读取,直到到达行的末尾。然后向下移动8个像素,再重复3次。
您可以从C应用程序进行写操作,检查代码
http://www.cnblogs.com/popo0904/p/3853144.html
(您可以在线使用
网状物
阅读文本的翻译服务)
内核模块文档
PmodOLED
用于标准zedboard演示:
https://github.com/Digilent/linux-digilent/blob/master/Documentation/pmods/pmodoled.txt
驱动器为PmodOLED的显示提供512字节的显示缓冲区。
整个屏幕分为四行,每行128位宽
如下图所示。
+--------------------------...----------------------------+
+ Line 4 +
+--------------------------...----------------------------+
+ Line 3 +
+--------------------------...----------------------------+
+ Line 2 +
+--------------------------...----------------------------+ MSB (bit 7)
+ Line 1 +
+--------------------------...----------------------------+ LSB (bit 0)
byte 127 byte 0
用户可以对设备节点执行读写功能以访问数据
在显示缓冲器内。
并且有驱动程序的源代码:
https://github.com/Digilent/linux-digilent/blob/06b388903e5459687ba2538ae3895ffe29e2e39e/drivers/pmods/pmodoled-gpio.c
c) 我有一个redhat桌面,有没有SDk可以用来从我的redhat台式机上为zedboard开发用户空间驱动程序。
标准驱动程序是ZEDboard上此OLED的内核空间,您可以从预编译的ZEDbboard固件中使用它。或者您可以根据zedboard指令构建内核,所有内核内驱动程序也将构建(如果在内核配置中启用):
http://zedboard.org/content/creating-linux-kernel-image-boot-zc702-sd-card-slot