> This is the simple boot monitor which I've mentioned previously. It's > currently in a pretty basic state, but it'll let you examine memory, > modify memory, do XMODEM downloads, run things, etc. > > https://cowlark.com/piface Looking good! > Do we have a memory map yet? I gather the 128kB of SRAM is at 80000000, > the boot ROM is at 60000000 (how big is this? I've downloaded over two > megabytes from there without reaching the end of the mapped memory > region; and apart from the code at the top, it's all zeros, so it > doesn't look like it's repeating). I know the peripherals are at > 7e000000. And there's *something* mapped at 0, which I suspect is the > uninitialised SDRAM. Nothing concrete, but its pretty reasonable: https://github.com/hermanhermitage/videocoreiv/tree/master/dumpbootenv "According to the BCM2835 ARM Peripherals manual, address ranges are: 00000000 - 3fffffff ; L1 and L2 cached 40000000 - 7fffffff ; L2 cache coherent (non allocating) 80000000 - bfffffff ; L2 cached only c0000000 - ffffffff ; Direct uncached" I think the responders are: 0x00000000 - 0x1FFFFFFF, SDRAM 0x20000000 - 0x20007FFF, Boot (OTP or) ROM. 0x7E000000 - 0x7EFFFFFF, IO There might be more at: https://github.com/hermanhermitage/videocoreiv/tree/master/dumpbootrom And at: https://github.com/hermanhermitage/videocoreiv/wiki I think the full range of IO is only active when all power domains are enabled (figure 2 at https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV---BCM2835-Overview). > > Also, a rather embarrassed request for assistance: I don't have XMODEM > upload support yet, because I can't figure out how XMODEM upload is > supposed to work. The protocol is driven by the receiver. When doing a > download, it's fine, because I tell the Pi to start sending, at which > point it listens for a receiver; I then tell my terminal emulator to > start receiving, and it all works. But to do an upload, I tell my > emulator to start sending... and then I can't tell the Pi to start > receiving because the terminal emulator is busy trying to send. Um, help? It's been too long for me to recall accurately, but isnt xmodem bidirectional? Either side can start a packet with SOH to transfer a CP/M block? dwelch67 has an example bootloader/xmodem receiver for videocore at: https://github.com/dwelch67/rpigpu/blob/master/vbcc/bootloader01.c So on the pi side you poll or have an interrupt to detect incoming characters, when its SOH its time to receive a packet.