Kicking the tire - Propeller C...
ImageCraft
Posts: 348
First of all, yes, Parallax is aware of this, but this is no way saying that they are endorsing or not endorsing this project. When and if I can say more, I will. Until then, please do not speculate on that aspect.
For those that don't know us, ImageCraft is a leader in providing 8/16/32 bits microcontroller C tools. Google us and visit http://www.imagecraft.com if you want to know more. Like many of you, I happen to think the Propeller is a rather unique device and a Propeller C would be a great addition to our product line and a great offering to the community. The purpose of this email is kick the tire and gauge the interest level, and hopefully get some members excited about this project - I will need your help in generating ideas and beta testing.
Product wise, it will be similar to our existing products: a base STD version with an easy to use IDE and a compiler tool chain for $200 or thereabout. We will probably not be interoperable with existing Spin library objects. A key addition would be some sort of debugging capability, although that may have to be an add-on product with extra cost. The compiler will almost certainly use some type of large memory model and may possibly allow a COG program to explicitly access fast COG RAM or slower hub RAM. Rather than introducing extension to access the COGs, probably some sort of tasking library functions will be used instead. The COG core is relatively simple in terms of code generation - with the exception of having to use self modifying code for a lot of things like function calls, it's a relatively straight forward 32 bits core. Our ARM compiler can already handle conditional execution so the technology is already to handle that. The large memory model will be a challenge. We will need to come up with a memory efficient scheme that is fast and robust. I hope to be able to leverage (with proper credit and possible compensation) to some of the contributions made and will be made by various members.
Obviously, a lot of technical and business details will need to be work out. I hope we will get the support of the community and I welcome any suggestions and comments. Feel free to email me privately at richard at imagecraft.com or respond to this thread. Let the excitement begins Thank you for your time.
// richard
For those that don't know us, ImageCraft is a leader in providing 8/16/32 bits microcontroller C tools. Google us and visit http://www.imagecraft.com if you want to know more. Like many of you, I happen to think the Propeller is a rather unique device and a Propeller C would be a great addition to our product line and a great offering to the community. The purpose of this email is kick the tire and gauge the interest level, and hopefully get some members excited about this project - I will need your help in generating ideas and beta testing.
Product wise, it will be similar to our existing products: a base STD version with an easy to use IDE and a compiler tool chain for $200 or thereabout. We will probably not be interoperable with existing Spin library objects. A key addition would be some sort of debugging capability, although that may have to be an add-on product with extra cost. The compiler will almost certainly use some type of large memory model and may possibly allow a COG program to explicitly access fast COG RAM or slower hub RAM. Rather than introducing extension to access the COGs, probably some sort of tasking library functions will be used instead. The COG core is relatively simple in terms of code generation - with the exception of having to use self modifying code for a lot of things like function calls, it's a relatively straight forward 32 bits core. Our ARM compiler can already handle conditional execution so the technology is already to handle that. The large memory model will be a challenge. We will need to come up with a memory efficient scheme that is fast and robust. I hope to be able to leverage (with proper credit and possible compensation) to some of the contributions made and will be made by various members.
Obviously, a lot of technical and business details will need to be work out. I hope we will get the support of the community and I welcome any suggestions and comments. Feel free to email me privately at richard at imagecraft.com or respond to this thread. Let the excitement begins Thank you for your time.
// richard
Comments
nice to hear that someone is writing a c compiler.
But personally I have a problem with 200$ compilers.
For professional use, I even buy 5000$ compilers and debuggers.
But they have to be certified and accepted by our customers.
You won't find many certified compilers for 200$.
For hobby use 200$ are too much for me, sorry.
I'd really like to have a c compiler for the propeller, but
won't spend 200$ just to play around and perhaps use it twice a year.
But I think that a lot of small companies will like your compiler.
I once worked in a small company and was glad when Imagecraft
released the compiler for Tiny AVR's.
Great to hear you excited by the Propeller.
We have had the question by potential customers here in OZ " is there a C compiler "
So great to hear that your considering it.
Now all of these people have been serious possible end users.. and would be willing to spend a few bucks
on a good compiler.
Not much of a C programmer myself more a Basic/spin programmer when it does the job and bit bash when needed.
Keep the Forum posted I am sure there are many people looking forward to a good C compiler.
Cheers
Ronald Nollet Australia
good idea, I program in C and C# and love to see that for the prop. But, pricing is too high for me as a hobbyist and don't really support the idea of add-on $$. Debugging is important enough to bundle w/ the IDE - IMHO
caio
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
"any small object, accidentally dropped, goes and hides behind a larger object."
ALIBE - Artificial LIfe BEing. In search of building autonoumous land robot
http://ALIBE.crosscity.com/
·
I'm very happy to read that you are interested by The propeller. If your C compiler is good (as good as the CCS C compiler witch i use for Microchip), then i am ready to pay 200$ and also 300$
dro.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
in medio virtus
At $200, the ability to compile existing code and run it royalty free, the advantage would pay for itself rather quickly I would think.
Thanks,
Doug
Are you going to have a compiler/assembler? In other words, compile the C into some kind of Propeller assembly source code, then assemble that into a binary file? The reason I ask is that there'll have to be some way to have "hand coded" assembly code for cog I/O routines where timing constraints often require careful hand coding. The closer the format is to the existing assembly language, the easier it will be to port existing I/O drivers and you will have to port some of these (and include them in a standard library).
You may not be compatible with existing Spin library objects, but you'll have to provide most of their functionality.
Libraries. The existing libraries are very useful. For many of them, Spin is only used to start the library and to access date values. The main work is done on a cog in assembly. Being able to use the assembly part unchanged and to easily replace the Spin parts with C would be valueable. Otherwise you are going to have to write a lot of libraries.
Graham
Regarding the cost, you won't see it for less than the amount Richard mentioned. Parallax will be funding some of the NRE for this project. It will take a long time to recover our investment, and our experience (and that of ImageCraft) is that our investment return won't be sped up by selling it for less than a few hundred dollars. ImageCraft has proven experience supporting other devices successfully through established Parallax distribution channels, so the acceptance is projected to be high. The "large" compiler companies that sell a $5,000 compiler are likely not suitable partners for Parallax. Our customer base is diverse, which sets our compiler retail price close enough for the hobbyist. With ImageCraft we're certain that we'll be able to deal with improvements without gouging our customers for upgrade costs all the time, especially for smaller updates if they are required. We can't find this accountability in big compiler companies, to my experience.
Ken Gracey
Parallax, Inc.
Also, where existing spin objects are concerned, do take the time for a structured interface approach and publish that freely with an example or two showing what is possible.
Right now, the number of objects available is a strong selling point for the prop in general. Clearly those using your potential tool chain are less inclined to publish objects. No worries there. However, if it's fairly easy to interface in a structured way, both parties may well see significant added value from both the existing repository and future additions that are compliant with your toolchain.
This, in turn, may encourage object development and serve to reinforce the value proposition of your tools to a greater audience.
Might I add, seperation of the command line compilier and IDE. For paying users, ship them the entire toolchain and they are happy. For those hobby level users, and those trying to build businesses, allow access to a reduced speed compilier only command environment and perhaps a core library subset. While not optimal, this is a solution many can easily live with, if they are trying to learn, or bootstrap a greater business. This has obvious implications where future revenue is concerned.
Doing this will not significantly impact your sales in a negative way. Support will be tied to the paid users. Others can frequent forums, such as this one, and or figure things out for themselves.
Your end result is highly likely to be a friendly blend of your toolchain into the existing prop community and sharing ethic currently adding a lot of value. I am currently learning the prop for both this ethic and the capability of the hardware. If we didn't see the amount of open discussion and sharing we currently do, the prop would be essentially worthless to me. I'm sure others will agree on that point.
From what I read here, and the conversations I've had with a few folks, your target purchase price is not out of line, given some revenue is tied to it. That's where the rub is. If that decision is postponed, those efforts will be done with both the parallax tools and those developed here by interested others. Case in point being the emulator and assembler found here. Finding a way to bridge that gap will help foster that learning in a way that adds value to your product offering and that's only a good thing for all involved, IMHO.
Being in the learning stage right now, I would gladly invest my time to understand your environment. When it makes sense, I would also gladly pay for the full toolchain with support as well. If my learning evolves other means and methods, I'm not so likely to do this.
Finally, this could reduce the burden on Parallax to provide a more robust toolchain in this regard. They can focus on what they do well, as you can with both not having to duplicate efforts. This also leaves Parallax in a position where they can continue to make just using the prop as accessable as it is right now. IMHO, blending these efforts will add complexity to the prop tools. While this will be a welcome addition to higher level users, it may inhibit new users ability to work with the hardware.
Edit: Consider these points a fair investment for said help and beta testing! I'm assuming your C environment would leverage a large memory model code option. Some efforts here have been made toward that end, and code is being written now with existing tools. General avaliability of some core set of tools that support this would encourage large memory model objects and or provide a default means for setting them up (kernel, memory usage, etc...)
Another (*&)*(^ Edit: Setting that all aside, I think your price point is excellent. I've zero issues with that aspect of things. I more or less said that above, but wanted to make that clear.
Post Edited (potatohead) : 3/2/2007 6:06:49 PM GMT
What would I be able to do with C code that I would not be able to do in Spin ???
I am not a programmer, just wondering...
*.*
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
*.*
Ibsen
" It's nice to be important, but
·· more important to be nice... "
C has some features that Spin lacks. In particular, it has more complete support for floating point (Spin has a little ... kind of minimal) and
it has more complete support of strings (although they're all library calls and easily added to the current Spin).
C has support for dynamic memory, structures, and more complete support of pointers.
C has macros, includes, and conditional compilation
Spin is tightly matched to the capabilities of the Propeller, has some support of the notion of objects, a bit more than C, but far from complete.
I'm sure I've left off something.
re: asm/linker
Yes, our tool chain uses the "traditional" C compiler tool model: compiler compiles into asm, and an asm assembles the files into object files and then everything is linked together by the linker. So yes you can write standalone asm modules.
re: SPIN objects and object model
While we will not be able to take advantage of the existing objects, the goal is to entice people to rewrite them to be usable with our compilers. I am not entirely sure what to do with the SPIN object model yet. SPIN object really is a syntactic sugar allowing compile time instantiation. I think a semantic equivalence is simply statically declare C++ like class objects. Since we only support C and not C++, C++ class can be written as C structs with pointer functions. I am almost certain that at first release we won't add anything new to support this per se, but may be just some coding guidelines. Down the road... I don't know.
re: command line
Yes, our compilers themselves are command line tools. The IDE creates a standard format makefile, and calls the make utility. If you don't want to know or don't care to know what this means, it's OK. Everything is transparent to you. You just click the Project Build icon and away it goes. If you want to use your own editor or other things, you can call the command line compilers yourself. Very flexible.
re: freebies
Yes, our current V7 compilers are all fully functional for 45 days, then become code size limited to X bytes for non-commercial use. I expect the Propeller C would be the same. I don't know what X is yet. The goal is to find a X where users can write *some* non-trivial programs but still give them strong incentive to purchase a commercial license.
re: new SRAM, new Propeller etc.
Accessing new SRAM cards etc. would not be a problem. After all, C is close to bare metal - although in this case, there is a layer of abstraction above the bare metal that is used some of the time (large memory model engine). There will be some implications because of that, but I don't think it will be too much in the way. As for new Propellers, hopefully the compiler will be ready as soon as new versions of the Propellers are available. I expect this to be a very long term development partnering with Parallax, so we will see how things go.
Targeting hobbyists is not new to us. We started that way. In fact, I started ImageCraft back in 94 because I was a hobbyist (doing subsumption based robotic on an HC11) looking for a low cost compiler (I started my professional life as a compiler developer for Whitesmiths back in '85). We sold a large number of HC11 compilers to hobbyists. Targeting commercial users is not new - as I said, most of our current customers are embedded systems designers. What is new, in the business sense, is to find a small chip maker that is passionate about what they do, have a very unique offering, and while the device is new and has risks in gaining market acceptance, they have a strong customer base that is as excited as they are. Is the current base large enough to make it "worthwhile" to produce a C compiler? Probably not :-( However, looking at a longer term view, if Parallax is successful in pushing the Propeller, then it will be worthwhile. As you can see in Ken's post, Parallax is keen to make this happen to. The devil is in the details so it will be an "exciting" trek ahead . Thank you for your interests.
Your standard operating procedure, with the 45 day & code size limitations, are more than adequate for the purposes I mentioned in my post. Combined with code guidelines, it all should work out fine!
Looking forward to seeing this happen.
What ever happen to the http://forums.parallax.com/showthread.php?p=629928?.
Makes more sense a free C compiler than a $200 one.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.mikronauts.com - a new blog about microcontrollers
There are a lot of people... who have whole libraries of functions written in C. Some of those libraries are pretty valuable. A C compiler would allow them to slightly modify their code and see for themselves that it works on the Prop... then they would know whether they want to translate the rest of their code and how difficult that might be... and whether they want to optimize their code at the machine level for the Prop.
The Prop is so new that there is no doubt that many potential uses have not been seriously considered.
A good C compiler would open new markets for Parallax. It would allow more people to play with it as a processor as opposed to just viewing as a controller.
Anything that expands the total market, without a large relative investment, will allow Parallax to lower the price of its products or develop more for folks like us.
A C compiler, with plenty of examples, would also allow non-programmers... who have suddenly become programmers, because of Spin... to learn C.
C is a real easy language... but kind of hard to do anything useful with for a novice. $200 is a bargain if the product is done well. And I would suspect that the sales will exceed the projections.
Usually, the price would come down naturally as related, ancillary products are developed. And there is always EBay.
Rich
There is one point here that everyone needs to remember. C will generate to assembler source, which will generate to machine language. This effort will give you the ability to take full advantage of the spped the Propeller offers. This will not replace Spin, it will give those who use it the ability to get assembler speed while writing in an intermediate level language, C. This will be a great addition to the Propeller toolbox.
As for cost, how many of you have written a C compiler from start to finish! I have, and it's no picnic. GNU compilers are great, but I've used Imagecraft products before and they are fine products.
Take a look at programmers paradise and look at their toolkit prices. It's hard to find a good toolkit for Windows development for less than $1000, seriously. Just as you deserve to earn a living wage, the folks who support your development efforts deserve to make a profit. You can't buy a Hi-Tech compiler for $200 and you know you can't buy a CCS PIC compiler for $200. In fact, most companies who are selling enhanced versions of the GNU compilers, charge more than $200.
The Propeller has a very efficent assembler and a well organized instruction set. Spin is a very well thought out langauge and easy to use and understand. Imagecraft has an excellent reputation and would reduce the amount time it takes to write an assembler program. For those who don't know the C langauge, I would strongly recommend learning C on a single processor machine, otherwise a difficult langauge will become more difficult to learn.
Cheers,
Oliver
Thanks for the kind words. One thing to add is just that since we will be using the large memory model, some amount of speed-down is expected. The last posts by Chip and Bill Henning indicate a LMM performance of 20%-25% of asm code, still much faster than Spin. Of course you can write COG only small memory model code in asm and the compiler may support small memory model code generation at some future point as well.
// richard
I can hardly think of a hobbiest need for much more speed than spin. I have played with spin and can controll polling 8 485 gas pump card readers with no problems all on one cog, with 100ms polls.
But I also played with spin to calculate pi to 100000 digits to a sd card and wow was that slow, probably the sd more than spin.
I have paid for picc and picbasic and would consider paying for a c compiler for the prop, but am finding the asm in the prop and the SX chips pretty easy after scraping off the rust in my brain from 10 years of not using asm.
cudos to Imagecraft, I would not expect my sourceforge product to beat them to fruition, or thier quality control, especially if Parallax is sponsoring the project. The downloading a binary alone in linux with gcc was not trivial it took me 30 hours to get it to work with a max3232.
Post Edited (bassmaster) : 3/4/2007 2:03:01 AM GMT
While I frequently sit on the forums approximately 12 hours a day, 7 days a week, at work and off; I am currently working at a breakneck pace getting the datasheet done in time for Embedded Systems Conference, then writting some demos for it as well. So those easier questions I leave for others to answer because it means one less thread that I "own" (responsibility for answering all follow-up questions).
We presently don't have the resources to devote towards developing an entirely new tool chain, and·it is fantastic that a company with the reputation of ImageCraft sees the potential in the architecture and wants to get involved in creating a tool chain professional developers would be happy to work with.
We never have and never will outsource support for any of our products, those people you see answering questions without the (Parallax) behind thier names do so voluntarily and at thier own volition, to which we are very appreciative.·
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Propeller Applications Engineer
Parallax, Inc.
Post Edited (Paul Baker (Parallax)) : 3/4/2007 4:00:39 AM GMT
Part of the reason I was hired was that Chip and Jeff couldn't handle the large amount of traffic that goes on in this forum and do everything else they need to do, and·the existing Tech Support staff·was·too busy already to devote the time to·becoming experts on the Propeller.
Have you noticed that the Propeller forum has more posts than any other forum·except the Basic Stamp forum? And this is compared to the SX forum which has been in existance since I first became a customer in the summer of 2004.
Anyways, lets return this thread to ImageCraft and the original topic, because it is a worthy one and deserves further discussion.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Propeller Applications Engineer
Parallax, Inc.
Post Edited (Paul Baker (Parallax)) : 3/4/2007 4:47:41 AM GMT
Small correction here... with proper use of FCACHE and function-local variables for non-recursive routines mapped into cog memory (one of the main reasons for the way I map large model kernels), I expect large model code to be 95%+ the speed of native cog code; for certain classes of code I would not be surprised at 99% of the speed of pure cog code.
Without using FCACHE, the 25% figure is correct; as we seem to have an agreement I will ofcourse help you with FCACHE [noparse]:)[/noparse] ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
www.mikronauts.com - a new blog about microcontrollers
Having to go to a PeeCee to program the prop is a real pain.
Are you writing the command line compiler in C itself ? If so, it would be really great to have the compiler compile the compiler so then we could write C on the prop itself, and pull away from a lot of OS dependancies.
I thinkg the proto board with a SD card would make a great base for this.
By Large Memory Model, do you mean 32K Large, or are you considering larger external memory?
Just my 10 bits,
Doug
Sorry, the current IDE is Windows only :-( The compilers themselves are quite portable, but it's always, "what's the ROI" in supporting Mac, Linux, or... Sad to say, when you have to make money so that you can put food on the table for your children, some of those choices are made for you :-( It's relatively easy to write a C compiler, if you don't mind this or that limitation, or that other thing, but it is fairly difficult to sell and support a professional C compiler people can rely on to write mission critical code day in and day out. As for native Propeller C, it may be possible, but it is probably a little too early to consider. I think that 32K will be a limitation, but who knows what Propeller V2 or V3 etc. will look like? (well Chip knows, but...)