Menu

EfiPy / Blog: Recent posts

EfiPy_r0.1.12(24622) release

EfiPy_r0.1.12(24622) 2018/02/19:

  1. EfiPyLib: Move ACPI library to EfiPyLib/Acpi

    EfiPyLib/EfiPyAcpiBase.py ==> EfiPyLib/Acpi/EfiPyAcpiBase.py

    EfiPyLib/EfiPyAcpiMcfg.py ==> EfiPyLib/Acpi/AcpiMcfg.py

  2. 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

Posted by EfiPy 2018-02-19 Labels: Release

EfiPy_r0.1.11(24622) release

EfiPy_r0.1.11(24622) 2018/02/10:

  1. Py2Efi: Add _LoLeOp Module into Py2EfiX64.efi

EfiPy_r0.1.10(24622) 2018/02/09:

  1. EfiPy: code refine

  2. LoLeOp: Add _LoLeOp modules in python.efi

  3. LoLeOp: Change Mem, Io, cpuid and msr to CPython level access.

  4. LoLeOp: Remove unused py files in LoLeOp library

  5. CorePy: Move old LoLeOp basic library to CorePy/Samples as CorePy sample code in EfiPy

  6. CorePy: Add PciScan.py as CorePy sample program in EfiPy... read more

Posted by EfiPy 2018-02-10 Labels: Release

EfiPy_r0.1.9(24622) release

EfiPy_r0.1.9(24622) 2018/02/04:

  1. LoLeOp: Add recursive bit operation sample code

  2. LoLeOp: Remove cache in rUnionOp

  3. LoLeOp: Add EfiCpuId library and CpuIds.py utilitie

  4. EfiPy: Add sample program for analyze run time Python.efi PE32 structure.

  5. PeFile: Add pefile library into EfiPy environment

  6. Py2Efi: New module Py2Efi and its samples

  7. EfiPy: Correct MdePkg/IndustryStandard/PeImage.py... read more

Posted by EfiPy 2018-02-03 Labels: Release

Create new LoLeOp data type

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.

  1. Define new class, which is inherit from _MemCell, input(MemSet) output(MemGet) function.

  2. create new data type by _MemArray instance.... read more

Posted by EfiPy 2018-01-13 Labels: LoLeOp

EfiPy_r0.1.8(24622) release

EfiPy_r0.1.8(24622) 2018/01/13:

  1. Fix library pAnalyzer import error

  2. Add library EfiPyLib

  3. Add EfiPyHexDump library

  4. Add EfiPyVariableDump library

  5. Add DmpBoot and DmpStore utilities

  6. Correct case sentence error

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

Posted by EfiPy 2018-01-13 Labels: Release

LoLeOp Basic operation

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/)
Posted by EfiPy 2018-01-13 Labels: LoLeOp

LoLeOp Introduction

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

Posted by EfiPy 2018-01-02 Labels: LoLeOp

EfiPy_r0.1.7(24622) release

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

Posted by EfiPy 2018-01-02 Labels: Release

EfiPy_r0.1.3(20289)

Add StdLib\lib\python.27\EfiPy\MdePkg\Library\DevicePathLib.py for avoiding bFinder fail

Posted by EfiPy 2017-02-05

EfiPy_r0.1.2(20289)

  1. Modify dOut class in EfiPy_r0.1.2(20289)\Disk\EFI\StdLib\lib\python.27\EfiPy\Analyzer\dOut.py for variant output message
  2. Add new class bFinder() in EfiPy_r0.1.2(20289)\Disk\EFI\StdLib\lib\python.27\EfiPy\Analyzer\bFinder.py for filtering EFI_DRIVER_BINDING_PROTOCOL::Supported() function while gBS.ConnectController() is called.
  3. Sample code: EfiPy_r0.1.2(20289)\Disk\EFI\Samples\ConnectScan.py
Posted by EfiPy 2017-02-04

EfiPy_r0.1.1(20289)

  1. Correct SMBIOS_STRUCTURE and change SMBIOS_TABLE_STRING to class inherit from UINT8
  2. add _SimpleCData from ctypes into EfiPy
Posted by EfiPy 2016-05-02 Labels: Release
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.