Thread View: comp.sys.transputer
1 messages
1 total messages
Started by Randy Brumbaugh
Fri, 02 Nov 1990 23:52
C + ROM = confusion
Author: Randy Brumbaugh
Date: Fri, 02 Nov 1990 23:52
Date: Fri, 02 Nov 1990 23:52
57 lines
2831 bytes
2831 bytes
Help! I find myself being drawn more deeply into the transputer / C
quagmire
_BACKGROUND_
I am working with a transputer board designed for embedded applications
where it may be physically difficult to get to the board (to change
EPROMS, for example). The board has two memory areas. One, for program
storage, is write protected, battery backed-up, SRAM. In normal
operation, the transputer will be set to boot-from-ROM, using this
memory. The second area is RAM for workspace, etc. Each area is
256kbytes.
To update the program, remote signals tell the board to un-write
protect the program area and boot-from-link. The new code is copied
to the ROM space.
_PROBLEM_
The 3L C Compiler generates HUGE code. A simple C program I wrote
has compiled to about 100 bytes. Linking in the runtime libs
brings it to maybe 500 bytes. But, the code produced for the
simplest case (standalone libraries, simple taskharness) is
almost 4k!
After spending many hours with disassemblers and ASCII charts, I
have found that the linker includes many functions which seem
to do mysterious setup things. The symbols LATICE___ENTRY_POINT,
_init, _boot, and RTL$START are called as functions. Several
strings and i/o routines are included, apparently for debugging.
The details are too messy (and long) to describe fully here.
_QUESTIONS_
1) The C compiler + runtime libs seems to produce code which
would be fine for running as a process. What is all the other
garbage included, and why is it needed? Is it needed?
2) The basic transputer ROM image would seem to require
only bootstrap code, and then instructions to set up entries
for process queues and do a STARTP instruction for each process
to be started in the transputer. Has anybody done this?
(channels would have to be allocated for inter-process
communication)
3) In all the searching, I have not seen a single STARTP
instruction. Why? Does it work? Do most systems manipulate
the process queues directly? If so why?
4) To load the board as described above, I need to produce
a binary, ROM image file which can be sent to the destination
T800 as an array. Does anybody know of anything to do this?
5) Is the huge code output a problem unique to the 3L compilers?
Any answers would be helpful. I have called CSA and they have
not returned my call.
Randy Brumbaugh
rando@skipper.dfrf.nasa.gov
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads