8000 PoC cache configuration control by mhightower83 · Pull Request #7060 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content

PoC cache configuration control #7060

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 89 commits into from
Dec 6, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
fc63320
PoC cache configuration control
mhightower83 Feb 4, 2020
57043bd
Style corrections
mhightower83 Feb 4, 2020
17ceceb
Merge branch 'master' into poc-cache-config
mhightower83 Feb 7, 2020
7424aed
Added detailed description for Cache_Read_Enable.
mhightower83 Feb 11, 2020
56306d3
Merge branch 'master' into poc-cache-config
mhightower83 Feb 13, 2020
0645923
Style and MMU_SEC_HEAP corrections.
mhightower83 Feb 13, 2020
a6bb5a1
Improved asm register usage.
mhightower83 Feb 14, 2020
5bb3e19
Merge branch 'master' into poc-cache-config
mhightower83 Feb 27, 2020
b443e43
Interesting glitch in boards.txt after github merge. A new board in
mhightower83 Feb 28, 2020
0c661db
Support for 2nd Heap, excess IRAM, through umm_malloc.
mhightower83 Mar 2, 2020
c6eabc5
Merge branch 'master' into poc-cache-config
mhightower83 Mar 2, 2020
70842de
Post push CI cleanup.
mhightower83 Mar 2, 2020
f35290b
Cleanup part II
mhightower83 Mar 3, 2020
71e36cb
Cleanup part III
mhightower83 Mar 3, 2020
edf008a
Updates to support platformio, maybe.
mhightower83 Mar 5, 2020
161e7bc
Added exception C wrapper replacement.
mhightower83 Mar 5, 2020
5ac46f7
Merge branch 'master' into poc-cache-config
mhightower83 Mar 6, 2020
91fc391
CI Cleanup
mhightower83 Mar 6, 2020
eb9882e
CI Cleanup II
mhightower83 Mar 6, 2020
1422b8d
Changes to exc-c-wrapper-handler.S to assemble under platformio.
mhightower83 Mar 6, 2020
b921e11
For platformio, Correction to toolchain-xtensa include path.
mhightower83 Mar 6, 2020
cfb3826
Temporarily added --print-memory-usage to ld parameters for cross-che…
mhightower83 Mar 6, 2020
a1cd3a2
Merge branch 'master' into poc-cache-config
mhightower83 Mar 17, 2020
352a2ed
Merge branch 'poc-cache-config' of github.com:mhightower83/Arduino in…
mhightower83 Mar 17, 2020
062f8dc
Merge branch 'master' into poc-cache-config
mhightower83 Mar 27, 2020
69fdd5b
Merge branch 'master' into poc-cache-config
mhightower83 Apr 9, 2020
d5dac93
Merge branch 'master' into poc-cache-config
mhightower83 Apr 16, 2020
9d3a7de
Merge branch 'poc-cache-config' of github.com:mhightower83/Arduino in…
mhightower83 Apr 28, 2020
ecd826c
undo change to platform.txt
mhightower83 Apr 28, 2020
a9b92e2
correct merge conflict. take 1
mhightower83 Apr 28, 2020
5a99afc
Merge branch 'master' into poc-cache-config
mhightower83 Apr 28, 2020
f51dd82
Merge branch 'master' into poc-cache-config
mhightower83 Apr 29, 2020
71ef229
Merge branch 'master' into poc-cache-config
mhightower83 May 9, 2020
1a9d909
Fixed #if... for building umm_get_oom_count. It was not building when…
mhightower83 May 10, 2020
7b4a8d4
Commented out XMC support. Compatibility issues with PoC when using 1…
mhightower83 May 17, 2020
d9ab27e
Merge branch 'master' into poc-cache-config
mhightower83 May 17, 2020
6d18190
Corrected size.py, DRAM bracketing changed to not include ICACHE with…
mhightower83 May 25, 2020
50fe8a3
Merge branch 'master' into poc-cache-config
mhightower83 May 25, 2020
f62ff0a
Merge branch 'master' into poc-cache-config
mhightower83 May 31, 2020
1847a72
Merge branch 'master' into poc-cache-config
mhightower83 Jun 14, 2020
d3ace64
Added additional _context for support of use of UMM_INLINE_METRICS.
mhightower83 Jun 19, 2020
a43a2a8
Merge branch 'master' into poc-cache-config
mhightower83 Jun 19, 2020
2f47516
Merge branch 'master' into poc-cache-config
mhightower83 Jul 5, 2020
fd8f942
Merge branch 'master' into poc-cache-config
mhightower83 Jul 7, 2020
74df810
Changes to clear errors and warnings from toolchain 10.1
mhightower83 Jul 13, 2020
b767a5d
Isolated incompatable definitions related to _xtos_set_exception_hand…
mhightower83 Jul 14, 2020
e7402d8
Update tools/platformio-build.py
mhightower83 Jul 17, 2020
51ea542
Merge branch 'master' into poc-cache-config
mhightower83 Jul 17, 2020
3ff489c
Merge branch 'master' into poc-cache-config
devyte Jul 18, 2020
232dce4
Requested changes
mhightower83 Jul 19, 2020
a3c9e02
Corrected comment. And added missing include.
mhightower83 Jul 23, 2020
fc5f611
Improve comment.
mhightower83 Jul 23, 2020
bbdf166
style and comment correction
mhightower83 Jul 23, 2020
b88d197
Added draft mmu.rst file and updated index.
mhightower83 Jul 23, 2020
b058f17
Updated mmu.rst
mhightower83 Jul 25, 2020
5e31ed5
Add a default MMU_IRAM_SIZE value for a new CI test to pass.
mhightower83 Jul 25, 2020
a4d28e2
CI appeasement
mhightower83 Jul 26, 2020
d45ceb0
CI appeasement with comment correction.
mhightower83 Jul 27, 2020
4831410
Ensure SYS always runs with DRAM Heap selected.
mhightower83 Jul 28, 2020
f64a7d0
Add/move heap stack overflow/underflow check to Esp.cpp where the eve…
mhightower83 Jul 28, 2020
2238535
Improved comment clarity of purpose for IramReserve.ino. Clean up MMU…
mhightower83 Jul 30, 2020
c070657
Added missing #include
mhightower83 Aug 4, 2020
be71429
Corrected usage of warning
mhightower83 Aug 4, 2020
50ea394
Merge branch 'master' into poc-cache-config
mhightower83 Aug 7, 2020
4d7e1e9
Merge branch 'poc-cache-config' of github.com:mhightower83/Arduino in…
mhightower83 Aug 7, 2020
61afce0
CI appeasement and use #message not #pragma message
mhightower83 Aug 7, 2020
d828d76
Merge branch 'master' into poc-cache-config
mhightower83 Sep 2, 2020
7d4a600
Updated git version of eboot.elf to match build version.
mhightower83 Sep 2, 2020
20d39ee
Merge branch 'master' into poc-cache-config
mhightower83 Sep 4, 2020
f33ed95
Merge branch 'master' into poc-cache-config
mhightower83 Sep 17, 2020
53894c7
Merge branch 'master' into poc-cache-config
mhightower83 Oct 2, 2020
5ee2136
Merge branch 'master' into poc-cache-config
devyte Oct 5, 2020
3f415f8
Remove conditional build option USE_ISR_SAFE_EXC_WRAPPER, always inst…
mhightower83 Oct 6, 2020
addb149
Merge branch 'master' into poc-cache-config
mhightower83 Oct 6, 2020
d7fb4ab
Updated mmu.rst
mhightower83 Oct 6, 2020
c8412a8
Merge branch 'master' into poc-cache-config
mhightower83 Oct 7, 2020
5786ec1
Merge branch 'master' into poc-cache-config
mhightower83 Oct 18, 2020
86c4e5a
Merge branch 'master' into poc-cache-config
mhightower83 Oct 22, 2020
0c9ae16
Merge branch 'master' into poc-cache-config
mhightower83 Oct 23, 2020
2f88e7b
Merge branch 'master' into poc-cache-config
mhightower83 Oct 28, 2020
6c324c1
Merge branch 'master' into poc-cache-config
mhightower83 Nov 11, 2020
929e79b
Merge branch 'master' into poc-cache-config
mhightower83 Nov 19, 2020
1875c73
Merge branch 'master' into poc-cache-config
mhightower83 Nov 20, 2020
d3f9a0a
Expanded and clarified comments.
mhightower83 Dec 1, 2020
e48d95e
Style fixes and more cleanup
mhightower83 Dec 2, 2020
3ab791b
Merge branch 'master' into poc-cache-config
mhightower83 Dec 2, 2020
a3bf35c
Style fix
mhightower83 Dec 2, 2020
1ff2aef
Remove unnessasary IRAM_ATTR from install_non32xfer_exception_handler
mhightower83 Dec 5, 2020
9f9e206
Merge branch 'master' into poc-cache-config
devyte Dec 6, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Support for 2nd Heap, excess IRAM, through umm_malloc.
Adapted changes to umm_malloc, Esp.cpp, StackThunk.cpp,
WiFiClientSecureBearSSL.cpp, and virtualmem.ino to irammem.ino from
@earlephilhower PR #6994.

