[raspi-internals] Re: [ANN] piface 0.1

  • From: Herman Hermitage <hermanhermitage@xxxxxxxxxxx>
  • To: "raspi-internals@xxxxxxxxxxxxx" <raspi-internals@xxxxxxxxxxxxx>
  • Date: Sat, 8 Jun 2013 14:02:26 +1200

> 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.
                                          

Other related posts: