Difference between revisions of "Windows On ARM BSP User Guide for ROM-5720"

From ESS-WIKI
Jump to: navigation, search
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
 
== Windows On ARM (WoA) Version ==
 
== Windows On ARM (WoA) Version ==
  
Windows&nbsp;: 20H2 (en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso)<br/>NXP BSP&nbsp;: W1809 (W1809_1_1_0_imx-firmware.tgz, W1809_1_1_0_imx-iotcore.zip)
+
Windows&nbsp;: 20H2 (en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso)<br/> NXP BSP&nbsp;: W1809 (W1809_1_1_0_imx-firmware.tgz, W1809_1_1_0_imx-iotcore.zip)
  
 
== Released Image ==
 
== Released Image ==
  
[https://www.dropbox.com/sh/7h3nnhsr891irqw/AADyEFUqUqCVDOtdADgaV_-5a?dl=0 20220412]
+
[[IoTGateway/BSP/Linux/OS_Support_List_Windows_On_Arm_for_ROM5720|OS_Support_List_Windows_On_Arm_for_ROM5720]]
  
 
== Build Environment on Host ==
 
== Build Environment on Host ==
Line 74: Line 75:
 
=== <font color="#0070c0">Set up bootloader / UEFI source code</font> ===
 
=== <font color="#0070c0">Set up bootloader / UEFI source code</font> ===
  
{| border="1" cellspacing="1" cellpadding="1" style="width:500px;"
+
{| border="1" cellpadding="1" cellspacing="1" style="width:500px;"
 
|-
 
|-
| [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\W1809_1_1_0_imx-firmware.tgz|W1809_1_1_0_imx-firmware.tgz]]<br/>
+
| [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\W1809_1_1_0_imx-firmware.tgz|W1809_1_1_0_imx-firmware.tgz]]
| [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\W1809_1_1_0_imx-iotcore.zip|W1809_1_1_0_imx-iotcore.zip]]<br/>
+
| [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\W1809_1_1_0_imx-iotcore.zip|W1809_1_1_0_imx-iotcore.zip]]
 
|-
 
|-
| [[File:W1809 1 1 0 imx-firmware.tgz.png|RTENOTITLE]]<br/>
+
| [[File:W1809 1 1 0 imx-firmware.tgz.png|RTENOTITLE]]
| [[File:W1809 1 1 0 imx-iotcore.zip.png|RTENOTITLE]]<br/>
+
| [[File:W1809 1 1 0 imx-iotcore.zip.png|RTENOTITLE]]
 
|}
 
|}
  
Line 111: Line 112:
 
</pre>
 
</pre>
  
All of files are collected on git server. please check following.
+
There is a integrated vesion in git server. please check following.
 
<pre>$ cd ~/BSP
 
<pre>$ cd ~/BSP
 
$ mkdir WoA
 
$ mkdir WoA
Line 126: Line 127:
 
</pre>
 
</pre>
  
PS: Before build ROM-5720, there are something have done first.<br/>1).Replace keyword 'python3' with 'python' in adv-buildme64.sh.<br/>2).The path of AARCH64_TOOLCHAIN_PATH must be in the HOME path.<br/>3).Build EVK configuration first.
+
PS: Before build ROM-5720, there are something have done first.<br/> 1).Replace keyword 'python3' with 'python' in adv-buildme64.sh.<br/> 2).The path of AARCH64_TOOLCHAIN_PATH must be in the HOME path.<br/> 3).Build EVK configuration first.
 
<pre>$ ./adv-buildme64.sh -b 8M -t all -bc DEBUG
 
<pre>$ ./adv-buildme64.sh -b 8M -t all -bc DEBUG
 
</pre>
 
</pre>
  
4).for ROM-5720 bootloader setting, the soc.mak have to be modified.<br/>[[File:Soc.mak adv-imx8mq-rom5720-a1.dtb.png|RTENOTITLE]]
+
4).for ROM-5720 bootloader setting, the soc.mak have to be modified.<br/> [[File:Soc.mak adv-imx8mq-rom5720-a1.dtb.png|RTENOTITLE]]
  
 
The firmware will be generated in the following
 
The firmware will be generated in the following
Line 163: Line 164:
 
[[File:Woa vs GenerateBSP.png|RTENOTITLE]]
 
[[File:Woa vs GenerateBSP.png|RTENOTITLE]]
  
If get any errors about Hal*,<br/><font color="#ff0000">The specified timestamp server either could not be reached or… HalExtiMXDma</font><br/>please remove following projects<br/>[[File:Woa vs hal.png|RTENOTITLE]]
+
If get any errors about Hal*,<br/> <font color="#ff0000">The specified timestamp server either could not be reached or… HalExtiMXDma</font><br/> please remove following projects<br/> [[File:Woa vs hal.png|RTENOTITLE]]
  
 
Go to following path, add those three projects back
 
Go to following path, add those three projects back
Line 178: Line 179:
 
<pre>en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso/sources/</pre>
 
<pre>en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso/sources/</pre>
  
Extract Windows IoT for NXP - IoTEntOnNXP.v1.3.zip and put the <font color="#0070c0">install.wim</font> in the 'image' folder Build WinPE Image<br/>Using v1.3 [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\make-winpe-enterprise-windebugv1.3.cmd|make-winpe-enterprise-windebug.cmd]]
+
Extract Windows IoT for NXP - IoTEntOnNXP.v1.3.zip and put the <font color="#0070c0">install.wim</font> in the 'image' folder Build WinPE Image<br/> Using v1.3 [[\\172.22.31.128\risc$\Platform\Microsoft\Windows10_1809\W20H2\make-winpe-enterprise-windebugv1.3.cmd|make-winpe-enterprise-windebug.cmd]]
 
<pre>c:\>cd IoTEntOnNXP.v1.3
 
<pre>c:\>cd IoTEntOnNXP.v1.3
 
c:\IoTEntOnNXP.v1.3>make-winpe-enterprise-windebug.cmd /testbin /image ..\image\install.wim /splitwim /windebug /winpedebug
 
c:\IoTEntOnNXP.v1.3>make-winpe-enterprise-windebug.cmd /testbin /image ..\image\install.wim /splitwim /windebug /winpedebug
 
</pre>
 
</pre>
  
Get SD card number<br/>1).Open command line as administrator<br/>2).Check number by enter following (SD card 16GB)
+
Get SD card number<br/> 1).Open command line as administrator<br/> 2).Check number by enter following (SD card 16GB)
 
<pre>C:\Windows\system32>diskpart
 
<pre>C:\Windows\system32>diskpart
 
DISKPART> list disk
 
DISKPART> list disk
Line 195: Line 196:
 
<pre>c:\IoTEntOnNXP>make-winpe-enterprise-windebug.cmd /apply 1
 
<pre>c:\IoTEntOnNXP>make-winpe-enterprise-windebug.cmd /apply 1
 
</pre>
 
</pre>
 +
 +
=== <font color="#0070c0">Flash EMMC</font> ===
 +
 +
To flash image to EMMC via SD card, please refer to [[:File:ROM5720-Install_an_image_on_Windows_on_ARM_ROM.pdf|HERE]].
 +
 +
=== <font color="#0070c0">Flash Mac Address</font> ===
 +
 +
Windows on ARM adopted mac address in ROM instead of SPI-ROM. To flash mac address in bootloader please type any key in bootloader stage during boot process. If mac is <font color="#0070c0">74:fe:48:65:45:35</font>, please enter following command
 +
<pre>fuse prog 9 0 0x48654535
 +
fuse prog 9 1 0x000074fe
 +
</pre>
 +
 +
[[File:Woa fuse prog.jpg|600x250px|Woa fuse prog.jpg]]
 +
 +
You may check mac address
 +
<pre>fuse read 9 0
 +
</pre>
 +
 +
The result will be
 +
 +
[[File:Woa fuse prog result.jpg|600x84px|Woa fuse prog result.jpg]]
 +
 +
== Reference ==
 +
 +
=== <font color="#0070c0">Update uefi.fit and flash.bin in the Firmware Downloader</font> ===
 +
 +
1).Plug Firmware Downloader SD card<br/> 2).Copy the file
 +
<pre>$ sudo mount /dev/sdX2 /mnt
 +
$ sudo cp <PATH_TO_FILES>/{uefi.fit,flash.bin} /mnt/home/root/win10/
 +
$ sudo umount /mnt
 +
</pre>
 +
 +
=== <font color="#0070c0">Restore OS installer SD card</font> ===
 +
 +
If the OS installer SD card have do installing&nbsp;process completed already, it have to restore again for re-using.<br/> 1).Rename <font color="#0070c0">_efi</font> folder to <font color="#0070c0">EFI</font><br/> 2).Change partition id
 +
<pre>C:\Windows\system32> diskpart
 +
DISKPART> list disk
 +
  Disk ###  Status        Size    Free    Dyn  Gpt
 +
  --------  -------------  -------  -------  ---  ---
 +
  Disk 0    Online          465 GB  1024 KB        *
 +
  Disk 1    No Media          0 B      0 B
 +
  Disk 2    Online          14 GB      0 B        *
 +
 +
