On Tue, Jun 14, 2016 at 2:47 PM, Dave Mazzoni <dav...@gmail.com> wrote:
>
> Thanks for the suggestions. I'm a bit confused though since Mmap returns a
> slice of bytes. I print all the bytes as you can see, but only the first
> byte at each 32 bit boundary is correct. I don't know casting several of
> them together would somehow derive the correct value.

Because Mmap returns a []byte, every access using that []byte will
load a single byte.  But device memory is often magic.  Doing a byte
load and doing a word load are two very different things from the
device's perspective.  So what we're suggesting is that you do
something like
    b := syscall.Mmap(...)
    w := (*[1024]uint32)(unsafe.Pointer(&b[0]))
and then print w[0].  That will access the memory as a 32-bit word, not a byte.

Or conversely change your C program to print out one byte at a time
and see what you get.

Ian

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to