PDA

View Full Version : ICCV7 for Propeller BETA2 (now BETA3!) NOW BETA4!!! :-)



ImageCraft
05-08-2008, 09:16 AM
// EDIT May 11 2008, changed to BETA3, with the demo length restored to 45 days

http://www.imagecraft.com/pub/iccv7prop_v700_beta3.exe

*****
I hope y'all have seen our page 2 Circuit Cellar ad http://forums.parallax.com/images/smilies/smile.gif

ICCv7 for Propeller BETA2 is out. Pending are some minor GUI cleanup and documentation and we are good for production release! (barring any reported bugs). Thank you so much for Jazzed for the VGAText and ASyncIO library objects. I will be working with the Parallax folks to find home for C library submissions. Watch the forum for details. Remember, we are still running the preproduction 25% off special. The sales price will be ending soon!

http://www.imagecraft.com/pub/iccv7prop_v700_beta3.exe

From the readme file:

***
ICC V7 for Propeller (ICCProp) V7 BETA Release 2 May 7 2008

BETA RELEASE NOTES:

FEATURES:
ICCProp is an ANSI C development tool for the Parallax Propeller. All known
problems from BETA1 except for launching multi-cog C functions have been
fixed.

There are some library objects such as ASync IO, and VGA text drivers
available from the Parallax Propeller Forum (see notes on Object Exchange
below).

Initially, only integer code is supported with 32 and 64 bits FP coming later.
The C dialect is C86, although extensions such as // comment is supported and
the C Preprocessor is fully C99 compliant.

The IDE is project based, i.e. you create a project, add .c or .s source
files to it, and click the Build icon (Project->Build) to build the project.
You can set up the built-in Propellent downloader to download a program on
successful build.

LIBRARY FUNCTIONS:
Most of the C subset library functions are supported (but not fully tested).
mem*(), str*(), ctype (isalpha, etc.), conversion, printf are supported.

To use printf/puts and the other IO functions, you need to define putchar()
that works with your device. c:\iccv7prop\examples.prop\putchar contains
an example project for the Propeller Demo board (code courtesy of Steve
Denson).

LMM VIRTUAL MACHINE:
To bypass the 512 long words limitation of a COG RAM program, ICCProp uses
a Large Memory Model (LMM) scheme, originally proposed by Bill Henning. The
basic idea is that instructions in HUB RAM is fetched into the COG RAM, and
then executed inline. The source code is in
c:\iccv7prop\libsrc.prop\kernel.s. This allows much larger C programs than
native PASM programs (i.e. 32K of HUB RAM vs. 2K of COG RAM and even more
with future SD / external memory support) with 10-30% of native speed -
much faster than Spin.

Launching LMM C functions in another COG is supported. See
c:\iccv7prop\include\propeller.h for function prototypes for "cognew" and
"coginit." There seems to be some issues with launching more than 2 cogs.
We are investigating the problems.

"OBJECT EXCHANGE" and SPIN:
ICCProp will probably never be able to execute SPIN code or SPIN objects
directly (sorry). If you choose to port an existing object or write one
for ICCProp, we will give you a small amount of cash or a discount on a
license purchase. Details TBD.

THINGS NOT WORKING YET:
Currently the Help file is our AVR product's help file, but the general
method of using the IDE and the compiler tools are the same. We will
of course release full Propeller Help at production release.

For questions and support, please email support@imagecraft.com

Post Edited (ImageCraft) : 5/21/2008 8:40:57 AM GMT

Bob Lawrence (VE1RLL)
05-09-2008, 07:35 AM
Beta 2 is limited to a 5 day trial. Personally I think that the time limit is silly.

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob

ImageCraft
05-09-2008, 07:56 AM
Bob Lawrence (VE1RLL) said...
Beta 2 is limited to a 5 day trial. Personally I think that the time limit is silly.


The time limit is just a left over from the licensing we put it for our production demo - it will be fully functional for 45 days than change to X K byte code size limited afterward. You must have d/l'ed the earlier beta. Rather than being silly, I am just trying to avoid putting extra code for the beta releases.

I thought I have reset the 45 day clock, but obviously I didn't do it right. No worry, I will either upload a new BETA that reset the clock or something in a few days.

hippy
05-10-2008, 10:35 PM
I know I'm living in the dark ages, but is there any reason the tool chain doesn't run under Windows 98SE ? As best I can tell it's primarily icppw.exe ( the pre-processor ) which wants a later OS, iccprop.exe from the command line seems to work with that replaced by a dummy executable but I haven't pursued getting the entire tool chain running.

