The goal of this page is to describe the way to install the openJDK on your STM32 MPU board and your desktop (native), in a Distribution Package Environment. It is the "open Standard Edition Java Development Kit" installation process. According to the openstlinux-weston software architecture, we use xwayland for all Java application based on X11, means AWT/SWING Java display/graphical applications. By default the Java Development Kit is installed on the rootfs partition of the target.
1. Prerequisites[edit source]
1.1. Hardware prerequisites[edit source]
- STM32MP157C-DK2 Or a STM32MP157C-EV1
- a keyboardand a mouse connected to the board
1.2. Software prerequisites[edit source]
The STM32MP1 Distribution Package must be installed on your host. To do this follow the procedure described in the Install the STM32MP1 OpenSTLinux distribution article.
2. Add the yoctoproject meta-java in your environment[edit source]
JAVA for Linux-based system for embedded system is available as a meta data in Yocto project.
.Clone following git repository into [your STM32MP1 Distribution path]/layers/meta-st/
PC >git clone git://git.yoctoproject.org/meta-java
Depending on the Yocto release, select the right branch. (example : branch thud for the STM32MP15-Ecosystem-v1.1.0)
cd meta-java git checkout -b remotes/origin/thud
You can have the list of available Yocto branch with the command :
cd meta-java git branch -a master
- remotes/origin/thud
remotes/origin/HEAD -> origin/master remotes/origin/dora remotes/origin/krogoth remotes/origin/master remotes/origin/master-next remotes/origin/morty remotes/origin/pyro remotes/origin/rocko remotes/origin/sumo remotes/origin/thud remotes/origin/warrior remotes/origin/wip
.If not done, setup your build environment
cd [your STM32MP1 Distribution path] source ./meta-st/script/envsetup.sh (Select for the DISTRO openstlinux-weston and for MACHINE stm32mp1)
.Add the meta layer in your yocto environment
cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1 bitbake-layers add-layer [your STM32MP1 Distribution path]/meta-st/meta-java
.Define at least the following variables in a distro include file or local.conf
([your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1/conf/local.conf) #Possible provider: cacao-initial-native and jamvm-initial-native PREFERRED_PROVIDER_virtual/java-initial-native = "cacao-initial-native" #Possible provider: cacao-native and jamvm-native PREFERRED_PROVIDER_virtual/java-native = "jamvm-native" #Optional since there is only one provider for now PREFERRED_PROVIDER_virtual/javac-native = "ecj-bootstrap-native"
.Include in your image the openjdk-8 component
cd [your STM32MP1 Distribution path]/meta-st/meta-st-openstlinux/recipes-st/images
.Edit the file st-image-weston.bb and add the following line under CORE_IMAGE_EXTRA_INSTALL
openjdk-8 \ openjdk-8-demo \
.Build the image
cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1 bitbake st-image-weston
3. Compil and execute some demo[edit source]
The target has to be connected on ethernet, the target IP address <YOUR_TARGET_IP> is read with the following command to execute in a linux weston console.
ifconfig
- Go to deb package folder :
cd <TOP-DIR>/build-openstlinuxweston-stm32mp1/tmp-glibc/deploy/deb/cortexa7hf-neon-vfpv4
- Copy the openjdk-8-demo package on the target :
scp openjdk-8-demo_102b14-r0_armhf.deb root@<YOUR_TARGET_IP>:/home/root/
- Install the openjdk-8-demo package :
On a target linux console, executes the command :
dpkg -i openjdk-8-demo_102b14-r0_armhf.deb
- forkjoin benchmark Java application
cd /usr/lib/jvm/openjdk-8/sample/forkjoin/mergesort javac MergeDemo.java java MergeDemo 200 100 3 1 1 3 Running with parameters: 200 100 3 1 1 3 Time in milliseconds. Y-axis: number of elements. X-axis parallelism used. 1 2 3 200: 10 7 8 300: 17 12 12 400: 20 14 14 Total: 47 33 34
- SampleTree Java application
Read the README.txt file for details
cd /usr/lib/jvm/openjdk-8/demo/jfc/SampleTree java -jar SampleTree.jar
4. Reference list[edit source]