Giter Club home page Giter Club logo

esp32-tinyemu's People

Contributors

drorgl avatar meltdown03 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

esp32-tinyemu's Issues

Cannot get Linux to boot

I used the premade buildroot file from the readme file. I had to tweak the name of the bin file in the root-riscv32.cfg file to get it to do anything, but it gets to this line and then just sits:

writing jump address ram ptr: 0x0 phy: 0x0x0

I'm guessing I am missing a step somewhere.

The entire output is here (I was actually able to get it working on the my ESP32-S3, but it did the same thing on my ESP32):

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0x2a (SPI_FAST_FLASH_BOOT)
Saved PC:0x4203f6b6
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd0108,len:0x1324
load:0x403b6000,len:0xb34
load:0x403ba000,len:0x2e10
entry 0x403b6230
I (24) boot: ESP-IDF 4.4.1 2nd stage bootloader
I (25) boot: compile time 08:59:23
I (25) boot: chip revision: 0
I (26) boot.esp32s3: Boot SPI Speed : 80MHz
I (31) boot.esp32s3: SPI Mode       : DIO
I (36) boot.esp32s3: SPI Flash Size : 8MB
I (40) boot: Enabling RNG early entropy source...
I (46) boot: Partition Table:
I (49) boot: ## Label            Usage          Type ST Offset   Length
I (57) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (64) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (72) boot:  2 factory          factory app      00 00 00010000 00100000
I (79) boot: End of partition table
I (83) esp_image: segment 0: paddr=00010020 vaddr=3c050020 size=0a8d8h ( 43224) map
I (99) esp_image: segment 1: paddr=0001a900 vaddr=3fc914e0 size=01ffch (  8188) load
I (102) esp_image: segment 2: paddr=0001c904 vaddr=40374000 size=03714h ( 14100) load
I (112) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=42708h (272136) map
I (166) esp_image: segment 4: paddr=00062730 vaddr=40377714 size=09dc4h ( 40388) load
I (175) esp_image: segment 5: paddr=0006c4fc vaddr=50000200 size=00010h (    16) load
I (181) boot: Loaded app from partition at offset 0x10000
I (181) boot: Disabling RNG early entropy source...
I (195) opi psram: vendor id : 0x0d (AP)
I (195) opi psram: dev id    : 0x02 (generation 3)
I (196) opi psram: density   : 0x03 (64 Mbit)
I (199) opi psram: good-die  : 0x01 (Pass)
I (204) opi psram: Latency   : 0x01 (Fixed)
I (209) opi psram: VCC       : 0x01 (3V)
I (213) opi psram: SRF       : 0x01 (Fast Refresh)
I (219) opi psram: BurstType : 0x01 (Hybrid Wrap)
I (224) opi psram: BurstLen  : 0x01 (32 Byte)
I (229) opi psram: Readlatency  : 0x02 (10 cycles@Fixed)
I (235) opi psram: DriveStrength: 0x00 (1/1)
W (240) PSRAM: DO NOT USE FOR MASS PRODUCTION! Timing parameters will be updated in future IDF version.
I (251) spiram: Found 64MBit SPI RAM device
I (255) spiram: SPI RAM mode: sram 80m
I (260) spiram: PSRAM initialized, cache is in normal (1-core) mode.
I (267) cpu_start: Pro cpu up.
I (270) cpu_start: Starting app cpu, entry point is 0x40375d00
I (0) cpu_start: App cpu up.
I (683) spiram: SPI SRAM memory test OK
I (693) cpu_start: Pro cpu start user code
I (693) cpu_start: cpu freq: 240000000
I (693) cpu_start: Application information:
I (696) cpu_start: Project name:     esp32-tinyemu
I (701) cpu_start: App version:      ee5e244-dirty
I (707) cpu_start: Compile time:     Jul 23 2022 08:57:39
I (713) cpu_start: ELF file SHA256:  1f4f3d5acb5ce31e...
I (719) cpu_start: ESP-IDF:          4.4.1
I (723) heap_init: Initializing. RAM available for dynamic allocation:
I (731) heap_init: At 3FC945A8 len 0004BA58 (302 KiB): D/IRAM
I (737) heap_init: At 3FCE0000 len 0000EE34 (59 KiB): STACK/DRAM
I (744) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (750) heap_init: At 600FE000 len 00002000 (8 KiB): RTCRAM
I (756) spiram: Adding pool of 8192K of external SPI memory to heap allocator
I (764) spi_flash: detected chip: gd
I (768) spi_flash: flash io: dio
I (773) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (793) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (793) SD: Using SPI peripheral
I (803) gpio: GPIO[13]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (813) sdspi_transaction: cmd=52, R1 response: command not supported
I (853) sdspi_transaction: cmd=5, R1 response: command not supported
Name: SD128
Type: SDHC/SDXC
Speed: 20 MHz
Size: 122344MB
Loading 0
Setting up UART Console
Registering RAM 0x80000000: 134217728 bytes
Registering RAM Entry 0x80000000 134217728 bytes
creating vmm /sdcard/emu/pagefile0x80000000.bin size: 134217728, page: 8192, pages: 380, total: 3112960
Registered RAM 0x80000000: 134217728 bytes at 0x0x0
Registering RAM 0x0: 65536 bytes
Registering RAM Entry 0x0 65536 bytes
creating vmm /sdcard/emu/pagefile0x0.bin size: 65536, page: 8192, pages: 200, total: 1638400
Registered RAM 0x0: 65536 bytes at 0x0x0
Registering CLINT
Registering Device at 0x2000000 786432 bytes
Registering PLIC
Registering Device at 0x40100000 4194304 bytes
Registring HTIF
Registering Device at 0x40008000 16 bytes
Registering VIRTIO Page Size
Registering Device at 0x40010000 4096 bytes
Registering VIRTIO Page Size
Registering Device at 0x40011000 4096 bytes
copied bios from bbl32.bin to 0x0 53730 bytes
copied kernel from kernel-riscv32.bin to 0x400000 3253116 bytes
building fdt
fdt dst 0x1040
writing jump address ram ptr: 0x0 phy: 0x0x0

