From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=david.wei@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 78A01210C2791 for ; Wed, 25 Jul 2018 20:40:52 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jul 2018 20:40:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,403,1526367600"; d="scan'208";a="57236321" Received: from zwei4-mobl1.ccr.corp.intel.com ([10.239.193.156]) by fmsmga007.fm.intel.com with ESMTP; 25 Jul 2018 20:40:46 -0700 From: zwei4 To: edk2-devel@lists.01.org Cc: David Wei , Kelly Steele , Mike Wu , Mang Guo Date: Thu, 26 Jul 2018 11:40:41 +0800 Message-Id: <20180726034041.11300-1-david.wei@intel.com> X-Mailer: git-send-email 2.14.1.windows.1 Subject: [Patch][edk2-platforms/devel-IntelAtomProcessorE3900] EEPROM Utilities. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jul 2018 03:40:52 -0000 Add EEPROM python utilities and help files. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: David Wei CC: Kelly Steele CC: Mike Wu CC: Mang Guo --- .../Eeprom/EepromBinary/Docs/EepromLayout.txt | 306 ++++++++ .../Docs/HowToGenerateANewPublicPrivateKeyPair.txt | 21 + .../Docs/HowToGenerateAnEepromBinary.txt | 23 + .../Docs/HowToInstallAnEepromBinary.txt | 26 + .../Docs/HowtoCreateTheEepromBinary.pdf | Bin 0 -> 307112 bytes .../Common/Features/Eeprom/EepromBinary/ReadMe.txt | 537 +++++++++++++ .../EepromBinary/Utilities/ConvertPemToBin.py | 50 ++ .../Eeprom/EepromBinary/Utilities/CreateKeyPair.py | 74 ++ .../Eeprom/EepromBinary/Utilities/HashBinary.py | 253 ++++++ .../Eeprom/EepromBinary/Utilities/eeprom.py | 856 +++++++++++++++++++++ 10 files changed, 2146 insertions(+) create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/EepromLayout.txt create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateANewPublicPrivateKeyPair.txt create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateAnEepromBinary.txt create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToInstallAnEepromBinary.txt create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowtoCreateTheEepromBinary.pdf create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/ReadMe.txt create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/ConvertPemToBin.py create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/CreateKeyPair.py create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/HashBinary.py create mode 100644 Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/eeprom.py diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/EepromLayout.txt b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/EepromLayout.txt new file mode 100644 index 0000000000..19a64a5276 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/EepromLayout.txt @@ -0,0 +1,306 @@ +## @file +# EEPROM Layout. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +Version: 1.00 +Dated: 07-02-2018 + +- The first 4KB of the EEPROM data MUST be accessible from I2C bus + gPlatformModuleTokenSpaceGuid.PcdEepromBus, address + gPlatformModuleTokenSpaceGuid.PcdEepromAddress and MUST contain, at a minimum, the + EEPROM Header structure, Board Info structure and EEPROM Map structure in their entirety. + +- These structures must be contiguous in the EEPROM part. That is one structure ends and + the next starts on the next paragraph aligned byte. + +- They must be paragraph aligned. + +- Unused space between structures will be zero filled. + +- They must start with the same 16 byte header structure so unknown structures can still + get "walked". (See Generic header.) + +- The EEPROM header structure must be first, the EepromMap is second, the BoardInfo is third, + the Signature structure must be last (if it exists), and the others may be in any order. + +- The EEPROM Map records must start at offset 0x00000000 and proceed in numeric order. In + other words, the records should describe the EEPROM data layout from beginning to end, in + order, without gaps. + +- Each EEPROM has it's own EEPROM map. The header will tell what I2C bus this EEPROM is on + and how many bytes are in each block. The map record will tell where each block is on the + I2C bus and where it goes in the EEPROM binary. This allows the binary to self-describe + the EEPROM layout scheme without the code requiring any knowledge of the EEPROM devices. + +- There may be multiple EEPROM devices on multiple buses. The master EEPROM map describes + the platform. Slave EEPROM maps would typically describe add-on cards. It is assumed that + if the first EEPROM map record block is invalid, then that entire EEPROM map is invalid. + In other words, if you can't find the $Eeprom$.Signature at offset 0x00, then that map is + invalid. Each map creates it's own image and is validated separately from each other. The + master image should only contain possible slave EEPROM maps with a single record that + points to the first 4KB for that possible slave image. The slave image will contain a full + EEPROM map to describe that EEPROM. It has yet to be determined how slave images are + integrated into the master image data. + [***Slave image support has not been coded yet.***] + +- If the structure header size or layout changes, then the structure VerMajor must be reved + and the VerMinor reset to 0x0000. + +- If the structure reserved bytes are used, then the structure VerMinor must be reved and + the VerMajor remains the same. + +- CRC32 is calculated by pre-filling in the CRC32 with 0x00. It includes all of the + structures in their entirety, including the Signature structure (if it exists) up to the + $PromSig.EepromSig, but not including the $PromSig.EepromSig element, as well as any blank + space between structures. + +- If a hash is used, the CRC32 must already be filled out before calculating. Everything up + to, but not including, the $PromSig.EepromSig is included in the hash. The hash is then + added to $PromSig.EepromSig. If a signed hash is indicated, then it is added after the + hash data. + +- The header "Length" field will contain the actual structure size and not account for any + unused space between structures. + +- GPIO data records are applied in order. IE - Start at the beginning and apply the records + in order. + +- If characters in a Signature[8] or a Label[16] don't fill the entire allocated length, + append string with $ as a sentinel value. IE - Signature[8] : "$uCode" shall be "$uCode$" + +- If there is a valid binary in both the FV and EEPROM, BIOS will use the following rules to determine + which one to load into memory and use: + - It is assumed that the FV and EEPROM binaries have both passed sanity checks. + - CRC32 passes + - Hash and signed hash passes if present + - If the following fields are not equal, then the FV is assumed to have priority: + - $BrdInfo.ManuName + - $BrdInfo.BrdName + - $BrdInfo.BoardId + - $BrdInfo.FabId + - $BrdInfo.EcId + - $BrdInfo.BoardType + - If the $BrdInfo test passes, then priority is given to the image with the greater $Eeprom$.Version. + - If the $BrdInfo test passes and $Eeprom$.Version are equal, then use the FV due to speed concerns. + +- Due to the size of OpenSSL, it is unavailable in PEI for verifying the hash and/or signature in + $PromSig. As such, the $PromSig data, if present, is stored in a NvStorage variable for use in PEI. + It will be checked and if needed, updated each boot in DXE. If it changes, then BIOS will reboot to + ensure that the PEI integrity check passes. + + +Generic header structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$ " | Marks the beginning of the structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000010 | Length in bytes of this structure + +EEPROM header structure + - This structure MUST be first +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Eeprom$" | Marks the beginning of the EEPROM Header structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000020 | Length in bytes of this structure + 0x10 | 0x04 | StructLen | 0x00000000 | Length of all of the structures including this one. + 0x14 | 0x04 | Crc32 | 0x00000000 | CRC32 of all of the structures + 0x18 | 0x04 | CrcLength | 0x00000000 | Length in bytes of what is in the CRC32 + 0x1C | 0x04 | Version | 0x00000000 | Version of the binary + 0x20 | 0x10 | Reserved | 0x00 | Reserved for future info + +ACPI Table structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$AcpiTbl" | Marks the beginning of the ACPI Table structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | AcpiTbl | 0x00 | ACPI tables + +Board info structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$BrdInfo" | Marks the beginning of the Board Info structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000060 | Length in bytes of this structure + 0x10 | 0x10 | ManuName | " " | Board manufacturer name + 0x20 | 0x10 | BrdName | " " | Board name + 0x30 | 0x10 | BrdSerial | " " | Board Serial number + 0x40 | 0x04 | BoardId | 0x00000000 | Board ID + 0x44 | 0x04 | FabId | 0x00000000 | Fab ID + 0x48 | 0x04 | EcId | 0x00000000 | EC ID + 0x4C | 0x01 | BoardType | 0x00 | Type of board + | - 0x00 = Main board, aka "RedBox" + | - 0x01 = Plug-in board + 0x4D | 0x13 | Reserved | 0x00 | Reserved for future info + +EEPROM Map structure + - This structure MUST be right after the EEPROM header structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$EeprMap" | Marks the beginning of the EEPROM Map structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | PartLabel | "" | Part label + 0x20 | 0x04 | BlkLength | 0x0000???? | block length in bytes of this EEPROM device + 0x24 | 0x02 | PageSize | 0x0000 | size of page in bytes of this EEPROM device + 0x26 | 0x04 | PartSize | 0x00000000 | Part size in bytes of this EEPROM device + 0x2A | 0x01 | BusNumber | 0x00 | I2C Device Bus + 0x2B | 0x01 | Master | 0x00 | Set to 1 if EEPROM is master, 0 otherwise + 0x2C | 0x01 | Speed | 0x00 | The speed the EEPROM part should run at + | | | | 1 - 100KHz (Standard speed) + | | | | 2 - 400KHz (Fast speed) + | | | | 3 - 3.4MHz (High speed) + 0x2D | 0x03 | Reserved | 0x00 | Reserved for future info + 0x30 | ???? | MapData | 0x00 | EEPROM Map records + + EEPROM Map record + Offset | Length | Label | Default value | Description + =======+========+===========+===============+============================================== + 0x00 | 0x10 | MapLabel | "" | String label for this Map record + 0x10 | 0x04 | Length | 0x00000020 | Length of this block + 0x14 | 0x04 | Offset | 0x00000000 | Offset into EEPROM address space + 0x18 | 0x01 | Address | 0x00 | I2C Device address, 7-bit + 0x19 | 0x07 | Reserved | 0x0000 | Reserved for future info + +GPIO data structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$GpioDat" | Marks the beginning of the GPIO data structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | GpioData | 0x00 | GPIO data records + + GPIO data record + Offset | Length | Label | Default value | Description + =======+========+===========+===============+============================================== + 0x00 | 0x10 | GpioLabel | "" | String label for this GPIO record + 0x10 | 0x04 | Length | 0x00000030 | Length of this block + 0x14 | 0x04 | Offset | 0x00000000 | Offset into GPIO address space + 0x18 | 0x04 | AndData | 0x00000000 | Read the value from the Offset and do a logical + | | | | AND using AndData + 0x1C | 0x04 | OrData | 0x00000000 | Do a logical OR against the value from AndData + | | | | and write it back to Offset + 0x20 | 0x01 | DataSize | 0x00 | Size of data in bytes + | | | | - 0x01 - 8-bits + | | | | - 0x02 - 16-bits + | | | | - 0x04 - 32-bits + 0x21 | 0x01 | DataType | 0x00 | Type of access method for the data + | | | | - 0x00 = IO + | | | | - 0x01 = MMIO + | | | | - 0x02 = PCI + | | | | - 0x03 = PCIe + | | | | - 0x04 = PAD Offset + 0x22 | 0x0E | Reserved | 0x0000 | Reserved for future info + +HDA Codec structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$HdCodec" | Marks the beginning of the HDA Codec structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | HdaCodec | 0x00 | HDA Codec verb table + +Logo structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Logo$" | Marks the beginning of the Logo structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | LogoData | 0x00 | Logo data + +Memory SPD structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$MemCnfg" | Marks the beginning of the memory SPD structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x02 | SpdSlot | 0x0000 | Which slot this SPD data belongs to in bit flag format + | | | | - 0x0001 - This is for Slot 1 only + | | | | - 0x0005 - This is for Slot 1 & 3 only + 0x12 | 0x0E | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | SpdData | 0x00 | SPD data for memory + +NIC info structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$MacInfo" | Marks the beginning of the NIC Info structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x08 | NicId | "" | String to describe this NIC + 0x18 | 0x06 | MacAddr | 0x00000000000 | MAC Address + 0x1E | 0x02 | NicNum | 0x0000 | NIC number that this MAC belongs to + 0x20 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x30 | ???? | NicData | 0x00 | This space is reserved for anything else that + | | | | the NIC might need, but is not necessarily + | | | | required to hold anything and may be 0 length + +Signature structure + - This structure is only to be appended to a final EEPROM image by a signing tool. +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$PromSig" | Marks the beginning of the Signature Header structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x02 | HashType | 0x0000 | Which hash type was used + | | | | - 0x0000 = None - 0x00 byte hash + | | | | - 0x0001 = MD5 - 0x10 byte hash [signable] + | | | | - 0x0002 = SHA-1 - 0x14 byte hash [signable] + | | | | - 0x0003 = SHA-256 - 0x20 byte hash [signable] + | | | | - 0x0004 = SHA-384 - 0x30 byte hash + | | | | - 0x0005 = SHA-512 - 0x40 byte hash + | | | | - 0x8000 flag to indicate this is a signed hash + | | | | - It is assumed that the BIOS knows how to verify + | | | | the signed hash. + 0x12 | 0x0E | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | EepromSig | 0x00 | Hash and possibly the signed hash of all data structures. + | | | | Includes this structure up to EepromSig, but not + | | | | including it, and CRC32 already calculated. + | | | | If signed hash flag is set, then the signed hash is + | | | | appended after the hash. + +uCode data structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$uCode$" | Marks the beginning of the uCode data structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | UcodeData | 0x00 | uCode data + +Video structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Video$" | Marks the beginning of the Video structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | VideoData | 0x00 | Video data diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateANewPublicPrivateKeyPair.txt b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateANewPublicPrivateKeyPair.txt new file mode 100644 index 0000000000..9d702f3d1d --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateANewPublicPrivateKeyPair.txt @@ -0,0 +1,21 @@ +## @file +# EEPROM Tools. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +How to generate a new public-private key pair: +1. Ensure you have python 2.7 installed on your host system. +2. Ensure you have copied OpenSsl.exe into the EepromBinary\Utilities\OpenSsl directory. +3. Starting in the root EEPROM directory, use the following command: + Python.exe EepromBinary\Utilities\CreateKeyPair.py EepromBinary\Utilities\OpenSsl\openssl.exe EepromBinary\ProjectName\RSA-keys + This will generate 3 files in the RSA-keys directory, INCLUDING THE PRIVATE KEY! diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateAnEepromBinary.txt b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateAnEepromBinary.txt new file mode 100644 index 0000000000..cf266d8810 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToGenerateAnEepromBinary.txt @@ -0,0 +1,23 @@ +## @file +# EEPROM Tools. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +How to generate a new public-private key pair: +1. Ensure you have python 2.7 installed on your host system. +2. Ensure you have copied OpenSsl.exe into the EepromBinary\Utilities\OpenSsl directory. +3. Ensure you have modified GenerateBinary.py script to point to your projects files. +4. Starting in the root EEPROM directory, use the following command: + Python.exe EepromBinary\ProjectName\GenerateBinary.py + This will generate 2 files, EepromStruct.h & the EepromBinary.bin files. + You might see "ERROR: Unable to set value at offset xx." These can be ignored. diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToInstallAnEepromBinary.txt b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToInstallAnEepromBinary.txt new file mode 100644 index 0000000000..a9b319ce49 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowToInstallAnEepromBinary.txt @@ -0,0 +1,26 @@ +## @file +# EEPROM Tools. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +1. Generate the EEPROM binary. +2. Copy the EEPROM binary and EepromApp.efi onto a USB drive. +3. Insert the USB drive into the target system. +4. Boot to the UEFI Shell. +5. Change to the FS that contains the files. +6. Use the following command to write the binary to the EEPROM: + EepromApp.efi -b # -a # -w 1 EepromBinary.bin + -b # indicates which I2C bus the EEPROM is hanging off of + -a # indicates what the 7-bit address is for the EEPROM + # should be replaced with the appropriate number in either + decimal (##) or hexidecimal (0x##) format \ No newline at end of file diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowtoCreateTheEepromBinary.pdf b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Docs/HowtoCreateTheEepromBinary.pdf new file mode 100644 index 0000000000000000000000000000000000000000..84f6e594539fb8224493acd57ee41207cf0bee5e GIT binary patch literal 307112 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 +# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +========================================================================================== + Eeprom Current Status +========================================================================================== + +1. PYTHON SCRIPTS: + CreateKeyPair.py - creates the private/public key-pairs. + ConvertPemToBin.py - converts a private key PEM file into a public key binary file. + eeprom.py - creates a binary file using two configuration files (definition + file and Project file) Examples are provided. This binary file + describes the EEPROM in which it will reside. The description + include the eeproms bus#, device address, page size, capacity + among others. + HashBinary.py - fills out the $PromSig structure, if it exists, and adds the + hash and signature if requested. + +2. UEFI TOOL: EepromApp.efi is then used to flash the created binary from step 1. into + EEPROM from the UEFI shell. + +3. For MB3, a default eeprom binary file has been included in the UEFI BIOS. + +4. You can get the ASL compiler from https://www.acpica.org/downloads It should go in the + IASL folder. + +5. You can get OpenSSL from https://wiki.openssl.org/index.php/Binaries It should go in the + openssl folder. + + +========================================================================================== + CreateKeyPair python Tool +========================================================================================== +CreateKeyPair.py: +- This tool creates a private/public key-pair, including the binary form of the public key. + private-key.pem, public-key.pem, & public-key.bin will be created if no FilePrefix is + specified. Otherwise, FilePrefix-private.pem, FilePrefix-public.pem, & + FilePrefix-public.bin will be created. + +usage: CreateKeyPair.py OpenSsl DestinationPath [FilePrefix] + +Example: + CreateKeyPair.py ..\openssl\openssl.exe RSA-keys + + +========================================================================================== + ConvertPemToBin python Tool +========================================================================================== +ConvertPemToBin.py: +- This tool converts a private key PEM file into a public key binary file. + +usage: ConvertPemToBin.py OpenSsl PrivateKeyPemFileName PublicKeyBinFileName + +Example: + ConvertPemToBin.py ..\openssl\openssl.exe RSA-keys\MB3-private.pem RSA-keys\MB3-public.bin + + +========================================================================================== + Eeprom python Tool +========================================================================================== +Eeprom.py: +- This tool converts information in a definition and project configuration files into + Self Describing Board binary file format that can be written into an EERPOM. + +- Generates a header file containing all Self Describing Board structures as defined in + the definition file passed as a parameter. + +usage: eeprom.py [-h] [-d DEFINITIONS] [-p PROJECT] [-b BINARY] + [--header HEADERFILE] [--verbose] [--version] + +optional arguments: + -h, --help show this help message and exit + -d DEFINITIONS, --deff DEFINITIONS + Provides a path to the definition file for the image. + -p PROJECT, --project PROJECT + Provides a path to the project configuration file. + -b BINARY, --binary BINARY + Output binary file name. + --header HEADERFILE Provides a file name for a C header file to be + generated. + --verbose Enables verbose output for debugging. + --version Displays the version information and exits the + program. + +Example: + eeprom.py -d MB3-Defs.cfg -p MB3-Prj.cfg -b MB3-Eeprom.bin --header EepromStruct.h + + +========================================================================================== + HashBinary python Tool +========================================================================================== +HashBinary.py: +- This tool adds the hash to the EEPROM $PromSig structure if it exists. + +usage: HashBinary.py OpenSsl BinaryFileName [PrivateKeyPemFileName] + +Example: + HashBinary.py ..\openssl\openssl.exe MB3-Eeprom.bin RSA-keys\MB3-private.pem + + +=========================================================================================== + UEFI EEPROM tool +=========================================================================================== +EepromApp.efi + + EepromApp.efi is a tool to read/write/dump the EERPOM data. + + Usage: + EepromApp.efi command [library] [filename] [switches] + + Commands: + -c # filename Check security of the image. + -d # filename Dumps the image in raw format. + -dh # filename Dumps the image in human readable format. + -e # Erase that image. + -h Dumps this help info. + -r # filename Reads the image from the library index into the file. + - This reads the entire EEPROM part, not just the image. + -s Scans all of the buses looking for images. + - Can be substituted for specifying -b & -a if there is already an + EEPROM image present. + -v # filename Verifies the image in library index with the file. + -w # filename Writes the image from the file to the library index. + + Library: + 0 - Null library + 1 - EEPROM library + 2 - FV library + 3 - Memory library + + Switches: + -a # Sets the I2C slave address (7-bit). (Only valid for EEPROM library.) + -b # Sets the I2C bus number. (Only valid for EEPROM library.) + --verbose Turns on verbosity. + + Notes: + - Numbers can be represented as hex (0x##) or decimal (##). + - If specifying the EEPROM library, then either -b & -a or -s must be present on the + command line as well. + - If dumping a file, then specify the NULL library. + + Examples: + EepromApp.efi -b 6 -a 0x53 -d 1 - Dump the EEPROM image in raw format from + I2C #6, 0x53. + EepromApp.efi -r 3 Test.bin - Write the memory image to Test.bin. + EepromApp.efi -s -w 1 Test.bin - Write Test.bin to the EERPOM last found + during the scan. + EepromApp.efi -b 4 -a 0x5F -w 1 Test.bin - Write Test.bin to the EERPOM on I2C #4, + 0x5F. + EepromApp.efi -dh 0 Test.bin - Dump Test.bin in human readable form. + EepromApp.efi -s -c 1 - Scan the EEPROM buses for images and + check the security of the last one found. + + +=========================================================================================== + UEFI EEPROM Libraries +=========================================================================================== + + +=========================================================================================== + UEFI EEPROM Samples +=========================================================================================== +Adding a VBT to the EEPROM: +1. In MB3-Prj.cfg + A. In the [Structures] section, uncomment "Struct_6 = VideoInfo" + B. Uncomment the [VideoInfo] section + C. Point the from_file() to the desired VBT + +Adding a Logo to the EEPROM: +1. In MB3-Prj.cfg + A. In the [Structures] section, uncomment "Struct_7 = LogoInfo" + B. Uncomment the [LogoInfo] section + C. Point the from_file() to the desired Logo BMP file + D. Only BMP files are allowed. + +Adding an I2C device to the EEPROM: +1. In EepromSsdt0.asl + A. Uncomment the desired I2C bus example + B. ASL I2C busses are 1 based while the LPSS busses are 0 based +2. In I2C_Bus2_TestDevice.asl + A. Make sure you have the I2C address correct for your design + +Adding a SPI device to the EEPROM: +1. In EepromSsdt0.asl + A. Uncomment the desired SPI bus example + B. ASL SPI busses are 1 based while the LPSS busses are 0 based +2. In SPI?_CS0_TestDevice.asl + A. Make sure you have the CS selected correctly for your design + + +=========================================================================================== + UEFI EEPROM STRUCTURE DEFINITION Version: 1.00 +=========================================================================================== +Generic header structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$ " | Marks the beginning of the structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000010 | Length in bytes of this structure + +EEPROM header structure: + - This structure MUST be first +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Eeprom$" | Marks the beginning of the EEPROM Header structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000020 | Length in bytes of this structure + 0x10 | 0x04 | StructLen | 0x00000000 | Length of all of the structures including this one. + 0x14 | 0x04 | Crc32 | 0x00000000 | CRC32 of all of the structures + 0x18 | 0x04 | CrcLength | 0x00000000 | Length in bytes of what is in the CRC32 + 0x1C | 0x04 | Version | 0x00000000 | Version of the binary + 0x20 | 0x10 | Reserved | 0x00 | Reserved for future info + + EEPROM Map structure + - This structure MUST be right after the EEPROM Board Info structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$EeprMap" | Marks the beginning of the EEPROM Map structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | PartLabel | "" | Part Label + 0x20 | 0x04 | BlkLength | 0x0000???? | block length in bytes of this EEPROM device + 0x24 | 0x02 | PageSize | 0x0000 | size of page in bytes of this EEPROM device + 0x26 | 0x04 | PartSize | 0x0000 | Part size in bytes of this EEPROM device + 0x2A | 0x01 | BusNumber | 0x00 | I2C Device Bus + 0x2B | 0x01 | Master | 0x00 | Set to 1 if EEPROM is master, 0 otherwise + 0x2C | 0x01 | Speed | 0x00 | The speed the EEPROM part should run at + | | | | 1 - 100KHz (Standard speed) + | | | | 2 - 400KHz (Fast speed) + | | | | 3 - 3.4MHz (High speed) + 0x2D | 0x03 | Reserved | 0x00 | Reserved for future info + 0x30 | ???? | MapData | 0x00 | EEPROM Map records + + EEPROM Map record + Offset | Length | Label | Default value | Description + =======+========+===========+===============+============================================== + 0x00 | 0x10 | MapLabel | "" | String label for this Map record (If the + | | | | string isn't 16 characters, then terminate + | | | | with a "$"). + 0x10 | 0x04 | Length | 0x00000020 | Length of this block + 0x14 | 0x04 | Offset | 0x00000000 | Offset into EEPROM address space + 0x18 | 0x01 | Address | 0xA0 | I2C Device address, 7-bit + 0x19 | 0x07 | Reserved | 0x0000 | Reserved for future info + +ACPI Table structure: + - The current implementation only publishes SSDTs as(EprmSdt#) +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$AcpiTbl" | Marks the beginning of the ACPI Table structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | AcpiTbl | 0x00 | ACPI tables + +Board info structure: + - This structure MUST be right after the EEPROM Header structure +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$BrdInfo" | Marks the beginning of the Board Info structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x00000060 | Length in bytes of this structure + 0x10 | 0x10 | ManuName | " " | Board manufacturer name (If the string isn't + | | | | 16 characters, then terminate with a "$"). + 0x20 | 0x10 | BrdName | " " | Board name (If the string isn't 16 characters, + | | | | then terminate with a "$"). + 0x30 | 0x10 | BrdSerial | " " | Board Serial number (If the string isn't + | | | | 16 characters, then terminate with a "$"). + 0x40 | 0x04 | BoardId | 0x00000000 | Board ID + 0x44 | 0x04 | FabId | 0x00000000 | Fab ID + 0x48 | 0x04 | EcId | 0x00000000 | EC ID + 0x4C | 0x01 | BoardType | 0x00 | Type of board + | | | | - 0x00 = Main board, aka "RedBox" + | | | | - 0x01 = Plug-in board + 0x4D | 0x13 | Reserved | 0x00 | Reserved for future info + +GPIO data structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$GpioDat" | Marks the beginning of the GPIO data structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | GpioData | 0x00 | GPIO data records + + GPIO data record + Offset | Length | Label | Default value | Description + =======+========+===========+===============+============================================== + 0x00 | 0x10 | GpioLabel | "" | String label for this GPIO record (If the + | | | | string isn't 16 characters, then terminate + | | | | with a "$"). + 0x10 | 0x04 | Length | 0x00000030 | Length of this block + 0x14 | 0x04 | Offset | 0x00000000 | Offset into GPIO address space, check + | | | | GPIO CONFIGURATION section for details + 0x18 | 0x04 | AndData | 0x00000000 | Read the value from the Offset and do a logical + | | | | AND using AndData + 0x1C | 0x04 | OrData | 0x00000000 | Do a logical OR against the value from AndData + | | | | and write it back to Offset + 0x20 | 0x01 | DataSize | 0x00 | Size of data in bytes + | | | | - 0x01 - 8-bits + | | | | - 0x02 - 16-bits + | | | | - 0x04 - 32-bits + 0x21 | 0x01 | DataType | 0x00 | Type of access method for the data + | | | | - 0x00 = IO + | | | | - 0x01 = MMIO + | | | | - 0x02 = PCI + | | | | - 0x03 = PCIe + | | | | - 0x04 = PAD Offset + 0x22 | 0x0E | Reserved | 0x0000 | Reserved for future info + +HDA Codec structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$HdCodec" | Marks the beginning of the HDA Codec structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | HdaCodec | 0x00 | HDA Codec verb table + +Logo structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Logo$" | Marks the beginning of the Logo structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | LogoData | 0x00 | Logo data + +Memory SPD structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$MemCnfg" | Marks the beginning of the memory SPD structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x02 | SpdSlot | 0x0000 | Which slot this SPD data belongs to in bit flag format + | | | | - 0x0001 - This is for Slot 1 only + | | | | - 0x0005 - This is for Slot 1 & 3 only + 0x12 | 0x0E | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | SpdData | 0x00 | SPD data for memory + +NIC info structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$MacInfo" | Marks the beginning of the NIC Info structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x08 | NicId | "" | String to describe this NIC + 0x18 | 0x06 | MacAddr | 0x00000000000 | MAC Address + 0x1E | 0x02 | NicNum | 0x0000 | NIC number that this MAC belongs to + 0x20 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x30 | ???? | NicData | 0x00 | This space is reserved for anything else that + | | | | the NIC might need, but is not necessarily + | | | | required to hold anything and may be 0 length + +Signature structure + - This structure is only to be appended to a final EEPROM image by a signing tool. +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$PromSig" | Marks the beginning of the Signature Header structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x02 | HashType | 0x0000 | Which hash type was used + | | | | - 0x0000 = None - 0x00 byte hash + | | | | - 0x0001 = MD5 - 0x10 byte hash [signable] + | | | | - 0x0002 = SHA-1 - 0x14 byte hash [signable] + | | | | - 0x0003 = SHA-256 - 0x20 byte hash [signable] + | | | | - 0x0004 = SHA-384 - 0x30 byte hash + | | | | - 0x0005 = SHA-512 - 0x40 byte hash + | | | | - 0x8000 flag to indicate this is a signed hash + | | | | - It is assumed that the BIOS knows how to verify + | | | | the signed hash. + 0x12 | 0x0E | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | EepromSig | 0x00 | Hash, possibly signed, of all data structures. + | | | | Includes this structure with the EepromSig zeroed + | | | | out and CRC32 already calculated. + +uCode data structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$uCode$" | Marks the beginning of the uCode data structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | UcodeData | 0x00 | uCode data + +Video structure: +Offset | Length | Label | Default value | Description +=======+========+===========+===============+============================================== + 0x00 | 0x08 | Signature | "$Video$" | Marks the beginning of the Video structure + 0x08 | 0x02 | VerMajor | 0x0001 | Version, major + 0x0A | 0x02 | VerMinor | 0x0000 | Version, minor + 0x0C | 0x04 | Length | 0x0000???? | Length in bytes of this structure + 0x10 | 0x10 | Reserved | 0x00 | Reserved for future info + 0x20 | ???? | VideoData | 0x00 | Video data + + +=========================================================================================== + GPIO CONFIGURATION +=========================================================================================== +GPIO PAD programming info: +- pad_cfg_dw0 (PAD OFFSET + 0x00) "PAD_CONF0" + - [31:30] - padrstcfg - This register controls which reset is used to reset the specified Pad Register fields. + It is the SoC responsibilities to decide the number of configurable reset required + with an example below: + 00 = Powergood (i.e. sticky reset). + 01 = Deep GPIO Reset (i.e. host deep reset: host_deep_rst_b) + 10 = GPIO Reset (i.e. host reset: host_rst_b) + 11 = Reserved; tied to inactive (i.e. '1' for active low reset) + - [29:29] - rxpadstsel - Determine from which node the RX pad state for native function should be taken from. + This field only affects the pad state value being fanned out to native function(s) + and is not meaningful if the pad is in GPIO mode (i.e. Pad Mode = 0). + 0 = Raw RX pad state directly from CFIO RX buffer. + 1 = Internal RX pad state (subject to RXINV , hardware debouncer (if any) and + PreGfRXSel settings) + - [28:28] - rxrawl - This bit determines if the selected pad state is being overridden to '1'. This field + only makes sense when the RX buffer is configured as an input in either GPIO Mode or + native function mode. + 0 = No Override. + 1 = RX drive 1 internally. + - [27:27] - reserved - Reserved + - [26:25] - rxevcfg - Determine if the internal RX pad state (synchronized, filtered vs non-filtered + version as determined by PreGfRXSel, and is further subject to RXInv) should be + passed on to the next logic stage as is, as a pulse, or level signal. This field + does not affect the received pad state (to GPIORXState or native functions) but how + the interrupt or wake triggering events should be delivered to the GPIO Community + Controller. + 0h = Level + 1h = Edge + 2h = Drive '0' + 3h = Reserved (implement as setting 0h) + - [24:24] - pregfrxsel - Determine if the synchronized version of the raw RX pad state should be subjected + to glitch filter or not. + 0 = Select synchronized, non filtered RX pad state. + 1 = Select synchronized, filtered RX pad state. + - [23:23] - rxinv - This bit determines if the selected pad state should go through the polarity + inversion stage. + 0 = No inversion + 1 = Inversion + - [22:21] - rxtxencfg - This controls the RX and TX buffer enables for the function selected by Pad Mode, + but is not applicable when Pad Mode is 0 (i.e. GPIO mode). + 0 = Function defined in Pad Mode controls TX and RX Enables. + 1 = Function controls TX Enable and RX Disabled with RX drive 0 internally. + 2 = Function controls TX Enable and RX Disabled with RX drive 1 internally. + 3 = Function controls TX Enabled and RX is always enabled. + - [20:20] - gpiroutioxapic - Determine if the pad can be routed to cause peripheral IRQ when configured in GPIO + input mode. + 0 = Routing does not cause peripheral IRQ. + 1 = Routing can cause peripheral IRQ. + - [19:19] - gpiroutsci - Determine if the pad can be routed to cause SCI when configured in GPIO input mode. + 0 = Routing does not cause SCI. + 1 = Routing can cause SCI. + - [18:18] - gpiroutsmi - Determine if the pad can be routed to cause SMI when configured in GPIO input mode. + 0 = Routing does not cause SMI. + 1 = Routing can cause SMI. + - [17:17] - gpiroutnmi - Determine if the pad can be routed to cause NMI when configured in GPIO input mode. + 0 = Routing does not cause NMI. + 1 = Routing can cause NMI. + - [16:13] - reserved - Reserved + - [12:10] - pmode - This field determines whether the Pad is controlled by GPIO controller logic or one + of the native functions muxed onto the Pad. + 0h = GPIO control the Pad. + 1h = Function 1, if applicable, control the Pad. + ... + 15 = Function 15 control the Pad. + - [09:09] - gpiorxdis - 0 = Enable the input buffer (active low enable) of the pad. + 1 = Disable the input buffer of the pad. + - [08:08] - gpiotxdis - 0 = Enable the output buffer (active low enable) of the pad. + 1 = Disable the output buffer of the pad. + - [07:02] - reserved - Reserved + - [01:01] - gpiorxstate - This is the current internal RX pad state after Glitch Filter logic stage and + hardware debouncer (if any) and is not affected by PMode and RXINV settings. + - [00:00] - gpiotxstate - 0 = Drive a level '0' to the TX output pad. + 1 = Drive a level '1' to the TX output pad. + +- pad_cdf_dw1 (PAD OFFSET + 0x04) "PAD_CONF1" + - [31:18] - cfiopadcfg - See CFIO HIP interface for details. Default to 0x0000 + - [17:14] - iosstate - The I/O Standby State defines which state the pad should be parked in when the + I/O is in a standby state. + 0 = Tx enabled driving last value driven, Rx enabled. + 1 = Tx enabled driving 0, Rx disabled and Rx driving 0 back to its controller + internally. + 2 = Tx enabled driving 0, Rx disabled and Rx driving 1 back to its controller + internally. + 3 = Tx enabled driving 1, Rx disabled and Rx driving 0 back to its controller + internally. + 4 = Tx enabled driving 1, Rx disabled and Rx driving 1 back to its controller + internally. + 5 = Tx enabled driving 0, Rx enabled. + 6 = Tx enabled driving 1, Rx enabled. + 7 = Hi-Z, Rx driving 0 back to its controller internally. + 8 = Hi-Z, Rx driving 1 back to its controller internally. + 9 = Tx disabled, Rx enabled. + 15 = IO-Standby is ignored for this pin (same as functional mode). + Others = Reserved + - [13:10] - term - The Pad Termination state defines the different weak pull-up and pull-down + settings that are supported by the buffer. + 0 000: none + 0 010: 5k wpd + 0 100: 20k wpd + 1 000: none + 1 001: 1k wpu + 1 011: 2k wpu + 1 010: 5k wpu + 1 100: 20k wpu + 1 101: 1k & 2k wpu + 1 111: (optional) Native controller selected by Pad Mode controls the Termination. + - [09:08] - iosterm - IOSTerm defines the behaviour of the termination logic when the IO Standby state + has been triggered. + 0 = Same as functional mode (no change). + 1 = Disable Pull-up and Pull-down (no on-die termination). + 2 = Enable Pull-down. + 3 = Enable Pull-up. + - [07:00] - intsel - Read-Only. The Interrupt Select defines which interrupt line driven from the + GPIO Controller toggles when an interrupt is detected on this pad. diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/ConvertPemToBin.py b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/ConvertPemToBin.py new file mode 100644 index 0000000000..97caa63976 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/ConvertPemToBin.py @@ -0,0 +1,50 @@ +# @file +# Converts Private PEM file into public modulus binary file. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +import binascii +import subprocess +import sys + +# Version defines +__version__ = '0.1.0.0' +VerString = 'Private PEM to public modulus binary converter, Version #{0}'.format(__version__) + +def Main (): + ReturnCode = 1 + try: + # Setup variables + OpenSslPath = sys.argv[1] + PrivateKeyFileName = sys.argv[2] + PublicKeyFileName = sys.argv[3] + + # Convert private PEM into public modulus hex-string + PublicModulus = subprocess.check_output ([OpenSslPath, 'rsa', '-modulus', '-noout', '-inform', 'pem', '-in', PrivateKeyFileName]) + PublicModulus = PublicModulus[PublicModulus.find ('Modulus=') + 8:-1] + + # Convert hex-string into binary file + BinaryFile = open (PublicKeyFileName, 'w+b') + BinaryFile.write (binascii.unhexlify (PublicModulus)) + + # Clear error code + ReturnCode = 0 + + finally: + # Close file + BinaryFile.close () + return ReturnCode + +if __name__ == "__main__": + print '' + print (VerString) + sys.exit (Main ()) diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/CreateKeyPair.py b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/CreateKeyPair.py new file mode 100644 index 0000000000..37bff2d4f3 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/CreateKeyPair.py @@ -0,0 +1,74 @@ +# @file +# Creates the RSA private/public key-pairs. +# +# Copyright (c) 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +import os +import subprocess +import sys + +# Version defines +__version__ = '0.1.0.0' +VerString = 'Create RSA Private/Public key pair, Version #{0}'.format(__version__) + +def Main (): + ReturnCode = 1 + try: + # Setup variables + OpenSslPath = sys.argv[1] + DestinationPath = sys.argv[2] + if len(sys.argv) > 3: + FilePrefix = sys.argv[3] + PrivateKeyFile = DestinationPath + '\\' + FilePrefix + '-private.pem' + PublicKeyFile = DestinationPath + '\\' + FilePrefix + '-public.pem' + PublicKeyBinaryFile = DestinationPath + '\\' + FilePrefix + '-public.bin' + else: + PrivateKeyFile = DestinationPath + '\\private-key.pem' + PublicKeyFile = DestinationPath + '\\public-key.pem' + PublicKeyBinaryFile = DestinationPath + '\\public-key.bin' + PemToBinaryConverter = os.path.dirname(os.path.dirname(OpenSslPath)) + '\\Utilities\\ConvertPemToBin.py' + + # Debug prints + if False: + print('OpenSslPath = {0}'.format(OpenSslPath)) + print('DestinationPath = {0}'.format(DestinationPath)) + print('FilePrefix = {0}'.format(FilePrefix)) + print('PemToBinaryConverter = {0}'.format(PemToBinaryConverter)) + print('PrivateKeyFile = {0}'.format(PrivateKeyFile)) + print('PublicKeyFile = {0}'.format(PublicKeyFile)) + print('PublicKeyBinaryFile = {0}'.format(PublicKeyBinaryFile)) + + # Create private key + # OpenSSL genrsa -out private-key.pem 2048 + # - Generates the private key in PEM form + subprocess.call([OpenSslPath, 'genrsa', '-out', PrivateKeyFile, '2048']) + + # Create public key + # OpenSSL rsa -in private-key.pem -outform pem -pubout -out public-key.pem + # - Generates the public key in PEM form from the private key + subprocess.call([OpenSslPath, 'rsa', '-in', PrivateKeyFile, '-outform', 'pem', '-pubout', '-out', PublicKeyFile]) + + # Convert private PEM into public modulus hex-string + # ConvertPemToBin.py OpenSslPath PrivateKeyPath PublicKeyBinaryFile + subprocess.call(['python.exe', PemToBinaryConverter, OpenSslPath, PrivateKeyFile, PublicKeyBinaryFile]) + + # Clear error code + ReturnCode = 0 + + finally: + # Close file + return ReturnCode + +if __name__ == "__main__": + print '' + print (VerString) + sys.exit (Main ()) diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/HashBinary.py b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/HashBinary.py new file mode 100644 index 0000000000..44270528a2 --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/HashBinary.py @@ -0,0 +1,253 @@ +# @file +# Hashes the EEPROM binary. +# +# Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +import os +import struct +import subprocess +import sys +import zlib + +# Version defines +__version__ = '0.1.0.1' +VerString = 'EEPROM hash generator, Version #{0}'.format(__version__) + +# The following defines are based off of EEPROM layout version #1.00 +# We could parse the definition file for these values +BinaryLengthOffset = 0x10 +Crc32Offset = 0x14 +Crc32LengthOffset = 0x18 +HashTypeOffset = 0x10 +PromSigStructSize = 0x20 +StructureLengthOffset = 0x0C + +# The following defines are based off of EEPROM layout version #1.00 +# We cannot parse the definition file for these values +HashTypeNone = 0x0000 +HashTypeMD5 = 0x0001 +HashTypeSHA1 = 0x0002 +HashTypeSHA256 = 0x0003 +HashTypeSHA384 = 0x0004 +HashTypeSHA512 = 0x0005 +HashTypeSigningFlag = 0x8000 + +# Hash digest size defines +MD5DigestSize = 0x10 +SHA1DigestSize = 0x14 +SHA256DigestSize = 0x20 +SHA384DigestSize = 0x30 +SHA512DigestSize = 0x40 + +def CopyFile(Destination, Source, Size): + count = 0 + while count < Size: + Destination.write(Source.read(1)) + count += 1 + return + +def Crc32File(File): + CurrentLocation = File.tell() + File.seek (0) + returnValue = (zlib.crc32(File.read()) & 0xFFFFFFFF) + File.seek (CurrentLocation) + return returnValue + +def FindStructure(File, Structure): + CurrentLocation = File.tell() + offset = 0 + fileSize = GetFileLength(File) + while offset < fileSize: + File.seek(offset) + Signature = struct.unpack('8s', File.read(8))[0] + if Signature == Structure: + return offset + offset += 0x10 + File.seek(CurrentLocation) + return fileSize + +def GetFileLength(File): + CurrentLocation = File.tell() + File.seek(0, os.SEEK_END) + FileLength = File.tell() + File.seek(CurrentLocation) + return FileLength + +def Main(): + # Set error return code + ReturnCode = 1 + + try: + # Set OpenSSL path + OpenSslPath = sys.argv[1] + + # Open file for reading, modifying, and in binary mode + BinaryFileName = sys.argv[2] + BinaryFile = open(BinaryFileName, 'r+b') + + # Get file length + BinaryFileLength = GetFileLength(BinaryFile) + + # Find $PromSig + SignatureLocation = FindStructure(BinaryFile, "$PromSig") + if SignatureLocation == BinaryFileLength: + # Failed to find structure. Bail after printing warning. + print ('WARNING: Failed to find $PromSig structure in {0}'.format(BinaryFileName)) + return ReturnCode + + # Determine which hashing algorithm to use + BinaryFile.seek(SignatureLocation + HashTypeOffset) + FileHashSize = 0 + FileSigSize = 0 + HashType = struct.unpack('H', BinaryFile.read(2))[0] + HashingType = '' + SigningFlag = HashType & HashTypeSigningFlag + HashType &= 0x7FFF + if HashType == HashTypeNone: + FileHashSize = 0x00 + print('- Nothing to hash. Bailing...') + return ReturnCode + elif HashType == HashTypeMD5: + # MD5 hashing + FileHashSize = MD5DigestSize + HashingType = '-md5' + print('- MD5 hash requested.') + elif HashType == HashTypeSHA1: + # SHA1 hashing + FileHashSize = SHA1DigestSize + HashingType = '-sha1' + print('- SHA1 hash requested.') + elif HashType == HashTypeSHA256: + # SHA256 hashing + FileHashSize = SHA256DigestSize + HashingType = '-sha256' + print('- SHA256 hash requested.') + elif HashType == HashTypeSHA384: + # SHA384 hashing + FileHashSize = SHA384DigestSize + HashingType = '-sha384' + print('- SHA384 hash requested.') + elif HashType == HashTypeSHA512: + # SHA512 hashing + FileHashSize = SHA512DigestSize + HashingType = '-sha512' + print('- SHA512 hash requested.') + else: + print('ERROR: Invalid hash type requested!') + return 1 + + if SigningFlag == HashTypeSigningFlag: + print('- signing requested.') + if HashType == HashTypeSHA384: + print('ERROR: OpenSSL does not currently support signing SHA384!') + return 1 + if HashType == HashTypeSHA512: + print('ERROR: OpenSSL does not currently support signing SHA512!') + return 1 + if len (sys.argv) != 4: + print('ERROR: Missing OpenSSL generated private key PEM file!') + return 1 + PrivateKeyFileName = sys.argv[3] + FileSigSize = 256 + + # Update $PromSig.Length + PromSigLength = PromSigStructSize + FileHashSize + FileSigSize + BinaryFile.seek(SignatureLocation + StructureLengthOffset) + WriteBinary(BinaryFile, PromSigLength, 0x04) + + # Update $Eeprom$.CrcLength + HeaderLocation = FindStructure(BinaryFile, "$Eeprom$") + if HeaderLocation != 0x00: + print('ERROR: $Eeprom$ structure is not at the beginning of the file!') + return 1 + BinaryFile.seek(HeaderLocation + BinaryLengthOffset) + Crc32Length = BinaryFile.read(4) + BinaryFile.seek(HeaderLocation + Crc32LengthOffset) + BinaryFile.write(Crc32Length) + + # Update $Eeprom$.Length + BinaryFile.seek(HeaderLocation + BinaryLengthOffset) + WriteBinary(BinaryFile, BinaryFileLength + FileHashSize + FileSigSize, 0x04) + + # Update EEPROM header CRC32 + HeaderLocation = FindStructure(BinaryFile, "$Eeprom$") + if HeaderLocation != 0x00: + print('ERROR: $Eeprom$ structure is not at the beginning of the file!') + return 1 + BinaryFile.seek(HeaderLocation + Crc32Offset) + WriteBinary(BinaryFile, 0x0000, 0x04) + Crc32 = Crc32File(BinaryFile) + print('- CRC32 = {0:08X}'.format (Crc32)) + BinaryFile.seek(HeaderLocation + Crc32Offset) + WriteBinary(BinaryFile, Crc32, 0x04) + + # Close the file so OpenSSL can get to it + BinaryFile.close() + + # Hash the file + subprocess.call([OpenSslPath, 'dgst', HashingType, '-binary', '-out', 'hash.tmp', BinaryFileName]) + + # Sign the file + if SigningFlag == HashTypeSigningFlag: + subprocess.call([OpenSslPath, 'dgst', HashingType, '-sign', PrivateKeyFileName, '-out', 'sign.tmp', BinaryFileName]) + + # Add hash to end of the file + HashFile = open('hash.tmp', 'r+b') + BinaryFile = open(BinaryFileName, 'r+b') + BinaryFile.seek(GetFileLength (BinaryFile)) + CopyFile(BinaryFile, HashFile, FileHashSize) + BinaryFile.close() + HashFile.close() + os.remove('hash.tmp') + + # Add signed hash to end of the file + if SigningFlag == HashTypeSigningFlag: + SignatureFile = open('sign.tmp', 'r+b') + BinaryFile = open(BinaryFileName, 'r+b') + BinaryFile.seek(GetFileLength (BinaryFile)) + CopyFile(BinaryFile, SignatureFile, FileSigSize) + BinaryFile.close() + SignatureFile.close() + os.remove('sign.tmp') + + # Align file size to paragraphs + BinaryFile = open(BinaryFileName, 'r+b') + BinaryFileLength = GetFileLength(BinaryFile) + AlignmentSize = 0x10 - (BinaryFileLength % 0x10) + if AlignmentSize < 0x10: + BinaryFile.seek(BinaryFileLength) + WriteBinary(BinaryFile, 0x0000, AlignmentSize) + + # Clear return code + ReturnCode = 0 + + finally: + # Close file + BinaryFile.close() + return ReturnCode + +def WriteBinary(File, binary, Size): + count = 0 + value = binary + while count < Size: + count += 1 + # Just want the low byte + temp = value & 0xFF + # Shift right a byte + value >>= 8 + # Write the low byte out + File.write(str(chr (temp))) + +if __name__ == "__main__": + print('') + print(VerString) + sys.exit(Main()) diff --git a/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/eeprom.py b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/eeprom.py new file mode 100644 index 0000000000..a9d1fc3c0e --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Common/Features/Eeprom/EepromBinary/Utilities/eeprom.py @@ -0,0 +1,856 @@ +# @file +# Produces binary file to be placed in an EEPROM. The format and contents of the +# EEPROM are defined by cofiguration files. The first configuration file defines the +# available structures and layout rules. The second configuration file defines the +# contents of the EEPROM image. +# +# Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.
+# +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php. +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +import os +import sys +import copy +import array +import argparse +import binascii +import subprocess +import ConfigParser +import re as regex +from collections import OrderedDict + +__version__ = '0.6.0.1' +VerString = 'EEPROM Generator Ver. {0}'.format(__version__) +InVerboseMode = False + +ReservedCfgSections = ['Defines', 'Patch', 'Structures'] +ReservedCfgNames = ['StructureType'.lower()] + +Types = {0x0:'UINT8',0x1:'UINT8',0x2:'UINT16', 0x4:'UINT32'} + +Defines="#ifndef _EEPROM_LAYOUT_H_\n#define _EEPROM_LAYOUT_H_\n\n" +Pragmas="#pragma pack(1)\n" + +PragmasEnd = "#pragma pack()\n" +DefinesEnd = "#endif\n" + +FileHeader = Defines + Pragmas +FileTail = PragmasEnd + DefinesEnd + +############################################################################### +class ProjData: + def __init__(self): + self.DataTypes = None + self.ProjCfg = None + self.AlignnmentMask = None + self.ReqStructList = None + self.MaxReqStructSize = None + self.ReqOrderDict = None + self.StructLengthPatch = None + self.BinLengthPatch = None + self.CrcPatch = None + +############################################################################### + +def GetValue(Str): + if Str is None: + return None + + # + # Check to see if this should be processed as a string. + # + TmpStr = Str.strip() + if TmpStr.startswith('"') and TmpStr.endswith('"'): + return TmpStr.replace('"', '') + + # + # Assume it is a number as a last resort and convert. + # + return StrToInt(Str) + + +def StrToInt(Str): + Base = 10 + + # + # Check parameter + # + if Str is None: + return None + + # + # Verify that the value is a number + # + TmpStr = Str.strip().lower() + if not TmpStr.isalnum(): + return None + + # + # Determine the base of the number for conversion + # + if TmpStr.startswith('0x'): + Base = 16 + + return int(TmpStr, base=Base) + + +############################################################################### + +def ErrorPrint(Str): + print('ERROR: {0}'.format(Str)) + +def WarningPrint(Str): + print('WARNING: {0}'.format(Str)) + +def DebugPrint(Str): + if InVerboseMode: + print(Str) + +############################################################################### + +def DumpBinData(BinData): + if not InVerboseMode: + return + + ByteCount = 0 + TmpLine = '{0:04X}:'.format(ByteCount) + for Byte in BinData: + TmpLine += ' {0:02X}'.format(Byte) + ByteCount += 1 + if ByteCount % 16 == 0: + print(TmpLine) + TmpLine = '{0:04X}:'.format(ByteCount) + if not TmpLine.endswith(':'): + print(TmpLine) + print('Data size: {0:X}'.format(ByteCount)) + +def CheckFile(FilePath): + # + # Validate input + # + if FilePath is None: + return False + + # + # Check to see if the file exists + # + if not os.path.isfile(FilePath): + return False + + return True + +def OpenCfg(FilePath): + # + # Validate input + # + if FilePath is None: + return None + + # + # Fix up path and verify that the file exists + # + TmpPath = os.path.abspath(os.path.normpath(FilePath)) + if not CheckFile(TmpPath): + ErrorPrint('File does not exist: {0}'.format(TmpPath)) + return None + + # + # Open the configuration file and return the config parser object. + # + CfgObj = ConfigParser.ConfigParser() + try: + CfgObj.read(TmpPath) + except: + ErrorPrint('Unable to parser configuration file: {0}'.format(TmpPath)) + return None + + return CfgObj + +def SetStr(Offset, Width, Value, BinData): + StrLen = len(Value) + if StrLen > Width: + ErrorPrint('Value too large for field at offset {0:02X}'.format(Offset)) + return + + Index = Offset + StrIndex = 0 + while(Index < Offset + Width): + if StrIndex >= StrLen: + BinData[Index] = ord(' ') + else: + BinData[Index] = ord(Value[StrIndex]) + Index += 1 + StrIndex += 1 + + return + +def SetInt(Offset, Width, Value, BinData): + TmpValue = Value + Index = Offset + while(Index < Offset + Width): + BinData[Index] = (TmpValue & 0xFF) + TmpValue = TmpValue >> 8 + Index += 1 + + return + +def SetBinArray(Offset, Width, Value, BinData): + InputLength = len(Value) + DataIndex = 0 + BinIndex = Offset + while(BinIndex < Offset + Width): + if DataIndex < InputLength: + BinData[BinIndex] = Value[DataIndex] + else: + BinData[BinIndex] = 11 + + DataIndex += 1 + BinIndex += 1 + +def SetValue(Offset, Width, Value, BinData): + if isinstance(Value, str): + SetStr(Offset, Width, Value, BinData) + elif isinstance(Value, int) or isinstance(Value, long): + SetInt(Offset, Width, Value, BinData) + elif isinstance(Value, array.array): + SetBinArray(Offset, Width, Value, BinData) + else: + ErrorPrint('Unable to set value at offset {0:02X}'.format(Offset)) + + return + +def SetDefValue(Type, FieldDict, BinData): + if Type is None or FieldDict is None: + return + SetValue(FieldDict['Offset'], FieldDict['Width'], FieldDict['Default'], BinData) + + return + +def CreateDefData(Type, ProjInfo): + BinData = array.array('B') + + # + # Determine the size of the entire structure if possible. Some structures are variable + # length and the data will be appended to the end. + # + StructLength = 0 + for Key in ProjInfo.DataTypes[Type].keys(): + if not isinstance(ProjInfo.DataTypes[Type][Key], dict): + continue + Offset = ProjInfo.DataTypes[Type][Key]['Offset'] + Width = ProjInfo.DataTypes[Type][Key]['Width'] + if Offset + Width > StructLength: + StructLength = Offset + Width + + # + # Zero fill the array + # + for item in range(StructLength): + BinData.append(0) + + # + # Set default values in structure + # + for Field in ProjInfo.DataTypes[Type].keys(): + if not isinstance(ProjInfo.DataTypes[Type][Field], dict): + continue + SetDefValue(Type, ProjInfo.DataTypes[Type][Field], BinData) + + return BinData + +def CompileiAsl(IaslPath, InputFile): + DebugPrint("\nCompiling {0}...".format(InputFile)) + if not os.path.isfile(InputFile): + ErrorPrint("{0} doesn't exist".format(InputFile)) + return None + if os.path.isdir(IaslPath): + IaslPath = os.path.join(IaslPath,"iasl") + try: + OutputFile="EepromAsl.aml" + prefixArg = "-p{0}".format(OutputFile) + if InVerboseMode: + subprocess.check_call([IaslPath, prefixArg, InputFile]) + else: + NoOutputFile = open(os.devnull, 'w') + subprocess.check_call([IaslPath,prefixArg,InputFile],stdout=NoOutputFile) + except subprocess.CalledProcessError: + ErrorPrint("Invalid ASL file ( {0} )".format(InputFile)) + OutputFile = None + except OSError: + IasFile = os.path.basename(IaslPath) + Path = IaslPath.replace(IasFile,"") + OutputFile = None + ErrorPrint("Could not find {0} in {1}".format(IasFile, Path)) + DebugPrint("\n") + return OutputFile + +def OverrideData(Type, ProjInfo, StructSection, BinData): + StructDefs = ProjInfo.DataTypes[Type] + + # + # Process any overrides + # + NameVals = ProjInfo.ProjCfg.items(StructSection) + for Name, Val in NameVals: + TmpBinData = array.array('B') + + # + # Check to see if the data should be from a file. + # + if Val.startswith('from_file'): + FileName = Val.replace('from_file', '').strip().strip('()').strip() + TmpBinData = array.array('B') + try: + f = open(FileName, 'rb') + f.seek(0, os.SEEK_END) + FileSize = f.tell() + f.seek(0, os.SEEK_SET) + TmpBinData.fromfile(f, FileSize) + f.close() + except Exception as e: + ErrorPrint('{0}'.format(e)) + continue + elif Val.startswith('from_asl'): + params = Val.replace('from_asl', '').strip().strip('()').strip() + (IaslPath, InputFile) = params.split(',') + #compile ASL with iasl + OutputFile = CompileiAsl(IaslPath, InputFile) + if OutputFile is None: + return None + TmpBinData = array.array('B') + try: + f = open(OutputFile, 'rb') + f.seek(0, os.SEEK_END) + FileSize = f.tell() + f.seek(0, os.SEEK_SET) + TmpBinData.fromfile(f, FileSize) + f.close() + except Exception as e: + ErrorPrint('{0}'.format(e)) + continue + elif Val.startswith('from_struct_list'): + Section = Val.replace('from_struct_list', '').strip().strip('()').strip() + SectionData = BuildMultipleStructs(ProjInfo, Section) + if SectionData is None or len(SectionData) == 0: + return None + for StructType, Bin in SectionData: + TmpBinData.extend(Bin) + elif Val.startswith('from_struct'): + StructSection = Val.replace('from_struct', '').strip().strip('()').strip() + TmpBinData = BuildSingleStruct(ProjInfo, StructSection) + if TmpBinData is None or len(TmpBinData) == 0: + return None + elif Name in StructDefs.keys(): + Val = GetValue(Val) + if Val is None: + continue + SetValue(StructDefs[Name]['Offset'], StructDefs[Name]['Width'], Val, BinData) + elif Name in ReservedCfgNames: + continue + else: + WarningPrint('Unable to set field: {0} in {1}'.format(Name, Type)) + + # + # Apply data to the correct field. + # + if len(TmpBinData) > 0: + if StructDefs[Name]['Width'] == 0: + # + # Just extend the array + # + BinData.extend(TmpBinData) + else: + # + # Actually set the value + # + SetValue(StructDefs[Name]['Offset'], StructDefs[Name]['Width'], TmpBinData, BinData) + + # + # Make sure the structure is padded for alignment requirements + # + DataLength = len(BinData) + if DataLength & ProjInfo.AlignmentMask != 0: + NewStart = (DataLength + ProjInfo.AlignmentMask) & ~ProjInfo.AlignmentMask + Index = DataLength + while(Index < NewStart): + BinData.append(0) + Index += 1 + + # + # If a length field exists update it with the current size of the structure. + # + for Patch in ProjInfo.StructLengthPatch: + Patch = Patch.lower() + if Patch in StructDefs.keys(): + SetValue(StructDefs[Patch]['Offset'], StructDefs[Patch]['Width'], len(BinData), BinData) + + return BinData + +def ParseArguments(): + Parser = argparse.ArgumentParser() + Parser.add_argument('-d', '--deff', action='store', default=None, + dest='Definitions', nargs=1, + help='Provides a path to the definition file for the image.') + Parser.add_argument('-p', '--project', action='store', default=None, + dest='Project', nargs=1, + help='Provides a path to the project configuration file.') + Parser.add_argument('-b', '--binary', action='store', default=None, + dest='Binary', nargs=1, + help='Output binary file name.') + Parser.add_argument('--header', action='store', default=None, + dest='HeaderFile', nargs=1, + help='Provides a file name for a C header file to be generated.') + Parser.add_argument('--verbose', action='store_true', default=False, + dest='Verbose', help='Enables verbose output for debugging.') + Parser.add_argument('--version', action='store_true', default=False, + dest='Version', + help='Displays the version information and exits the program.') + Args = Parser.parse_args() + + # + # Display version information and exit + # + if Args.Version: + print(VerString) + sys.exit(0) + + # + # Handle missing file information + # + if Args.Definitions is None: + ErrorPrint('Missing structure definition file.') + Parser.print_help() + sys.exit(1) + if Args.Project is None and Args.HeaderFile is None: + ErrorPrint('Missing project file.') + Parser.print_help() + sys.exit(1) + + # + # Set global verbose mode flag. + # + if Args.Verbose: + global InVerboseMode + InVerboseMode = True + + return Args + +def GetCfgValue(CfgObj, Section, Option): + RetVal = '' + if CfgObj.has_section(Section) and CfgObj.has_option(Section, Option.lower()): + RetVal = CfgObj.get(Section, Option.lower()) + + return RetVal + +def GetCfgValueList(CfgObj, Section, Option): + RetVal = [] + OptVal = GetCfgValue(CfgObj, Section, Option) + if len(OptVal) > 0: + if OptVal.find('|') >= 0: + Opts = OptVal.split('|') + else: + Opts = [OptVal] + for OptVal in Opts: + RetVal.append(OptVal.strip()) + + return RetVal + +def GetCfgDictList(CfgObj, Section, Option): + RetVal = {} + Opts = GetCfgValueList(CfgObj, Section, Option) + if len(Opts) > 0: + for Item in Opts: + if Item.find(':') < 0: + WarningPrint('Possible bad format in option {0}'.format(Option)) + continue + Vals = Item.split(':') + if len(Vals) != 2: + WarningPrint('Possible bad format in option {0}'.format(Option)) + continue + RetVal[Vals[0].strip()] = Vals[1].strip() + + return RetVal + +def GetPatchLoc(TypeDict, Type, PatchList, BinLen): + RetVal = [] + for PatchName in PatchList: + PatchName = PatchName.lower() + if PatchName in TypeDict[Type].keys(): + PatchLoc = copy.deepcopy(TypeDict[Type][PatchName]) + PatchLoc['Offset'] = PatchLoc['Offset'] + BinLen + RetVal.append(PatchLoc) + return RetVal + +def BuildSingleStruct(ProjInfo, StructSection): + BinData = None + + # + # Validate information and find the structure to build + # + if not ProjInfo.ProjCfg.has_section(StructSection): + ErrorPrint('Unable to find section [{0}].'.format(StructSection)) + return BinData + StructType = GetCfgValue(ProjInfo.ProjCfg, StructSection, 'StructureType') + if len(StructType) == 0: + ErrorPrint('Missing required field "StructureType" in section {0}'.format(StructSection)) + return BinData + + # + # Build the default structure + # + BinData = CreateDefData(StructType, ProjInfo) + if BinData is None: + return BinData + + # + # Fill in override values for the structure + # + BinData = OverrideData(StructType, ProjInfo, StructSection, BinData) + if BinData is None: + ErrorPrint('Unable to create default binary data for {0}'.format(StructType)) + + return BinData + +def BuildMultipleStructs(ProjInfo, Section): + BinList = [] + + if not ProjInfo.ProjCfg.has_section(Section): + ErrorPrint('Missing section [{0}].'.format(Section)) + return None + + for Field, StructSection in ProjInfo.ProjCfg.items(Section): + # + # Build the default structure + # + BinData = BuildSingleStruct(ProjInfo, StructSection) + if BinData is None: + return None + DumpBinData(BinData) + + # + # If the structure has to be the first structure insert it at the top of the list. + # + StructType = GetCfgValue(ProjInfo.ProjCfg, StructSection, 'StructureType') + if ProjInfo.ReqOrderDict.has_key(StructType): + Index = StrToInt(ProjInfo.ReqOrderDict[StructType]) + BinList.insert(Index, (StructType, BinData)) + for Key in ProjInfo.ReqOrderDict.keys(): + if StrToInt(ProjInfo.ReqOrderDict[Key]) == Index: + ProjInfo.ReqOrderDict.pop(Key) + else: + BinList.append((StructType, BinData)) + + return BinList + +def VerifyCfg(CfgObj, Tool, Type): + if not CfgObj.has_section('Defines'): + ErrorPrint('Unable to find Defines section.') + return False + Option = GetCfgValue(CfgObj, 'Defines', 'Tool') + if len(Option) == 0: + ErrorPrint('Unable to determine tool compatibility') + return False + elif Option != Tool: + ErrorPrint('Configuration file not compatible with {0}'.format(Tool)) + return False + Option = GetCfgValue(CfgObj, 'Defines', 'Type') + if len(Option) == 0: + ErrorPrint('Unable to verify file Type.') + return False + elif Option != Type: + ErrorPrint('Not a EEPROM "{0}" file.'.format(Type)) + return False + + # + # Display information about the configuration file being used. + # + Option = GetCfgValue(CfgObj, 'Defines', 'Platform') + if len(Option) > 0: + print('- Platform: {0}'.format(Option)) + Option = GetCfgValue(CfgObj, 'Defines', 'Version') + if len(Option) > 0: + print('- Version: {0}'.format(Option)) + print('- Type: {0}\n'.format(Type)) + + return True + +# +# Convert Section Identifier from CamelCase to snake case +# +def ConvertFromCamelCaseToSnakeCase(String): + RegexPattern1 = "(.)([A-Z][a-z]+)" + RegexPattern2 = "([a-z0-9])([A-Z])" + tempSub = regex.sub(RegexPattern1, r'\1_\2', String) + return regex.sub(RegexPattern2, r'\1_\2', tempSub) + +# +# Generates a C header file from the definitions configuration data. +# +def GenerateHeaderFile(HeaderFileName, DataTypes): + GeneratedStructures = FileHeader + with open(HeaderFileName, "w") as HeaderFile: + # + # Generate data structure dictionary based off of configuration file. + # + for Section in DataTypes.keys(): + # + # Skip sections that are not data structures + # + GeneratedStructures += "" + StructureFields = "" + if Section in ReservedCfgSections: + continue + GeneratedStructures += "\ntypedef struct {\n" + + for Field in DataTypes[Section].keys(): + # + # Handle normal structure fields + # + StructureFieldsWidth = DataTypes[Section][Field]['Width'] + FieldType = Types.get(StructureFieldsWidth, None) + FieldTypeAndIdentifier = "" + + # + # Generate Type + # + if FieldType is None: + FieldTypeAndIdentifier = " {0:8}{1}[{2}];\n".format('CHAR8', Field, StructureFieldsWidth) + else: + if StructureFieldsWidth == 0: + FieldTypeAndIdentifier = "// {0:8}{1}[0];\n".format(FieldType, Field) + else: + FieldTypeAndIdentifier = " {0:8}{1};\n".format(FieldType, Field) + + # + # Append Identifier to Type + # + StructureFields=StructureFields+FieldTypeAndIdentifier + + # + # Close Structure with converted upper CamelCase Section name + # + StructureFields=StructureFields + '}' + "{0};\n\n".format(ConvertFromCamelCaseToSnakeCase(Section).upper()) + + # + # Append generated structure to the previously generated structures' string + # + GeneratedStructures+=StructureFields + + # + # Write the generated structures to file + # + HeaderFile.write(GeneratedStructures + FileTail) + HeaderFile.close() + +def Main(): + ProjInfo = ProjData() + + # + # Get command line arguments + # + Args = ParseArguments() + print('{0}\n'.format(VerString)) + + # + # Load supported structures + # + DataTypeCfg = OpenCfg(Args.Definitions[0]) + if DataTypeCfg is None: + return 1 + print('Processing {0}'.format(Args.Definitions[0])) + if not VerifyCfg(DataTypeCfg, 'EEPROM', 'Definitions'): + return 1 + + # + # Check to see if any alignment is required for the binary image. + # + ProjInfo.AlignmentMask = 0 + if DataTypeCfg.has_option('Defines', 'ReqAlignment'.lower()): + ProjInfo.AlignmentMask = GetValue(DataTypeCfg.get('Defines', 'ReqAlignment'.lower())) - 1 + + # + # Determine the required structure types. + # + ProjInfo.ReqStructList = GetCfgValueList(DataTypeCfg, 'Defines', 'RequiredStructs') + ProjInfo.MaxReqStructSize = StrToInt(GetCfgValue(DataTypeCfg, 'Defines', 'MaxReqStructSize')) + ProjInfo.ReqOrderDict = GetCfgDictList(DataTypeCfg, 'Defines', 'RequiredIndex') + + # + # Determine labels to patch. + # + ProjInfo.StructLengthPatch = GetCfgValueList(DataTypeCfg, 'Patch', 'StructSize') + ProjInfo.BinLengthPatch = GetCfgValueList(DataTypeCfg, 'Patch', 'BinSize') + ProjInfo.CrcPatch = GetCfgValueList(DataTypeCfg, 'Patch', 'Crc32') + + # + # Generate data structure dictionary based off of configuration file. + # + ProjInfo.DataTypes = OrderedDict() + for Section in DataTypeCfg.sections(): + # + # Skip sections that are not data structures + # + if Section in ReservedCfgSections: + continue + FieldList = [] + for Field, Value in DataTypeCfg.items(Section): + # + # Get structure fields and place them in a list + # + Vals = Value.strip().split('|') + FieldList.append((Field.strip(), Vals)) + Sorted = False + while not Sorted: + Swap = False + for Index in range(1, len(FieldList)): + if FieldList[Index][1][0] < FieldList[Index-1][1][0]: + FieldList.insert(Index - 1, FieldList.pop(Index)) + Swap = True + if not Swap: + Sorted = True + if Section not in ProjInfo.DataTypes.keys(): + ProjInfo.DataTypes[Section] = OrderedDict() + for Field, Vals in FieldList: + ProjInfo.DataTypes[Section][Field] = OrderedDict() + ProjInfo.DataTypes[Section][Field]['Offset'] = GetValue(Vals[0]) + ProjInfo.DataTypes[Section][Field]['Width'] = GetValue(Vals[1]) + ProjInfo.DataTypes[Section][Field]['Default'] = GetValue(Vals[2]) + + # + # Dump the dictionary if verbose output requrested + # + if InVerboseMode: + print('Data Types:') + for SecKey in ProjInfo.DataTypes.keys(): + print('- Struct: {0}'.format(SecKey)) + for FieldKey in ProjInfo.DataTypes[SecKey].keys(): + print(' {0:15}: 0x{1:>04X}'.format(FieldKey, ProjInfo.DataTypes[SecKey][FieldKey]['Offset'])) + print('') + + # + # Generate the header file here if one was requested. + # + if Args.HeaderFile is not None: + print('Generating header file: {0}'.format(Args.HeaderFile[0])) + GenerateHeaderFile(Args.HeaderFile[0], ProjInfo.DataTypes) + print('') + if Args.Project is None: + return 0 + + # + # Load platform configuration data + # + ProjInfo.ProjCfg = OpenCfg(Args.Project[0]) + if ProjInfo.ProjCfg is None: + return 1 + print('Processing {0}'.format(Args.Project[0])) + if not VerifyCfg(ProjInfo.ProjCfg, 'EEPROM', 'Project'): + return 1 + + # + # Process Structure of the platform data + # + print('Generating structures...') + BinList = [] + Section = 'Structures' + TmpList = BuildMultipleStructs(ProjInfo, Section) + if TmpList is None: + return 1 + BinList.extend(TmpList) + + # + # Generate final image + # + print('Generating binary image...') + VerifyReqSize = True + FileSizePatchList = [] + CrcPatchList = [] + FileImage = array.array('B') + for Type, Struct in BinList: + # + # Determine patch locations + # + FileSizePatchList.extend(GetPatchLoc(ProjInfo.DataTypes, Type, ProjInfo.BinLengthPatch, len(FileImage))) + CrcPatchList.extend(GetPatchLoc(ProjInfo.DataTypes, Type, ProjInfo.CrcPatch, len(FileImage))) + + # + # Add data blob to the file image + # + FileImage.extend(Struct) + + # + # Structure added so see if it is a required structure and remove it from the list. + # + if Type in ProjInfo.ReqStructList: + ProjInfo.ReqStructList.remove(Type) + + # + # Check that all the required structures are found and that are within the required size. + # + if VerifyReqSize and len(ProjInfo.ReqStructList) == 0: + VerifyReqSize = False + if len(FileImage) > ProjInfo.MaxReqStructSize: + ErrorPrint('Required structures to large to fit in the first {0} bytes.'.format(ProjInfo.MaxReqStructSize)) + return 1 + + # + # Check for any missing required structures. + # + if len(ProjInfo.ReqStructList) != 0: + ErrorPrint('Missing required structures...') + for ReqStruct in ProjInfo.ReqStructList: + print ('* {0}'.format(ReqStruct)) + return 1 + + # + # Patch file size information. + # + BinSize = len(FileImage) + DebugPrint('File Size: {0:X}'.format(BinSize)) + for PatchLoc in FileSizePatchList: + DebugPrint('Updating File Size: {0:08X} @ {1:08X}'.format(BinSize, PatchLoc['Offset'])) + SetValue(PatchLoc['Offset'], PatchLoc['Width'], BinSize, FileImage) + + # + # Compute CRC32 for the header if the field exists + # + Crc32Value = 0 + Crc32Value = binascii.crc32(FileImage) & 0xFFFFFFFF + for CrcLoc in CrcPatchList: + DebugPrint('Updating CRC32 value: {0:08X} @ {1:08X}'.format(Crc32Value, CrcLoc['Offset'])) + SetValue(CrcLoc['Offset'], + CrcLoc['Width'], + int(Crc32Value), + FileImage) + + # + # Determine file name to use. + # + FileName = 'eeprom.bin' + if ProjInfo.ProjCfg.has_section('Defines') and ProjInfo.ProjCfg.has_option('Defines', 'OutputFileName'.lower()): + FileName = ProjInfo.ProjCfg.get('Defines', 'OutputFileName'.lower()) + if Args.Binary is not None: + FileName = Args.Binary[0] + + # + # Write final image to output file + # + print('Writing file: {0}'.format(FileName)) + try: + f = open(FileName, 'wb') + FileImage.tofile(f) + f.close() + except Exception as e: + print('ERROR: {0}'.format(e)) + + return 0 + +if __name__ == '__main__': + sys.exit(Main()) -- 2.14.1.windows.1