Difference between revisions of "Communicate with your board from a Linux Host (Basics)"

From ArmadeusWiki
Jump to: navigation, search
m (Kermit configuration)
(Debian Jessie)
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==RS232 configuration==
+
==RS232 Terminal configuration==
We suggest you to use '''Kermit''' as Terminal emulator for RS232 connection. Minicom was sadly reported to have problems when communicating with U-Boot (ZModem data transfer).
+
You will need a RS232 terminal emulator to communicate with U-Boot/Linux console. You can choose between:
If you just need a simple serial console and not to transfer data then '''GTKTerm''' is the perfect choice ! (package gtkterm in Ubuntu)
+
* [[Kermit]]
 
+
* Minicom
===Kermit installation=== 
+
* GtkTerm
* On *Ubuntu / Debian:
+
We suggest you to use [[Kermit]] as Terminal emulator for RS232 connection. Minicom was sadly reported to have problems when communicating with U-Boot (ZModem data transfer).
# apt-get install ckermit
+
If you just need a simple serial console and not to transfer data through RS232, then '''GTKTerm''' is the perfect choice ! (package gtkterm in Ubuntu)
or use Synaptic graphical package manager.
+
{{Note|Your terminal should be configured with: '''115200 bauds 8N1''' parameters}}
 
+
* On Fedora:
+
# rpm -q ckermit
+
 
+
===Kermit configuration=== 
+
* Edit/Create .kermrc file in your $HOME directory and put in it:
+
set line /dev/ttyS0
+
set speed 115200
+
set carrier-watch off
+
set handshake none
+
set flow-control none
+
robust
+
set file type bin
+
set file name lit
+
set rec pack 1000
+
set send pack 1000
+
set window 5
+
set transmit linefeed on
+
* In this example, we assume that your serial port is ttyS0 (first serial port). Change this to correct value if necessary.
+
* If you use an ''USB <-> Serial'' converter then serial port would surely be named like that: ttyUSB0
+
** If ''USB <-> Serial'' converter doesn't seem to work, run the ''dmesg'' command. You should read [http://ubuntuforums.org/archive/index.php/t-392791.html this thread] if you see some disconnection data like this :
+
[ 2445.568000] usb 1-1.4: new full speed USB device using uhci_hcd and address 22
+
...
+
[ 2446.964000] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
+
[ 2446.964000] ftdi_sio 1-1.4:1.0: device disconnected
+
 
+
+
* If you get an error message such:
+
$ kermit -c
+
  /dev/ttyS0
+
  ?SET SPEED has no effect without prior SET LINE
+
check that you have read/write rights on /dev/ttyS0 (ie your serial port)
+
 
+
===Kermit usage=== 
+
* To launch it:
+
$ kermit -c
+
* To switch from terminal mode to command mode:
+
CTRL + \ then c
+
* To switch from command mode to terminal mode:
+
C-Kermit>c then ENTER
+
  
 
==TFTP server==
 
