PYNQのArduino IOPでUART0(UARTLITE)を使う

http://pynq.readthedocs.io/en/v2.1/overlay_design_methodology/pynq_microblaze_subsystem.html
baudrate 115200で問題なく通信できそう。

1. PYNQライブラリ(uart.c, uart.h)を使う実装(こっちの方が簡単)

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "uart.h"

int main()
{
    init_platform();
    print("hello world");

    uart dev = uart_open(1,0);
    unsigned char *hoge = "a";
    while(1){
        uart_write(dev, hoge, 1);
        usleep(1000*1000);
    }

    cleanup_platform();
    return 0;
}

2. UartLiteのBSPライブラリを使用する実装

pynq io switchでUART0_RX, UART_TXを明示して使う必要がある

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xuartlite.h"
#include "xuartlite_l.h"
#include "xio_switch.h"
#define UARTLITE_DEVICE_ID	XPAR_UARTLITE_0_DEVICE_ID

XUartLite UartLite;

int main()
{
    init_platform();
    init_io_switch();
    set_pin(0,UART0_RX);
    set_pin(1,UART0_TX);

    int Status;
    Status = XUartLite_Initialize(&UartLite, UARTLITE_DEVICE_ID);
    	if (Status != XST_SUCCESS) {
    		return XST_FAILURE;
    }
    print("hello world");

    unsigned char *hoge = "a";
    while(1){
    	XUartLite_Send(&UartLite, hoge, 1);
        usleep(1000*1000);
    }

    cleanup_platform();
    return 0;
}

補足

BSPの設定でstdioをiop_arduino_uartliteにすれば、print()で送信できるようになる。

補足2

スイッチサイエンスのFTDIモジュールでPCと接続するときは、
PYNQのRX→FTDIモジュールのTX
PYNQのTX→FTDIモジュールのRX

に接続する