Difference between revisions of "DESK-MX8M-L/Development/Hello World example"

From DAVE Developer's Wiki
Jump to: navigation, search
(Updates for DESK-MX8-L 4.0.0 release)
Line 10: Line 10:
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|17/02/2022
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|17/02/2022
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK-MX8M-L release
 
|style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000"|First DESK-MX8M-L release
 +
|-
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17547|17547}}
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |24/02/2023
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L-2.0.0 release
 
|-
 
|-
 
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17547|17547}}
 
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17547|17547}}
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |24/02/2023
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |25/07/2023
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L-2.0.0 release
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L-4.0.0 release
 
|-
 
|-
 
 
|}
 
|}
 
<section end=History/>
 
<section end=History/>
Line 33: Line 36:
  
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
dvdk@vagrant:~$ mkdir myproject
+
dvdk@vagrant:~$ mkdir -p ~/myproject
dvdk@vagrant:~$ cd myproject/
+
dvdk@vagrant:~$ cd ~/myproject/
 
dvdk@vagrant:~/myproject$ vi hello.c
 
dvdk@vagrant:~/myproject$ vi hello.c
dvdk@vagrant:~/myproject$ cat hello.c
+
dvdk@vagrant:~/myproject$ cat hello.c  
 
#include <stdio.h>
 
#include <stdio.h>
  
 
int main(){
 
int main(){
printf("Hello, World!\n");
+
        printf("Hello, World!\n");
return 0;
+
        return 0;
 
}
 
}
 
</pre>
 
</pre>
Line 47: Line 50:
 
* configure the build environment
 
* configure the build environment
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
dvdk@vagrant:~/myproject$ source /home/dvdk/desk-mx-l/desk-mx8m-l-2.0.0_env.sh
+
dvdk@vagrant:~/myproject$ source /home/dvdk/desk-mx-l/desk-mx8m-l-4.0.0_env.sh
 
</pre>
 
</pre>
  
Line 53: Line 56:
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
 
dvdk@vagrant:~/myproject$ echo $CC
 
dvdk@vagrant:~/myproject$ echo $CC
aarch64-poky-linux-gcc -mcpu=cortex-a53+crc+crypto -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/dvdk/desk-mx-l/sdk/desk-mx8m-l-2.0.0-toolchain/sysroots/aarch64-poky-linux
+
aarch64-poky-linux-gcc -march=armv8-a+crc+crypto -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/yocto/sdk/desk-mx8m-l/desk-mx8m-l-4.0.0-rc2/sysroots/armv8a-poky-linux
 
dvdk@vagrant:~/myproject$  
 
dvdk@vagrant:~/myproject$  
 
</pre>
 
</pre>
Line 61: Line 64:
 
dvdk@vagrant:~/myproject$ $CC hello.c -o hello
 
dvdk@vagrant:~/myproject$ $CC hello.c -o hello
 
dvdk@vagrant:~/myproject$ file hello
 
dvdk@vagrant:~/myproject$ file hello
hello: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=497fafcb543f87ac45afb33d43506381c3473e7b, for GNU/Linux 3.14.0, not stripped
+
hello: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=a7220d78ac1016774b614ce1d50adae71cd713a3, for GNU/Linux 3.14.0, with debug_info, not stripped
dvdk@vagrant:~/myproject$  
+
dvdk@vagrant:~/myproject$
 
</pre>
 
</pre>
  
Line 70: Line 73:
  
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
dvdk@vagrant:~/myproject$ sudo cp hello /home/dvdk/desk-mx-l/rfs/desk-mx8m-l/home/root/
+
dvdk@vagrant:~/myproject$ sudo cp hello /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
dvdk@vagrant:~/myproject$ sudo ls -la /home/dvdk/desk-mx-l/rfs/desk-mx8m-l/home/root/
+
dvdk@vagrant:~/myproject$ sudo cp ls -la /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
total 24
+
cp: cannot stat 'ls': No such file or directory
drwx------ 2 root root  4096 Feb 15 18:53 .
+
dvdk@vagrant:~/myproject$ sudo ls -la /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
drwxr-xr-x 3 root root  4096 Jan 20 16:44 ..
+
total 32
-rwxr-xr-x 1 root root 13256 Feb 15 18:53 hello
+
drwx------ 3 root root  4096 Jul 25 12:52 .
 +
