[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Lua OS
- From: Roger Ivie <rivie@...>
- Date: Mon, 18 Feb 2013 14:12:20 -0800 (PST)
Ah. Clearly, I should have been paying more attention to this thread.
On Mon, 18 Feb 2013, Justin Cormack wrote:
Well thats the Lua on RiscOS solution, pretty much provide peek and poke,
I've taken a couple of approaches in my systems.
Peek and poke in a real-time system with no MMU. Any old random number
can be a memory address. There are variants for each size of
transaction, so you can say x = memory.peekbyte( address ) or
memory.pokebyte( address, value ). A vxWorks system also has a
function that allows me to search the system's symbol table for
global addresses by name.
On VMS, a mapping needs to be established to the global section. So
these systems have an added function that performs the mapping and
returns its base address. So you'd do base = memory.mgblsc( "section" )
followed by x = memory.peekword( base + offset ) etc.
The VMS systems also have a VMEbus adapter for custom hardware with CSRs
residing in the A16 space. For these, I've implemented a couple of
tables, vme.a16d16 and vme.a16d32. A script treats these as an array,
using vme.a16d16[ address ] = value to write a 16-bit CSR or
value = vme.a16d32[ address ] to read a 32-bit one.