The officially recommended recipe for lwIP on STM32H7 puts the ethernet DMA descriptors in SRAM1. SRAM1 is not zero'd by the default startup code.It's unsafe for the network drivers to assume that buffers and critical data structures live in .bss.F...
I've got my OctoSPI interface working for NOR reads and writes, but Auto-polling is sending too many bytes. The Data Length Register (DLR) is set to 0, for one byte of data, but I get the instruction plus two bytes. If I set the DLR to 1, I get...
I've got a strange problem. My custom-built board has SWD problems after cold reset with my code. I don't think that my code is directly responsible for altering the SWD interface.I'm using an in-house SWD probe that has a long history. JTAG/SW...
I know whats going on, where everything is in memory, how C initialization works, and why the code broke on my part. Thats how I debugged the issue. As far as I'm concerned, this issue is root caused and fixed. I will double check everything to...
Looking at it again, it makes even less sense. The for() loop just zeros things out and adds a pointer to an array. Better just to memset() the whole thing and then initialize the TxDesc[] array and the hardware. ETH_DMARxDescListInit() has the...
Alister, your comments about WRITE_REG are spot-on. Its bad practice.That said, this isn't a theory. I wasted a few days of engineering time debugging this, and I have the memory dumps and workarounds. The array in question is corrupted beca...
The descriptors aren't the problem. The rest of the structure is uninitialized. That breaks ETH_Prepare_Tx_Descriptors(): /* Current Tx Descriptor Owned by DMA: cannot be used by the application */
if ((READ_BIT(dmatxdesc->DESC3, ETH_DMATXNDE...