forked from espressif/esptool
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #25 from tasmota/master
Updates from upstream master
- Loading branch information
Showing
26 changed files
with
1,690 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
.. _contribute: | ||
|
||
.. include:: ../../CONTRIBUTING.rst |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
.. _resources: | ||
|
||
Resources | ||
========= | ||
|
||
|
||
Useful Links | ||
------------- | ||
|
||
* The `esp32.com forum <https://esp32.com/>`_ is a place to ask questions and find community resources. | ||
|
||
* Check the `Issues <https://github.com/espressif/esptool/issues>`_ section on GitHub if you find a bug or have a feature request. Please check existing `issues <https://github.com/espressif/esptool/issues>`_ before opening a new one. | ||
|
||
* Several `books <https://www.espressif.com/en/ecosystem/community-engagement/books>`_ have been written about the ESP8266 or ESP32 series of SoCs and they are listed on `Espressif <https://www.espressif.com/en/ecosystem/community-engagement/books>`__ web site. | ||
|
||
* If you're interested in contributing to esptool.py, please check the :ref:`contribute` page. | ||
|
||
* For additional {IDF_TARGET_NAME} product related information, please refer to the `documentation <https://espressif.com/en/support/download/documents>`_ section of `Espressif <https://espressif.com/en/support/download/documents>`__ web site. | ||
|
||
Webinars and Trainings | ||
---------------------- | ||
|
||
Mastering the Basics of Espressif Chips: An In-Depth Look at Chip Flashing | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
The content of this webinar is designed for developers, engineers and hobbyists interested in getting a better understanding of how to use esptool.py or other tools for the development with the ESP8266 or ESP32 series of SoCs. | ||
|
||
It offers an in-depth look at the inner mechanisms of esptool.py, including the :ref:`boot-mode` process. | ||
|
||
.. image:: https://img.youtube.com/vi/zh-Y_s4X6zs/maxresdefault.jpg | ||
:alt: Mastering the Basics of Espressif Chips: An In-Depth Look at Chip Flashing | ||
:target: https://www.youtube.com/watch?v=zh-Y_s4X6zs | ||
|
||
DevCon22: esptool.py: Espressif's Swiss Army Knife | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
This talk aims to show how simple, yet powerful, esptool.py is, and how to use it to tame your ESP. | ||
|
||
.. image:: https://img.youtube.com/vi/GjWGKzu3XTk/maxresdefault.jpg | ||
:alt: DevCon22: esptool.py: Espressif's Swiss Army Knife | ||
:target: https://www.youtube.com/watch?v=GjWGKzu3XTk |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from . import operations | ||
from .emulate_efuse_controller import EmulateEfuseController | ||
from .fields import EspEfuses |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
# This file describes eFuses controller for ESP32-P4 chip | ||
# | ||
# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD | ||
# | ||
# SPDX-License-Identifier: GPL-2.0-or-later | ||
|
||
import reedsolo | ||
|
||
from .mem_definition import EfuseDefineBlocks, EfuseDefineFields, EfuseDefineRegisters | ||
from ..emulate_efuse_controller_base import EmulateEfuseControllerBase, FatalError | ||
|
||
|
||
class EmulateEfuseController(EmulateEfuseControllerBase): | ||
"""The class for virtual efuse operation. Using for HOST_TEST.""" | ||
|
||
CHIP_NAME = "ESP32-P4" | ||
mem = None | ||
debug = False | ||
|
||
def __init__(self, efuse_file=None, debug=False): | ||
self.Blocks = EfuseDefineBlocks | ||
self.Fields = EfuseDefineFields() | ||
self.REGS = EfuseDefineRegisters | ||
super(EmulateEfuseController, self).__init__(efuse_file, debug) | ||
self.write_reg(self.REGS.EFUSE_STATUS_REG, 1) | ||
|
||
""" esptool method start >>""" | ||
|
||
def get_major_chip_version(self): | ||
return 0 | ||
|
||
def get_minor_chip_version(self): | ||
return 0 | ||
|
||
def get_crystal_freq(self): | ||
return 40 # MHz (common for all chips) | ||
|
||
def get_security_info(self): | ||
return { | ||
"flags": 0, | ||
"flash_crypt_cnt": 0, | ||
"key_purposes": 0, | ||
"chip_id": 0, | ||
"api_version": 0, | ||
} | ||
|
||
""" << esptool method end """ | ||
|
||
def handle_writing_event(self, addr, value): | ||
if addr == self.REGS.EFUSE_CMD_REG: | ||
if value & self.REGS.EFUSE_PGM_CMD: | ||
self.copy_blocks_wr_regs_to_rd_regs(updated_block=(value >> 2) & 0xF) | ||
self.clean_blocks_wr_regs() | ||
self.check_rd_protection_area() | ||
self.write_reg(addr, 0) | ||
self.write_reg(self.REGS.EFUSE_STATUS_REG, 1) | ||
elif value == self.REGS.EFUSE_READ_CMD: | ||
self.write_reg(addr, 0) | ||
self.write_reg(self.REGS.EFUSE_STATUS_REG, 1) | ||
self.save_to_file() | ||
|
||
def get_bitlen_of_block(self, blk, wr=False): | ||
if blk.id == 0: | ||
if wr: | ||
return 32 * 8 | ||
else: | ||
return 32 * blk.len | ||
else: | ||
if wr: | ||
rs_coding = 32 * 3 | ||
return 32 * 8 + rs_coding | ||
else: | ||
return 32 * blk.len | ||
|
||
def handle_coding_scheme(self, blk, data): | ||
if blk.id != 0: | ||
# CODING_SCHEME RS applied only for all blocks except BLK0. | ||
coded_bytes = 12 | ||
data.pos = coded_bytes * 8 | ||
plain_data = data.readlist("32*uint:8")[::-1] | ||
# takes 32 bytes | ||
# apply RS encoding | ||
rs = reedsolo.RSCodec(coded_bytes) | ||
# 32 byte of data + 12 bytes RS | ||
calc_encoded_data = list(rs.encode([x for x in plain_data])) | ||
data.pos = 0 | ||
if calc_encoded_data != data.readlist("44*uint:8")[::-1]: | ||
raise FatalError("Error in coding scheme data") | ||
data = data[coded_bytes * 8 :] | ||
if blk.len < 8: | ||
data = data[(8 - blk.len) * 32 :] | ||
return data |
Oops, something went wrong.