redefinition of 'clock_gettime'

I cloned the repo, opened it in vscode, hit upload and got this error:

 *  Executing task: C:\Users\domi\.platformio\penv\Scripts\platformio.exe run --target upload 

Processing native (platform: native)
---------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 15 compatible libraries
Scanning dependencies...
Dependency Graph
|-- tinyemu @ 1.0.0  
|-- sdmount
|-- log_c
|-- simpleconsole    
|-- uartconsole      
|-- virtual_directory
Building in release mode
Compiling .pio\build\native\src\temu.o
Compiling .pio\build\native\lib60a\direct_cache\direct_cache.o
Compiling .pio\build\native\lib8ce\log_c\log.o
lib\direct_cache\direct_cache.c: In function 'direct_cache_init':
lib\direct_cache\direct_cache.c:32:29: warning: assignment to 'void *' from 'size_t' {aka 'long long unsigned int'} makes pointer from 
integer without a cast [-Wint-conversion]
   32 |         cache->cache[i].key = i + 1;
      |                             ^
lib\direct_cache\direct_cache.c: In function 'direct_cache_remove':
lib\direct_cache\direct_cache.c:58:28: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
   58 |     cache->cache[cell].key = cell + 1;
      |                            ^
Compiling .pio\build\native\libaa2\list\llist.o
Compiling .pio\build\native\libaa2\list\llist_iterator.o
Compiling .pio\build\native\libaa2\list\llist_node.o
Archiving .pio\build\native\lib8ce\liblog_c.a
Archiving .pio\build\native\libaa2\liblist.a
Archiving .pio\build\native\lib60a\libdirect_cache.a
Indexing .pio\build\native\lib8ce\liblog_c.a
Indexing .pio\build\native\lib60a\libdirect_cache.a
Indexing .pio\build\native\libaa2\liblist.a
Compiling .pio\build\native\libf7f\avltree\avltree.o
Compiling .pio\build\native\libbb7\memory_indexer\memory_indexer.o
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_init':
lib\memory_indexer\memory_indexer.c:34:53: warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]
   34 |     memory_indexer_t *indexer = (memory_indexer_t *)malloc(sizeof(memory_indexer_t));
      |                                                     ^~~~~~
lib\memory_indexer\memory_indexer.c:34:53: warning: incompatible implicit declaration of built-in function 'malloc'
lib\memory_indexer\memory_indexer.c:5:1: note: include '<stdlib.h>' or provide a declaration of 'malloc'
    4 | #include <string.h>
  +++ |+#include <stdlib.h>
    5 |
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_set':
lib\memory_indexer\memory_indexer.c:44:67: warning: incompatible implicit declaration of built-in function 'malloc'
   44 |     struct memory_wrapper *memory_item = (struct memory_wrapper *)malloc(sizeof(struct memory_wrapper));
      |                                                                   ^~~~~~
lib\memory_indexer\memory_indexer.c:44:67: note: include '<stdlib.h>' or provide a declaration of 'malloc'
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_search':
lib\memory_indexer\memory_indexer.c:60:35: warning: initialization of 'struct avl_node_t *' from incompatible pointer type 'struct avl_node *' [-Wincompatible-pointer-types]
   60 |     struct avl_node_t *avl_node = avl_search(&indexer->avl_tree, &query.avl, cmp_func);
      |                                   ^~~~~~~~~~
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_remove':
lib\memory_indexer\memory_indexer.c:72:35: warning: initialization of 'struct avl_node_t *' from incompatible pointer type 'struct avl_node *' [-Wincompatible-pointer-types]
   72 |     struct avl_node_t *avl_node = avl_search(&indexer->avl_tree, &query.avl, cmp_func);
      |                                   ^~~~~~~~~~
lib\memory_indexer\memory_indexer.c:76:40: warning: passing argument 2 of 'avl_remove' from incompatible pointer type [-Wincompatible-pointer-types]
   76 |         avl_remove(&indexer->avl_tree, avl_node);
      |                                        ^~~~~~~~
      |                                        |
      |                                        struct avl_node_t *
In file included from lib\memory_indexer\memory_indexer.c:3:
lib\avltree/avltree.h:89:34: note: expected 'struct avl_node *' but argument is of type 'struct avl_node_t *'
   89 |                 struct avl_node *node);
      |                 ~~~~~~~~~~~~~~~~~^~~~
lib\memory_indexer\memory_indexer.c:77:9: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
   77 |         free(wrapper);
      |         ^~~~
lib\memory_indexer\memory_indexer.c:77:9: warning: incompatible implicit declaration of built-in function 'free'
lib\memory_indexer\memory_indexer.c:77:9: note: include '<stdlib.h>' or provide a declaration of 'free'
lib\memory_indexer\memory_indexer.c:79:12: warning: 'return' with a value, in function returning void [-Wreturn-type]
   79 |     return NULL;
      |            ^~~~
lib\memory_indexer\memory_indexer.c:68:6: note: declared here
   68 | void memory_indexer_remove(memory_indexer_t *indexer, size_t key)
      |      ^~~~~~~~~~~~~~~~~~~~~
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_free':
lib\memory_indexer\memory_indexer.c:85:35: warning: initialization of 'struct avl_node_t *' from incompatible pointer type 'struct avl_node *' [-Wincompatible-pointer-types]
   85 |     struct avl_node_t *avl_node = avl_first(&indexer->avl_tree);
      |                                   ^~~~~~~~~
lib\memory_indexer\memory_indexer.c:89:29: warning: passing argument 1 of 'avl_next' from incompatible pointer type [-Wincompatible-pointer-types]
   89 |         avl_node = avl_next(avl_node);
      |                             ^~~~~~~~
      |                             |
      |                             struct avl_node_t *
