diff --git a/IOTARM64.md b/IOTARM64.md new file mode 100644 index 0000000..35f244d --- /dev/null +++ b/IOTARM64.md @@ -0,0 +1,138 @@ +# 64-bit IoT Core + +This repo currently provides experimental ARM64 IoT Core support for Raspberry Pi 3 and 4. + +The supported version is 1809 (Build 17763). + +## 64-bit firmware + +A 64-bit UEFI firmware for the corresponding platform is required to export the BSP. + +### Raspberry Pi 4 + +For the Raspberry Pi 4, firmware from the [Pi Firmware Task Force](https://rpi4-uefi.dev) is used, which provides UEFI and ACPI support. It is available at https://github.com/pftf/RPi4/releases. + +Place the firmware files in `bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware`, the following files are required. + +```text +config.txt +fixup4.dat +RPI_EFI.fd +start4.elf +bcm2711-rpi-4-b.dtb +bcm2711-rpi-400.dtb +bcm2711-rpi-cm4.dtb +``` + +### Raspberry Pi 3 + +For the Raspberry Pi 3, the Pi Firmware Task Force provides firmware at https://github.com/pftf/RPi3/releases, which provides UEFI and ACPI support. + +Place the firmware files in `bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware`, the following files are required. + +```text +bootcode.bin +config.txt +fixup.dat +RPI_EFI.fd +start.elf +bcm2710-rpi-3-b.dtb +bcm2710-rpi-3-b-plus.dtb +bcm2710-rpi-cm3.dtb +``` + +### 64-bit EFI Customisations + +[SMBIOS requirements of Windows 10 IoT Core OEM Licensing](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/license-requirements#smbios-support) requires a custom version of RPI_EFI.fd with the proper SMBIOS values. + +See [PlatformSmbiosDxe.c](https://github.com/tianocore/edk2-platforms/blob/master/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c) to update the SMBIOS data. Steps to build the RPI_EFI.fd is provided in the [edk2-platforms Github](https://github.com/tianocore/edk2-platforms). + +## Export the 64-bit BSP + +We provide a `binexport.ps1` script to scrape the BSP components together into a zip file for easy use with the IoT ADK AddonKit. +1. Open Powershell +2. Navigate to rpi-iotcore\tools +3. Run `binexport.ps1` with the appropriate arguments. + ```powershell + # Platform: + # RPi - Raspberry Pi 2/3 32-bit BSP + # RPi3.ARM64 - Raspberry Pi 3 64-bit BSP (experimental) + # RPi4.ARM64 - Raspberry Pi 4 64-bit BSP (experimental) + + # OutputDir + # The output directory for the BSP zip file. + + # IsDebug + # Specify to package debug binaries. Default is Release binaries. + .\binexport.ps1 [Platform] [OutputDir] [-IsDebug] + + # Samples + # 64-bit BSP for Raspberry Pi 3, release binaries + .\binexport.ps1 RPi3.ARM64 C:\Release + + # 64-bit BSP for Raspberry Pi 4, debug binaries + .\binexport.ps1 RPi4.ARM64 C:\Debug -IsDebug + ``` +4. The script will generate a zip file **RPix.ARM64.BSP.xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md). + ```powershell + Import-IoTBSP RPi3.ARM64 C:\Temp\RPi3.ARM64.BSP.xx.zip + (or) + Import-IoTBSP RPi4.ARM64 C:\Temp\RPi4.ARM64.BSP.xx.zip + ``` +## Additional Drivers + +Some additional drivers are required for a usable image. + +You'll need the INF-style driver packages. For each INF file, use the following command to create a IoT driver package: + +```powershell +Add-IoTDriverPackage sample_driver.inf Drivers.Sample +``` + +To add driver packages to your IoT Core image, refer to [Add a driver to an image](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/add-a-driver-to-an-image) of the IoT Core manufacturing guide. + +**WARNING:** If you are going to commercialize your IoT device, please make sure you have valid licenses for the drivers you use. + +### USB Driver for Raspberry Pi 3 + +The DWCUSBOTG USB controller driver for Raspberry Pi 2 and 3 is included in the ARM32 IoT Core packages, but not the ARM64 ones. + +The original author of this driver, MCCI, released an ARM64 version of the same driver under a **non commercial** license. The driver is available at https://pi64.win/download-usb-drivers/. + +Download the standalone driver EXE, run the EXE file to extract the driver files. You'll need to add both `mcci_dwchsotg_hub.inf` and `mcci_dwchsotg_hcd.inf`. + +### Drivers for LAN adapters + +The ARM64 IoT Core has drivers for the ASIX AX88772 USB 2.0 to Fast Ethernet Adapter builtin, for other adapters, you'll need to provide your own driver. + +**WARNING:** The bcmgenet driver in this repo, for the GENET Gigabit LAN adapter on Raspberry Pi 4, is currently **NOT** supported on IoT Core. + +- For the builtin adapter on Rasberry Pi 2/3, ARM64 drivers are available from Microchip. \ +To download, go to https://www.microchip.com/en-us/software-library, search for LAN9500 (for Pi 2/3B) or LAN78xx (for Pi 3B+), and select the one listed as "LANxxxx Windows (OneCore) Device Drivers".\ +Download the zip package, and extract the files at `ndis650/arm64`. + +- For Realtek USB LAN adapters (RTL8152, RTL8153, etc), ARM64 drivers are available on Realtek website at https://www.realtek.com/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software. \ +Download the "Win10 Auto Installation Program", open the install EXE with 7-zip, and extract the files at `WIN10/arm64`. + +- **For testing purposes,** you may also extract drivers from a Windows 10 ARM64 v1809 (Build 17763) Desktop image. \ +You can get drivers for these adapters in the following locations: \ +Realtek USB adapters: `Windows\System32\DriverStore\FileRepository\rtuarm64w10.inf_arm64_15e06ca8abe46b2a` \ +ASIX AX88179: `Windows\System32\DriverStore\FileRepository\netax88179_178a.inf_arm64_c5dc3d41b0e4583b` + +## User Interface and App Compatibility + +ARM64 IoT Core does not contain the default graphical user interface. By default, the resulting image will boot to a blank screen and have to be managed via the Device Portal web interface or SSH. + +The UI App, IoTCoreDefaultApp, is available in source at https://github.com/Microsoft/Windows-iotcore-samples/tree/master/Samples/IoTCoreDefaultApp. To add this app to your image, refer to [Add an app to your image](https://docs.microsoft.com/en-us/windows-hardware/manufacture/iot/deploy-your-app-with-a-standard-board) of the IoT Core manufacturing guide. + +IoT Core does not support WOW (Windows on Windows), so only ARM64 apps run on ARM64 IoT Core. + +## GPIO, I2C, SPI Access via WinRT API + +GPIO should work out of the box via the `Windows.Device.Gpio` API. + +I2C and SPI access will **not** work on PFTF / upstream TianoCore firmware, since upstream TianoCore has updated the pin muxing declaration from the Microsoft-proprietary `MsftFunctionConfig` to the new standardized `PinFunction`. + +Windows support for `PinFunction` is added in v1903 (Build 18362), therefore I2C and SPI will not work on IoT Core unless this change is reverted. + +For more information, check out https://edk2.groups.io/g/devel/message/56396, https://github.com/andreiw/RaspberryPiPkg/issues/132, and https://github.com/andreiw/RaspberryPiPkg/commit/87f3611f9da37f594421bbaf513b9aaccee72176. diff --git a/README.md b/README.md index 8cd84b8..3b79e4e 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ For the Raspberry Pi 2 (v1.2) and Raspberry Pi 3, the Pi Firmware Task Force pro ## 32-bit firmware -Sample binaries of the firmware is included in [RPi.BootFirmware](bspfiles/Packages/RPi.BootFirmware) to enable quick prototyping. The sources for these binaries are listed below. +Sample binaries of the firmware is included in [RPi.BootFirmware](bspfiles/RPi/Packages/RPi.BootFirmware) to enable quick prototyping. The sources for these binaries are listed below. 1. Firmware binaries : [RaspberryPi/Firmware](https://github.com/raspberrypi/firmware) 2. UEFI Sources : [RPi/UEFI](https://github.com/ms-iot/RPi-UEFI) @@ -40,20 +40,41 @@ See [PlatformSmbiosDxe.c](https://github.com/ms-iot/RPi-UEFI/blob/ms-iot/Pi3Boar The resulting driver binaries will be located in the `windows-drivers\build\bcm2836\ARM\Output` folder, or `windows-drivers\build\bcm2836\ARM64\Output` if you picked an Arm 64-bit configuration. -## Export the bsp +## 64-bit IoT Core -Note: this section is only applicable to Windows 10 IoT Core. +This repo provides experimental ARM64 IoT Core support for Raspberry Pi 3 and 4. + +Please refer to [IOTARM64.md](IOTARM64.md) for more information. + +## Export the 32-bit BSP + +Note: this section is only applicable to 32-bit Windows 10 IoT Core for Raspberry Pi 3 and earlier, please refer to [IOTARM64.md](IOTARM64.md) for the experimental 64-bit BSP. We provide a `binexport.ps1` script to scrape the BSP components together into a zip file for easy use with the IoT ADK AddonKit. 1. Open Powershell 2. Navigate to rpi-iotcore\tools 3. Run `binexport.ps1` with the appropriate arguments. ```powershell - .\binexport.ps1 C:\Release - (or) - .\binexport.ps1 C:\Release -IsDebug # for debug binaries + # Platform: + # RPi - Raspberry Pi 2/3 32-bit BSP + # RPi3.ARM64 - Raspberry Pi 3 64-bit BSP (experimental) + # RPi4.ARM64 - Raspberry Pi 4 64-bit BSP (experimental) + + # OutputDir + # The output directory for the BSP zip file. + + # IsDebug + # Specify to package debug binaries. Default is Release binaries. + .\binexport.ps1 [Platform] [OutputDir] [-IsDebug] + + # Samples + # 32-bit BSP for Raspberry Pi 2/3, release binaries + .\binexport.ps1 RPi C:\Release + + # 32-bit BSP for Raspberry Pi 2/3, debug binaries + .\binexport.ps1 RPi C:\Debug -IsDebug ``` -4. The script will generate a zip file **RPi_BSP_xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md). - ```powershell - Import-IoTBSP RPi C:\Temp\RPi_BSP_xx.zip +4. The script will generate a zip file **RPi.BSP.xx.zip** that can be imported into the IoT-ADK-Addonkit shell using [Import-IoTBSP](https://github.com/ms-iot/iot-adk-addonkit/blob/master/Tools/IoTCoreImaging/Docs/Import-IoTBSP.md). + ```powershell + Import-IoTBSP RPi C:\Temp\RPi.BSP.xx.zip ``` diff --git a/bspfiles/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi/OEMInputSamples/RetailOEMInput.xml similarity index 100% rename from bspfiles/OEMInputSamples/RetailOEMInput.xml rename to bspfiles/RPi/OEMInputSamples/RetailOEMInput.xml diff --git a/bspfiles/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi/OEMInputSamples/TestOEMInput.xml similarity index 100% rename from bspfiles/OEMInputSamples/TestOEMInput.xml rename to bspfiles/RPi/OEMInputSamples/TestOEMInput.xml diff --git a/bspfiles/Packages/RPi.BootFirmware/LICENCE.broadcom b/bspfiles/RPi/Packages/RPi.BootFirmware/LICENCE.broadcom similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/LICENCE.broadcom rename to bspfiles/RPi/Packages/RPi.BootFirmware/LICENCE.broadcom diff --git a/bspfiles/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml rename to bspfiles/RPi/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml diff --git a/bspfiles/Packages/RPi.BootFirmware/bootcode.bin b/bspfiles/RPi/Packages/RPi.BootFirmware/bootcode.bin similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/bootcode.bin rename to bspfiles/RPi/Packages/RPi.BootFirmware/bootcode.bin diff --git a/bspfiles/Packages/RPi.BootFirmware/config.txt b/bspfiles/RPi/Packages/RPi.BootFirmware/config.txt similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/config.txt rename to bspfiles/RPi/Packages/RPi.BootFirmware/config.txt diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup.dat similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/fixup.dat rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup.dat diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup_cd.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup_cd.dat similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/fixup_cd.dat rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup_cd.dat diff --git a/bspfiles/Packages/RPi.BootFirmware/fixup_x.dat b/bspfiles/RPi/Packages/RPi.BootFirmware/fixup_x.dat similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/fixup_x.dat rename to bspfiles/RPi/Packages/RPi.BootFirmware/fixup_x.dat diff --git a/bspfiles/Packages/RPi.BootFirmware/kernel.img b/bspfiles/RPi/Packages/RPi.BootFirmware/kernel.img similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/kernel.img rename to bspfiles/RPi/Packages/RPi.BootFirmware/kernel.img diff --git a/bspfiles/Packages/RPi.BootFirmware/start.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start.elf similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/start.elf rename to bspfiles/RPi/Packages/RPi.BootFirmware/start.elf diff --git a/bspfiles/Packages/RPi.BootFirmware/start_cd.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start_cd.elf similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/start_cd.elf rename to bspfiles/RPi/Packages/RPi.BootFirmware/start_cd.elf diff --git a/bspfiles/Packages/RPi.BootFirmware/start_x.elf b/bspfiles/RPi/Packages/RPi.BootFirmware/start_x.elf similarity index 100% rename from bspfiles/Packages/RPi.BootFirmware/start_x.elf rename to bspfiles/RPi/Packages/RPi.BootFirmware/start_x.elf diff --git a/bspfiles/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi/Packages/RPi.Customization/RPi.Customization.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Customization/RPi.Customization.wm.xml rename to bspfiles/RPi/Packages/RPi.Customization/RPi.Customization.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/SerPL011.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/SerPL011.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/SerPL011.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcm2836pwm.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcm2836pwm.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcm2836pwm.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcm2836sdhc.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcm2836sdhc.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcm2836sdhc.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmauxspi.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcmauxspi.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcmauxspi.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmgpio.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcmgpio.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcmgpio.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmi2c.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcmi2c.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcmi2c.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/bcmspi.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/bcmspi.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/bcmspi.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/piminiuart.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/piminiuart.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/piminiuart.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpiq.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/rpiq.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/rpiq.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/rpisdhc.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpisdhc.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/rpisdhc.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/rpisdhc.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/rpiwav.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/rpiwav.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/rpiwav.wm.xml diff --git a/bspfiles/Packages/RPi.Drivers/vchiq.wm.xml b/bspfiles/RPi/Packages/RPi.Drivers/vchiq.wm.xml similarity index 100% rename from bspfiles/Packages/RPi.Drivers/vchiq.wm.xml rename to bspfiles/RPi/Packages/RPi.Drivers/vchiq.wm.xml diff --git a/bspfiles/Packages/RPiFM.xml b/bspfiles/RPi/Packages/RPiFM.xml similarity index 100% rename from bspfiles/Packages/RPiFM.xml rename to bspfiles/RPi/Packages/RPiFM.xml diff --git a/bspfiles/Packages/RPiFMFileList.xml b/bspfiles/RPi/Packages/RPiFMFileList.xml similarity index 100% rename from bspfiles/Packages/RPiFMFileList.xml rename to bspfiles/RPi/Packages/RPiFMFileList.xml diff --git a/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml new file mode 100644 index 0000000..d41df57 --- /dev/null +++ b/bspfiles/RPi3.ARM64/OEMInputSamples/RetailOEMInput.xml @@ -0,0 +1,63 @@ + + + Contoso Windows 10 IoT Core Retail FFU with RPi BSP + RPi-R + + RASPBERRY PI + RPi-R + + Production + fre + + + en-us + + + en-us + + + en-us + + + en-us + en-us + + 1024x768 + + + + %BLD_DIR%\MergedFMs\RPiFM.xml + + %BLD_DIR%\MergedFMs\OEMCommonFM.xml + %BLD_DIR%\MergedFMs\OEMFM.xml + + + + IOT_EFIESP + IOT_EFIESP_BCD_MBR + IOT_DMAP_DRIVER + IOT_GENERIC_POP + + IOT_UAP_OOBE + IOT_APP_TOOLKIT + + IOT_BERTHA + IOT_ALLJOYN_APP + + + + + RPI2_DRIVERS + RPI3_DRIVERS + + OEM_CustomCmd + OEM_ProvAuto + + + + + Windows 10 IoT Core + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml new file mode 100644 index 0000000..c7336f7 --- /dev/null +++ b/bspfiles/RPi3.ARM64/OEMInputSamples/TestOEMInput.xml @@ -0,0 +1,87 @@ + + + Contoso Windows 10 IoT Core Test FFU with RPi BSP + RPi-R + + RASPBERRY PI + RPi-R + + Test + fre + + + en-us + + + en-us + + + en-us + + + en-us + en-us + + 1024x768 + + + + %BLD_DIR%\MergedFMs\RPiFM.xml + + %BLD_DIR%\MergedFMs\OEMCommonFM.xml + %BLD_DIR%\MergedFMs\OEMFM.xml + + + %AKROOT%\FMFiles\arm64\IoTUAPNonProductionPartnerShareFM.xml + + + + IOT_EFIESP + IOT_EFIESP_BCD_MBR + IOT_DMAP_DRIVER + IOT_CP210x_MAKERDRIVER + IOT_FTSER2K_MAKERDRIVER + IOT_GENERIC_POP + + IOT_UAP_OOBE + IOT_APP_TOOLKIT + + IOT_WEBB_EXTN + IOT_POWERSHELL + + IOT_SSH + IOT_SIREP + + IOT_ENABLE_TESTSIGNING + IOT_TOOLKIT + + IOT_KDSERIAL_SETTINGS + IOT_UMDFDBG_SETTINGS + IOT_WDTF + IOT_CRT140 + IOT_DIRECTX_TOOLS + + + IOT_BERTHA + IOT_ALLJOYN_APP + IOT_NANORDPSERVER + IOT_SHELL_HOTKEY_SUPPORT + IOT_APPLICATIONS + + + + + RPI2_DRIVERS + RPI3_DRIVERS + + OEM_CustomCmd + OEM_ProvAuto + + + + + Windows 10 IoT Core + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml new file mode 100644 index 0000000..d5a54ad --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml new file mode 100644 index 0000000..5710b51 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml @@ -0,0 +1,19 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml new file mode 100644 index 0000000..43472d0 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/RpiLanPropertyChange.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml new file mode 100644 index 0000000..739e011 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml new file mode 100644 index 0000000..d058572 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml new file mode 100644 index 0000000..4f84ebc --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml new file mode 100644 index 0000000..51a75a3 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml new file mode 100644 index 0000000..b0cef54 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml new file mode 100644 index 0000000..70e4162 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml new file mode 100644 index 0000000..67812a2 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml new file mode 100644 index 0000000..9d2aac1 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml new file mode 100644 index 0000000..0dc9a82 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml new file mode 100644 index 0000000..2f7929b --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiq.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml new file mode 100644 index 0000000..64cd96d --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpisdhc.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml new file mode 100644 index 0000000..fa3b483 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml b/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml new file mode 100644 index 0000000..56bc4bf --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPi3.ARM64FMFileList.xml @@ -0,0 +1,20 @@ + + + true + + + + + + 1024x768 + + + + en-US + + + + en-US + + + diff --git a/bspfiles/RPi3.ARM64/Packages/RPiFM.xml b/bspfiles/RPi3.ARM64/Packages/RPiFM.xml new file mode 100644 index 0000000..1520255 --- /dev/null +++ b/bspfiles/RPi3.ARM64/Packages/RPiFM.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RPI2_DRIVERS + + + + + RPI2_DRIVERS + + + + + RPI2_DRIVERS + + + + + RPI2_GPIO_DRIVER + RPI2_DRIVERS + + + + + RPI2_DRIVERS + + + + + RPI2_DRIVERS + + + + + RPI2_DRIVERS + + + + + RPI_MINIUART + RPI3_DRIVERS + + + + + RPI3_DRIVERS + + + + + + diff --git a/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml b/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml new file mode 100644 index 0000000..3c888a0 --- /dev/null +++ b/bspfiles/RPi4.ARM64/OEMInputSamples/RetailOEMInput.xml @@ -0,0 +1,62 @@ + + + Contoso Windows 10 IoT Core Retail FFU with RPi BSP + RPi-R + + RASPBERRY PI + RPi-R + + Production + fre + + + en-us + + + en-us + + + en-us + + + en-us + en-us + + 1024x768 + + + + %BLD_DIR%\MergedFMs\RPiFM.xml + + %BLD_DIR%\MergedFMs\OEMCommonFM.xml + %BLD_DIR%\MergedFMs\OEMFM.xml + + + + IOT_EFIESP + IOT_EFIESP_BCD_MBR + IOT_DMAP_DRIVER + IOT_GENERIC_POP + + IOT_UAP_OOBE + IOT_APP_TOOLKIT + + IOT_BERTHA + IOT_ALLJOYN_APP + + + + + RPI_DRIVERS + + OEM_CustomCmd + OEM_ProvAuto + + + + + Windows 10 IoT Core + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml b/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml new file mode 100644 index 0000000..febe989 --- /dev/null +++ b/bspfiles/RPi4.ARM64/OEMInputSamples/TestOEMInput.xml @@ -0,0 +1,86 @@ + + + Contoso Windows 10 IoT Core Test FFU with RPi BSP + RPi-R + + RASPBERRY PI + RPi-R + + Test + fre + + + en-us + + + en-us + + + en-us + + + en-us + en-us + + 1024x768 + + + + %BLD_DIR%\MergedFMs\RPiFM.xml + + %BLD_DIR%\MergedFMs\OEMCommonFM.xml + %BLD_DIR%\MergedFMs\OEMFM.xml + + + %AKROOT%\FMFiles\arm64\IoTUAPNonProductionPartnerShareFM.xml + + + + IOT_EFIESP + IOT_EFIESP_BCD_MBR + IOT_DMAP_DRIVER + IOT_CP210x_MAKERDRIVER + IOT_FTSER2K_MAKERDRIVER + IOT_GENERIC_POP + + IOT_UAP_OOBE + IOT_APP_TOOLKIT + + IOT_WEBB_EXTN + IOT_POWERSHELL + + IOT_SSH + IOT_SIREP + + IOT_ENABLE_TESTSIGNING + IOT_TOOLKIT + + IOT_KDSERIAL_SETTINGS + IOT_UMDFDBG_SETTINGS + IOT_WDTF + IOT_CRT140 + IOT_DIRECTX_TOOLS + + + IOT_BERTHA + IOT_ALLJOYN_APP + IOT_NANORDPSERVER + IOT_SHELL_HOTKEY_SUPPORT + IOT_APPLICATIONS + + + + + RPI_DRIVERS + + OEM_CustomCmd + OEM_ProvAuto + + + + + Windows 10 IoT Core + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml new file mode 100644 index 0000000..624ae0b --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.BootFirmware/RPi.BootFirmware.wm.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml new file mode 100644 index 0000000..5710b51 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Customization/RPi.Customization.wm.xml @@ -0,0 +1,19 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml new file mode 100644 index 0000000..71399f6 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SDHostBRCME88C.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml new file mode 100644 index 0000000..83a0e14 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SV.PlatExtensions.wm.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml new file mode 100644 index 0000000..d058572 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/SerPL011.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml new file mode 100644 index 0000000..4f84ebc --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836pwm.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml new file mode 100644 index 0000000..51a75a3 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcm2836sdhc.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml new file mode 100644 index 0000000..b0cef54 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmauxspi.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml new file mode 100644 index 0000000..70e4162 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmgpio.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml new file mode 100644 index 0000000..67812a2 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmi2c.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml new file mode 100644 index 0000000..9d2aac1 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/bcmspi.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml new file mode 100644 index 0000000..0dc9a82 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/piminiuart.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml new file mode 100644 index 0000000..2f7929b --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiq.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml new file mode 100644 index 0000000..7344574 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpirshub3.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml new file mode 100644 index 0000000..b6fba87 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiuxflt.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml new file mode 100644 index 0000000..fa3b483 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/rpiwav.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml new file mode 100644 index 0000000..282e1d9 --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi.Drivers/vchiq.wm.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml b/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml new file mode 100644 index 0000000..56bc4bf --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPi4.ARM64FMFileList.xml @@ -0,0 +1,20 @@ + + + true + + + + + + 1024x768 + + + + en-US + + + + en-US + + + diff --git a/bspfiles/RPi4.ARM64/Packages/RPiFM.xml b/bspfiles/RPi4.ARM64/Packages/RPiFM.xml new file mode 100644 index 0000000..1c57d8a --- /dev/null +++ b/bspfiles/RPi4.ARM64/Packages/RPiFM.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + RPI_DRIVERS + + + + + + diff --git a/build/bcm2836/buildbcm2836.sln b/build/bcm2836/buildbcm2836.sln index 1463909..4d4ecde 100644 --- a/build/bcm2836/buildbcm2836.sln +++ b/build/bcm2836/buildbcm2836.sln @@ -64,6 +64,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bcmgenet_netadaptercx21", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDHostBRCME88C", "..\..\drivers\sd\bcm2711\brcme88c\SDHostBRCME88C.vcxproj", "{DC75D1FD-24D8-462B-8566-5E672802DDF3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rpirshub3", "..\..\drivers\usb\bcm2711\rpirshub3\rpirshub3.vcxproj", "{DFE53385-0150-401F-91D2-66587EF1927A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -264,6 +266,18 @@ Global {DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.ActiveCfg = Release|ARM64 {DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.Build.0 = Release|ARM64 {DC75D1FD-24D8-462B-8566-5E672802DDF3}.Release|ARM64.Deploy.0 = Release|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.ActiveCfg = Debug|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.Build.0 = Debug|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM.Deploy.0 = Debug|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.ActiveCfg = Release|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.Build.0 = Release|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM.Deploy.0 = Release|ARM + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.Build.0 = Release|ARM64 + {DFE53385-0150-401F-91D2-66587EF1927A}.Release|ARM64.Deploy.0 = Release|ARM64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters b/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters new file mode 100644 index 0000000..7b27862 --- /dev/null +++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.filters @@ -0,0 +1,14 @@ + + + + + {8E41214B-6785-4CFE-B992-037D68949A14} + inf;inv;inx;mof;mc; + + + + + Driver Files + + + \ No newline at end of file diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx b/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx new file mode 100644 index 0000000..bd8aa28 --- /dev/null +++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.inx @@ -0,0 +1,33 @@ +[Version] +Signature = "$Windows NT$" +Class = USB +ClassGUID = {36FC9E60-C465-11CF-8056-444553540000} +Provider = %ProviderString% +CatalogFile = rpirshub3.cat +PnpLockdown = 1 + +[Manufacturer] +%RPi% = RPi,NT$ARCH$.10.0 + +[RPi.NT$ARCH$.10.0] +; Install the USB Root Hub on builds (RS5 or earlier) with broken XHCI driver +; On these builds, the Hardware ID of the root hub would become B\ROOT_HUB30# instead of the normal +; USB\ROOT_HUB30 and the stock INF will fail to work. +%rpirshub3.DeviceDesc% = QuirkHubInstall, B\ROOT_HUB30# + +[QuirkHubInstall.NT] +Include = usbhub3.inf +Needs = Generic.Install.NT + +[QuirkHubInstall.NT.Services] +Include = usbhub3.inf +Needs = Generic.Install.NT.Services + +[QuirkHubInstall.NT.WMI] +Include = usbhub3.inf +Needs = Generic.Install.NT.WMI + +[Strings] +ProviderString = "Open Source" +RPi = "Raspberry Pi" +rpirshub3.DeviceDesc = "USB 3.0 XHCI Root Hub" diff --git a/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj b/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj new file mode 100644 index 0000000..8aab01c --- /dev/null +++ b/drivers/usb/bcm2711/rpirshub3/rpirshub3.vcxproj @@ -0,0 +1,166 @@ + + + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + {DFE53385-0150-401F-91D2-66587EF1927A} + {a1357fe7-03e0-4d61-85f4-09c7ed38c0c1} + v4.5 + 12.0 + $driverCurrentWindowsConfigurationName$ Debug + Win32 + rpirshub3 + $(LatestTargetPlatformVersion) + + + + Windows10 + true + WindowsKernelModeDriver10.0 + Utility + Package + true + Universal + + + Windows10 + false + WindowsKernelModeDriver10.0 + Utility + Package + true + Universal + + + Windows10 + true + WindowsKernelModeDriver10.0 + Utility + Package + true + Universal + + + Windows10 + false + WindowsKernelModeDriver10.0 + Utility + Package + true + Universal + + + + + + + + + + + + + DbgengRemoteDebugger + + + + False + False + True + + 133563 + + + + DbgengRemoteDebugger + + + + False + False + True + + 133563 + + + + DbgengRemoteDebugger + + + + False + False + True + + 133563 + + + + DbgengRemoteDebugger + + + + False + False + True + + 133563 + + + + + + + + + + + + + + + + $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR) + + + + + + + $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR) + + + + + + + $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR) + + + + + + + $(KMDF_VERSION_MAJOR).$(KMDF_VERSION_MINOR) + + + + + + \ No newline at end of file diff --git a/tools/binexport.cmd b/tools/binexport.cmd index 3ea63f6..5ac7063 100644 --- a/tools/binexport.cmd +++ b/tools/binexport.cmd @@ -3,15 +3,19 @@ REM Export Script for exporting required binary files only goto START :Usage -echo Usage: binexport [Release]/[Debug] [TargetDir] +echo Usage: binexport [RPi]/[RPi3.ARM64]/[RPi4.ARM64] [Release]/[Debug] [TargetDir] +echo RPi....................... Export the Raspberry 2/3 32Bit BSP. +echo RPi3.ARM64................ Export the Raspberry 3 64Bit BSP. +echo RPi4.ARM64................ Export the Raspberry 4 64Bit BSP. +echo One of the above should be specified echo Release................... Picks the release binaries echo Debug..................... Picks the debug binaries echo One of the above should be specified echo [TargetDir]............... Directory to export the files. echo [/?]...................... Displays this usage string. echo Example: -echo binexport Release C:\bsp_v1.0_release -echo binexport Debug C:\bsp_v1.0_debug +echo binexport RPi Release C:\bsp_v1.0_release +echo binexport RPi4.ARM64 Debug C:\bsp_v1.0_debug exit /b 1 @@ -22,12 +26,27 @@ REM Input validation if [%1] == [/?] goto Usage if [%1] == [-?] goto Usage if [%1] == [] goto Usage -if [%2] == [] ( +if [%1] == [] ( + goto Usage +) else ( + set PLAT=%1 +) +if [%3] == [] ( goto Usage ) else ( - set TDIR=%2\RPi + set TDIR=%3 ) +REM Detect architecture +set ARCH=INVALID +if /I [%PLAT%] == [RPi] set ARCH=ARM +if /I [%PLAT%] == [RPi3.ARM64] set ARCH=ARM64 +if /I [%PLAT%] == [RPi4.ARM64] set ARCH=ARM64 +if /I [%ARCH%] == [INVALID] ( + goto Usage +) +set TDIR=%3\%PLAT% + pushd setlocal ENABLEDELAYEDEXPANSION @@ -38,23 +57,31 @@ set REPO_BUILD_TOOL=%~dp0 cd /d "%REPO_BUILD_TOOL%.." set REPO_SOURCE_ROOT=%cd%\ -set OUTPUT_DIR=%REPO_SOURCE_ROOT%\build\bcm2836\ARM -set BINTYPE=%1 +set OUTPUT_DIR=%REPO_SOURCE_ROOT%\build\bcm2836\%ARCH% +set BINTYPE=%2 +REM Check firmware for ARM64 platform +if /I [%ARCH%] == [ARM64] ( + if not exist %REPO_SOURCE_ROOT%\bspfiles\%PLAT%\Packages\RPi.BootFirmware\RPI_EFI.fd ( + echo Error: UEFI Firmware for platform %PLAT% not found. + echo Please refer to windows-drivers repo on how to get it. + exit /b + ) +) if not exist %TDIR% ( mkdir %TDIR% ) -if not exist %OUTPUT_DIR%\%BINTYPE% ( +if not exist %OUTPUT_DIR%\%BINTYPE%\Output ( echo %BINTYPE% directory not found. Do %BINTYPE% build goto usage ) REM Copy the bspfiles -xcopy /E /I %REPO_SOURCE_ROOT%\bspfiles\*.* %TDIR% >nul +xcopy /E /I %REPO_SOURCE_ROOT%\bspfiles\%PLAT%\*.* %TDIR% >nul set DRVDIR=%TDIR%\Packages\RPi.Drivers REM Export the built binaries -copy %OUTPUT_DIR%\%BINTYPE%\*.inf %DRVDIR% > nul -copy %OUTPUT_DIR%\%BINTYPE%\*.sys %DRVDIR% > nul -copy %OUTPUT_DIR%\%BINTYPE%\*.dll %DRVDIR% > nul +copy %OUTPUT_DIR%\%BINTYPE%\Output\*.inf %DRVDIR% > nul +copy %OUTPUT_DIR%\%BINTYPE%\Output\*.sys %DRVDIR% > nul +copy %OUTPUT_DIR%\%BINTYPE%\Output\*.dll %DRVDIR% > nul popd exit /b diff --git a/tools/binexport.ps1 b/tools/binexport.ps1 index d3811f8..ea848eb 100644 --- a/tools/binexport.ps1 +++ b/tools/binexport.ps1 @@ -5,6 +5,13 @@ Exports the driver binaries in a zip file format with all the bsp files in the r .DESCRIPTION Exports the driver binaries in a zip file format with all the bsp files in the right format the output zip file can be imported directly in the IoTCoreShell using the Import-IoTBSP command. +.PARAMETER Platform +Mandatory parameter, specifying the platform the BSP is for. +Valid options: + RPi Raspberry Pi 2/3 32-Bit BSP + RPi3.ARM64 Raspberry Pi 3 64-Bit BSP + RPi4.ARM64 Raspberry Pi 4 64-Bit BSP + .PARAMETER OutputDir Mandatory parameter, specifying the output directory for the zip file. @@ -12,12 +19,14 @@ Mandatory parameter, specifying the output directory for the zip file. Optional Switch parameter to package debug binaries. Default is Release binaries. .EXAMPLE -binexport.ps1 "C:\Release" +binexport.ps1 RPi3.ARM64 "C:\Release" #> + param( - [Parameter(Position = 0, Mandatory = $true)][ValidateNotNullOrEmpty()][String]$OutputDir, - [Parameter(Position = 1, Mandatory = $false)][Switch]$IsDebug + [Parameter(Position = 0, Mandatory = $true)][ValidateSet('RPi', 'RPi3.ARM64', 'RPi4.ARM64')][String]$Platform, + [Parameter(Position = 1, Mandatory = $true)][ValidateNotNullOrEmpty()][String]$OutputDir, + [Parameter(Position = 2, Mandatory = $false)][Switch]$IsDebug ) $RootDir = "$PSScriptRoot\..\" @@ -27,8 +36,26 @@ $buildconfig = "Release" if($IsDebug){ $buildconfig = "Debug" } -$bindir = $RootDir + "build\bcm2836\ARM\$buildconfig\" -$OutputFile = "RPi_BSP_$buildconfig.zip" +if($Platform -like "*ARM64") { + $arch = "ARM64" +} else { + $arch = "ARM" +} + +# Check firmware for ARM64 platform. +$package = "$RootDir\bspfiles\$Platform\Packages" +if($arch -eq "ARM64") { + $firmware = "$package\RPi.BootFirmware\RPI_EFI.fd" + + if (!(Test-Path $firmware -PathType Leaf)) { + Write-Host "Error: UEFI Firmware for platform $Platform not found." -ForegroundColor Red + Write-Host "Please refer to windows-drivers repo on how to get it." -ForegroundColor Red + return + } +} + +$bindir = $RootDir + "build\bcm2836\$arch\$buildconfig\Output" +$OutputFile = "$Platform.BSP.$buildconfig.zip" if (!(Test-Path $bindir -PathType Container)){ Write-Host "Error: $bindir not found." -ForegroundColor Red @@ -36,19 +63,19 @@ if (!(Test-Path $bindir -PathType Container)){ } $bindir = Resolve-Path -Path $bindir -if (!(Test-Path "$OutputDir\RPi")) { - New-Item "$OutputDir\RPi" -ItemType Directory | Out-Null +if (!(Test-Path "$OutputDir\$Platform")) { + New-Item "$OutputDir\$Platform" -ItemType Directory | Out-Null } #Copy items -Copy-Item -Path "$RootDir\bspfiles\*" -Destination "$OutputDir\RPi\" -Recurse -Force | Out-Null -Copy-Item -Path "$bindir\*" -Destination "$OutputDir\RPi\Packages\RPi.Drivers\" -Include "*.sys","*.dll","*.inf" -Force | Out-Null +Copy-Item -Path "$RootDir\bspfiles\$Platform\*" -Destination "$OutputDir\$Platform\" -Recurse -Force | Out-Null +Copy-Item -Path "$bindir\*" -Destination "$OutputDir\$Platform\Packages\RPi.Drivers\" -Include "*.sys","*.dll","*.inf" -Force | Out-Null Write-Host "Output File: $OutputFile" if (Test-Path "$OutputDir\$OutputFile" -PathType Leaf){ Remove-Item "$OutputDir\$OutputFile" -Force | Out-Null } -Compress-Archive -Path "$OutputDir\RPi\" -CompressionLevel "Fastest" -DestinationPath "$OutputDir\$OutputFile" -Remove-Item "$OutputDir\RPi\" -Recurse -Force | Out-Null +Compress-Archive -Path "$OutputDir\$Platform\" -CompressionLevel "Fastest" -DestinationPath "$OutputDir\$OutputFile" +Remove-Item "$OutputDir\$Platform\" -Recurse -Force | Out-Null Write-Host "Done"