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

From DAVE Developer's Wiki
Jump to: navigation, search
(Setting the cross-compiler)
 
(6 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
 
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
 
|-  
 
|-  
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Version
 
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
|-
 
|-
|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"|X.Y.Z
+
|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"|{{oldid|18163|2023/08/01}}
|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"|01/08/2023
 
 
|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"|DESK-MP1-L-1.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:#edf8fb; padding:5px; color:#000000"|DESK-MP1-L-1.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"|2023/08/31
 +
!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-MP1-L-1.0.1 release
 
|-
 
|-
 
|}
 
|}
Line 23: Line 24:
  
 
=== Setting the cross-compiler ===
 
=== Setting the cross-compiler ===
It is assumed that the development environment has been set up properly as described [[DESK-MP1-L#Quick_start_guide|here]].
 
 
* start the Linux development VM and login into the system
 
* start the Linux development VM and login into the system
 
* open a terminal window and ''cd'' into your source code directory
 
* open a terminal window and ''cd'' into your source code directory
Line 42: Line 42:
 
* configure the build environment
 
* configure the build environment
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
dvdk@vagrant:~/myproject$ source /home/dvdk/desk-mp1-l/desk-mp1-l-1.0.0_env.sh
+
dvdk@vagrant:~/myproject$ source /home/dvdk/desk-mp1-l/desk-mp1-l-1.0.1_env.sh
 
</pre>
 
</pre>
  
Line 48: Line 48:
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
 
dvdk@vagrant:~/myproject$ echo $CC
 
dvdk@vagrant:~/myproject$ echo $CC
arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/yocto/sdk/desk-mp1-l/desk-mp1-l-1.0.0/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
+
arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/yocto/sdk/desk-mp1-l/desk-mp1-l-1.0.1/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
 
dvdk@vagrant:~/myproject$  
 
dvdk@vagrant:~/myproject$  
 
</pre>
 
</pre>
Line 62: Line 62:
 
=== Running the example on the target ===
 
=== Running the example on the target ===
  
Now it is enough to copy the object file in the <code>/home/root</code> rfs directory and [[ETRA SOM/DESK-MP1-L/General/Booting_from_NFS | boot from nfs...]]
+
Now it is enough to copy the object file in the <code>/home/root</code> rfs directory and [[DESK-MP1-L/General/Booting_from_NFS | boot from nfs...]]
  
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
Line 95: Line 95:
 
----
 
----
  
[[Category:ETRA]]
+
[[Category:ETRA]] [[Category:ETRA_SBC]]

Latest revision as of 10:21, 1 February 2024

History
Issue Date Notes

2023/08/01

DESK-MP1-L-1.0.0 release
2023/08/31 DESK-MP1-L-1.0.1 release



Hello word 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]

  • start the Linux development VM and login into the system
  • open a terminal window and cd into your source code directory
dvdk@vagrant:~$ mkdir 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-mp1-l/desk-mp1-l-1.0.1_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
arm-ostl-linux-gnueabi-gcc -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/opt/yocto/sdk/desk-mp1-l/desk-mp1-l-1.0.1/sysroots/cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
dvdk@vagrant:~/myproject$ 
  • invoke the cross-compiler for compiling your source code example: the object file obtained, is a proper ELF 32-bit for the target microprocessor
dvdk@vagrant:~/myproject$ $CC hello.c -o hello
dvdk@vagrant:~/myproject$ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=70fc28d38cfb763980920bd9c16765823ed4b087, for GNU/Linux 3.2.0, with debug_in
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-mp1-l/rfs/desk-mp1-l/home/root/
dvdk@vagrant:~/myproject$ sudo ls -la /home/dvdk/desk-mp1-l/rfs/desk-mp1-l/home/root/
total 28
drwx------ 2 root root  4096 Aug  1 08:21 .
drwxr-xr-x 4 root root  4096 Sep 20  2022 ..
-rwxr-xr-x 1 root root 11980 Aug  1 08:21 hello
-rw-r--r-- 1 root root   959 Sep 20  2022 .profile
-rw-r--r-- 1 root root   238 Sep 20  2022 README-CHECK-GPU
dvdk@vagrant:~/myproject$ 

on the target:

root@desk-mp1:~# ls -la
total 32
drwx------ 2 root root  4096 Aug  1  2023 .
drwxr-xr-x 4 root root  4096 Sep 20  2022 ..
-rw------- 1 root root    13 Aug  1  2023 .ash_history
-rw-r--r-- 1 root root   959 Sep 20  2022 .profile
-rw-r--r-- 1 root root   238 Sep 20  2022 README-CHECK-GPU
-rwxr-xr-x 1 root root 11980 Aug  1  2023 hello
root@desk-mp1:~# ./hello 
Hello, World!
root@desk-mp1:~#