In file included from lib\memory_indexer\memory_indexer.c:3:
lib\avltree/avltree.h:92:44: note: expected 'struct avl_node *' but argument is of type 'struct avl_node_t *'
   92 | struct avl_node* avl_next(struct avl_node *node);
      |                           ~~~~~~~~~~~~~~~~~^~~~
lib\memory_indexer\memory_indexer.c:89:18: warning: assignment to 'struct avl_node_t *' from incompatible pointer type 'struct avl_node *' [-Wincompatible-pointer-types]
   89 |         avl_node = avl_next(avl_node);
      |                  ^
Compiling .pio\build\native\lib8b6\lru_cache\lru_cache.o
Compiling .pio\build\native\lib799\HimemAllocator\himem_access\emulated_himem.o
lib\lru_cache\lru_cache.c: In function 'lru_cache_flush_items':
lib\lru_cache\lru_cache.c:108:64: warning: passing argument 2 of 'memory_indexer_remove' makes integer from pointer without a cast [-Wint-conversion]
  108 |         memory_indexer_remove(cache->memory_indexer, cache_item->key);
      |                                                      ~~~~~~~~~~^~~~~
      |                                                                |
      |                                                                void *
In file included from lib\lru_cache\lru_cache.c:5:
lib\memory_indexer/memory_indexer.h:12:62: note: expected 'size_t' {aka 'long long unsigned int'} but argument is of type 'void *'     
   12 | void memory_indexer_remove(memory_indexer_t *indexer, size_t key);
      |                                                       ~~~~~~~^~~
Compiling .pio\build\native\lib799\HimemAllocator\himem_access\esp32_himem.o
Archiving .pio\build\native\libbb7\libmemory_indexer.a
Archiving .pio\build\native\libf7f\libavltree.a
Indexing .pio\build\native\libbb7\libmemory_indexer.a
Archiving .pio\build\native\lib8b6\liblru_cache.a
Compiling .pio\build\native\lib799\HimemAllocator\himem_allocator.o
Indexing .pio\build\native\libf7f\libavltree.a
In file included from src\temu.c:81:
lib\simpleconsole/simpleconsole.h: In function 'simple_console_get_size':
lib\simpleconsole/simpleconsole.h:87:20: warning: unused variable 'ws' [-Wunused-variable]
   87 |     struct winsize ws;
      |                    ^~
src\temu.c: In function 'main':
src\temu.c:768:34: warning: variable 'build_preload_file' set but not used [-Wunused-but-set-variable]
  768 |     const char *path, *cmdline, *build_preload_file;
      |                                  ^~~~~~~~~~~~~~~~~~
Indexing .pio\build\native\lib8b6\liblru_cache.a
Compiling .pio\build\native\libb0a\page_cache\page_cache.o
Compiling .pio\build\native\lib9c7\VMM\vmm.o
lib\page_cache\page_cache.c:28:1: warning: no semicolon at end of struct or union
   28 | };
      | ^
lib\page_cache\page_cache.c: In function 'on_page_flush':
lib\page_cache\page_cache.c:46:26: warning: passing argument 1 of 'page_cache->on_flush' makes integer from pointer without a cast [-Wint-conversion]
   46 |     page_cache->on_flush(key,page_cache->flush_buffer, page_cache->flush_context);
      |                          ^~~
      |                          |
      |                          void *
lib\page_cache\page_cache.c:46:26: note: expected 'size_t' {aka 'long long unsigned int'} but argument is of type 'void *'
lib\page_cache\page_cache.c: In function 'page_cache_get':
lib\page_cache\page_cache.c:73:86: warning: passing argument 2 of 'direct_cache_get' makes pointer from integer without a cast [-Wint-conversion]
   73 |     struct page_cache_item_t *page_item = direct_cache_get(page_cache->direct_cache, page_number);
      |                                                                                      ^~~~~~~~~~~
      |                                                                                      |
      |                                                                                      size_t {aka long long unsigned int}       
In file included from lib\page_cache\page_cache.c:10:
lib\direct_cache/direct_cache.h:10:53: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   10 | void *direct_cache_get(direct_cache_t *cache, void *key);
      |                                               ~~~~~~^~~
lib\page_cache\page_cache.c:75:58: warning: passing argument 2 of 'lru_cache_get' makes pointer from integer without a cast [-Wint-conversion]
   75 |         page_item = lru_cache_get(page_cache->lru_cache, page_number);
      |                                                          ^~~~Compiling .pio\build\native\libdb7\virtual_directory\virtual_directory.o
~~~~~~~
      |                                                          |
      |                                                          size_t {aka long long unsigned int}
In file included from lib\page_cache\page_cache.c:9:
lib\lru_cache/lru_cache.h:14:43: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   14 | void *lru_cache_get(cache_t *cache, void *key);
      |                                     ~~~~~~^~~
Compiling .pio\build\native\lib226\tinyemu\aes.o
lib\page_cache\page_cache.c: In function 'page_cache_set':
lib\page_cache\page_cache.c:91:86: warning: passing argument 2 of 'direct_cache_get' makes pointer from integer without a cast [-Wint-conversion]
   91 |     struct page_cache_item_t *page_item = direct_cache_get(page_cache->direct_cache, page_number);
      |                                                                                      ^~~~~~~~~~~
      |                                                                                      |
      |                                                                                      size_t {aka long long unsigned int}       
In file included from lib\page_cache\page_cache.c:10:
Archiving .pio\build\native\libb0a\libpage_cache.a
lib\direct_cache/direct_cache.h:10:53: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   10 | void *direct_cache_get(direct_cache_t *cache, void *key);
      |                                               ~~~~~~^~~
Archiving .pio\build\native\lib799\libHimemAllocator.a
lib\page_cache\page_cache.c:93:58: warning: passing argument 2 of 'lru_cache_get' makes pointer from integer without a cast [-Wint-conversion]
Compiling .pio\build\native\lib226\tinyemu\cutils.o
   93 |         page_item = lru_cache_get(page_cache->lru_cache, page_number);
