January 1, 0001

July 4, 2021 FIO Allocating Memory Above 2GB Some UEFI implementations, notably those based on IP from AMI, have a limitation on the amount of memory available for allocation via the gBS->AllocatePool and gBS->AllocatePages(AllocateAnyAddress, ...) APIs. Specifically they won't allow allocation of any memory above about 2GB, regardless of allocation size. Furthermore, some implementations (such as on the ASUS Z170) appear to have a catastrophic failure whereby if a module causes the system to run out of memory under 2GB the system subsequently becomes unbootable and must be recovered using the ASUS Flashback feature, or RMA'd. Read more

January 1, 0001

July 4, 2021 Developing EDK2 code using FreeBSD The EDK2 doesn't work out-of-the-box with FreeBSD, but needs some extra packages and setup. Packages to install are: shells/bash devel/binutils lang/gcc5, or newer devel/nasm devel/acpica-tools devel/git devel/gmake lang/python27 databases/py27-sqlite3 Create the following symlinks in BaseTools/Bin/FreeBSD-amd64: python -> /usr/local/bin/python2.7 make -> /usr/local/bin/gmake ld -> /usr/local/bin/ld objcopy -> /usr/local/bin/objcopy gcc -> /usr/local/bin/gcc5 g++ -> /usr/local/bin/g++5 gcc-ar -> /usr/local/bin/gcc-ar5 gcc-nm -> /usr/local/bin/gcc-nm5 gcc-ranlib -> /usr/local/bin/gcc-ranlib5 After that, you should be able to use the EDK2 as you would on a Linux system as long as you use bash - for example: Read more

January 1, 0001

Debugging TF-A and UEFI/EDK2 Using Eclipse Get Eclipse Go to https://www.eclipse.org/downloads/packages/ and scroll down to "Eclipse IDE for Embedded C/C++ Developers". Select the appropriate operating system and architecture. Once downloaded, untar the file. You can then run Eclipse with "./eclipse/eclipse". Building TF-A and EDK2 for the SBSA-REF platform export CROSS_COMPILE=aarch64-none-linux-gnu- cd ~/src/trusted-firwmare-a Edit plat/qemu/common/qemu_bl31_setup.c, and add to bl31_plat_arch_setup: volatile int loop; for (loop = 0; loop == 0;) { ; } make PLAT=qemu_sbsa DEBUG=1 lOGLEVEL=40 CFLAGS="-ggdb" all fip cp -fv build/qemu_sbsa/debug/bl1. Read more

January 1, 0001

July 4, 2021 Debugging with gdb Adapted from a post to edk2-devel by Laszlo Ersek. Clone Andrei Warkentin's repo https://github.com/andreiw/andreiw-wip.git git clone https://github.com/andreiw/andreiw-wip.git cd andreiw-wip From the root of your clone copy the subdirectory "uefi/DebugPkg" to your edk2 workspace: cp -av uefi/DebugPkg $WORKSPACE Apply the following patch to OvmfPkg/OvmfPkgX64.dsc: ----------------- diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 97fdedb..794521b 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -592,3 +592,4 @@ !endif OvmfPkg/PlatformDxe/Platform.inf + DebugPkg/GdbSyms/GdbSyms.inf ----------------- Note that we don't modify the FDF file. Read more

January 1, 0001

July 4, 2021 Learning UEFI Development Read the UEFI Driver Writer's Guide: https://github.com/tianocore-docs/Docs/blob/master/Driver_Developer/UEFI_Driver_Writer_Guide_V1.0.1_120308.pdf (579 pages). The Module Writer's Guide is possibly also useful to read: https://code.bluestop.org/edk2/docs/specs/EDK2_Module_Writers_Guide_0.7.pdf (94 pages). Get familiar with the spec - download from http://www.uefi.org/specifications . I'd recommend reading both the oldest one you want to support, along with the newest one to see which newer features are available. For example if you want to support anything 2. Read more

© Rebecca Cran 2022