Boot Up/Run-time procedure and memory management
0000
Posts: 11
Hello, I'm actually trying to understand how the propeller works, especially the memory management.
On official documentation, we can read this:
I also read from other non-official documentations that your program will run into each corresponding cog's RAM.
(http://propgcc.googlecode.com/hg/doc/Memory.html , Programming the Parallax Propeller using Machine Language V121, etc. )
What is exaclty the Boot Up Procedure?
Is there any multiplexing system to determine which RAM (cog or global) have to be used?
On official documentation, we can read this:
So, each corresponding cog(s) will fetch instructions from Main RAM and execute them. Am I wrong?Boot Up Procedure
Upon power-up (+ 100 ms), RESn low-to-high, or software reset:
[...]
3. If either step 2a or 2b was successful in loading a program into the Main RAM, and a suspend command
was not given by the host, then Cog 0 is reloaded with the built-in Spin Interpreter and the user code is run from Main RAM.
I also read from other non-official documentations that your program will run into each corresponding cog's RAM.
(http://propgcc.googlecode.com/hg/doc/Memory.html , Programming the Parallax Propeller using Machine Language V121, etc. )
What is exaclty the Boot Up Procedure?
Is there any multiplexing system to determine which RAM (cog or global) have to be used?
Comments
COGs have their own memory space where instructions are stored and run using the cognew and other commands.
COGs also have access to main memory using a round-robin time share approach.
Spin programs are read and run from main memory by the start up COG Spin byte code interpreter.
C programs are run using the faster LMM COG interpreter which typically load and execute PASM instructions.
An other question, why is there an offset of 0x20 in text section (using ICC compiler with LMM of course) ?
It makes the disassembly totally wrong.
The first 16 bytes hold initialization values (CLK register, etc.) but what are there at $0010 to $001F ?
EDIT: Ok it is on the imagecraft manual p112-113
A relative to the start of the object, i.e. $10
For example at $10F4+$10 we will find a 16-bit word which point to the next object, etc.
But I've another question.
Is there a topobj at the beginning of a subobject?
And per sub-object?
I'm trying to write a disassembler just for fun.
Andy
BTW, how can we identify a PUB/PRI pointer to a subobject pointer?