Indexing .pio\build\native\libb0a\libpage_cache.a
      |                                                          ^~~~~~~~~Archiving .pio\build\native\libdb7\libvirtual_directory.a
~~
Indexing .pio\build\native\lib799\libHimemAllocator.a
      |                                                          |
Compiling .pio\build\native\lib226\tinyemu\fs.o
      |                                                          size_t {aka long long unsigned int}
Indexing .pio\build\native\libdb7\libvirtual_directory.a
In file included from lib\page_cache\page_cache.c:9:
lib\lru_cache/lru_cache.h:14:43: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   14 | void *lru_cache_get(cache_t *cache, void *key);
      |                                     ~~~~~~^~~
lib\page_cache\page_cache.c:116:62: warning: passing argument 2 of 'lru_cache_remove' makes pointer from integer without a cast [-Wint-conversion]
  116 |             lru_cache_remove(page_cache->lru_cache, page_item->page_number);
      |                                                     ~~~~~~~~~^~~~~~~~~~~~~
      |                                                              |
      |                                                              size_t {aka long long unsigned int}
In file included from lib\page_cache\page_cache.c:9:
lib\lru_cache/lru_cache.h:18:46: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   18 | void lru_cache_remove(cache_t * cache, void* key);
      |                                        ~~~~~~^~~
lib\page_cache\page_cache.c:117:68: warning: passing argument 2 of 'direct_cache_remove' makes pointer from integer without a cast [-Wint-conversion]
  117 |             direct_cache_remove(page_cache->direct_cache, page_item->page_number);
      |                                                           ~~~~~~~~~^~~~~~~~~~~~~
Compiling .pio\build\native\lib226\tinyemu\fs_utils.o
      |                                                                    |
Compiling .pio\build\native\lib226\tinyemu\ide.o
      |                                                                    size_t {aka long long unsigned int}
In file included from lib\page_cache\page_cache.c:10:
Compiling .pio\build\native\lib226\tinyemu\iomem.o
lib\direct_cache/direct_cache.h:13:55: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   13 | void direct_cache_remove(direct_cache_t *cache, void *key);
Compiling .pio\build\native\lib226\tinyemu\json.o
      |                                                 ~~~~~~^~~
Compiling .pio\build\native\lib226\tinyemu\machine.o
lib\page_cache\page_cache.c:127:46: warning: passing argument 2 of 'lru_cache_add' makes pointer from integer without a cast [-Wint-conversion]
  127 |         lru_cache_add(page_cache->lru_cache, page_number, page_item);
      |                                              ^~~~~~~~~~~
      |                                              |
      |                                              size_t {aka long long unsigned int}
In file included from lib\page_cache\page_cache.c:9:
lib\lru_cache/lru_cache.h:23:42: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   23 | void lru_cache_add(cache_t *cache, void *key, void *value);
      |                                    ~~~~~~^~~
Compiling .pio\build\native\lib226\tinyemu\pci.o
lib\page_cache\page_cache.c:128:51: warning: passing argument 2 of 'direct_cache_set' makes pointer from integer without a cast [-Wint-conversion]
Compiling .pio\build\native\lib226\tinyemu\pckbd.o
  128 |         direct_cache_set(page_cache->direct_cache,page_number, page_item);
      |                                                   ^~~~~~~~~~Compiling .pio\build\native\lib226\tinyemu\ps2.o
~
      |                                                   |
      |                                                   size_t {aka long long unsigned int}
In file included from lib\page_cache\page_cache.c:10:
lib\direct_cache/direct_cache.h:12:52: note: expected 'void *' but argument is of type 'size_t' {aka 'long long unsigned int'}
   12 | void direct_cache_set(direct_cache_t *cache, void *key, void *value);
      |                                              ~~~~~~Archiving .pio\build\native\lib9c7\libVMM.a
^~~
lib\tinyemu\iomem.c: In function 'phys_mem_get_ram_ptr':
lib\tinyemu\iomem.c:289:20: warning: initialization of 'uint64_t' {aka 'long long unsigned int'} from 'uint8_t *' {aka 'unsigned char *'} makes integer from pointer without a cast [-Wint-conversion]
  289 |     uint64_t ptr = pr->phys_mem + /*(uintptr_t)*/offset;
      |                    ^~
Compiling .pio\build\native\lib226\tinyemu\riscv_cpu128.o
lib\VMM\vmm.c: In function 'backing_store_write':
Indexing .pio\build\native\lib9c7\libVMM.a
lib\VMM\vmm.c:115:49: warning: passing argument 3 of 'page_cache_set' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  115 |     page_cache_set(vmm->page_cache,page_number, buf);
Compiling .pio\build\native\lib226\tinyemu\riscv_cpu32.o
      |                                                 ^~~
In file included from lib\VMM\vmm.h:9,
                 from lib\VMM\vmm.c:1:
Compiling .pio\build\native\lib226\tinyemu\riscv_cpu64.o
lib\page_cache/page_cache.h:17:73: note: expected 'void *' but argument is of type 'const uint8_t *' {aka 'const unsigned char *'}
   17 | void page_cache_set(page_cache_t *page_cache, size_t page_number, void *buff);
      |                                                                   ~~~~~~^~~~
lib\tinyemu\ide.c: In function 'padstr':
lib\tinyemu\ide.c:244:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
  244 |         *(char *)((long)str ^ 1) = v;
      |                   ^
lib\tinyemu\ide.c:244:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
Compiling .pio\build\native\lib226\tinyemu\riscv_machine.o
  244 |         *(char *)((long)str ^ 1) = v;
      |          ^