Reworked umm_malloc to use context pointers instead of copy context.
umm_malloc now supports allocations from IRAM. Added class
HeapSelectIram, ... to aid in selecting alternate heaps,
modeled after class InterruptLock.
Restrict alloc request from ISRs to DRAM.

Never ending improvements to debug printing.

Sec Heap option now pulls in free IRAM left over in the 1st 32K block.
Managed through umm_malloc with HeapSelectIram.

Updated examples.
  • Loading branch information
mhightower83 committed Mar 2, 2020
commit 0c661db4afc2fa4a2e32dd70aa8acf40a29b2bed
46 changes: 46 additions & 0 deletions cores/esp8266/Esp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
#include "umm_malloc/umm_malloc.h"
#include "cont.h"
#include "coredecls.h"
#include "umm_malloc/umm_malloc.h"
// #include "core_esp8266_vm.h"

extern "C" {
#include "user_interface.h"
Expand Down Expand Up @@ -698,3 +700,47 @@ String EspClass::getSketchMD5()
result = md5.toString();
return result;
}

void EspClass::enableVM()
{
#ifdef UMM_HEAP_EXTERNAL
if (!vmEnabled)
install_vm_exception_handler();
vmEnabled = true;
#endif
}

void EspClass::setExternalHeap()
{
#ifdef UMM_HEAP_EXTERNAL
if (vmEnabled)
umm_push_heap(UMM_HEAP_EXTERNAL);
#endif
}

