• 0
kuc3

Relationship between Zedboard, Ubuntu on ARM (from Petalinux) and Pmods

Question

Hello,

I am currently working on a project using the Zedboard and some Pmods from Digilent. As of now, I have booted Ubuntu 16.04 onto the ARM core using the Petalinux tools through an SD card. I have also been looking into the GPS pmod and got the bare-metal example to work from programming the FGPA. Through my personal computer (Ubuntu 18.04), I have been able to interface with the Ubuntu 16.04 on the ARM and the GPS pmod. However, I am a little confused as to how the GPS pmod in the PL communicates with the Ubuntu on the ARM. I would really appreciate some insight on the last leg of this triangle of communication.

For the bare-metal exercise, I used the IP blocks provided in the vivado-library. I noticed that there were a few files under the driver folder that were related to the software side, but I'm unsure how to move forward. When I rebuilt the Petalinux package with the hdf that included my GPS pmod, the module did not show up on Ubuntu.

Do I need to create the hardware driver separate from the vivado-library files? If yes, is that using the petalinux tools or SDK or something different?

I have already looked into most of the forum posts and Xilinx documentation provided for the Zedboard, pmods, and petalinux, but did not find an explicit explanation.

Thank you in advance!

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Hi @kuc3,

Welcome to the Digilent Forums!

I have moved your thread to a sub-section where more experienced embedded linux engineers look.

best regards,

Jon

Share this post


Link to post
Share on other sites
  • 0

I read on some other forums that the Pmod IP loaded through Petalinux would not be recognized by the Linux on the ARM core. Is this true?

If it is, I did try using an AXI UARTLITE instead and connected the RXD to JA2's package pin (AA11) and the TXD to JA3's package pin (Y10) in my Vivado implementation. When I built the petalinux project, I made sure to configure the kernel to support uartlite. However, even though the uartlite shows up in /dev on the ARM core's Linux, it still isn't connected to the GPS pmod. When I open a serial terminal, there is nothing that prints out. 

Prior to trying the uartlite ip block, I used the GPS pmod IP block and configured the kernel for uartlite, but in this case, the ttyUL didn't show up at all.

How is the Vivado and Petalinux supposed to be configured to communicate with the GPS pmod? How are you supposed to set it up so that Ubuntu on the ARM can read the GPS messages in a serial terminal on it?

Share this post


Link to post
Share on other sites
  • 0

Hi @kuc3,

We have reached out to our embedded linux engineers to make sure this thread has not slipped through the cracks.

best regards,

Jon

Share this post


Link to post
Share on other sites
  • 0

Hi @kuc3,

You mention Ubuntu 16.04 on the ARM. Do you use a rootfs from Ubuntu instead of the rootfs generated by petalinux?

Additionally can you provide the block design for your project?

 

Share this post


Link to post
Share on other sites
  • 0

In order to communicate with PmodGPS, UART communication is required. 

In order to communicate over UART, we should rely on a linux driver that implements UART. In order to get this driver in your linux image, you should include the UART Lite IP core in your hardware design. You will notice in the ./components/plnx_workspace/device-tree/device-tree/pl.dtsi

axi_uartlite_0: serial@42c00000 {
            clock-names = "s_axi_aclk";
            clocks = <&clkc 15>;
            compatible = "xlnx,axi-uartlite-2.0", "xlnx,xps-uartlite-1.00.a";
            current-speed = <9600>;
            device_type = "serial";
 ...

}

After building the petalinux image and booting the zedboard, you should have the /dev/ttyUL1 device which is the UART Lite linux driver. Then, your application should access it in order to communicate wih the PmodGPS.

I have created a hardware platform that provides the basic UART communication. See https://github.com/Digilent/Zedboard-uart_demo and the provided README.md that explains the basics of this approach. It also provides a demo linux application that communicates over UART (included as submodule).

If you intend to communicate with PmodGPS, you should take a look on the PmodGPS standalone (baremetal) driver provided by Digilent vivado-library repository. There, you should implement the UART communication by calling the function provided in the UART application. As mentioned in the README.md, you should swap the uart_rtl_txd and uart_rtl_rxd as the posted application is intended to be used with PmodUSBUART.

Please write me if you have questions. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now