Derrick/Gordon
Thanks for all your help. I've been able to clarify several things from your comments and have learned several.
My XGATE test program uses the Full Simulator only and all Code & Data is located in RAM.
1. In Assembly, you must translate the XGATE_Vector address to the XGATE Local map (by adding $C000) before
writing to the XGVBR.
MOVB XGATE_Vector+$C000, XGVBR
2. Only six(6) Software Triggers (SWT) will work when the documentation is followed. I can activate the XAGTE Interrupts for SWTs 2 thru 7, but not 0 or 1. When activating SWT 0 or 1 the Simulator halts and display Exception 70 or 71 (for SWT 0 & 1). SWT 2-7 work fine.
3. I have some more questions if you guys have time to consider them:
Question #1: Is the problem with the SWT with the Simulator Only? Perhaps SWT 0 & 1 will work on a real Chip? Is this a known Eratta?
Question #2: Is there a Assembler directive to switch between Xgate and S12 Assembly. For example on page 468 of the Ref. manual (Rev. 1.23) in an example program there appears to a a directive "CPU XGATE" that que's the Assembler to create code for Xgate. Presumably there would also be a S12 directive.
However the assembler does not recognize CPU XGATE as stated in the example listing. A great deal of Freescale's example programs that I have seen are either useless or error laden. However an example in the Ref. manual that can't be compiled or assembled is not a good sign. I have searched the useless 'help' file to no end and cannot find any such function or directive. It would be a good thing to have such a directive since it would allow both S9 and Xgate to be written in the same file. Apparently the Assembler keys on the extension (ASM & XGATE) only.
The Ref Manual harps on short Xgate Code and the CPU signaling the Xgate (Via ints) and the Xgate signaling he CPU (via Ints) when finished. This doesn't make sense to me for any application. The purpose of a Co-Processor, as freescale professes the Xgate to be, is to eliminate CPU over head. Having an event interrupting the CPU, who then determins if the Xgate can handle it, then interrupts the Xgate for processing, and is again interrupted when Xgate has completed is rediculous.
Question: Is Freescale hiding some problem with Xgate? Like overheating etc..? Is there any specification regarding dwell time for the Xgate?
My intent, for purchasing an Xgate processor was/is to run a 256K Baud multiple layer protocol Communication program. (I intend to translate an Intel (IBM PC) device driver that I had developed to Xgate code). The Xgate would run dam near contineuosly Receiving and Transmitting and handle the protocol. The S9CPU would have it's handfull with various primary and house keeping functions. This brings up the subject of Semaphores. The S9CPU would operate under a pseudo Multitasking system and as such utilize it's own semaphores.
However the subject of sharing memory between the S9CPU & XGATE is not very well documented in the Ref. manual.
The Manual states the the CPU has priority when both are addressing the same memory. This is like saying that "when I decide to drive my car - you must stay at home because I have priority". Perhaps we should say the "when we approach head on, on a one lane bridge, you must back up so I can cross". That way we both get to drive at the same time.
When the CPU is accessing Memory Location $1000, Can the Xgate access $1010. In this case priority access is by Paragraphs (16 bytes) blocks. OR does the CPU block Xgate Access to any RAM when the CPU is accessing any RAM? OR perhaps it works by the 8K fixed RAM or the 2K Paged RAM. Can the Xgate access Register xx20 while the CPU acesses register xx30 or is all Register access blocked and etc..? Does anyone Know? Is there a manual not accessable from the Freescale site that documents this?
Sorry for the Length - Appreciate any information you may have
Thanks MAC