drwxr-xr-x 4 root root  4096 Mar  9  2018 ..
 +
-rwxr-xr-x 1 root root 13928 Jul 25 12:52 hello
 +
drwxr-xr-x 7 root root  4096 Mar  9  2018 .nxp-demo-experience
 +
-rw-r--r-- 1 root root  1011 Mar  9  2018 .profile
 
dvdk@vagrant:~/myproject$  
 
dvdk@vagrant:~/myproject$  
 
</pre>
 
</pre>
Line 81: Line 88:
 
on the target:
 
on the target:
  
<pre>
+
<pre class="workstation-terminal">
 
...
 
...
 
...
 
...
 
...
 
...
[  OK  ] Started NFS status monitor for NFSv2/3 locking..
 
        Starting Permit User Sessions...
 
[  OK  ] Started Target Communication Framework agent.
 
[  OK  ] Started Xinetd A Powerful Replacement For Inetd.
 
[  OK  ] Started Kernel Logging Service.
 
[  OK  ] Started Permit User Sessions.
 
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
 
[  OK  ] Started Getty on tty1.
 
[  OK  ] Started Serial Getty on ttymxc1.
 
[  OK  ] Reached target Login Prompts.
 
 
[  OK  ] Reached target Multi-User System.
 
[  OK  ] Reached target Multi-User System.
         Starting Update UTMP about System Runlevel Changes...
+
[  OK  ] Started Weston, a Wayland .|mpositor, as a system service.
[  OK  ] Started Update UTMP about System Runlevel Changes.
+
[  OK  ] Reached target Graphical Interface.
 +
         Starting Record Runlevel Change in UTMP...
 +
[  OK  ] Started Hostname Service.
 +
[  OK  ] Started WPA supplicant.
 +
[  OK  ] Finished Record Runlevel Change in UTMP.
  
NXP i.MX Release Distro 5.4-zeus desk-mx8mp ttymxc1
+
NXP i.MX Release Distro 5.15-kirkstone desk-mx8mp ttymxc1
  
 
desk-mx8mp login: root
 
desk-mx8mp login: root
 +
-sh: /etc/profile.d/debuginfod.csh: line 17: syntax error: unexpected end of file
 +
root@desk-mx8mp:~#
 
root@desk-mx8mp:~# ls -la
 
root@desk-mx8mp:~# ls -la
total 32
+
total 44
drwx------ 3 root root  4096 Dec 15 21:35 .
+
drwx------ 3 root root  4096 Jul 25 10:56 .
drwxr-xr-x 3 root root  4096 Jan 20 2022 ..
+
drwxr-xr-x 4 root root  4096 Mar 9  2018 ..
-rw------- 1 root root     7 Dec 15 2021 .bash_history
+
-rw------- 1 root root 8362 Jul 25 10:53 .bash_history
-rwxr-xr-x 1 root root 13256 Dec 15 21:35 hello
+
drwxr-xr-x 7 root root 4096 Mar  9  2018 .nxp-demo-experience
root@desk-mx8mp:~# ./hello
+
-rw-r--r-- 1 root root  1011 Mar  9  2018 .profile
 +
-rwxr-xr-x 1 root root 13928 Jul 25 10:55 hello
 +
root@desk-mx8mp:~# ./hello  
 
Hello, World!
 
Hello, World!
 
root@desk-mx8mp:~#
 
root@desk-mx8mp:~#

Revision as of 10:57, 25 July 2023

History
ID# Issue Date Notes

16121

17/02/2022 First DESK-MX8M-L release

17547

24/02/2023 DESK-MX8M-L-2.0.0 release

17547

25/07/2023 DESK-MX8M-L-4.0.0 release



