Firefly-RK3288/UART

来自Firefly wiki
跳转至: 导航搜索

On Board Resource

There are 5 uarts on Firefly-RK3288 development board, which are uart0, uart1, uart2, uart3 and uart4.

  • uart0 is uart_bt, used for Bluetooth data transmission.
  • uart2 is uart_dbg, used for debugging.
  • uart1, uart3 and uart4 are used for external uart data communication. You can connect them via J10. Note that uart4 and SPI0 use the same pins.
  • All uarts have 64 bytes FIFO respectively, and support 5 bit, 6 bit,7 bit,8 bit serial data communication, in DMA-based or interrupt-based operation mode.

Configuration Steps

Here we use uart3 as an example.

Create DTS Node

The DTS node have already been created in file kernel/arch/arm/boot/dts/rk3288.dtsi, shown as following:

	uart_gps: serial@ff1b0000 {
		compatible = "rockchip,serial";
		reg = <0xff1b0000 0x100>;
		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
		clock-frequency = <24000000>;
		clocks = <&clk_uart3>, <&clk_gates6 11>;
		clock-names = "sclk_uart", "pclk_uart";
		current-speed = <115200>;
		reg-shift = <2>;
		reg-io-width = <4>;
		dmas = <&pdma1 7>, <&pdma1 8>;
		#dma-cells = <2>;
		pinctrl-names = "default";
		pinctrl-0 = <&uart3_xfer &uart3_cts &uart3_rts>;
		status = "disabled";
	};

Note: uart_gps is defined in "aliases" node as: serial3 = &uart_gps;

The only thing you need to do is adding following code in file kernel/arch/arm/boot/dts/firefly-rk3288.dts:

&uart_gps {
        status = "okay";
        dma-names = "!tx", "!rx";
        pinctrl-0 = <&uart3_xfer &uart3_cts>;
};

Compile and Flash Kernel

Turn on CONFIG_SERIAL_ROCKCHIP in kernel configuration, which will add corresponding drivers/tty/serial/rk_serial.c to kernel. Then compile the kernel as followed:

make firefly-rk3288.img

After successful compilation, flash kernel.img and resource.img under kernel directory to the development board.

Data Commuincation

You can now communicate with the uart3 via a USB-to-serial adapter in your host PC. Follow the steps below:

(1) Connect the uart port.

将开发板 uart3 的 TX、RX、GND 引脚分别和主机串口适配器的 RX、TX、GND 引脚相连。

Connect the TX, RX, GND pins of uart3 to the serial adapter's RX, TX, GND pins respectively.

(2) Open a serial terminal in host PC.

Run kermit in a shell window, and set baud rate:

$ sudo kermit
C-Kermit> set line /dev/ttyUSB0
C-Kermit> set speed 115200
C-Kermit> set flow-control none
C-Kermit> connect

  • /dev/ttyUSB0 is the device file of USB-to-serial adapter.
  • baud is the "current-speed" attribute in the DTS node.

(3) Transmit data.

The device file for uart3 is /dev/ttyS3. Run the following command in device:

echo firefly uart3 test... > /dev/ttyS3 

The serial terminal in the host PC will receive string "firefly uart3 test...".

(4) Receive data.

First, run the following command in device:

cat /dev/ttyS3

Then input string "Firefly uart3 test..." in the serial terminal. You can see the same string received in the device.