This note explains how to load files such as binary applications from Linux running on the target via UART. This is a useful procedure for those targets that do not provide an Ethernet link and have the serial console as the only communication channel.
On the host, activate the Cortex-M cross-development environment:
bash-3.2$ . ./ACTIVATE.sh -bash-3.2$
Create a simple "Hello, world" C application:
[host] $ cd /tmp [host] $ vi test.c #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, i.MX RTxxxx\n"); return 0; }
Build the application for the Cortex-M target:
[host] $ ${CROSS_COMPILE_APPS}gcc -o test test.c
If you have no
uuencode
installed in your system, then install it:[host] $ sudo apt-get install sharutils
Encode the application binary into an ASCII-only presentation so that the file can be transmitted over a serial line:
[host] $ uuencode test < test > test.encoded
The
uudecode
application on the target (in order to convert the ASCII-only file back into the application binary) is provided withbusybox
by default in therootfs
project.On the host, make sure that the serial port you use for the target console is configured for 115200 bps:
[host] $ stty -F /dev/ttyACM0 115200 raw -echo -echoe -echoctl -echok
If you have no
picocom
installed in your system, the install it:[host] $ sudo apt-get install picocom
Start the target console:
[host] $ picocom -b 115200 /dev/ttyACM0
From the target, run the following to read a file from the serial console:
~ # cat > /test.encoded < /dev/ttyLP0
On the host, exit the target console (Ctrl-A and then Ctrl-X in
picocom
).On the host, send the encoded ASCII file to the serial port used for the target console:
[host] $ cat /tmp/test.encoded > /dev/ttyACM0
When the transfer command finishes, enter the target console again:
[host] $ picocom -b 115200 /dev/ttyACM0
Type Ctrl-C to interrupt the
cat
command:^C / #
Run uudecode to convert the ASCII file back to the binary file:
~ # uudecode /test.encoded -o /test
Change mode to allow running the application binary:
~ # chmod a+x /test
Finally, run the application:
~ # /test Hello, i.MX RTxxxx ~ #