void EspClass::setIramHeap()
{
#ifdef UMM_HEAP_IRAM
umm_push_heap(UMM_HEAP_IRAM);
#endif
}

void EspClass::setDramHeap()
{
#if defined(UMM_HEAP_EXTERNAL) && !defined(UMM_HEAP_IRAM)
if (vmEnabled)
umm_push_heap(UMM_HEAP_DRAM);
#elif defined(UMM_HEAP_IRAM)
umm_push_heap(UMM_HEAP_DRAM);
#endif
}

void EspClass::resetHeap()
{
#if defined(UMM_HEAP_EXTERNAL) && !defined(UMM_HEAP_IRAM)
if (vmEnabled)
umm_pop_heap();
#elif defined(UMM_HEAP_IRAM)
umm_pop_heap();
#endif
}
11 changes: 11 additions & 0 deletions cores/esp8266/Esp.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,17 @@ class EspClass {
#else
uint32_t getCycleCount();
#endif

void enableVM();
void setDramHeap();
void setIramHeap();
void setExternalHeap();
void setInternalHeap() {setDramHeap();}; // depricated
void resetHeap();
private:
#ifdef UMM_HEAP_EXTERNAL
bool vmEnabled = false;
#endif
};

#ifndef CORE_MOCK
Expand Down
4 changes: 4 additions & 0 deletions cores/esp8266/StackThunk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <stdlib.h>
#include "StackThunk.h"
#include <ets_sys.h>
#include <umm_malloc/umm_malloc.h>

