This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
UART
#1
Hi,
I've same problems to use UART4 on Tinker Board.
I don't understand the criterion used for the association between UART and symbolic names in Linux, but I see that
UART1 is ttyS1, UART2 is ttyS2 and UART3 is ttyS3. For this reason I thought UART4 was ttyS4 but it isn't present.
The UART4 is enabled on hw_intf.conf
which is so set:

intf:i2c1=on
intf:i2c4=on
intf: spi2=on
#intf:pwm2=on
#intf:pwm3=on
intf:uart1=on
intf:uart4=on


If I execute gpio readall command I see that pin 13 and 15 isn't set as SERL but are IN.
How I can set they to SERL? I have read that it is a customization for ASUS and is not present as a mode in wiringPI.

Thank you in advance!
Reply
#2
There are some bugs about setting uart4 by hw_intf.conf that the pin setting is wrong in the device tree.
The bug will be fixed in next version of image. (https://www.asus.com/tw/Single-Board-Com..._Download/)

You can manually change the pin function by wiringPi or gpio. The methods are shown as following.
(Before using the wiringPi or gpio, It is best to update the wiringPi library by downloading the source code from https://github.com/TinkerBoard/gpio_lib_c and building it.)

Method 1: wiringPi
#include <wiringPi.h>
int main()
{
   wiringPiSetupPhys();
   //FSEL_INPT(0), FSEL_OUTP(1), FSEL_ALT0(4, func1), FSEL_ALT1(5, func2), FSEL_ALT2(6, func3), FSEL_ALT3(7, func4), FSEL_ALT4(3) or FSEL_ALT5(2)
   pinModeAlt(13, 6);    //UART4TX: ALT2, func3 http://opensource.rock-chips.com/images/...170301.pdf Page 45
   pinModeAlt(15, 6);    //UART4RX: ALT2, func3 http://opensource.rock-chips.com/images/...170301.pdf Page 45
   return 0;
}

Method 2: gpio
gpio -1 mode 13 alt2
gpio -1 mode 15 alt2
Reply
#3
Hi, Ecce
thank you very much!
I've been able to set pin mode to SERL (the gpio utility downloaded from official server is the same version 2.3.1 but have ALT mode disabled).
The problem now is that I don't have ttyS4 on device list. If I look but address 0xFF1C0000 is not accessible.
How I can resolve this problem? Do I need to recompile the kernel?
Reply
#4
Hi, LArmstrong1985

There are some bugs about UART in debian_kernel.
You can recompile the kernel or wait for the new image updated.
Next, I will show the bugs about UART.
1. Maximum number of serial ports() are 4, so the ttyS4 are not generated. 
Fix: drivers/tty/serial/8250/Kconfig (https://github.com/TinkerBoard/debian_ke...50/Kconfig)
Line 138:
config SERIAL_8250_NR_UARTS
int "Maximum number of 8250/16550 serial ports"
depends on SERIAL_8250
default "4"  ==> default "5"

Line 148:
config SERIAL_8250_RUNTIME_UARTS
int "Number of 8250/16550 serial ports to register at runtime"
depends on SERIAL_8250
range 0 SERIAL_8250_NR_UARTS
default "4"  ==> default "5"

2. It is not work to set the gpio as UART by hw_intf.conf. The reason is that the pin setting is wrong.
Fix: arch/arm/boot/dts/rk3288.dtsi (https://github.com/TinkerBoard/debian_ke...8.dtsi#L10)
Line 2139:
uart4 {
uart4_xfer: uart4-xfer {
rockchip,pins = <5 12 3 &pcfg_pull_up>, ==> 5 12(gpio5_B4/uart4ex_ctsn)
                       <5 13 3 &pcfg_pull_none>; ==> 5 13(gpio5_B5/uart4ex_rtsn)
};
uart4_cts: uart4-cts {
rockchip,pins = <5 14 3 &pcfg_pull_up>; ==> 5 12(gpio5_B6/uart4exp_sout)
};
uart4_rts: uart4-rts {
rockchip,pins = <5 15 3 &pcfg_pull_none>; ==> 5 12(gpio5_B7/uart4exp_sin)
};
};

Reference: http://opensource.rock-chips.com/images/...170301.pdf (Page: 45)

The correct version:
uart4 {
uart4_xfer: uart4-xfer {
rockchip,pins = <5 15 3 &pcfg_pull_up>,
                       <5 14 3 &pcfg_pull_none>;
};
uart4_cts: uart4-cts {
rockchip,pins = <5 12 3 &pcfg_pull_up>;
};
uart4_rts: uart4-rts {
rockchip,pins = <5 13 3 &pcfg_pull_none>; 
};
};


BTW, I'm sorry about the issue.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)