Windows On ARM BSP User Guide for ROM-5720
Contents
Windows On ARM (WoA) Version
Windows : 20H2 (en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso)
NXP BSP : W1809 (W1809_1_1_0_imx-firmware.tgz, W1809_1_1_0_imx-iotcore.zip)
Released Image
Build Environment on Host
Currently, we adopt Docker as build environment.
You can get the advrisc/u14.04-410clbv1 Docker image for developing WoA projects.
Docker command:
$ docker pull advrisc/u14.04-410clbv1
Run Docker example
Step1 Run docker container (example)
sudo docker run -it --name <CONTAINER_NAME> -v <PATH_TO_BSP>:/home/adv/BSP:rw advrisc/u14.04-410clbv1 /bin/bash
Step2 In container, change the user. (example)
adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
Install Dependency Packages
$ sudo apt-get update $ sudo apt-get install -y attr build-essential python python-dev python-crypto python-wand device-tree-compiler bison flex swig iasl uuid-dev wget git bc libssl-dev zlib1g-dev python3-pip
New for 1903 UEFI
$ sudo apt-get install -y gcc g++ make python3 mono-devel
Upgrade Python 3.6
$ wget https://www.python.org/ftp/python/3.9.0/Python-3.6.3.tgz $ tar -xvf Python-3.6.3.tgz $ cd Python-3.6.3 $ sudo ./configure --enable-optimizations --with-ensurepip=install $ make -j 8 $ sudo make altinstall
Configure python alternatives
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1 $ sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.6 2
$ sudo pip3.6 install --upgrade pip $ pip install pycryptodome
Upgrade Git 2.25 (> 2.11)
$ sudo apt-get install -y tcl build-essential tk gettext $ wget https://github.com/git/git/archive/v2.25.0.tar.gz $ tar zxvf v2.25.0.tar.gz $ cd git-2.25.0/ $ make configure $ ./configure --prefix=/usr $ make all $ sudo make install
ToolChain
$ cd ~ $ wget https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz $ tar xf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz $ rm gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz
Getting Source Code
Set up bootloader / UEFI source code
W1809_1_1_0_imx-firmware.tgz |
W1809_1_1_0_imx-iotcore.zip |
|
|
Extract BSP files
$ mkdir <new bsp folder> $ unzip W*_imx-iotcore*.zip -d <new bsp folder> $ tar -xf W*_imx-firmware*.tgz -C <new bsp folder>
Add more additional files
$ git clone https://AIM-Linux@dev.azure.com/AIM-Linux/ms-iot-ent/_git/adv-build $ cp -a adv-build/adv-buildme64.sh <new bsp folder> $ cp -a adv-build/enterprise <new bsp folder> $ cp -a adv-build/ROM5720_iMX8M_2GB <new bsp folder>/imx-iotcore/build/board/
Update UEFI
$ cd <new bsp folder> $ rm -rf mu_platform_nxp $ git clone https://AIM-Linux@dev.azure.com/AIM-Linux/ms-iot-ent/_git/mu_platform_nxp $ cd mu_platform_nxp $ sudo pip install -r requirements.txt --upgrade $ cp -a /usr/local/lib/python3.6/site-packages/* /home/adv/.local/lib/python3.6/site-packages/
Update U-Boot
$ cd ../u-boots $ rm -rf u-boot-imx_arm64 $ git clone https://AIM-Linux@dev.azure.com/AIM-Linux/ms-iot-ent/_git/u-boot-imx_arm64
All of files are collected on git server. please check following.
$ cd ~/BSP $ mkdir WoA $ cd WoA $ git config --global user.name "Your Name" $ git config --global user.email you@example.com $ ../repo/repo init -u https://AIM-Linux@dev.azure.com/AIM-Linux/ms-iot-ent/_git/manifest -m W1809_1_1_0.xml $ ../repo/repo sync
Build Firmware / UEFI
$ export AARCH64_TOOLCHAIN_PATH=~/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- $ ./adv-buildme64.sh -b 5720 -t all -bc DEBUG
PS: Before build ROM-5720, there are something have done first.
1).Replace keyword 'python3' with 'python' in adv-buildme64.sh.
2).The path of AARCH64_TOOLCHAIN_PATH must be in the HOME path.
3).Build EVK configuration first.
$ ./adv-buildme64.sh -b 8M -t all -bc DEBUG
4).for ROM-5720 bootloader setting, the soc.mak have to be modified.
The firmware will be generated in the following
<PROJECT_BSP>/imx-iotcore/build/board/<BOARD_NAME>/Package/BootLoader/flash.bin
The uefi will be generated in the following
<PROJECT_BSP>/imx-iotcore/build/board/<BOARD_NAME>/Package/BootFirmware/uefi.fit
Build Driver
Open Visual Studio as administrator Open solution file
<BSP>/imx-iotcore/build/solution/iMXPlatform/iMXPlatform.sln
Make sure the project name in ROM5720_iMX8M_2GB_Package.vcxproj
<ProjectName>ROM5720_iMX8M_2GB</ProjectName>
Right click "Board Packages" -> Add -> Exist Project in the Solution Explorer panel
<BSP>\imx-iotcore\build\board\ROM5720_iMX8M_2GB\Package\ROM5720_iMX8M_2GB_Package.vcxproj
Right click "GenerateBSP" and select 'properties' Click NMake -> Build Command Line -> Edit, and added following setting
call ..\..\..\tools\BuildBSP.bat iMX8 ROM5720_iMX8M_2GB