Hello World example[edit | edit source]

Here below an example on C code displaying the classic Hello World! message on the target serial console.

This example shows how to use the arm cross-compiler using the environment configured for this purpose

Setting the cross-compiler[edit | edit source]

It is assumed that the development environment has been set up properly as described here.

  • start the Linux development VM and login into the system
  • open a terminal window and cd into your source code directory
dvdk@vagrant:~$ mkdir -p ~/myproject
dvdk@vagrant:~$ cd ~/myproject/
dvdk@vagrant:~/myproject$ vi hello.c
dvdk@vagrant:~/myproject$ cat hello.c 
#include <stdio.h>

int main(){
        printf("Hello, World!\n");
        return 0;
}
  • configure the build environment
dvdk@vagrant:~/myproject$ source /home/dvdk/desk-mx-l/desk-mx8m-l-4.0.0_env.sh
  • as you can see here below, the $CC environment variable has been properly configured for using the SDK sysroot parameter:
dvdk@vagrant:~/myproject$ echo $CC
aarch64-poky-linux-gcc -march=armv8-a+crc+crypto -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/yocto/sdk/desk-mx8m-l/desk-mx8m-l-4.0.0-rc2/sysroots/armv8a-poky-linux
dvdk@vagrant:~/myproject$ 
  • invoke the cross-compiler for compiling your source code example: the object file obtained, is a proper ELF 64-bit for the target microprocessor
dvdk@vagrant:~/myproject$ $CC hello.c -o hello
dvdk@vagrant:~/myproject$ file hello
hello: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=a7220d78ac1016774b614ce1d50adae71cd713a3, for GNU/Linux 3.14.0, with debug_info, not stripped
dvdk@vagrant:~/myproject$

Running the example on the target[edit | edit source]

Now it is enough to copy the object file in the /home/root rfs directory and boot from nfs...

dvdk@vagrant:~/myproject$ sudo cp hello /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
dvdk@vagrant:~/myproject$ sudo cp ls -la /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
cp: cannot stat 'ls': No such file or directory
dvdk@vagrant:~/myproject$ sudo ls -la /home/dvdk/desk-mx-l/rfs/desk-mx8m-l-4.0.0/mx8mp/home/root/
total 32
drwx------ 3 root root  4096 Jul 25 12:52 .
drwxr-xr-x 4 root root  4096 Mar  9  2018 ..
-rwxr-xr-x 1 root root 13928 Jul 25 12:52 hello
drwxr-xr-x 7 root root  4096 Mar  9  2018 .nxp-demo-experience
-rw-r--r-- 1 root root  1011 Mar  9  2018 .profile
dvdk@vagrant:~/myproject$ 

on the target:

...
...
...
[  OK  ] Reached target Multi-User System.
[  OK  ] Started Weston, a Wayland .|mpositor, as a system service.
[  OK  ] Reached target Graphical Interface.
         Starting Record Runlevel Change in UTMP...
[  OK  ] Started Hostname Service.
[  OK  ] Started WPA supplicant.
[  OK  ] Finished Record Runlevel Change in UTMP.

NXP i.MX Release Distro 5.15-kirkstone desk-mx8mp ttymxc1

desk-mx8mp login: root
-sh: /etc/profile.d/debuginfod.csh: line 17: syntax error: unexpected end of file
root@desk-mx8mp:~#
root@desk-mx8mp:~# ls -la
total 44
drwx------ 3 root root  4096 Jul 25 10:56 .
drwxr-xr-x 4 root root  4096 Mar  9  2018 ..
-rw------- 1 root root  8362 Jul 25 10:53 .bash_history
drwxr-xr-x 7 root root  4096 Mar  9  2018 .nxp-demo-experience
-rw-r--r-- 1 root root  1011 Mar  9  2018 .profile
-rwxr-xr-x 1 root root 13928 Jul 25 10:55 hello
root@desk-mx8mp:~# ./hello 
Hello, World!
root@desk-mx8mp:~#