==TFTP server==
In order to send your image files (U-Boot, Linux, RootFS or Firmware) with higher speed to your Armadeus board, you can use the Ethernet link and a TFTP server.
+
In order to send your image files (U-Boot, Linux, rootfs or FPGA's firmware) at higher speed to your Armadeus board, you can use the Ethernet link and [http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol a TFTP server].
Once the server started, the files located in the server shared directory (''/tftpboot'' by default) will be accessible from the U-Boot TFTP client.
+
Once the server started, the files located in the server shared directory (''/tftpboot'' by default) will be accessible from the U-Boot/Linux TFTP clients.
  
 
===TFTP server installation===   
 
===TFTP server installation===   
 
* On *Ubuntu / Debian:
 
* On *Ubuntu / Debian:
  # sudo apt-get install tftpd xinetd
+
  $ sudo apt-get install tftpd xinetd
 
or use Synaptic<br>
 
or use Synaptic<br>
 
* On Fedora:
 
* On Fedora:
Line 60: Line 20:
  
 
* Then create the directory that will contain all the files that the server will export (you have to be root to do that):
 
* Then create the directory that will contain all the files that the server will export (you have to be root to do that):
  # mkdir /tftpboot
+
  $ sudo mkdir /tftpboot
  # chmod 777 /tftpboot
+
  $ sudo chmod 777 /tftpboot
  
 
===Server configuration===   
 
===Server configuration===   
Line 82: Line 42:
 
   
 
   
 
* Restart xinetd service:
 
* Restart xinetd service:
  # killall -HUP xinetd
+
  $ sudo killall -HUP xinetd
 
* Put some files in ''/tftpboot''
 
* Put some files in ''/tftpboot''
 +
* To test it from U-Boot (if you already have the correct IP addresses, otherwise [[Target_Software_Installation#Configure_U-Boot|continue with Setup Basics here]]):
 +
<pre class="apf">
 +
BIOS> run download_uboot
 +
MAC: 00:1e:ac:00:00:01
 +
operating at 100M full duplex mode
 +
Using dm9000 device
 +
TFTP from server 192.168.0.2; our IP address is 192.168.0.10
 +
Filename 'apf9328-u-boot.bin'.
 +
Load address: 0x8000000
 +
Loading: ###########################################
 +
done
 +
Bytes transferred = 217656 (35238 hex)
 +
BIOS>
 +
</pre>
 +
 +
== Troubleshooting ==
 +
 +
=== Debian Jessie ===
 +
 +
On debian jessie, if we follow the tutorial above we get this error under U-Boot:
 +
 +
<pre class="target">
 +
BIOS> run update_kernel
 +
Using FEC device
 +
TFTP from server 192.168.0.214; our IP address is 192.168.0.11
 +
Filename 'testbench27_apf6_test-linux.bin'.
 +
Load address: 0xa0000000
 +
Loading: *
 +
TFTP error: 'Access violation' (2)
 +
Not retrying...
 +
</pre>
 +
 +
We can see the problem in log with this command :
 +
<pre class="host">
 +
$ sudo tailf /var/log/syslog | grep tftp
 +
Oct 23 08:43:29 fabien in.tftpd[24535]: connect from 192.168.0.11 (192.168.0.11)
 +
Oct 23 08:43:29 fabien tftpd[24536]: tftpd: trying to get file: testbench27_apf6_test-linux.bin
 +
Oct 23 08:43:29 fabien tftpd[24536]: tftpd: serving file from /srv/tftp
 +
</pre>
 +
 +
The tftpboot service seems to not follow the configuration file /etc/xinetd.d/tftp.
 +
 +
To solve problem temporarly, we can make a symbolic link in /srv directory :
 +
<pre class="host">
 +
cd /srv
 +
sudo ln -s /tftpboot tftp
 +
</pre>
 +
 +
=== (XXX) Debian jessie magic ===
 +
 +
Launch tftp manually :
 +
<pre class="host">
 +
sudo in.tftpd -l -s /srv/tftp/
 +
</pre>
 +
 +
Found [https://bbs.archlinux.org/viewtopic.php?id=154523 here]
  
 
==Links==
 
==Links==
 
* [http://www.columbia.edu/kermit/ Kermit Homepage]
 
* [http://www.columbia.edu/kermit/ Kermit Homepage]
 
* [http://www.jls-info.com/julien/linux/ GTKTerm Homepage]
 
* [http://www.jls-info.com/julien/linux/ GTKTerm Homepage]
 +
* http://doc.ubuntu-fr.org/tftpd

Latest revision as of 08:58, 8 October 2015

RS232 Terminal configuration

You will need a RS232 terminal emulator to communicate with U-Boot/Linux console. You can choose between:

We suggest you to use Kermit as Terminal emulator for RS232 connection. Minicom was sadly reported to have problems when communicating with U-Boot (ZModem data transfer). If you just need a simple serial console and not to transfer data through RS232, then GTKTerm is the perfect choice ! (package gtkterm in Ubuntu)

Note Note: Your terminal should be configured with: 115200 bauds 8N1 parameters


TFTP server

In order to send your image files (U-Boot, Linux, rootfs or FPGA's firmware) at higher speed to your Armadeus board, you can use the Ethernet link and a TFTP server. Once the server started, the files located in the server shared directory (/tftpboot by default) will be accessible from the U-Boot/Linux TFTP clients.

TFTP server installation

  • On *Ubuntu / Debian:
$ sudo apt-get install tftpd xinetd

or use Synaptic

  • On Fedora:
# rpm -q tftpd xinetd
  • Then create the directory that will contain all the files that the server will export (you have to be root to do that):
$ sudo mkdir /tftpboot
$ sudo chmod 777 /tftpboot

Server configuration

  • Edit or create the configuration file /etc/xinetd.d/tftp and modify/add it the following lines:
# default: off
# description: The tftp server serves files using the trivial file transfer
#       protocol.  The tftp protocol is often used to boot diskless
#       workstations, download configuration files to network-aware printers,
#       and to start the installation process for some operating systems.
service tftp
{
       socket_type             = dgram
       protocol                = udp
       wait                    = yes
       user                    = root
       server                  = /usr/sbin/in.tftpd
       server_args             = -s /tftpboot
#       disable                 = yes
}

  • Restart xinetd service:
$ sudo killall -HUP xinetd
BIOS> run download_uboot
MAC: 00:1e:ac:00:00:01
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.0.2; our IP address is 192.168.0.10
Filename 'apf9328-u-boot.bin'.
Load address: 0x8000000
Loading: ###########################################
done
Bytes transferred = 217656 (35238 hex)
BIOS>

Troubleshooting

Debian Jessie

On debian jessie, if we follow the tutorial above we get this error under U-Boot:

BIOS> run update_kernel 
Using FEC device
TFTP from server 192.168.0.214; our IP address is 192.168.0.11
Filename 'testbench27_apf6_test-linux.bin'.
Load address: 0xa0000000
Loading: *
TFTP error: 'Access violation' (2)
Not retrying...

We can see the problem in log with this command :

$ sudo tailf /var/log/syslog | grep tftp
Oct 23 08:43:29 fabien in.tftpd[24535]: connect from 192.168.0.11 (192.168.0.11)
Oct 23 08:43:29 fabien tftpd[24536]: tftpd: trying to get file: testbench27_apf6_test-linux.bin
Oct 23 08:43:29 fabien tftpd[24536]: tftpd: serving file from /srv/tftp

The tftpboot service seems to not follow the configuration file /etc/xinetd.d/tftp.

To solve problem temporarly, we can make a symbolic link in /srv directory :

cd /srv
sudo ln -s /tftpboot tftp

(XXX) Debian jessie magic

Launch tftp manually :

sudo in.tftpd -l -s /srv/tftp/

Found here

Links