extern "C" {

Expand All @@ -45,7 +46,10 @@ void stack_thunk_add_ref()
{
stack_thunk_refcnt++;
if (stack_thunk_refcnt == 1) {
ETS_PRINTF("\nStackThunk malloc(%u)\n", _stackSize * sizeof(uint32_t));
HeapSelectDram ephemeral;
stack_thunk_ptr = (uint32_t *)malloc(_stackSize * sizeof(uint32_t));
ETS_PRINTF("StackThunk stack_thunk_ptr: %p\n", stack_thunk_ptr);
stack_thunk_top = stack_thunk_ptr + _stackSize - 1;
stack_thunk_save = NULL;
stack_thunk_repaint();
Expand Down
15 changes: 10 additions & 5 deletions cores/esp8266/core_esp8266_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ extern "C" {
}
#include <core_version.h>
#include "gdb_hooks.h"
#include <umm_malloc/umm_malloc.h>
#include <core_esp8266_non32xfer.h>


Expand Down Expand Up @@ -298,18 +299,20 @@ extern "C" void app_entry_redefinable(void)
cont_t s_cont __attribute__((aligned(16)));
g_pcont = &s_cont;

DBG_MM_PRINT_STATUS();
DBG_MMU_PRINT_STATUS();

DBG_MMU_PRINT_IRAM_BANK_REG(0);
DBG_MMU_PRINT_IRAM_BANK_REG(0, "");

DBG_MMU_PRINTF("\nCall call_user_start()\n");

/* Call the entry point of the SDK code. */
call_user_start();
}

static void app_entry_custom (void) __attribute__((weakref("app_entry_redefinable")));

extern "C" void app_entry (void)
{
umm_init();
return app_entry_custom();
}

Expand All @@ -331,10 +334,12 @@ extern "C" void user_init(void) {

cont_init(g_pcont);

#ifdef NON32XFER_HANDLER
#if defined(NON32XFER_HANDLER) || defined(MMU_SEC_HEAP)
install_non32xfer_exception_handler();
#endif

#if defined(MMU_SEC_HEAP)
umm_init_iram();
#endif
preinit(); // Prior to C++ Dynamic Init (not related to above init() ). Meant to be user redefinable.

ets_task(loop_task,
Expand Down
65 changes: 33 additions & 32 deletions cores/esp8266/core_esp8266_non32xfer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,24 +38,6 @@

extern "C" {

#if 1
#define ETS_PRINTF ets_uart_printf
#else
#define ETS_PRINTF(...) do {} while(false)
#endif

#ifndef __MMU_IRAM_H
bool inline is_iram(uint32_t addr) {
(void)addr;
return true;
}

bool inline is_icache(uint32_t addr) {
(void)addr;
return true;
}
#endif

#define LOAD_MASK 0x00f00fu
#define L8UI_MATCH 0x000002u
#define L16UI_MATCH 0x001002u
Expand All @@ -66,10 +48,16 @@ bool inline is_icache(uint32_t addr) {
#define EXCCAUSE_LOAD_STORE_ERROR 3 /* Non 32-bit read/write error */

uint32_t mmu_non32xfer_count = 0;
uint32_t mmu_non32xfer_withinisr_count = 0;

#define DEBUG_WARNING
#ifdef DEBUG_WARNING
static void warning(void)
{
DEBUGV("WARNING: The Non-32-bit transfer hander has been invoked, and performance may suffer.\n");
ETS_PRINTF("WARNING: The Non-32-bit transfer hander has been invoked, and performance may suffer.\n");
}
#endif

static fn_exception_handler_t old_handler = NULL;

static IRAM_ATTR void non32xfer_exception_handler(struct __exception_frame *ef, uint32_t cause)
Expand All @@ -88,12 +76,13 @@ static IRAM_ATTR void non32xfer_exception_handler(struct __exception_frame *ef,
*/
uint32_t insn;
__asm(
"movi %0, ~3;" /* prepare a mask for the EPC */
"and %0, %0, %1;" /* apply mask for 32bit aligned base */
"ssa8l %1;" /* set up shift register for src op */
"l32i %1, %0, 0;" /* load part 1 */
"l32i %0, %0, 4;" /* load part 2 */
"src %0, %0, %1;" /* right shift to get faulting instruction */
"rsil %0, 15\n\t" /* Turn IRQs back off, let exit wrapper restore PS */
"movi %0, ~3\n\t" /* prepare a mask for the EPC */
"and %0, %0, %1\n\t" /* apply mask for 32bit aligned base */
"ssa8l %1\n\t" /* set up shift register for src op */
"l32i %1, %0, 0\n\t" /* load part 1 */
"l32i %0, %0, 4\n\t" /* load part 2 */
"src %0, %0, %1\n\t" /* right shift to get faulting instruction */
:"=&r"(insn)
:"r"(ef->epc)
:
Expand All @@ -105,10 +94,15 @@ static IRAM_ATTR void non32xfer_exception_handler(struct __exception_frame *ef,
an exception handler?
*/
if (ef->ps & 0x0F) {
ETS_PRINTF("\nload/store exception with INTLEVEL 0x%02X\n", ef->ps & 0x0F);
#if 0
continue; /* fail, not safe for IRQ disabled ?? */
#endif
if (0 == mmu_non32xfer_withinisr_count) {
ETS_PRINTF("\nload/store exception with INTLEVEL 0x%02X\n", ef->ps & 0x0F);
#if 0
continue; /* fail, not safe for IRQ disabled ?? */
#endif
}
if (0 == ++mmu_non32xfer_withinisr_count) {
--mmu_non32xfer_withinisr_count; // saturated
}
}

uint32_t what = insn & LOAD_MASK;
Expand All @@ -129,9 +123,13 @@ static IRAM_ATTR void non32xfer_exception_handler(struct __exception_frame *ef,
continue; /* fail */
}

#ifdef DEBUG_WARNING
if (0 == mmu_non32xfer_count) {
// This may be causing some issues TODO retest with umm_malloc within
// interrupt context.
schedule_function(warning);
}
#endif
// Some accounting information so we know this is happending.
if (0 == ++mmu_non32xfer_count) {
--mmu_non32xfer_count; // saturated
Expand Down Expand Up @@ -208,10 +206,13 @@ static IRAM_ATTR void non32xfer_exception_handler(struct __exception_frame *ef,
}


void install_non32xfer_exception_handler(void)
void IRAM_ATTR install_non32xfer_exception_handler(void)
{
old_handler =
_xtos_set_exception_handler(EXCCAUSE_LOAD_STORE_ERROR, non32xfer_exception_handler);
if (NULL == old_handler) {
old_handler =
_xtos_set_exception_handler(EXCCAUSE_LOAD_STORE_ERROR,
non32xfer_exception_handler);
}
}

};
2 changes: 1 addition & 1 deletion cores/esp8266/esp8266_undocumented.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ struct __exception_frame
typedef void (*fn_exception_handler_t)(struct __exception_frame *ef, uint32_t cause);
extern fn_exception_handler_t _xtos_set_exception_handler(uint32_t reason, fn_exception_handler_t fn);

//D extern void _xtos_unhandled_exception(struct __exception_frame *ef, uint32_t cause);
extern void _xtos_unhandled_exception(struct __exception_frame *ef, uint32_t cause);

#ifdef __cplusplus
};
Expand Down
81 changes: 74 additions & 7 deletions cores/esp8266/mmu_iram.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include "Arduino.h"
#include "mmu_iram.h"
#include <user_interface.h>

extern "C" {

Expand Down Expand Up @@ -110,12 +111,12 @@ void IRAM_ATTR Cache_Read_Enable(uint8_t map, uint8_t p, uint8_t v) {
if (0 == mmu_status.enable_count) {
mmu_status.enable_count--; // keep saturated value
}
DBG_MMU_PRINT_IRAM_BANK_REG("before");
DBG_MMU_PRINT_IRAM_BANK_REG("before", "Enable");

real_Cache_Read_Enable(map, p, SOC_CACHE_SIZE);

DBG_MMU_PRINT_IRAM_BANK_REG("after");
DBG_MM_PRINT_STATUS();
DBG_MMU_PRINT_IRAM_BANK_REG("after", "Enable");
DBG_MMU_PRINT_STATUS();
}

#ifndef ROM_Cache_Read_Disable
Expand All @@ -129,20 +130,86 @@ constexpr fp_Cache_Read_Disable_t real_Cache_Read_Disable =
*
*/
void IRAM_ATTR Cache_Read_Disable(void) {

mmu_status.disable_count++;
mmu_status.state = 0;
if (0 == mmu_status.disable_count) {
mmu_status.disable_count--; // keep saturated value
}
DBG_MMU_PRINT_IRAM_BANK_REG("before");
DBG_MMU_PRINT_IRAM_BANK_REG("before", "Disable");

real_Cache_Read_Disable();

DBG_MMU_PRINT_IRAM_BANK_REG("after");
DBG_MM_PRINT_STATUS();
DBG_MMU_PRINT_IRAM_BANK_REG("after", "Disable");
DBG_MMU_PRINT_STATUS();
}

#ifdef DEV_DEBUG_PRINT
/*
* Early adjustment for CPU crystal frequency, so debug printing will work.
* This should not be left enabled all the time in Crash_Read..., I am concerned
* that there may be unknown interference with the NONOS SDK startup.
*
* Inspired by:
* https://github.com/pvvx/esp8266web/blob/2e25559bc489487747205db2ef171d48326b32d4/app/sdklib/system/app_main.c#L581-L591
*/
extern "C" uint8_t rom_i2c_readReg(uint8_t block, uint8_t host_id, uint8_t reg_add);
extern "C" void rom_i2c_writeReg(uint8_t block, uint8_t host_id, uint8_t reg_add, uint8_t data);

extern "C" void IRAM_ATTR set_pll(void)
{
#if !defined(F_CRYSTAL)
#define F_CRYSTAL 26000000
#endif
if (F_CRYSTAL != 40000000) {
// At Boot ROM(-BIOS) start, it assumes a 40MHz crystal.
// If it is not, we assume a 26MHz crystal.
// There is no support for 24MHz crustal at this time.
if(rom_i2c_readReg(103,4,1) != 136) { // 8: 40MHz, 136: 26MHz
// Assume 26MHz crystal
// soc_param0: 0: 40MHz, 1: 26MHz, 2: 24MHz
// set 80MHz PLL CPU
rom_i2c_writeReg(103,4,1,136);
rom_i2c_writeReg(103,4,2,145);
}
}
}

extern "C" void IRAM_ATTR dbg_set_pll(void)
{
char r103_4_1 = rom_i2c_readReg(103,4,1);
char r103_4_2 = rom_i2c_readReg(103,4,2);
set_pll();
ets_uart_printf("\nrom_i2c_readReg(103,4,1) == %u\n", r103_4_1);
ets_uart_printf( "rom_i2c_readReg(103,4,2) == %u\n", r103_4_2);
}

/*
This helps keep the UART enabled at user_init() so we can get a few more
messages printed.
*/
extern struct rst_info resetInfo;
extern "C" void __pinMode( uint8_t pin, uint8_t mode );

inline bool is_gpio_persistent(void) {
return REASON_EXCEPTION_RST <= resetInfo.reason &&
REASON_SOFT_RESTART >= resetInfo.reason;
}

extern "C" void pinMode( uint8_t pin, uint8_t mode ) {
static bool in_initPins = true;
if (in_initPins && (1 == pin)) {
if (!is_gpio_persistent()) {
/* Restore pin to TX after Power-on and EXT_RST */
__pinMode(pin, FUNCTION_0);
}
in_initPins = false;
return;
}

__pinMode( pin, mode );
}
Comment on lines +167 to +187
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this persistent pin thing needed for this PR?
I like the idea of allowing persistent gpio across reboot/etc, but I'm wondering if it should be better integrated into the core rather than have it here as an override to the weak symbols that are elsewhere. I.e.: if we're going to have this, then let's do it on purpose.
Maybe split this off into a different PR that should get merged before this one?

Copy link
Contributor Author
@mhightower83 mhightower83 Jul 19, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This along with set_pll() works together to improve the ability to print messages during core and SDK initialization. Coverage is not 100%; however, it has been useful for the development of this PR.

This was more for development debugging. In my mind using this feature (Cache_Read_Enable) had a lot of uncertainty about it. Since it is scarcely documented. I have held back from deleting a lot of the development code used to monitor what is going on. I think there is more of this scattered around that needs to be looked at. I suppose now may be the time to purge.

This is currently contained in a #ifdef DEV_DEBUG_MMU_IRAM which is targeted for development not general debugging.

Edited - added clarifications

#endif

#endif

};
Loading
0