Compiling .pio\build\native\lib226\tinyemu\sha256.o
Compiling .pio\build\native\lib226\tinyemu\simplefb.o
Compiling .pio\build\native\lib226\tinyemu\softfp.o
Compiling .pio\build\native\lib226\tinyemu\splitimg.o
lib\tinyemu\riscv_machine.c:87:5: error: redefinition of 'clock_gettime'
   87 | int clock_gettime(int x, struct timespec *spec)      //C-file part
      |     ^~~~~~~~~~~~~
In file included from C:/TDM-GCC-64/x86_64-w64-mingw32/include/time.h:308,
                 from lib\tinyemu\riscv_machine.c:33:
C:/TDM-GCC-64/x86_64-w64-mingw32/include/pthread_time.h:115:12: note: previous definition of 'clock_gettime' was here
  115 | inline int clock_gettime(__winpthreads_clockid_t clock_id, struct timespec *tp) { return __pthread_clock_gettime(clock_id, tp); }
      |            ^~~~~~~~~~~~~
*** [.pio\build\native\lib226\tinyemu\riscv_machine.o] Error 1
===================================================== [FAILED] Took 15.44 seconds =====================================================

failed to build/flash

First of all I would like to say that you have done an incredible job porting linux to esp32. Because all the other options I found only support esp32-s3.

Device: esp32-WROOM-32

I tried:
export MAKEFLAGS '-j1'
use bash shell instead fish
reinstall platformio
reinstall esp-idf
run idf.py -p /dev/ttyUSB0 flash after pio run -e esp32 -t upload failed

here is full log of pio run -e esp32 -t upload > esp32-tinyemu.log 2>&1
esp32-tinyemu.log

Compilation

Hello:

On Windows, what compiler is used to compile?
Where can I find your cmake file?

Thank you,

Mong

Hi, i got an error while compiling please help me solve it

the full build log was


Processing native (platform: native)
--------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 15 compatible libraries
Scanning dependencies...
Dependency Graph
|-- tinyemu @ 1.0.0
|   |-- VMM
|   |   |-- direct_cache
|   |   |-- log_c
|   |   |-- lru_cache
|   |   |   |-- list @ 0.2.0
|   |   |   |-- memory_indexer
|   |   |   |   |-- avltree @ 1
|   |   |-- page_cache
|   |   |   |-- direct_cache
|   |   |   |-- HimemAllocator
|   |   |   |-- lru_cache
|   |   |   |   |-- list @ 0.2.0
|   |   |   |   |-- memory_indexer
|   |   |   |   |   |-- avltree @ 1
|   |   |-- list @ 0.2.0
|   |-- virtual_directory
|-- sdmount
|   |-- virtual_directory
|-- log_c
|-- simpleconsole
|   |-- tinyemu @ 1.0.0
|   |   |-- VMM
|   |   |   |-- direct_cache
|   |   |   |-- log_c
|   |   |   |-- lru_cache
|   |   |   |   |-- list @ 0.2.0
|   |   |   |   |-- memory_indexer
|   |   |   |   |   |-- avltree @ 1
|   |   |   |-- page_cache
|   |   |   |   |-- direct_cache
|   |   |   |   |-- HimemAllocator
|   |   |   |   |-- lru_cache
|   |   |   |   |   |-- list @ 0.2.0
|   |   |   |   |   |-- memory_indexer
|   |   |   |   |   |   |-- avltree @ 1
|   |   |   |-- list @ 0.2.0
|   |   |-- virtual_directory
|-- uartconsole
|   |-- tinyemu @ 1.0.0
|   |   |-- VMM
|   |   |   |-- direct_cache
|   |   |   |-- log_c
|   |   |   |-- lru_cache
|   |   |   |   |-- list @ 0.2.0
|   |   |   |   |-- memory_indexer
|   |   |   |   |   |-- avltree @ 1
|   |   |   |-- page_cache
|   |   |   |   |-- direct_cache
|   |   |   |   |-- HimemAllocator
|   |   |   |   |-- lru_cache
|   |   |   |   |   |-- list @ 0.2.0
|   |   |   |   |   |-- memory_indexer
|   |   |   |   |   |   |-- avltree @ 1
|   |   |   |-- list @ 0.2.0
|   |   |-- virtual_directory
|-- virtual_directory
Building in release mode
Compiling .pio\build\native\src\temu.o
Compiling .pio\build\native\lib22a\direct_cache\direct_cache.o
Compiling .pio\build\native\libce4\log_c\log.o
lib\direct_cache\direct_cache.c: In function 'direct_cache_init':
lib\direct_cache\direct_cache.c:24:29: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
         cache->cache[i].key = i + 1;
                             ^
lib\direct_cache\direct_cache.c: In function 'direct_cache_remove':
lib\direct_cache\direct_cache.c:50:28: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
     cache->cache[cell].key = cell + 1;
                            ^
Compiling .pio\build\native\libf93\list\llist.o
Archiving .pio\build\native\lib22a\libdirect_cache.a
Indexing .pio\build\native\lib22a\libdirect_cache.a
Archiving .pio\build\native\libce4\liblog_c.a
Compiling .pio\build\native\libf93\list\llist_iterator.o
Indexing .pio\build\native\libce4\liblog_c.a
Compiling .pio\build\native\libf93\list\llist_node.o
In file included from src\temu.c:81:0:
lib\simpleconsole/simpleconsole.h: In function 'simple_console_get_size':
lib\simpleconsole/simpleconsole.h:87:20: warning: unused variable 'ws' [-Wunused-variable]
     struct winsize ws;
                    ^~
src\temu.c: In function 'block_device_init':
src\temu.c:409:17: warning: implicit declaration of function 'ftello' [-Wimplicit-function-declaration]
     file_size = ftello(f);
                 ^~~~~~
src\temu.c: In function 'main':
src\temu.c:768:34: warning: variable 'build_preload_file' set but not used [-Wunused-but-set-variable]
     const char *path, *cmdline, *build_preload_file;
                                  ^~~~~~~~~~~~~~~~~~
