The goal of this page is to describe the OpenJDK installation procedure on your STM32 MPU board and (native) desktop, in a STM32MP1 Distribution Package environment.
It is the "Open Standard Edition Java Development Kit" installation process.
According to the OpenstLinux Weston software architecture, XWayland is used for all Java applications based on X11, which 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]
- STM32MP157x-DKx Discovery kit or STM32MP157x-EV1 Evaluation board
- a keyboard and 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 STM32MPU Distribution Package#Installing the OpenSTLinux distribution article.
The process has been verified with ecosystem release v5.0.0 of the OpenSTlinux distribution.
Information |
The Host OS Ubuntu release 18.04 and next is required. See PC prerequisites |
2. The yoctoproject meta-java[edit source]
JAVA for Linux-based embedded systems is available as metadata in the Yocto project.
- Clone the following git repository into [your STM32MP1 Distribution path]/layers
cd [your STM32MP1 Distribution path]/layers git clone git://git.yoctoproject.org/meta-java
Depending on the Yocto release, select the right branch. (for example, branch mickledore for the ecosystem release v5.0.0 )
Information |
The last commit tested is ae2952c7668db180fa6acefe82457df913342837 : openjdk-8: Add compatability with GCC 12.x |
cd meta-java git checkout remotes/origin/mickledore
- Two patches need to be applied to meta-java layers:
- In recipes-core/xml-commons/xml-commons-resolver1.1_1.2.bb
-SRC_URI = "http://archive.apache.org/dist/xml/commons/xml-commons-resolver-${PV}.tar.gz" +SRC_URI = "http://archive.apache.org/dist/xml/commons/binaries/xml-commons-resolver-${PV}.tar.gz" # In recipes-core/openjdk/openjdk-8_272.bb +ERROR_QA:remove = "patch-fuzz"
- If not already done, set up your build environment
cd [your STM32MP1 Distribution path] source layers/meta-st/scripts/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]/layers/meta-java
- Define at least the following variables in your local.conf file
([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 \
- Increase the Rootfs partition size
Update the file ([your STM32MP1 Distribution path]/ layers/meta-st/meta-st-stm32mp/conf/machine/include/st-machine-common-stm32mp.inc)
IMAGE_ROOTFS_MAXSIZE = "819200"
- Build the image
cd [your STM32MP1 Distribution path]/build-openstlinuxweston-stm32mp1 bitbake st-image-weston
3. Compilation and execution of some JAVA demos[edit source]
- 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. To execute in a Linux Weston console on the board, with a keyboard and a mouse.
cd /usr/lib/jvm/openjdk-8/demo/jfc/SampleTree java -jar SampleTree.jar