Search found 14 matches

by jens.alfke
Wed Sep 30, 2020 10:44 pm
Forum: Documentation
Topic: ESP32 instruction set or assembly (ASM) programming docs?
Replies: 2
Views: 164

Re: ESP32 instruction set or assembly (ASM) programming docs?

You could write it in C, once it works save assembly code, edit, assmble it, make sure it still works I haven't looked — is there actually an assembler/disassembler in the toolchain? Of course, trying to learn a completely new instruction set by reading disassembly is not my idea of fun, or even my...
by jens.alfke
Tue Sep 29, 2020 5:16 pm
Forum: Documentation
Topic: ESP32 instruction set or assembly (ASM) programming docs?
Replies: 2
Views: 164

ESP32 instruction set or assembly (ASM) programming docs?

I'm looking for documentation of the ESP32 instruction set, for assembly language programming. I've found some old (2010) Xtensa ISA docs, but their designs are so configurable that it's not much use for a specific CPU. I've seen two threads from a few years ago asking about this, and replies from E...
by jens.alfke
Fri Jul 06, 2018 11:05 pm
Forum: General Discussion
Topic: Any way to strip C/C++ locale stuff out of the binary?
Replies: 4
Views: 1944

Any way to strip C/C++ locale stuff out of the binary?

When I run "make size-files" (with CONFIG_OPTIMIZATION_LEVEL_RELEASE) I see that a lot of the top contributors to the binary size are related to C/C++ locale handling: Per-file contributions to ELF file: Object File DRAM .data & .bss IRAM Flash code & rodata Total ... locale-inst.o 0 144 0 25655 723...
by jens.alfke
Fri Jun 29, 2018 9:14 pm
Forum: General Discussion
Topic: Can I view other tasks in gdb?
Replies: 1
Views: 995

Re: Can I view other tasks in gdb?

Of course, right after asking I found a (partial) answer. I can configure the program to log a core-dump when it crashes, and then read that dump into gdb. Then I can use the `info thread` and `thread` commands to view and switch to different threads/tasks. It even shows what the parameters and loca...
by jens.alfke
Fri Jun 29, 2018 8:43 pm
Forum: General Discussion
Topic: Can I view other tasks in gdb?
Replies: 1
Views: 995

Can I view other tasks in gdb?

Debugging with the gdb stub is very useful. But I can only see the thread/task that crashed, not any others -- `info threads` only shows that thread. I'm trying to debug a problem where a thread is hung inside system code (`select`), and while I can easily make another task force an exception and dr...
by jens.alfke
Thu Jun 28, 2018 10:36 pm
Forum: General Discussion
Topic: Caching issues with mmap'ed flash
Replies: 6
Views: 2277

Re: Caching issues with mmap'ed flash

Looking through the spi_flash sources I found calls to a Cache_Flush() function; this looked promising, so I added

Code: Select all

Cache_Flush(0); Cache_Flush(1);
to my code just after calling esp_partition_write(). That appears to have fixed the problem.
by jens.alfke
Thu Jun 28, 2018 10:00 pm
Forum: General Discussion
Topic: Caching issues with mmap'ed flash
Replies: 6
Views: 2277

Re: Caching issues with mmap'ed flash

Yeah, that's what I'm thinking too; as I wrote above:
My only other hypothesis is that this is due to CPU cache coherency, but the spi_flash code looks like it's careful to disable/enable caches.
However I have no idea what additional cache might be at fault, nor how to flush it.
by jens.alfke
Thu Jun 28, 2018 4:32 pm
Forum: General Discussion
Topic: Debugging a deadlock/hang
Replies: 2
Views: 1258

Debugging a deadlock/hang

My app will sometimes just freeze -- it stops logging and responding to network requests. I'd like to interrupt it and drop into the GDB stub and look at the thread/task stacks. Is there a way to do this? I can't find a monitor command for it. My dev board (a SparkFun ESP32 Thing) has two physical b...
by jens.alfke
Thu Jun 28, 2018 4:23 pm
Forum: General Discussion
Topic: how to resolve packet loss issue?
Replies: 14
Views: 5707

Re: how to resolve packet loss issue?

I've never seen anyone use send() to write to a TCP socket! TCP is a stream, so you use write() to write to it and read() to read. The only time I would use send() is for UDP. I have no idea what happens if you call send() instead of write(). It may well skip part of the TCP logic and send the packe...

Go to advanced search