Added : According to www.imagecraft.com/devtools_Parallax.html (http://www.imagecraft.com/devtools_Parallax.html) ... "ICCV7 for Propeller, Standard Version for Windows 95/98/NT/2K/XP/Vista", so maybe it should work ?

Extra Added : Seems to work with icppw.exe pulled from iccv7430_demo.exe

It's also the first version which (unless I'm mistaken) includes kernel.s so thanks for that. Looks to be scope there for some optimisation but as it's Beta and that's a standalone issue no criticism intended. I also note it's possible to use an alternative kernel when linking and that's going to be great for the propeller community helping to tune the kernel.

Post Edited (hippy) : 5/10/2008 3:03:01 PM GMT

ImageCraft
05-11-2008, 03:58 AM
The icppw.exe is exactly the same in all our products. Not sure why you are having trouble with the Prop one. I'll need to investigate. The only piece that will not run under W98 is the Propellent.DLL. It's from Parallax and there are technical reasons why there are issues, but that just affects downloading....

Kernel.s should have been included in BETA1 as well. I don't think that has changed. Feel free to improve the code. I'll incorporate them to the official release as appropriate.

I have also be releasing BETA3 tomorrow or so, as it fixes the minor foobar of BETA2 not resetting the demo length.

hippy
05-12-2008, 08:05 AM
void wibble(void);

void main()
{
while( 1 ) { wibble(); }
}

void wibble( void )
{
asm("andn OUTA,#0"); asm("andn OUTA,#0");
repeat the above line lots of times !
}




With ~2300 lines in source, error 100 ...



C:\iccv7prop\bin\imakew -f TEST.mak
iccprop -c -e -D__ICC_VERSION="7.00 BETA2" -DP8X32A -l -v -g -Wa-g test.c
Copyright (C) 1994 - 2005 ImageCraft
ImageCraft, 706 Colorado Ave., Suite 10-88, Palo Alto, CA 94303
info@imagecraft.com, phone (650) 493-9326 FAX (650) 493-9329
http://www.imagecraft.com
lcc source code (C) 1995, by David R. Hanson and AT&T. Reproduced by permission.
C:\iccv7prop\bin\icppw.exe -D_PROP -D__IMAGECRAFT__ -e -D"__ICC_VERSION=7.00 BETA2" -DP8X32A -IC:/iccv7prop/include test.c test.i
C:\iccv7prop\bin\iccomprop.exe -e -g -ltest.c test.i test.s
C:\iccv7prop\bin\iasprop.exe -o test.o -g test.s
iccprop: can't execute `C:\iccv7prop\bin\iasprop.exe'
C:\iccv7prop\bin\imakew.exe: Error code 100
C:\iccv7prop\bin\imakew.exe: 'test.o' removed.
Done: there are error(s). Exit code: 100. Mon May 12 01:03:17 2008




With ~2400 lines in source, no error ...



C:\iccv7prop\bin\imakew -f TEST.mak
iccprop -c -e -D__ICC_VERSION="7.00 BETA2" -DP8X32A -l -v -g -Wa-g test.c
Copyright (C) 1994 - 2005 ImageCraft
ImageCraft, 706 Colorado Ave., Suite 10-88, Palo Alto, CA 94303
info@imagecraft.com, phone (650) 493-9326 FAX (650) 493-9329
http://www.imagecraft.com
lcc source code (C) 1995, by David R. Hanson and AT&T. Reproduced by permission.
C:\iccv7prop\bin\icppw.exe -D_PROP -D__IMAGECRAFT__ -e -D"__ICC_VERSION=7.00 BETA2" -DP8X32A -IC:/iccv7prop/include test.c test.i
C:\iccv7prop\bin\iccomprop.exe -e -g -ltest.c test.i test.s
C:\iccv7prop\bin\iasprop.exe -o test.o -g test.s
rm test.i
iccprop -o TEST -g -ucrtprop.o -lmm:kernel.o -fhexbin -K -cf:TEST.cmd @TEST.lk -lcprop
21280 bytes used in flash
Done. Mon May 12 01:01:10 200




With ~2500 lines in source, error 11 ...



C:\iccv7prop\bin\imakew -f TEST.mak
iccprop -c -e -D__ICC_VERSION="7.00 BETA2" -DP8X32A -l -v -g -Wa-g test.c
Copyright (C) 1994 - 2005 ImageCraft
ImageCraft, 706 Colorado Ave., Suite 10-88, Palo Alto, CA 94303
info@imagecraft.com, phone (650) 493-9326 FAX (650) 493-9329
http://www.imagecraft.com
lcc source code (C) 1995, by David R. Hanson and AT&T. Reproduced by permission.
C:\iccv7prop\bin\icppw.exe -D_PROP -D__IMAGECRAFT__ -e -D"__ICC_VERSION=7.00 BETA2" -DP8X32A -IC:/iccv7prop/include test.c test.i
C:\iccv7prop\bin\iccomprop.exe -e -g -ltest.c test.i test.s
C:\iccv7prop\bin\iasprop.exe -o test.o -g test.s