Compiling .pio\build\native\lib979\avltree\avltree.o
Compiling .pio\build\native\lib1f2\memory_indexer\memory_indexer.o
Archiving .pio\build\native\libf93\liblist.a
Compiling .pio\build\native\lib43b\lru_cache\lru_cache.o
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_init':
lib\memory_indexer\memory_indexer.c:34:53: warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]
     memory_indexer_t *indexer = (memory_indexer_t *)malloc(sizeof(memory_indexer_t));
                                                     ^~~~~~
lib\memory_indexer\memory_indexer.c:34:53: warning: incompatible implicit declaration of built-in function 'malloc'
lib\memory_indexer\memory_indexer.c:34:53: note: include '<stdlib.h>' or provide a declaration of 'malloc'
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_set':
lib\memory_indexer\memory_indexer.c:44:67: warning: incompatible implicit declaration of built-in function 'malloc'
     struct memory_wrapper *memory_item = (struct memory_wrapper *)malloc(sizeof(struct memory_wrapper));
                                                                   ^~~~~~
lib\memory_indexer\memory_indexer.c:44:67: note: include '<stdlib.h>' or provide a declaration of 'malloc'
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_search':
lib\memory_indexer\memory_indexer.c:60:35: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]     struct avl_node_t *avl_node = avl_search(&indexer->avl_tree, &query.avl, cmp_func);
                                   ^~~~~~~~~~
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_remove':
lib\memory_indexer\memory_indexer.c:72:35: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]     struct avl_node_t *avl_node = avl_search(&indexer->avl_tree, &query.avl, cmp_func);
                                   ^~~~~~~~~~
lib\memory_indexer\memory_indexer.c:76:40: warning: passing argument 2 of 'avl_remove' from incompatible pointer type [-Wincompatible-pointer-types]
         avl_remove(&indexer->avl_tree, avl_node);
                                        ^~~~~~~~
In file included from lib\memory_indexer\memory_indexer.c:3:0:
lib\avltree/avltree.h:88:6: note: expected 'struct avl_node *' but argument is of type 'struct avl_node_t *'
 void avl_remove(struct avl_tree *tree,
      ^~~~~~~~~~
lib\memory_indexer\memory_indexer.c:77:9: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]    
         free(wrapper);
         ^~~~
lib\memory_indexer\memory_indexer.c:77:9: warning: incompatible implicit declaration of built-in function 'free'
lib\memory_indexer\memory_indexer.c:77:9: note: include '<stdlib.h>' or provide a declaration of 'free'
lib\memory_indexer\memory_indexer.c:79:12: warning: 'return' with a value, in function returning void
     return NULL;
            ^~~~
lib\memory_indexer\memory_indexer.c:68:6: note: declared here
 void memory_indexer_remove(memory_indexer_t *indexer, uint64_t key)
      ^~~~~~~~~~~~~~~~~~~~~
lib\memory_indexer\memory_indexer.c: In function 'memory_indexer_free':
lib\memory_indexer\memory_indexer.c:85:35: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]     struct avl_node_t *avl_node = avl_first(&indexer->avl_tree);
                                   ^~~~Indexing .pio\build\native\libf93\liblist.a
~~~~~
lib\memory_indexer\memory_indexer.c:89:29: warning: passing argument 1 of 'avl_next' from incompatible pointer type [-Wincompatible-pointer-types]
         avl_node = avl_next(avl_node);
                             ^~~~~~~~
In file included from lib\memory_indexer\memory_indexer.c:3:0:
lib\avltree/avltree.h:92:18: note: expected 'struct avl_node *' but argument is of type 'struct avl_node_t *'
 struct avl_node* avl_next(struct avl_node *node);
                  ^~~~Compiling .pio\build\native\lib6f5\HimemAllocator\himem_access\emulated_himem.o
~~~~
Archiving .pio\build\native\lib1f2\libmemory_indexer.a
lib\memory_indexer\memory_indexer.c:89:18: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         avl_node = avl_next(avl_node);
                  ^
lib\lru_cache\lru_cache.c: In function 'lru_cache_flush_items':
lib\lru_cache\lru_cache.c:104:54: warning: passing argument 2 of 'memory_indexer_remove' makes integer from pointer without a cast [-Wint-conversion]
         memory_indexer_remove(cache->memory_indexer, cache_item->key);
                                                      ^~~~~~~~~Indexing .pio\build\native\lib1f2\libmemory_indexer.a
~
Archiving .pio\build\native\lib43b\liblru_cache.a
In file included from lib\lru_cache\lru_cache.c:5:0:
lib\memory_indexer/memory_indexer.h:12:6: note: expected 'uint64_t {aka long long unsigned int}' but argument is of type 'void *'
 void memory_indexer_remove(memory_indexer_t *indexer, uint64_t key);
      ^~~~~~~~~~Indexing .pio\build\native\lib43b\liblru_cache.a
~~~~~~~~~~~
Compiling .pio\build\native\lib6f5\HimemAllocator\himem_access\esp32_himem.o
Archiving .pio\build\native\lib979\libavltree.a
Compiling .pio\build\native\lib6f5\HimemAllocator\himem_allocator.o
Indexing .pio\build\native\lib979\libavltree.a
Compiling .pio\build\native\libf1b\page_cache\page_cache.o
Compiling .pio\build\native\lib6c6\VMM\vmm.o
lib\page_cache\page_cache.c:28:1: warning: no semicolon at end of struct or union
 };
 ^
lib\page_cache\page_cache.c: In function 'on_page_flush':
lib\page_cache\page_cache.c:46:26: warning: passing argument 1 of 'page_cache->on_flush' makes integer from pointer without a cast [-Wint-conversion]
     page_cache->on_flush(key,page_cache->flush_buffer, page_cache->flush_context);
                          ^~~
