I'll grant you that interrupts often confound beginning coders and even confuse experienced programmers, but they're not the big bug-a-boo that many make them out to be. All of my ARM designs use interrupts extensively, and properly managed, they are neither hard to understand, write code for, or debug.
Your second point, however, is ridiculous. Intelligent peripherals, as you call them, are far from an exclusive advantage of the Propeller. Anyone can add higher level processing code to extend device drivers for more traditional MCUs to, for example, add a FAT16/32 interface, or a protocol layer to a UART subsystem.
Hi Sal,
I think you may be slightly missing the point here: Interrupts are only necessary on other chips to simulate what the Prop can do naturally. Yes, you can add soft peripherals to other micros - but to do so you generally need to use interrupts. The complexity of this may be moderate (with a well designed chip) or it may be high (with a poorly designed chip) - but it is never low, and is typically well beyond the ability of newbies. They generally would not even attempt it - they would instead use only what was already provided for them.
But the Prop is different. You don't need interrupts at all. This massively simplifies the job of adding soft peripherals, which in turn massively reduces the cost of both development and maintenance.
It simplifies it to the point where we now take it for granted. Consider what we do here in the forums - rank newbies (including me, when it comes to many things!) routinely do things with the Prop that would be completely unthinkable on other micros to anyone without years of in-depth knowledge of the specific micro concerned - and much of this can be attributed to the fact that on the Prop we don't need to worry about interrupts (the remainder can be attributed to a nicely designed and very orthogonal instruction set).
Sal:
Interrupts can be handled by professionals fairly easily, but not without a lot of thought. Since I have spent most of my professional life coding micros with interrupts, we shall agree to disagree.
However, I must take exception to your intellegent peripheral stand. I would like you to use your favourite micro to build 15 UARTS, all running at 115200 baud (with NO UARTS) and parse the data coming in, such as a GPS. Next, using the same chip, make it do 3 VGA displays. Once that is done, make the same chip do stereo. Do you see where I am coming from yet???
All of my ARM designs use interrupts extensively, and properly managed, they are neither hard to understand, write code for, or debug.
True but:
1) It is it NOT possible to all the things that a multi-core architecture like the Prop can do with a single core and and interrupts. For example on a current thread here is a discussion of
implementing Direct Digital Synthesis (DDS) on the Prop. Once you have that up and running at maximum performance on a processor it is impossible to add further, interrupt driven, functionality without glitching the DDS output. It's even impossible to change the frequency without glitching the DDS loop.
2) I believe interrupts are harder to code for and understand that the equivalent totally independent threads on different cores. If you have to think about how the timing of "action A" interacts with "action B" that is obviously harder than not having to.
3) Management is a big issue. I can drop any object, from OBEX or elsewhere into my existing app without having to think about how to integrate it into my interrupt scheme, figure out a suitable priority for it or worry about what effect it will have on my existing codes timing. This is a BIG plus.
4) Testing can be easier with out interrupts. If I know object A works and then object B works I don't have to worry to hard about the combination of A and B on the Prop. They are well insulated from each other.
5) Interrupts are just a cludge to simulate having more CPUs than you really have, as such actually having more CPU is a simpler option.
Kye,
We are not fighting, just debating. This interrupts vs cores discussion crops up all the time and the advantage of cores without interrupts needs reiterating else new readers miss the point.
Sal:
However, I must take exception to your intellegent peripheral stand. I would like you to use your favourite micro to build 15 UARTS, all running at 115200 baud (with NO UARTS) and parse the data coming in, such as a GPS. Next, using the same chip, make it do 3 VGA displays. Once that is done, make the same chip do stereo. Do you see where I am coming from yet???
And I'm sure I can come up with scenarios involving USB and 100Mb Ethernet that you can't do on a Propeller either.
There's no doubt that the Propeller can be used to implement unusual combinations of peripherals, but 99.9% of applications don't need 15 UARTS and 3 VGA displays.
There are other ways to do as you describe as well: FPGA with soft (or hard) CPU core and multiple UART and VGA peripherals is one, the XMOS chip is another.
There's no doubt that the Propeller can be used to implement unusual combinations of peripherals, but 99.9% of applications don't need 15 UARTS and 3 VGA displays.
I agree and that's why the Prop will always be a somewhat niche device. Just happens that in my career such a device would have been very useful many times.
There are other ways to do as you describe as well: FPGA with soft (or hard) CPU core and multiple UART and VGA peripherals is one,...
True. Although you must admit that an FPGA is a much harder thing to use than a Prop. If a Prop can do it it's a thousand times easier to implement. If the Prop can't do it then you go the FPGA route. Of course a soft CPU on an FPGA introduces even more complexity.
...the XMOS chip is another.
I'm glad you mentioned "the chip that shall not be mentioned", I've already got a flat head from referring to XMOS too much here:)
The X chip is a fine example of how programming without interrupts makes life a lot easier when your up against severe timing constraints.
Now I love the XMOS architecture but again I see it is an order of magnitude harder to work with.
As a simple example: On the Prop all I/O pins are equivalent. I can arrange the connectivity of my external hardware however I like. If I want to tack a new device onto some free pins in my design I can do so very easily. On the XMOS pins are:
1) Arranged into groups as "ports". 1 bit ports, 8 bit ports, 16 bit ports etc. The direction of pins cannot be set individually only the direction of the entire "port" group. That means I have to think hard about what is connected to what port group. I cannot arbitarily use a free pin as an input if it is from an 8 bit group used as output.
2) The pins are wired to cores on XMOS. I may have free pins on my chip but find they are not usable as I can't reach them from the core that needs them.
You could use those "unreachable" pins via XLinks.
Oh Leon, that's true. I could also paint the inside of my apartment from the outside with a small brush attached to a long stick poked through the letter box:)
Using links to reach pins is one of the tutorial examples supplied with the dev kits, straight away you see it's pain in the ar**.
1) It is of course slow if you need the speed.
2) It's a hassle to program.
3) It wastes a thread on the core with the pins you are trying to reach.
4) If not 3) it complicates some other thread that has to listen to a link and set the pin for you.
For sure a lot harder than "I think I'll just use that pin in my object" and doing so.
P.S. I think the way X groups pins into ports is a real pain that severely limits flexibility of the X chip. At least you have to think a lot harder about how things are connected to the chip. If you need 4 pins of a group as output then all the rest of the pins are basically un available for input if available at all.
I initially passed over the Prop a few times when I first discovered it. It was just to "odd". I was looking for an MCU not this weird beast.
It took a while, even after I started to look seriously at it to really appreciate the advantages of it's unique architecture and that it's apparent severe limits (496 instructions in COG, what?!!) are not necessarily a show stopper.
I believe a newbie stumbling across this thread should be finding hints at those advantages. They are not so obvious at first sight.
I wish sometimes it were possible on these forums to just discuss Propellers. Some people actually come here to learn about those
True. Although you must admit that an FPGA is a much harder thing to use than a Prop. If a Prop can do it it's a thousand times easier to implement. If the Prop can't do it then you go the FPGA route. Of course a soft CPU on an FPGA introduces even more complexity.
My comments have always been from the perspective of a professional embedded developer, and not from the perspective of a hobbyist or novice. My original comments in this thread stated why I believe the Propeller has not caught on in professional development circles, and nothing anyone has said in rebuttal to my comments has really contradicted that.
Sure, techniques such as FPGAs and XMOS chips are not for the hobbyist or the faint of heart, but they are certainly (or should be) in the repertoire of the professional (as should the Propeller when it's the best choice for the task at hand).
My comments have always been from the perspective of a professional embedded developer, and not from the perspective of a hobbyist or novice.
I can see that point of view.
My original comments in this thread stated why I believe the Propeller has not caught on in professional development circles, and nothing anyone has said in rebuttal to my comments has
really contradicted that.
I've just been reviewing your original comments which we can briefly summarise as follows:
1) Single source
2) J-TAG
3) C support
4) Small memory
5) Peripherals.
6) Floating point support.
I suspect that your conclusion that these issues hinder the Props adoption in "professional" circles is true. However I believe they have been adequately rebutted here and elsewhere many times.
But here is my take on it:
Let's assume these professionals are correct and lets add excellent support for all these features to the Prop. Including interrupts that were missed off of your original list.
What do we end up with? Looks like we end up with just another high end MCU. Like that ARM sitting in the IGEP board I have on my desk. Perhaps with a few more cores and a few more GPIOs.
So what's the point? The world is full of such devices already. Competition is fierce in that arena. We have destroyed the elegant simplicity of the Prop and made it into a run of the mill MCU.
Sure, techniques such as FPGAs and XMOS chips are not for the hobbyist or the faint of heart, but they are certainly (or should be) in the repertoire of the professional (as should the Propeller when it's the best choice for the task at hand)
FPGA and XMOS, Verilog and VHDL etc etc and all the complexity that goes with them should be in the arsenal of the professional.
So why not Spin? Why not PASM? Why not the Prop and all it's time saving simplicity? These do make jobs easier no matter if you are hobbyist or professional.
(as should the Propeller when it's the best choice for the task at hand)
So what's the point? The world is full of such devices already. Competition is fierce in that arena. We have destroyed the elegant simplicity of the Prop and made it into a run of the mill MCU.
Those run of the mill MCUs (Pic, ARM, etc.) are selling in the billions of units every year and are used in products as diverse as LED-flashing children's shoes all the way up to high-end consumer goods.
If you, and Parallax, desire to keep the Propeller elegant and simple, then that's a worthy goal, but the odds of it ever being more than a tiny niche player in the professional development marketplace in its present form are remote.
If you, and Parallax, desire to keep the Propeller elegant and simple, then that's a worthy goal, but the odds of it ever being more than a tiny niche player in the professional development marketplace in its present form are remote.
It's always tricky to go from being a small but successful niche player to being a successful player in a broader arena. Statistics show that 9 out of 10 attempts fail badly.
I think Parallax is still trying to figure out how to attempt this without (potentially) losing the very thing (i.e. being "elegant and simple") that makes them unique as a company.
Those run of the mill MCUs (Pic, ARM, etc.) are selling in the billions of units every year and are used in products as diverse as LED-flashing children's shoes all the way up to high-end consumer goods.
True. Don't forget when say they are selling "in the billions" we are referring to the total sales of a thousand or more different devices from many different manufacturers. This huge total figure cannot be compared to a single device from a single manufacturer. After all that chip playing tunes in my birthday card is not anything like the ARM in my Android phone.
I have been doing a lot of work in the past few years with a particular embedded control system that contains an ARM main processor surround by a number of PICs performing peripheral functions.
Those PICs do not have any (most) of the features you have on your professional requirements check list. Small PICs do not have: A multiple source of supply, JTAG, big memory space, floating point. Their support for the C language is not so hot either.
I see no reason why those PICs should not be Propellers. In fact I can see how the Props would fit the requirements better. For example the fact that an inventory of Propellers could replace the variety of slightly different PICs that must be stocked for that machine is a huge win already. That's before we get on to the technical merits.
In that market we are already talking 10s of thousands of chips. I'm sure there are many similar situations around the world and a lot of scope for the Prop to penetrate there.
figure out how to attempt this without (potentially) losing the very thing (i.e. being "elegant and simple") that makes them unique as a company.
I for one hope they make it!
I also hope for financial success and fame for parallax.
Chip's design is just so fun to work with. I always want
him to be there turning out new fun uC's to play with.
Sal, I admit very large designs will use a specific chip for the task whereas the prop maybe too expensive. But for lower volumes where software costs come into play, the prop is just a simpler device even though it may be slightly more expensive, and one can also save on inventory costs.
Anyway, we can again agree to disagree, because I am using the prop in commercial circuits. As I said before, one uses 3 props, each of which could be replaced with an alternative specialised, and different, micro. However, in my application, the prop is a cheaper, simpler and just plain better solution when everything is considered. EOS.
Oh Leon, that's true. I could also paint the inside of my apartment from the outside with a small brush attached to a long stick poked through the letter box:)
Now I love the XMOS architecture but again I see it is an order of magnitude harder to work with.
As a simple example: On the Prop all I/O pins are equivalent. I can arrange the connectivity of my external hardware however I like. If I want to tack a new device onto some free pins in my design I can do so very easily.
Yes, that's the most frustrating thing about working with the XMOS chips. They should have put more thought into making the I/O more flexible and configurable. This is where the Propeller has a much more logical arrangement--I just wish it had more I/O pins; sometimes 32 isn't enough.
It's actually easy to use XLinks to access I/Os on different cores. The XC-1A Tutorial has an example which flashes LEDs on a ring of cores using XC channels to implement a token ring. Adding a button controller to the code is trivial. Accessing I/O like this across cores (which can be on different chips) is inherently deterministic. Doing something like that on four Propeller chips would be much harder. Being able to do that sort of thing with a number of XMOS chips is one reason why they are very useful for high-performance robotic systems.
I would ask, how many times have we shown off the Propellers simplicity and instantly had some one hooked? This is how I came to the Prop, and there are at least 4 others that have migrated from AVR to Propeller and 1 from XMOS to Propeller as a result of my showing off how simple it is to do just about ANYTHING on the Prop. It seems to me that this is a much better measure of our Prop than the total current market, as the Prop seems to be primarily marked by word of mouth, and it is spreading like a weed (in a good way). If we keep this up the Propeller (and eventually the PropII) stands a chance of replacing many other MCU almost exclusively, I just hope that Parallax remains small enough to keep up the good work.
there are at least 4 others that have migrated from AVR to Propeller and 1 from XMOS to Propeller as a result of my showing off how simple it is to do just about ANYTHING on the Prop.
Are these five people you prompted to migrate to the Propeller developing commercial products with the Propeller, or are they hobbyists?
Comments
Hi Sal,
I think you may be slightly missing the point here: Interrupts are only necessary on other chips to simulate what the Prop can do naturally. Yes, you can add soft peripherals to other micros - but to do so you generally need to use interrupts. The complexity of this may be moderate (with a well designed chip) or it may be high (with a poorly designed chip) - but it is never low, and is typically well beyond the ability of newbies. They generally would not even attempt it - they would instead use only what was already provided for them.
But the Prop is different. You don't need interrupts at all. This massively simplifies the job of adding soft peripherals, which in turn massively reduces the cost of both development and maintenance.
It simplifies it to the point where we now take it for granted. Consider what we do here in the forums - rank newbies (including me, when it comes to many things!) routinely do things with the Prop that would be completely unthinkable on other micros to anyone without years of in-depth knowledge of the specific micro concerned - and much of this can be attributed to the fact that on the Prop we don't need to worry about interrupts (the remainder can be attributed to a nicely designed and very orthogonal instruction set).
Ross.
http://revision3.com/tbhs/sanitizer
-dan
If only we all spent as much time writing stuff for the propeller as we do arguing about the propeller, think how much we might achieve!
Interrupts can be handled by professionals fairly easily, but not without a lot of thought. Since I have spent most of my professional life coding micros with interrupts, we shall agree to disagree.
However, I must take exception to your intellegent peripheral stand. I would like you to use your favourite micro to build 15 UARTS, all running at 115200 baud (with NO UARTS) and parse the data coming in, such as a GPS. Next, using the same chip, make it do 3 VGA displays. Once that is done, make the same chip do stereo. Do you see where I am coming from yet???
True but:
1) It is it NOT possible to all the things that a multi-core architecture like the Prop can do with a single core and and interrupts. For example on a current thread here is a discussion of
implementing Direct Digital Synthesis (DDS) on the Prop. Once you have that up and running at maximum performance on a processor it is impossible to add further, interrupt driven, functionality without glitching the DDS output. It's even impossible to change the frequency without glitching the DDS loop.
2) I believe interrupts are harder to code for and understand that the equivalent totally independent threads on different cores. If you have to think about how the timing of "action A" interacts with "action B" that is obviously harder than not having to.
3) Management is a big issue. I can drop any object, from OBEX or elsewhere into my existing app without having to think about how to integrate it into my interrupt scheme, figure out a suitable priority for it or worry about what effect it will have on my existing codes timing. This is a BIG plus.
4) Testing can be easier with out interrupts. If I know object A works and then object B works I don't have to worry to hard about the combination of A and B on the Prop. They are well insulated from each other.
5) Interrupts are just a cludge to simulate having more CPUs than you really have, as such actually having more CPU is a simpler option.
Kye,
We are not fighting, just debating. This interrupts vs cores discussion crops up all the time and the advantage of cores without interrupts needs reiterating else new readers miss the point.
And I'm sure I can come up with scenarios involving USB and 100Mb Ethernet that you can't do on a Propeller either.
There's no doubt that the Propeller can be used to implement unusual combinations of peripherals, but 99.9% of applications don't need 15 UARTS and 3 VGA displays.
There are other ways to do as you describe as well: FPGA with soft (or hard) CPU core and multiple UART and VGA peripherals is one, the XMOS chip is another.
I agree and that's why the Prop will always be a somewhat niche device. Just happens that in my career such a device would have been very useful many times.
True. Although you must admit that an FPGA is a much harder thing to use than a Prop. If a Prop can do it it's a thousand times easier to implement. If the Prop can't do it then you go the FPGA route. Of course a soft CPU on an FPGA introduces even more complexity.
I'm glad you mentioned "the chip that shall not be mentioned", I've already got a flat head from referring to XMOS too much here:)
The X chip is a fine example of how programming without interrupts makes life a lot easier when your up against severe timing constraints.
Now I love the XMOS architecture but again I see it is an order of magnitude harder to work with.
As a simple example: On the Prop all I/O pins are equivalent. I can arrange the connectivity of my external hardware however I like. If I want to tack a new device onto some free pins in my design I can do so very easily. On the XMOS pins are:
1) Arranged into groups as "ports". 1 bit ports, 8 bit ports, 16 bit ports etc. The direction of pins cannot be set individually only the direction of the entire "port" group. That means I have to think hard about what is connected to what port group. I cannot arbitarily use a free pin as an input if it is from an 8 bit group used as output.
2) The pins are wired to cores on XMOS. I may have free pins on my chip but find they are not usable as I can't reach them from the core that needs them.
I wish sometimes it were possible on these forums to just discuss Propellers. Some people actually come here to learn about those
Ross.
Oh Leon, that's true. I could also paint the inside of my apartment from the outside with a small brush attached to a long stick poked through the letter box:)
Using links to reach pins is one of the tutorial examples supplied with the dev kits, straight away you see it's pain in the ar**.
1) It is of course slow if you need the speed.
2) It's a hassle to program.
3) It wastes a thread on the core with the pins you are trying to reach.
4) If not 3) it complicates some other thread that has to listen to a link and set the pin for you.
For sure a lot harder than "I think I'll just use that pin in my object" and doing so.
P.S. I think the way X groups pins into ports is a real pain that severely limits flexibility of the X chip. At least you have to think a lot harder about how things are connected to the chip. If you need 4 pins of a group as output then all the rest of the pins are basically un available for input if available at all.
I agree. But...
I initially passed over the Prop a few times when I first discovered it. It was just to "odd". I was looking for an MCU not this weird beast.
It took a while, even after I started to look seriously at it to really appreciate the advantages of it's unique architecture and that it's apparent severe limits (496 instructions in COG, what?!!) are not necessarily a show stopper.
I believe a newbie stumbling across this thread should be finding hints at those advantages. They are not so obvious at first sight.
Exactly:)
Yes.
My comments have always been from the perspective of a professional embedded developer, and not from the perspective of a hobbyist or novice. My original comments in this thread stated why I believe the Propeller has not caught on in professional development circles, and nothing anyone has said in rebuttal to my comments has really contradicted that.
Sure, techniques such as FPGAs and XMOS chips are not for the hobbyist or the faint of heart, but they are certainly (or should be) in the repertoire of the professional (as should the Propeller when it's the best choice for the task at hand).
Sorry if I say that . It is BAD professionals if them NOT give NEW technology try.
I can see that point of view.
I've just been reviewing your original comments which we can briefly summarise as follows:
1) Single source
2) J-TAG
3) C support
4) Small memory
5) Peripherals.
6) Floating point support.
I suspect that your conclusion that these issues hinder the Props adoption in "professional" circles is true. However I believe they have been adequately rebutted here and elsewhere many times.
But here is my take on it:
Let's assume these professionals are correct and lets add excellent support for all these features to the Prop. Including interrupts that were missed off of your original list.
What do we end up with? Looks like we end up with just another high end MCU. Like that ARM sitting in the IGEP board I have on my desk. Perhaps with a few more cores and a few more GPIOs.
So what's the point? The world is full of such devices already. Competition is fierce in that arena. We have destroyed the elegant simplicity of the Prop and made it into a run of the mill MCU.
FPGA and XMOS, Verilog and VHDL etc etc and all the complexity that goes with them should be in the arsenal of the professional.
So why not Spin? Why not PASM? Why not the Prop and all it's time saving simplicity? These do make jobs easier no matter if you are hobbyist or professional.
Ooops missed that part. Yes exactly.
Those run of the mill MCUs (Pic, ARM, etc.) are selling in the billions of units every year and are used in products as diverse as LED-flashing children's shoes all the way up to high-end consumer goods.
If you, and Parallax, desire to keep the Propeller elegant and simple, then that's a worthy goal, but the odds of it ever being more than a tiny niche player in the professional development marketplace in its present form are remote.
It's always tricky to go from being a small but successful niche player to being a successful player in a broader arena. Statistics show that 9 out of 10 attempts fail badly.
I think Parallax is still trying to figure out how to attempt this without (potentially) losing the very thing (i.e. being "elegant and simple") that makes them unique as a company.
I for one hope they make it!
Ross.
True. Don't forget when say they are selling "in the billions" we are referring to the total sales of a thousand or more different devices from many different manufacturers. This huge total figure cannot be compared to a single device from a single manufacturer. After all that chip playing tunes in my birthday card is not anything like the ARM in my Android phone.
I have been doing a lot of work in the past few years with a particular embedded control system that contains an ARM main processor surround by a number of PICs performing peripheral functions.
Those PICs do not have any (most) of the features you have on your professional requirements check list. Small PICs do not have: A multiple source of supply, JTAG, big memory space, floating point. Their support for the C language is not so hot either.
I see no reason why those PICs should not be Propellers. In fact I can see how the Props would fit the requirements better. For example the fact that an inventory of Propellers could replace the variety of slightly different PICs that must be stocked for that machine is a huge win already. That's before we get on to the technical merits.
In that market we are already talking 10s of thousands of chips. I'm sure there are many similar situations around the world and a lot of scope for the Prop to penetrate there.
I also hope for financial success and fame for parallax.
Chip's design is just so fun to work with. I always want
him to be there turning out new fun uC's to play with.
Chip, please don't ever retire..LoL :-)
Sal, I admit very large designs will use a specific chip for the task whereas the prop maybe too expensive. But for lower volumes where software costs come into play, the prop is just a simpler device even though it may be slightly more expensive, and one can also save on inventory costs.
Anyway, we can again agree to disagree, because I am using the prop in commercial circuits. As I said before, one uses 3 props, each of which could be replaced with an alternative specialised, and different, micro. However, in my application, the prop is a cheaper, simpler and just plain better solution when everything is considered. EOS.
Priceless!
Wow.. That's almost good enough to go on a Propeller t-shirt. Hopefully, this conversation it's civilized level from here.
OBC
Yes, that's the most frustrating thing about working with the XMOS chips. They should have put more thought into making the I/O more flexible and configurable. This is where the Propeller has a much more logical arrangement--I just wish it had more I/O pins; sometimes 32 isn't enough.
I would ask, how many times have we shown off the Propellers simplicity and instantly had some one hooked? This is how I came to the Prop, and there are at least 4 others that have migrated from AVR to Propeller and 1 from XMOS to Propeller as a result of my showing off how simple it is to do just about ANYTHING on the Prop. It seems to me that this is a much better measure of our Prop than the total current market, as the Prop seems to be primarily marked by word of mouth, and it is spreading like a weed (in a good way). If we keep this up the Propeller (and eventually the PropII) stands a chance of replacing many other MCU almost exclusively, I just hope that Parallax remains small enough to keep up the good work.
Are these five people you prompted to migrate to the Propeller developing commercial products with the Propeller, or are they hobbyists?