!X The assembler has failed an internal consistency check. This may be due to incorrect input or an internal error. Please report to "ImageCraft" support@imagecraft.com
C:\iccv7prop\bin\imakew.exe: Error code 11
Done: there are error(s). Exit code: 11. Mon May 12 01:06:05 2008




Added : This is under XP, a fresh installation of ICCV7 so proper tool chain, no anything
I've messed with. I repeated the ~2300 lines to verify the "cannot execute" and it is
repeatable; works for ~2400, not ~2300.

Post Edited (hippy) : 5/12/2008 12:14:11 AM GMT

ImageCraft
05-12-2008, 08:32 AM
Nah, it's not the number of lines. Probably something else. Can you send me the .s files that cause trouble, and I will make sure the problem is fixed. You can send it to richard @imagecraft.com. Generally just best to email me the trouble report to begin with anyway. Thanks

Mike Green
05-12-2008, 09:36 AM
Richard,
Do you have any experience with your licensing scheme vs. virtualization software like VMware's Fusion or Parallel's Desktop with Windows XP on an Intel Mac?

ImageCraft
05-12-2008, 10:34 AM
Yes, I think Soft Windows have problems because, well, Microsoft is Microsoft, but we have customers using Parallel and VMWare with no problems at all.

ImageCraft
05-12-2008, 02:46 PM
Note that BETA3 is now out fixing the expiring license issue. See edited initial post.

ImageCraft
05-21-2008, 04:48 PM
BETA4 is now out. http://www.imagecraft.com/pub/iccv7prop_v700_beta4.exe

Pre-production pricing will end on May31, 2008. Take advantage of the 20% off now.

Launch all 8 eights with LMM C now working, as are launching native asm COGs using asm .s files. Production release soon...
***

ICC V7 for Propeller (ICCProp) V7 BETA Release 4 May 21 2008

BETA RELEASE NOTES:

FEATURES:
ICCProp is an ANSI C development tool for the Parallax Propeller. All known
problems have been fixed.
fixed.

There are some library objects such as ASync IO, and VGA text drivers
available from the Parallax Propeller Forum (see notes on Object Exchange
below).

Initially, only integer code is supported with 32 and 64 bits FP coming later.
The C dialect is C86, although extensions such as // comment is supported and
the C Preprocessor is fully C99 compliant.

The IDE is project based, i.e. you create a project, add .c or .s source
files to it, and click the Build icon (Project->Build) to build the project.
You can set up the built-in Propellent downloader to download a program on
successful build.

LIBRARY FUNCTIONS:
Most of the C subset library functions are supported (but not fully tested).
mem*(), str*(), ctype (isalpha, etc.), conversion, printf are supported.

To use printf/puts and the other IO functions, you need to define putchar()
that works with your device. c:\iccv7prop\examples.prop\putchar contains
an example project for the Propeller Demo board (code courtesy of Steve
Denson). The same code is in the default library libcprop.a.

LMM VIRTUAL MACHINE:
To bypass the 512 long words limitation of a COG RAM program, ICCProp uses
a Large Memory Model (LMM) scheme, originally proposed by Bill Henning. The
basic idea is that instructions in HUB RAM is fetched into the COG RAM, and
then executed inline. The source code is in
c:\iccv7prop\libsrc.prop\kernel.s. This allows much larger C programs than
native PASM programs (i.e. 32K of HUB RAM vs. 2K of COG RAM and even more
with future SD / external memory support) with 10-30% of native speed -
much faster than Spin.

Launching LMM C functions in another COG is supported. See
c:\iccv7prop\include\propeller.h for function prototypes for "cognew" and
"coginit." There seems to be some issues with launching more than 2 cogs.
We are investigating the problems.

"OBJECT EXCHANGE" and SPIN:
ICCProp will probably never be able to execute SPIN code or SPIN objects
directly (sorry). If you choose to port an existing object or write one
for ICCProp, we will give you a small amount of cash or a discount on a
license purchase. Details TBD.

THINGS NOT WORKING YET:
Currently the Help file is our ARM product's help file, but the general
method of using the IDE and the compiler tools are the same. We will
of course release full Propeller Help at production release.

For questions and support, please email support@imagecraft.com

