EfiPy_r0.1.12(24622) 2018/02/19:
EfiPyLib: Move ACPI library to EfiPyLib/Acpi
EfiPyLib/EfiPyAcpiBase.py ==> EfiPyLib/Acpi/EfiPyAcpiBase.py
EfiPyLib/EfiPyAcpiMcfg.py ==> EfiPyLib/Acpi/AcpiMcfg.py
EfiPyLib: Complete these ACPI tables
EfiPyLib/Acpi/AcpiRsdt.py
EfiPyLib/Acpi/AcpiXsdt.py
EfiPyLib/Acpi/AcpiFacp.py
EfiPyLib/Acpi/AcpiMcfg.py
EfiPyLib/Acpi/AcpiFacs.py
EfiPyLib/Acpi/AcpiApic.py... read more
EfiPy_r0.1.11(24622) 2018/02/10:
EfiPy_r0.1.10(24622) 2018/02/09:
EfiPy: code refine
LoLeOp: Add _LoLeOp modules in python.efi
LoLeOp: Change Mem, Io, cpuid and msr to CPython level access.
LoLeOp: Remove unused py files in LoLeOp library
CorePy: Move old LoLeOp basic library to CorePy/Samples as CorePy sample code in EfiPy
CorePy: Add PciScan.py as CorePy sample program in EfiPy... read more
EfiPy_r0.1.9(24622) 2018/02/04:
LoLeOp: Add recursive bit operation sample code
LoLeOp: Remove cache in rUnionOp
LoLeOp: Add EfiCpuId library and CpuIds.py utilitie
EfiPy: Add sample program for analyze run time Python.efi PE32 structure.
PeFile: Add pefile library into EfiPy environment
Py2Efi: New module Py2Efi and its samples
EfiPy: Correct MdePkg/IndustryStandard/PeImage.py... read more
LoLeOp module includes these data types:
Io8, Io16, Io32, Io64, Mem8, Mem16, Mem32, Mem64, CpuId, Msr
These data types are based on LoleOp basic class
BitOp::_MemArray, BitOp::_MemCell,
BitOp::_CellCascade, rUnionOp::rUnionOp
To create LoLeOp new data type, this is the basic procedure.
Define new class, which is inherit from _MemCell, input(MemSet) output(MemGet) function.
create new data type by _MemArray instance.... read more
EfiPy_r0.1.8(24622) 2018/01/13:
Fix library pAnalyzer import error
Add library EfiPyLib
Add EfiPyHexDump library
Add EfiPyVariableDump library
Add DmpBoot and DmpStore utilities
Correct case sentence error
Restructure ProcessorBinding module and add for AArch64, Arm, Ia32, X64
(for AArch64, Arm, Ia32, it adds ProcessorBinding.py, advance.)
(EfiPy does not run on these ISA AArch64, Arm, Ia32, yet.)... read more
As address 0xC0000000 and 0xD0000000 an example.
#
# +---- qMem1 = [0xC0000000]
# +---- qMem1 = Mem8[0xC0000000][:]
# +---- Mem8[0xC0000000]
# | bit bit
# | 0 1
# | +---+---------+
# | Address V V |
# \ +-----------+---+---+---+---+---+---+---+---+ |
# +-------> |0xC0000000 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
# +-----------+---+---+---+---+---+---+---+---+ |
# ^ ^ ^ |
# | | | |
# pReg1 = Mem8[0xC0000000][1:2] --+ | | |
# pReg1[0] -----------------------+ | | |
# rReg1 = pReg1 ------------------+---+ | |
# Mem8[0xC0000000][1:2] ----------+---+ | |
# Mem8[0xC0000000][2:1] ----------+---+ | |
# | |
# Mem8[0xC0000000][-1] -----------------------------------+ |
# |
# +---- qMem2 = Mem8[0xD0000000][:] |
# +---- Mem8[0xD0000000] |
# +---- Mem8[0xD0000000][:] |
# | |
# | +-------------------------------------------------------+
# | |
# | +--- cReg1 = Mem8[Mem8[0xC0000000][5:6], Mem8[0xD0000000][3:5]]
# | +--- cReg1 = Mem8[pReg1, pReg2]
# | +--- cReg2 = cReg1
# | | bit bit
# | | 2 3
# | +--------------------------+---+
# | | |
# | Address V V
# \ +-----------+---+---+---+---+---+---+---+---+
# +-> |0xD0000000 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
# +-----------+---+---+---+---+---+---+---+---+
# ^ ^ ^
# pReg2 = Mem8[0xD0000000][5:6] | | |
# Mem8[0xD0000000][5:6] -------------------+---+ |
# Mem8[0xD0000000][6:5] -------------------+---+ |
# |
# Mem8[0xD0000000][-1] ----------------------------+
#... [read more](/p/efipy/blog/2018/01/loleop-basic-operation/)
LoLeOp (Low Level Operation) can access (Read/Write) system memory/information in bit unit.
To get bit 2 at memory address 0xC0000000: Mem8[0xC0000000][2]
To get bit 3, 4, 5 at memory address 0xC0000000: Mem8[0xC0000000][3:5]
To set bit 2 at memory address 0xC0000000 as 1: Mem8[0xC0000000][2] = 1
To set bit 3, 4, 5 at memory address 0xC0000000 as 3: Mem8[0xC0000000][5:3] = 3
In hardware description, it often provides this kind of register tables.
(PCI BAR Address Map as example)... read more
EfiPy_r0.1.7(24622) 2018/01/02:
1. Change folder Disk/ to Target/
2. Change folder Src/ to Host/
3. Move corepy, EfiPy, LoLeOp, pAnalyzer libraries to EFI\StdLib\lib\python.27\site-packages folder.
4. Move corepy, EfiPy, LoLeOp, pAnalyzer source code to Host\AppPkg folder.
5. Makes EfiPy and ctypes built in library and link them with PythonCore.inf
6. Update/Addd 00_ReadMe.txt, 01_History.txt and 02_Installation.txt in Document folder.
7. Fix corepy fail because restructure error
8. remove redundant output message in corepy
9. Fix EfiPy sample ConnectScan.py import pAnalyzer error
Add StdLib\lib\python.27\EfiPy\MdePkg\Library\DevicePathLib.py for avoiding bFinder fail