Shop OBEX P1 Docs P2 Docs Learn Events
ICCV7 for Propeller BETA2 (now BETA3!) NOW BETA4!!! :-) — Parallax Forums

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

ImageCraftImageCraft Posts: 348
edited 2008-05-21 22:52 in Propeller 1
// 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 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

Comments

  • Bob Lawrence (VE1RLL)Bob Lawrence (VE1RLL) Posts: 1,720
    edited 2008-05-08 23:35
    Beta 2 is limited to a 5 day trial. Personally I think that the time limit is silly.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Aka: CosmicBob
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-08 23:56
    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.
  • hippyhippy Posts: 1,981
    edited 2008-05-10 14:35
    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 ... "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
    275 x 126 - 2K
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-10 19:58
    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.
  • hippyhippy Posts: 1,981
    edited 2008-05-12 00:05
    void wibble(void);
    
    void main()
    {
      while( 1 ) { wibble(); }
    }
    
    void wibble( void )
    {
      asm("andn OUTA,#0"); asm("andn OUTA,#0");
      [i]repeat the above line lots of times ![/i]
    }
    
    



    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
    [b]iccprop: can't execute `C:\iccv7prop\bin\iasprop.exe'[/b]
    [b]C:\iccv7prop\bin\imakew.exe: Error code 100[/b]
    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
    
    [b]!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[/b]
    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
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-12 00:32
    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 GreenMike Green Posts: 23,101
    edited 2008-05-12 01:36
    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?
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-12 02:34
    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.
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-12 06:46
    Note that BETA3 is now out fixing the expiring license issue. See edited initial post.
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-21 08:48
    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 VerkaikPeter Verkaik Posts: 3,956
    edited 2008-05-21 11:52
    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
  • Agent420Agent420 Posts: 439
    edited 2008-05-21 13:40
    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.
  • PavelPavel Posts: 43
    edited 2008-05-21 15:30
    Is there any estimate as to when the floating point operations will be supported?
  • KamPuttyKamPutty Posts: 48
    edited 2008-05-21 16:05
    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 GreenMike Green Posts: 23,101
    edited 2008-05-21 16:19
    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
  • hippyhippy Posts: 1,981
    edited 2008-05-21 17:25
    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.
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-21 22:48
    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 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...
  • ImageCraftImageCraft Posts: 348
    edited 2008-05-21 22:52
    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.
Sign In or Register to comment.