/* This code triggers a psram-related silicon bug in rev0 silicon. The bug is fixed in rev1 silicon. */ #include #include #include "rom/ets_sys.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/semphr.h" #include "freertos/queue.h" #include "freertos/xtensa_api.h" #include "unity.h" #include "soc/dport_reg.h" #include "soc/io_mux_reg.h" #include #include #include #include #include "rom/ets_sys.h" #include "esp_heap_alloc_caps.h" typedef struct { char name[9]; int dummy[4]; int *wadfile; int dummy2[2]; } xlumpinfo_t; static xlumpinfo_t *xlumpinfo=(xlumpinfo_t*)0x3f80002c; static int xnumlumps=5500; static int isValidPtr(void *ptr) { if (((int)ptr&0xff000000)==0x3f000000) return 1; return 0; } int test_weird_corruption() { int err=0; xlumpinfo_t *marked = (xlumpinfo_t*)0x3fff2824; size_t i, num_marked = 0, num_unmarked = 0; // int is_marked = 0, mark_end = 0; xlumpinfo_t *lump = xlumpinfo; int x; for (x=0; x