lib\page_cache\page_cache.c:46:26: note: expected 'uint64_t {aka long long unsigned int}' but argument is of type 'void *'      
lib\page_cache\page_cache.c: In function 'page_cache_get':
lib\page_cache\page_cache.c:73:86: warning: passing argument 2 of 'direct_cache_get' makes pointer from integer without a cast [-Wint-conversion]
     struct page_cache_item_t *page_item = direct_cache_get(page_cache->direct_cache, page_number);
                                                                                      ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:10:0:
lib\direct_cache/direct_cache.h:10:7: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
 void *direct_cache_get(direct_cache_t *cache, void *key);
       ^~~~~~~~~~~~~~~~
lib\page_cache\page_cache.c:75:58: warning: passing argument 2 of 'lru_cache_get' makes pointer from integer without a cast [-Wint-conversion]
         page_item = lru_cache_get(page_cache->lru_cache, page_number);
                                                          ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:9:0:
lib\lru_cache/lru_cache.h:12:7: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
 void *lru_cache_get(cache_t *cache, void *key);
       ^~~~~~~~~~~~~
lib\page_cache\page_cache.c: In function 'page_cache_set':
lib\page_cache\page_cache.c:91:86: warning: passing argument 2 of 'direct_cache_get' makes pointer from integer without a cast [-Wint-conversion]
     struct page_cache_item_t *page_item = direct_cache_get(page_cache->direct_cache, page_number);
                                                                                      ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:10:0:
lib\direct_cache/direct_cache.h:10:7: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'   
 void *direct_cache_get(direct_cache_t *cache, void *key);
       ^~~~~~~~~~~~~~~~
lib\page_cache\page_cache.c:93:58: warning: passing argument 2 of 'lru_cache_get' makes pointer from integer without a cast [-Wint-conversion]
         page_item = lru_cache_get(page_cache->lru_cache, page_number);
                                                          ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:9:0:
lib\lru_cache/lru_cache.h:12:7: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
 void *lru_cache_get(cache_t *cache, void *key);
       ^~~~~~~~~~~~~
lib\page_cache\page_cache.c:116:53: warning: passing argument 2 of 'lru_cache_remove' makes pointer from integer without a cast 
[-Wint-conversion]
             lru_cache_remove(page_cache->lru_cache, page_item->page_number);
                                                     ^~~~~~~~~Compiling .pio\build\native\lib49c\virtual_directory\virtual_directory.o

In file included from lib\page_cache\page_cache.c:9:0:
lib\lru_cache/lru_cache.h:16:6: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
Archiving .pio\build\native\lib6f5\libHimemAllocator.a
 void lru_cache_remove(cache_t * cache, void* key);
      ^~~~~~~~~~~~~~~~Indexing .pio\build\native\lib6f5\libHimemAllocator.a

lib\page_cache\page_cache.c:117:59: warning: passing argument 2 of 'direct_cache_remove' makes pointer from integer without a cast [-Wint-conversion]
Archiving .pio\build\native\libf1b\libpage_cache.a
             direct_cache_remove(page_cache->direct_cache, page_item->page_number);
                                                           ^~~~~~~~~
In file included from lib\page_cache\page_cache.c:10:0:
lib\direct_cache/direct_cache.h:13:6: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
Indexing .pio\build\native\libf1b\libpage_cache.a
 void direct_cache_remove(direct_cache_t *cache, void *key);
      ^~~~~~~~~~~~~~~~~~~
Compiling .pio\build\native\lib99c\tinyemu\aes.o
lib\page_cache\page_cache.c:127:46: warning: passing argument 2 of 'lru_cache_add' makes pointer from integer without a cast [-Wint-conversion]
         lru_cache_add(page_cache->lru_cache, page_number, page_item);
                                              ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:9:0:
lib\lru_cache/lru_cache.h:21:6: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'
 void lru_cache_add(cache_t *cache, void *key, void *value);
      ^~~~~~~~~~~~~
lib\page_cache\page_cache.c:128:51: warning: passing argument 2 of 'direct_cache_set' makes pointer from integer without a cast 
[-Wint-conversion]
         direct_cache_set(page_cache->direct_cache,page_number, page_item);
                                                   ^~~~~~~~~~~
In file included from lib\page_cache\page_cache.c:10:0:
lib\direct_cache/direct_cache.h:12:6: note: expected 'void *' but argument is of type 'uint64_t {aka long long unsigned int}'   
 void direct_cache_set(direct_cache_t *cache, void *key, void *value);
      ^~~~~~~~~~~~~~~~
Archiving .pio\build\native\lib49c\libvirtual_directory.a
lib\VMM\vmm.c: In function 'get_TLB':
lib\VMM\vmm.c:70:60: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     vmTable_t *value = direct_cache_get(vmm->direct_cache, (void *)page_number);
                                                            ^
lib\VMM\vmm.c:76:43: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     value = lru_cache_get(vmm->lru_cache, (void *)page_number);
                                           ^
lib\VMM\vmm.c: In function 'backing_store_write':
lib\VMM\vmm.c:115:49: warning: passing argument 3 of 'page_cache_set' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     page_cache_set(vmm->page_cache,page_number, buf);
                                                 ^~~
In file included from lib\VMM\vmm.h:9:0,
                 from lib\VMM\vmm.c:1:
lib\page_cache/page_cache.h:17:6: note: expected 'void *' but argument is of type 'const uint8_t * {aka const unsigned char *}' 
 void page_cache_set(page_cache_t *page_cache, uint64_t page_number, void *buff);
      ^~~~~~~~~~~~~~
lib\VMM\vmm.c: In function 'free_vmtable':
lib\VMM\vmm.c:164:38: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     lru_cache_remove(vmm->lru_cache, (void *)entry->page_number);
                                      ^
lib\VMM\vmm.c:165:44: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     direct_cache_remove(vmm->direct_cache, (void *)entry->page_number);
                                            ^