DISKPART> sel disk 2
 +
Disk 2 is now the selected disk.
 +
DISKPART> list partition
 +
 +
  Partition ###  Type              Size    Offset
 +
  -------------  ----------------  -------  -------
 +
  Partition 1    Unknown            32 MB  1024 KB
 +
  Partition 2    Primary            29 GB    33 MB
 +
 +
DISKPART> sel partition 1
 +
Partition 1 is now the selected partition.
 +
DISKPART> set id="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
 +
DiskPart successfully set the partition ID.
 +
DISKPART> exit
 +
</pre>
 +
 +
The utility scripts\diskpart will change partition id after installing process completed.

Latest revision as of 08:38, 31 May 2022

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

OS_Support_List_Windows_On_Arm_for_ROM5720

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
RTENOTITLE RTENOTITLE

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

There is a integrated vesion in 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.
RTENOTITLE

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

Set up build environment

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

RTENOTITLE

Right click "GenerateBSP" and select 'properties' Click NMake -> Build Command Line -> Edit, and added following setting

call ..\..\..\tools\BuildBSP.bat iMX8 ROM5720_iMX8M_2GB

Build

Open Visual Studio as administrator Open solution file

<BSP>/imx-iotcore/build/solution/iMXPlatform/iMXPlatform.sln

Right click 'GenerateBSP' and select 'build'

RTENOTITLE

If get any errors about Hal*,
The specified timestamp server either could not be reached or… HalExtiMXDma
please remove following projects
RTENOTITLE

Go to following path, add those three projects back

<BSP>\imx-iotcore\components\NXP.SignedDrivers\VsProjects

Build each hal* project and build 'GenerateBSP' again The build result will be in the

<BSP>\imx-iotcore\BSP\ROM5720_iMX8M_2GB\

Flash Image

Make OS Installer

Extract install.wim from Windows IoT image

en_windows_10_iot_enterprise_version_20h2_arm64_dvd_fe0947da.iso/sources/

Extract Windows IoT for NXP - IoTEntOnNXP.v1.3.zip and put the install.wim in the 'image' folder Build WinPE Image
Using v1.3 make-winpe-enterprise-windebug.cmd

c:\>cd IoTEntOnNXP.v1.3
c:\IoTEntOnNXP.v1.3>make-winpe-enterprise-windebug.cmd /testbin /image ..\image\install.wim /splitwim /windebug /winpedebug

Get SD card number
1).Open command line as administrator
2).Check number by enter following (SD card 16GB)

C:\Windows\system32>diskpart
DISKPART> list disk
  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          465 GB  1024 KB        *
  Disk 1    Online           14 GB      0 B        *

Flash image to SD card

c:\IoTEntOnNXP>make-winpe-enterprise-windebug.cmd /apply 1

Flash EMMC

To flash image to EMMC via SD card, please refer to HERE.

Flash Mac Address

Windows on ARM adopted mac address in ROM instead of SPI-ROM. To flash mac address in bootloader please type any key in bootloader stage during boot process. If mac is 74:fe:48:65:45:35, please enter following command

fuse prog 9 0 0x48654535 
fuse prog 9 1 0x000074fe

Woa fuse prog.jpg

You may check mac address

fuse read 9 0

The result will be

Woa fuse prog result.jpg

Reference

Update uefi.fit and flash.bin in the Firmware Downloader

1).Plug Firmware Downloader SD card
2).Copy the file

$ sudo mount /dev/sdX2 /mnt
$ sudo cp <PATH_TO_FILES>/{uefi.fit,flash.bin} /mnt/home/root/win10/
$ sudo umount /mnt

Restore OS installer SD card

If the OS installer SD card have do installing process completed already, it have to restore again for re-using.
1).Rename _efi folder to EFI
2).Change partition id

C:\Windows\system32> diskpart
DISKPART> list disk
  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          465 GB  1024 KB        *
  Disk 1    No Media           0 B      0 B
  Disk 2    Online           14 GB      0 B        *

DISKPART> sel disk 2
Disk 2 is now the selected disk.
DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Unknown             32 MB  1024 KB
  Partition 2    Primary             29 GB    33 MB

DISKPART> sel partition 1
Partition 1 is now the selected partition.
DISKPART> set id="c12a7328-f81f-11d2-ba4b-00a0c93ec93b"
DiskPart successfully set the partition ID.
DISKPART> exit

The utility scripts\diskpart will change partition id after installing process completed.