ICCV7 for Propeller BETA2 (now BETA3!) NOW BETA4!!! :-)
ImageCraft
Posts: 348
// 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
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
http://www.imagecraft.com/pub/iccv7prop_v700_beta3.exe
*****
I hope y'all have seen our page 2 Circuit Cellar ad
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
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob
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.
Added : According to 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
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.
With ~2300 lines in source, error 100 ...
With ~2400 lines in source, no error ...
With ~2500 lines in source, error 11 ...
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
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?
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
and how much hub memory is needed for the C kernel itself?
regards peter
I'm looking forward to trying the C compiler.
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*
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
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.
- 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 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...
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.