Peter Verkaik
05-21-2008, 07:52 PM
Are there any numbers on program codesize in C versus equivalent program in spin,
and how much hub memory is needed for the C kernel itself?

regards peter

Agent420
05-21-2008, 09:40 PM
As spin is interpreted, I would think C would have to be a bit larger. But from my own unscientific observation, Spin is isn't fast enough for performance demanding applications.

I'm looking forward to trying the C compiler.

Pavel
05-21-2008, 11:30 PM
Is there any estimate as to when the floating point operations will be supported?

KamPutty
05-22-2008, 12:05 AM
Hi all,

Have you guys done any benchmarks on comparing size and speed of similar "programs" in Spin, Asm and C? It would be very interesting to see a "Hello World"
program written in Spin and the same functionality in Asm and C and do a size and speed comparison.

I understand due to the nature of Spin, it will always be slower then asm due to the processing of the Spin language; but, will the C compiler make it nearly
the same speed as Asm?

It's a shame there is no "Spin" to "Asm" compiler so we end up with native asm code from spin.

Great stuff!

~Kam (^8*

Mike Green
05-22-2008, 12:19 AM
Even though the C compiler translates the C code into Propeller assembly language, it's not really quite the same assembly language you're talking about.
There's still an interpreter involved that adds a modest amount of overhead. Native Propeller assembly is the fastest, executing one instruction every 50ns
with an 80MHz system clock (with a few exceptions). The LMM (Large Memory Model) interpreter (kernel) used by ImageCraft's C compiler executes one
instruction roughly every 200ns to 400ns. The Spin interpreter is even slower, executing byte codes on the order of microseconds. It's not possible to
directly compare these speeds since operations in C often compile into more than one instruction and there are some operations in Spin whose equivalent
in C may compile into several instructions. Compiled C programs do take a lot more memory space than the equivalent byte codes from the Spin compiler,
so the extra speed comes at a cost. Like with a lot of things, you need to use the right tool for the job at hand.

Post Edited (Mike Green) : 5/21/2008 4:24:34 PM GMT

hippy
05-22-2008, 01:25 AM
Having to keep the C-LMM interpreter in the object code uses around 2KB of overhead ( 1/16th of
available RAM ) based on compiling a minimal "void main{}" style program. Looking at the code I
think there is scope to reduce that by quite a lot. The Propeller supports up to 8K instructions less
any RAM used for data storage.

All LMM's have a problem of balancing code size against execution speed and there's no simple
solution. There are some aspects of the code generation which I'd call inefficient but couldn't be
improved on without creating speed inefficiencies elsewhere. The best solution is to have a
compiler switch to optimise for speed or space and the most appropriate kernel linked in.

My gut feeling is that the first release is not going to be perfect for all in terms of code size, but
the important thing is to "get C working". But that's not to say the C compiler will be bad in any
way.

Once that's done and there's a firm foundation ImageCraft can work on making it even better and
I'm sure Propeller-Heads will have suggestions to offer. I'd much rather see a C compiler which
is available sooner rather than later, working rather than perfectly optimised.

On the plus-side, the C-LMM Kernel ( kernel.s ) is very straight forward so there's plenty of scope
for potential improvements.

For people who really do want large C programs and are prepared to sacrifice speed for that, there
seems to be no reason that generated object code could not be interpreted direct from I2C Eeprom.

ImageCraft
05-22-2008, 06:48 AM
Quickies:

- kernel size: the COG executes the kernel code, so effectively the lower 2K bytes of the HUB RAM is used for storing the kernel image and not usable. Since the kernel code itself uses only a portion of the 2K, with some careful work, one can probably reclaim some portion of the HUB RAM in he bottom 2K.

- speed: a good rule of thumb is LMM asm is about 1/5 to 1/8th the speed of native asm. As for what tools to use (PASM, Spin, or C), I think it really should be based on speed, size, cost, and the tools familiarity requirements of your projects. I think these 3 tools occupy different space. Of course I think everyone should buy a C compiler http://forums.parallax.com/images/smilies/smile.gif but in reality, Spin will do the job fine for a lot of people.

- code efficiency of the compiler: we provide a full C/asm listing of the output (View->ListingFile), I think anyone can look at it and see that the code generator is really not bad at all. There are of course rooms for improvements and I will welcome any concrete suggestions...

ImageCraft
05-22-2008, 06:52 AM
Pavel:

re: float
It shouldn't take long to support. All our compilers support float so the internal architecture and infrastructure are there already. It really is a matter of adding the code patterns (one reason we use 16 "registers" R0-R15 is to make FP easier) and then implement the low level FP ops. We have done low level FP ops for a half dozen architectures already, and the Propeller one should be relatively easy, actually.