Changes

How to use UARTs

199 bytes removed, 11:41, 12 November 2014
no edit summary
{{Message/Information Message|title=|message=Starting from Kernel 2.6.37.y, ttySx are named ttyOx.}}
 
= Overview =
<section begin=overview />
This How-To is meant to be a starting point for people to learn use UART for IGEP devices as quickly and easily as possible. In this How-To, we use [http://labs.isee.biz/index.php/Pre-installed_software_on_IGEP_Processor_Boards IGEP Firmware] and a program that use UART peripherals. This How-To was tested in:
*[[IGEP firmware Yocto|IGEP firmware Yocto]] and [[Linux_Kernel_2.6.37.y|Kernel 2.6.37.y]] with IGEPv2.
This How-To Example program has a debug option using GPIOs to debug via oscilloscope, this method is meant to be a starting point for people useful to learn use UART for IGEPv2 devices as quickly and easily as possibleabout the Kernel latencies. In this how-Debug has set to, we use [http://releases.linaro.org/platform/linaro-m/headless/final/linaro-m-headless-tar-20101108-2"write" and "select" functions.tar.gz Linaro Headless] with [[Linux Kernel 2.6.35.yPeripherals Summary#UART|Kernel 2.6.35.yMore information]] and [http://labs.isee.biz/images<section end=overview /e/ee/Uart-test-beta2.tar.bz2 UART test program] >
More information about = Preparing IGEP =IGEP Uart devices have the following names in Kernel [http[Linux Kernel 2.6.35.y|2.6.35.y]]:*UART1: /dev/ttyS0*UART2: /dev/ttyS1*UART3:/dev/enttyS2*UART4: /dev/ttyS3IGEP Uart devices have the following names in Kernel [[Linux Kernel 2.6.37.y|2.6.wikipedia37.orgy]]:*UART1: /dev/ttyO0*UART2: /dev/ttyO1*UART3: /dev/wikittyO2*UART4: /UART UART]. dev/ttyO3
'''Note''': This program has a debug option using GPIOs to debug via oscilloscope, this option is useful to learnt about the Kernel latencies. Debug has set to "write" and "select" functions.
 
[[Frequently Asked Questions and Their Answers#How_many_UARTs_are_available.3F|More information]]
 
= Feedback and Contributing =
 
At any point, if you see a mistake you can contribute to this How-To.
 
= Preparing IGEP =
=== Configure UART1 and UART3 in IGEP with RS232 levels on J960 connector ===
To test UARTs we use UART1 (dev/ttyS0) and UART3 (dev/ttyS2) via J960 connector using RS232 standard==== Edit igep. ini file ====
NOTE: Make sure that you installed open SSH server. If you don't have it go [[How to forge a local file system server with IGEP0020 board#Installing_Open_SSH_Server|here]]To test UARTs we use UART1 (dev/ttyO0) and UART3 (dev/ttyO2) via J960 connector using RS232 standard.
By default, *UART1 is can used by RS485 driver, we need to disable it, edit igep.ini file: <br> <pre>board.ei485= yes</pre> *UART1 is configured in RS232 driver, when igep line is replaced by (or type in -Maybe you don't found this line-):<br> <pre>board.ei485= no</pre> *By default, UART3 is used by Kernel serial console, we need to disable it, go to igep.ini file, comment next line: <br> <pre>;console=ttyS2ttyO2,115200n8;console=ttySttyO</pre>==== Edit inittab file ====Getty program uses /dev/ttyO2 in IGEP Firmware, disable it modifying /etc/inittab file:*Comment next line:<pre> #S:2345:respawn:/sbin/getty 115200 ttyO2</pre>
=== Check UARTs devices ===
<pre>dmesg | grep tty</pre>
The result will be similar at that:
<pre>root@localhostigep00x0:~/PROGRAM# dmesg | grep tty
[ 0.000000] console [tty0] enabled
[ 0.598999485198] serial8250omap_uart.0: ttyS0 ttyO0 at MMIO 0x4806a000 (irq = 72) is a ST16654OMAP UART0[ 0.784057485565] serial8250omap_uart.1: ttyS1 ttyO1 at MMIO 0x4806c000 (irq = 73) is a ST16654OMAP UART1[ 0.969085485931] serial8250omap_uart.2: ttyS2 ttyO2 at MMIO 0x49020000 (irq = 74) is a ST16654OMAP UART2[ 10.153503486267] serial8250omap_uart.3: ttyS3 ttyO3 at MMIO 0x49042000 (irq = 80) is a ST16654OMAP UART3root@localhostigep00x0:~/PROGRAM# </pre>
=== Connect peripherals ===
=== Send some data ===
Use minicom microcom to prove it, open two terminals via SSH&nbsp;and log with root user:
Terminal 1:
<pre>minicom -D microcom /dev/ttyS0ttyO0</pre>
Terminal 2:
<pre>minicom -D microcom /dev/ttyS2 ttyO2 </pre> Type something in one terminal.  {| cellspacing="1" cellpadding="1" width="200" border="1" align="center"|-| style="text-align: left;" | [[Image:Minicom screenshot.png|640x400px]]|}
= Schematics =
= Compile and run program =
Download [http://labs.isee.biz/images/e/eeindex.php/File:Uart-test-beta22-beta1.tar.bz2 program source]and extract it.  As explained above, Before compiling the program uses GPIO for debug option via oscilloscope, it is necessary install user-gpio-drv.ko driver inside Linux Kernel, more information [[How to use GPIOs|here]] .  There there are some interesting things to configure, before compiling the program. Open it, program and seek next lines:
<pre>//Define Array char size
#define SIZE 30
 
//Define Debug mode:0==Disable
#define DEBUG 0
//Set GPIO Debugger port
//Be sure that mux is correctly configured and GPIOs are not used
#define GPIO1 136158#define GPIO2 137 162</pre> Constant SIZE: it determines the max number of char than chars sended. Constant DEBUG: it can be sent<br> break program infinite loop part, useful to debug errors: 0 (infinite loop) or positive number determines loop max entrances.
Constant DEBUGWAIT: it can break program infinite loop part, it can be useful to debug some errors, 0 (infinite loop) or positive number determine loop configures select max entrances time in seconds.
Constant WAITConstants GPIO1 and GPIO2: it configurea select max timethey configure GPIOs used for debug via oscilloscope. By default, 158 and 162 values are not used in IGEPv2. Configure [[Mux configuration|mux]] properly if you use other GPIOs.
Constants GPIO1 and GPIO2Compile source code using a [[How to setup a cross compiler|cross compiler]] for example IGEP SDK: they configure GPIOs used for debug via oscilloscope<pre>arm-poky-linux-gnueabi-gcc uart-test-2-beta1. Take care to configure mux and don't use them for other purposesc -o uart-test-beta1 <br/pre>
Once you have installed module. Compile program using your Cross Compiler, I used arm-linux-gnueabi-:
<pre>arm-linux-gnueabi-gcc uart-test-beta1.c -o uart-test-beta1 </pre>
= Testing UART =
0
edits