1

我对zedboard很陌生。我有一个运行 Ubuntu 映像的 zedboard。我正在尝试编写一个驱动程序来在板上运行 OLED。在板上启动时,板上的 OLED 显示一些显示(Xilinx 徽标),因此我假设它已经有驱动程序。我有以下问题:

a) zedboard 中的 OLED 是如何内部连接的,是通过 SPI、GPIO 还是 PL。如果是通过 SPI/GPIOs 那么哪些引脚?

b)我可以遵循任何教程或文档来使用 SPI/GPIO 为 zedboard 中的 OLED 创建用户空间驱动程序?

c) 我有一个 redhat 桌面,是否有任何 SDk 可以用来从我的 redhat 桌面为 zedboard 开发用户空间驱动程序。

我在 zedboard 上看到了很多材料,但都没有谈到 OLED 的内部连接方式。在一份文件中,它显示它已连接到 PL。如果是这种情况,那么如何使用 zedboard 上的 PL 编写用户空间驱动程序?我将使用 C 进行编码。

感谢您的帮助,并提前感谢!

4

1 回答 1

4

a) zedboard 中的 OLED 是如何内部连接的,是通过 SPI、GPIO 还是 PL。如果是通过 SPI/GPIOs 那么哪些引脚?

网络搜索“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 <- bus_of_5 -> 128x32 OLED

第 20 页:2.4.4 OLED ZedBoard 上使用 Inteltronic/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 9/18/2012 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 内核(PS = 处理系统 = ARM)访问该引脚到芯片的 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"

然后 GPIO 引脚在设备树 (dts) 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)我可以遵循任何教程或文档来使用 SPI/GPIO 为 zedboard 中的 OLED 创建用户空间驱动程序?

根据 Avnet 的入门 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以与用户空间的显示一起使用,并使用此界面load_oled显示文件。/root/logo.binzed_oled

的典型用法zed_oled例如http://people.mech.kuleuven.be/~lin.zhang/notes/emebedded-linux/zedboard-oled-display.html 和更好的http://zedboard.org/content/ zedboard-oledcat yourfile.bin > /dev/zed_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位宽,8位高,如下图所示。

    +--------------------------...----------------------------+
    +                         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 的内核空间,您可以从预编译的 ZEDboard 固件中使用它。或者您可以根据 zedboard 指令构建内核,所有内核驱动程序也将被构建(如果在内核配置中启用):http: //zedboard.org/content/creating-linux-kernel-image-boot-zc702- sd卡插槽

于 2015-03-28T20:46:36.210 回答