Compiling .pio\build\native\lib99c\tinyemu\cutils.o
lib\VMM\vmm.c: In function 'get_page':
lib\VMM\vmm.c:424:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         lru_cache_add(vmm->lru_cache, (void *)page_number, page);
                                       ^
lib\VMM\vmm.c:425:45: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
         direct_cache_set(vmm->direct_cache, (void *)page_number, page);
                                             ^
Indexing .pio\build\native\lib49c\libvirtual_directory.a
Compiling .pio\build\native\lib99c\tinyemu\fs.o
Archiving .pio\build\native\lib6c6\libVMM.a
Compiling .pio\build\native\lib99c\tinyemu\fs_utils.o
Indexing .pio\build\native\lib6c6\libVMM.a
Compiling .pio\build\native\lib99c\tinyemu\ide.o
Compiling .pio\build\native\lib99c\tinyemu\iomem.o
Compiling .pio\build\native\lib99c\tinyemu\json.o
lib\tinyemu\iomem.c: In function 'phys_mem_get_ram_ptr':
lib\tinyemu\iomem.c:289:20: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
     uint64_t ptr = pr->phys_mem + /*(uintptr_t)*/offset;
                    ^~
lib\tinyemu\iomem.c:290:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
     return (uint8_t*)ptr;
            ^
Compiling .pio\build\native\lib99c\tinyemu\machine.o
Compiling .pio\build\native\lib99c\tinyemu\pci.o
Compiling .pio\build\native\lib99c\tinyemu\pckbd.o
lib\tinyemu\machine.c: In function 'cmdline_subst':
lib\tinyemu\machine.c:157:17: warning: implicit declaration of function 'localtime_r' [-Wimplicit-function-declaration]
                 localtime_r(&ti, &tm);
                 ^~~~~~~~~~~
Compiling .pio\build\native\lib99c\tinyemu\ps2.o
Compiling .pio\build\native\lib99c\tinyemu\riscv_cpu128.o
Compiling .pio\build\native\lib99c\tinyemu\riscv_cpu32.o
Compiling .pio\build\native\lib99c\tinyemu\riscv_cpu64.o
Compiling .pio\build\native\lib99c\tinyemu\riscv_machine.o
Compiling .pio\build\native\lib99c\tinyemu\sha256.o
lib\tinyemu\riscv_machine.c: In function 'rtc_get_real_time':
lib\tinyemu\riscv_machine.c:103:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
     clock_gettime(CLOCK_MONOTONIC, &ts);
                   ^~~~~~~~~~~~~~~
lib\tinyemu\riscv_machine.c:103:19: note: each undeclared identifier is reported only once for each function it appears in      
lib\tinyemu\riscv_machine.c: In function 'copy_bios':
lib\tinyemu\riscv_machine.c:952:73: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
     printf("writing jump address ram ptr: 0x%" PRIx64 " phy: 0x%p\r\n", (uint64_t)ram_ptr  - (uint64_t)pr->phys_mem, pr->phys_mem);
                                                                         ^
lib\tinyemu\riscv_machine.c:952:94: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
     printf("writing jump address ram ptr: 0x%" PRIx64 " phy: 0x%p\r\n", (uint64_t)ram_ptr  - (uint64_t)pr->phys_mem, pr->phys_mem);
                                                                                              ^
In file included from lib\tinyemu\riscv_cpu.c:51:0,
                 from lib\tinyemu\riscv_cpu32.c:2:
lib\tinyemu\riscv_cpu.c: In function 'riscv32_read_slow':
lib\tinyemu\riscv_cpu_priv.h:291:20: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
         mem_uint_t val;\
                    ^~~
lib\tinyemu\riscv_cpu_priv.h:291:20: note: 'val' was declared here
         mem_uint_t val;\
                    ^
lib\tinyemu\riscv_cpu_priv.h:307:1: note: in expansion of macro 'TARGET_READ_WRITE'
 TARGET_READ_WRITE(8, uint8_t, 0)
 ^~~~~~~~~~~~~~~~~
In file included from lib\tinyemu\riscv_cpu32.c:2:0:
lib\tinyemu\riscv_cpu.c:375:27: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
                 ret = (v0 >> (al * 8)) | (v1 << (64 - al * 8));
                       ~~~~^~~~~~~~~~~~
*** [.pio\build\native\lib99c\tinyemu\riscv_machine.o] Error 1
In file included from lib\tinyemu\riscv_cpu.c:51:0,
                 from lib\tinyemu\riscv_cpu64.c:2:
lib\tinyemu\riscv_cpu.c: In function 'riscv64_read_slow':
lib\tinyemu\riscv_cpu_priv.h:291:20: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
         mem_uint_t val;\
                    ^~~
lib\tinyemu\riscv_cpu_priv.h:291:20: note: 'val' was declared here
         mem_uint_t val;\
                    ^
lib\tinyemu\riscv_cpu_priv.h:307:1: note: in expansion of macro 'TARGET_READ_WRITE'
 TARGET_READ_WRITE(8, uint8_t, 0)
 ^~~~~~~~~~~~~~~~~
In file included from lib\tinyemu\riscv_cpu64.c:2:0:
lib\tinyemu\riscv_cpu.c:375:27: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
                 ret = (v0 >> (al * 8)) | (v1 << (64 - al * 8));
                       ~~~~^~~~~~~~~~~~
================================================= [FAILED] Took 14.07 seconds =================================================

Environment    Status    Duration
-------------  --------  ------------
native         FAILED    00:00:14.073
============================================ 1 failed, 0 succeeded in 00:00:14.073 ============================================ 

 *  The terminal process "C:\Users\shrey\.platformio\penv\Scripts\platformio.exe 'run', '--target', 'upload'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Installing on a LILYGO ESP32 e-paper display?

I have the above display / ESP32 combo, and I'm wondering how I would go about adapting the code to work on it. I understand that the SD card pins would have to be reassigned; how would I get the terminal to be outputted to the e-paper display? Is this trivial or more complicated than I am understanding?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.