What the Propeller 2 can learn from the Arduino...

gnulligangnulligan Posts: 2
edited 2019-05-04 - 03:25:16 in Propeller 2
Hey guys! Long time listener, first time caller....

Like you, I'm also eagerly awaiting the P2 and I'm really happy that it's almost here. I'm definitely going to buy the first C3 or Hydra-style dev board available.

However, I think we can all agree that the world has changed since the P1 was announced, and some opportunities might have been missed. For example, the arduino craze started around the same time the P1 was released. But unlike the P1, arduino heavily utilized an open-source/industry-standard ecosystem. Arduinos are programmed in C, and the open-source nature of the boards inspired dozens of clones, kind of like the IBM PC. I don't think the P1 really compares with most ARMs, since those are generally meant for Linux/MMU applications and the P1 is MMU-less, so that's why I bring up arduino as the main alternative.

Anyway, with the P1, I get the feeling the Propeller vs. Arduino competition is kind-of mimicking the Apple vs Wintel competition of the 90's. Apple started out with more powerful hardware, and at the very least RISC architecture is generally recognized as superior to CISC. But because IBM clones were manufactured by hundreds of companies, and Macs were manufactured by a single company, the additional resources improved Wintel PCs until they leapfrogged Macs in performance, cost and popularity. Obviously this is a huge simplification, but I think my point on the difference in Mac & PC ecosystems remains.

Now, these are just ideas from someone who is not too familiar with P2 development, so feel free to correct me if I'm wrong. But, the original P1 vastly outperformed the first arduinos, and yet it still is less popular. Soon, the P2 will be even more powerful than low-end ARMs, yet the atmel-based arduinos are still the most popular mcus today, because performance isn't the issue. So, here are some ideas I have (based off the success of arduino) to help ensure the P2 is commercially successful:
(And yes, I realize the Arduino is not fully open-source, but the open-source portion was a major factor in its popularity. So, I bring up the Propeller's open-source Verilog as a potential advantage.)

1: Replace spin with C/C++. Spin is nice, but the customer just reads that as "random proprietary programming language". If C/C++ (or Java) was advertised as the default language, then that would expand the userbase considerably. I know C is currently available for the P1, but that wasn't until a while after the original release and even today Spin is still considered the "main" language. For example, lots of people buy arduinos to learn C, but for that use case the P1 is not an obvious choice at all.

2: Use Github/other FLOSS hosting. I know the P2 is supposed to be community-developed... But where's the github? I just checked Parallax's github and didn't find anything for the P2. Making the P2 open-source is awesome, but right now the only people who will find it are forum users who know about the download link. It's in the one place where a competitor would definitely look, but a casual open-source dev won't.

3: Partner with other chip manufacturers. For example, if the P2 has a BSD-style license, then you can keep it open-source while getting royalties. I'm sure there are several international companies that would be interested in a multi-core MCU that doesn't require an advanced manufacturing process. I can think of several countries that are pushing for indigenous manufacturing and are perfect for this.

4: Capitalize on open-source. Partnering with Puri.sm to include the P2 as an embedded controller in their laptops/phone, or getting RYF certification from GNU are just two options off the top of my head. At the very least, some members of the unix community will prefer it for that reason alone, if you can advertise it to them.

5: Feel free to add other ideas... I'm sure there's more lessons to learn from the success of Arduino


Anyway, I hope nothing here came off as rude, and if you think I'm wrong about something just let me know. But my point is, if the P2 is handled the same way as the P1, then I don't think it will make a big difference in the market. The market isn't after performance, but familiarity and usability. And it's only a matter of time before we get 8-core ARM microcontrollers anyway, and at that point the P2 would have even lost its performance advantage.

I guess I'm saying, now that the P2 is almost here, I hope parallax is busy working on making an IBM PC-like ecosystem for it, instead of a Mac-like one. What are your thoughts? Am I wrong about something? Is Parallax working on this?

Cheers!

Comments

  • jmgjmg Posts: 13,928
    edited 2019-05-04 - 19:55:33
    gnulligan wrote: »
    1: Replace spin with C/C++. Spin is nice, but the customer just reads that as "random proprietary programming language". If C/C++ (or Java) was advertised as the default language, then that would expand the userbase considerably. I know C is currently available for the P1, but that wasn't until a while after the original release and even today Spin is still considered the "main" language. For example, lots of people buy arduinos to learn C, but for that use case the P1 is not an obvious choice at all.

    2: Use Github/other FLOSS hosting. I know the P2 is supposed to be community-developed... But where's the github? I just checked Parallax's github and didn't find anything for the P2. Making the P2 open-source is awesome, but right now the only people who will find it are forum users who know about the download link. It's in the one place where a competitor would definitely look, but a casual open-source dev won't.

    Welcome.
    You probably need to look at this
    https://forums.parallax.com/discussion/164187/fastspin-compiler-for-p2-assembly-spin-basic-and-c-in-one-compiler/p1
    https://github.com/totalspectrum/spin2gui/releases

    and this
    https://forums.parallax.com/discussion/comment/1469384/#Comment_1469384
    and
    https://forums.parallax.com/discussion/comment/1469970/#Comment_1469970
    https://sourceforge.net/projects/catalina-c/files/releases/3.15/Catalina_3.15_Setup.exe/download
    gnulligan wrote: »
    3: Partner with other chip manufacturers. For example, if the P2 has a BSD-style license, then you can keep it open-source while getting royalties. I'm sure there are several international companies that would be interested in a multi-core MCU that doesn't require an advanced manufacturing process. I can think of several countries that are pushing for indigenous manufacturing and are perfect for this.
    That's more a business model question, and first you need a proven working example.
    The RISC-V is probably a better fit for "countries that are pushing for indigenous manufacturing"


    gnulligan wrote: »
    4: Capitalize on open-source. Partnering with Puri.sm to include the P2 as an embedded controller in their laptops/phone...

    I'm not sure what you imagine here ?
    The P2 is not really a cell-phone processor at all ?


    gnulligan wrote: »
    ... And it's only a matter of time before we get 8-core ARM microcontrollers anyway, and at that point the P2 would have even lost its performance advantage.
    Not really, they are chalk and cheese.

    The RaspPi series boards already outperform P2 on a simple MIPS/MHz yardstick, but they also run a full blown operating system and are poor at hard real time.
    An opening for P2 is to complement those Multi-core ARMs , and even this https://forums.parallax.com/discussion/170100/atomic-pi#latest

    You are right about faster-usage-ramp considerations, which Parallax should be thinking about too...

    My thinking is P2 can do well to leverage off the RaspPi eco-system, and in particular their IO connector.
    If you largely clone the Pi connections, you get instant access to a shipload of already developed expansion products, and you can also plug a P2 into a Pi.

    With that in mind, I'm shuffling a PCB layout I call P2D2Pi, which is a design fork of Peter's very nice P2D2, but with Pi IO connector compatibility.

  • My biggest thoughts towards Arduino’s popularity is that it is much less complex. People see “8 cogs” and internally start freaking out about the parallel processing. Another thing toward that, P1 was and still is very un-orthodox. The parallel logic, which does not feature interrupts seems to overwhelm middle schoolers, who seem to be Arduino’s target group.

    In short, people start with the simpler Arduino and get comfortable, so often, they never change to something like a prop.
    Windows 10 Home:
    Propeller Tool 1.3.2, BASIC Stamp Editor 2.5.4, Javelin Stamp IDE x.x.x, Arduino IDE, PST
    Hardware:
    BASIC Stamp Board of Education, Propeller Board of Education, Propeller Project Board, Propeller Mini

    Me, a programmer in English class, asking for grammar help: “What is the syntax for this statement?”
  • gnulligangnulligan Posts: 2
    edited 2019-05-05 - 01:39:50
    jmg wrote: »
    Welcome.

    Thanks!
    jmg wrote: »

    I think those links you provided actually help illustrate my point. For example, the most recent Spin2GUI release specifically says the following:

    " The Spin and BASIC support is quite complete, but the C compiler is still very much a work in progress, so don't be surprised if things don't work (but please report bugs, that's the only way we can make this better!)"

    Catalina looks slightly better, but it still doesn't provide C++ support. And unlike the (very beginner-friendly) Arduino IDE, Catalina is just a third-party compiler backend, with a separate third-party IDE optional.

    Imagine you're a student learning to program C, or an engineer who wants their weekend project to "just work" instead of learning a new language. Would you choose the Propeller or the Arduino (which is constantly advertised as beginner-friendly and C/C++ programmable)?
    jmg wrote: »
    That's more a business model question, and first you need a proven working example.
    The RISC-V is probably a better fit for "countries that are pushing for indigenous manufacturing"

    Yes of course, a working example is needed first. But the point of my OP was to outline the differences between the Propeller 1 and the Arduino that made the latter more successful, and one of those differences was the ability to get a lot of other manufacturers "on-board" with the Arduino. That's why I mentioned partnerships, especially ones that can use the unique advantages of an open-source CPU.
    jmg wrote: »
    I'm not sure what you imagine here ?
    The P2 is not really a cell-phone processor at all ?

    I meant as an embedded controller. Purism's business model is based entirely around selling open-source hardware (and they have gone to great lengths to ensure their hardware is open-source), so I bring them up as an example of an OEM that might be interested.
    jmg wrote: »
    Not really, they are chalk and cheese.

    The RaspPi series boards already outperform P2 on a simple MIPS/MHz yardstick, but they also run a full blown operating system and are poor at hard real time.
    An opening for P2 is to complement those Multi-core ARMs , and even this https://forums.parallax.com/discussion/170100/atomic-pi#latest

    You are right about faster-usage-ramp considerations, which Parallax should be thinking about too...

    My thinking is P2 can do well to leverage off the RaspPi eco-system, and in particular their IO connector.
    If you largely clone the Pi connections, you get instant access to a shipload of already developed expansion products, and you can also plug a P2 into a Pi.

    With that in mind, I'm shuffling a PCB layout I call P2D2Pi, which is a design fork of Peter's very nice P2D2, but with Pi IO connector compatibility.

    There I was referring to the ARM Cortex M-series, which lack MMUs and are very similar to Propeller Cogs. ARM is evolving very fast (IIRC their real-time R-series now comes in dual-core).

    The P2D2Pi sounds great! That's what I'm talking about- building an IBM PC-like ecosystem. I look forward to seeing it.

    However, hardware isn't everything. The Propeller 1 was great hardware, just like the Propeller 2 is going to be, yet it was outsold by slower competitors with easier software. That's because the customer base is mostly learners and tinkerers, who don't want to learn a new language or deal with a third-party compiler if they don't have to.

    Learners just want to learn programming (so why learn a language that nobody uses?), and tinkerers just want to make their project (so why make it more complicated?) And that's assuming they don't want to use C++, because if they do the choice is already made for them.

    Keep in mind, also, that I'm talking about people who've never used the propeller before. Those people who google "fastest microcontroller" because they need a part for their robofridge. They don't want to learn a new language or deal with third-party software. They just want their robofridge working in the least time possible. So how can we ensure the propeller actually makes sense for them?
  • Oh dear goodness. A language war. Not again! I program for myself. For fun. Moving from C to C++ to C# to Spin to Python to Perl to VB is just not that big a deal to me.The only thing that is different to me is if it is OOP or procedural. When porting from one to the other you have to think about things differently, but porting is absolutely not a big deal. P2 is not going to draw the Arduino crowed. The things they want to accomplish with an Arduino is just a complete waste to do on a P1 or P2. P2 is for those that want to do the things that an FPGA can do, but don't want to dig that far down in the myriad of tools and heavy low level lifting. Smart pins are ideal for this. The P2 needs two things: Documentation and Example code.

    The Smartpins need good documentation and good application notes with example code.
    The Streamer needs good documentation and good application notes with example code.
    The interrupts need good documentation and good application notes with example code.
    The TacOZ needs good documentation and good application notes with examples.
    The monitor needs good documentation and good application notes with examples.
    The SD boot routine needs good documentation and good application notes with examples.

    This all needs to be housed in the P2 Manual. Those first 3 are critical path to success.

    The languages will come. They are already here.

    Terry's Workbench

    Feel the need for speed between your PC's com port and Prop?
    Try the FTDI 245 and the FullDuplexParallel Object.
    Check out my spin driver for the Parallax "96 x 64 Color OLED Display Module" Product ID: 28087
    22FPS video from the P2 on the Parallax "96 x 64 Color OLED Display Module" https://www.youtube.com/watch?v=ja84rf38QHM
  • jmgjmg Posts: 13,928
    edited 2019-05-05 - 05:12:58
    gnulligan wrote: »
    I think those links you provided actually help illustrate my point. For example, the most recent Spin2GUI release specifically says the following:

    " The Spin and BASIC support is quite complete, but the C compiler is still very much a work in progress, so don't be surprised if things don't work (but please report bugs, that's the only way we can make this better!)"

    Catalina looks slightly better, but it still doesn't provide C++ support. And unlike the (very beginner-friendly) Arduino IDE, Catalina is just a third-party compiler backend, with a separate third-party IDE optional.

    Imagine you're a student learning to program C, or an engineer who wants their weekend project to "just work" instead of learning a new language. Would you choose the Propeller or the Arduino (which is constantly advertised as beginner-friendly and C/C++ programmable)?

    That rather depends on if you are a glass half empty person :)
    It is actually very early days on P2, it only just has engineering samples.
    To me, the SW support already there, is very impressive indeed. A lot of high quality work is being done, and it will only get better.

    It has taken Arduino a very long time to get past printf debug, only the very newest Mega4809 model includes an eMDBG link to Atmel development, and there they hit Microchip shuffling resource as they de-emphasise 'invented by atmel' SW, in favour of 'invented by Microchip' SW.
    gnulligan wrote: »
    jmg wrote: »
    Not really, they are chalk and cheese.

    The RaspPi series boards already outperform P2 on a simple MIPS/MHz yardstick, but they also run a full blown operating system and are poor at hard real time.
    An opening for P2 is to complement those Multi-core ARMs , and even this https://forums.parallax.com/discussion/170100/atomic-pi#latest

    You are right about faster-usage-ramp considerations, which Parallax should be thinking about too...

    My thinking is P2 can do well to leverage off the RaspPi eco-system, and in particular their IO connector.
    If you largely clone the Pi connections, you get instant access to a shipload of already developed expansion products, and you can also plug a P2 into a Pi.

    With that in mind, I'm shuffling a PCB layout I call P2D2Pi, which is a design fork of Peter's very nice P2D2, but with Pi IO connector compatibility.

    There I was referring to the ARM Cortex M-series, which lack MMUs and are very similar to Propeller Cogs. ARM is evolving very fast (IIRC their real-time R-series now comes in dual-core).
    There are already ARMs with more than 2 cores, and the blurring comes across the Microcontroller / Microprocessor line.
    A classic MCU has on chip code memory, but more MCUs are loading code from external flash (P1,P2,ESP32..)
    There are MCUs with ECC memory, and lock-step dual cores, for high reliability applications.


    gnulligan wrote: »
    The P2D2Pi sounds great! That's what I'm talking about- building an IBM PC-like ecosystem. I look forward to seeing it.
    (oops, now attached)
    Attached is a PDF of the current state... it looks very like P2D2, because I only changed what was needed to support 2 x Pi headers, and improve the noise/thermal behaviour.
    To give access to all P2 IO, 4 pins that are GND on Pi, are P2io, with solder-bridge jumpers ( if users worry about accidental enable of an unused P2 pin)
    It targets 4 Layer PCB, (mainly for noise floor and thermal reasons), with the ability to fall-back to 2 layers, tho on a compact board 4L is a small incremental cost.
    On New Silicon, I think it is important to have the best possible hardware base, rather than one a few cents cheaper.

    gnulligan wrote: »
    However, hardware isn't everything. The Propeller 1 was great hardware, just like the Propeller 2 is going to be, yet it was outsold by slower competitors with easier software. That's because the customer base is mostly learners and tinkerers, who don't want to learn a new language or deal with a third-party compiler if they don't have to.

    Learners just want to learn programming (so why learn a language that nobody uses?), and tinkerers just want to make their project (so why make it more complicated?) And that's assuming they don't want to use C++, because if they do the choice is already made for them.

    Keep in mind, also, that I'm talking about people who've never used the propeller before. Those people who google "fastest microcontroller" because they need a part for their robofridge. They don't want to learn a new language or deal with third-party software. They just want their robofridge working in the least time possible. So how can we ensure the propeller actually makes sense for them?

    They are going to have to learn something new, because the P2 hardware is quite different from what they are used to.
    The language is a smaller part of the puzzle, and they can already choose a Basic (Similar to FreeBasic), 2 flavours of C, various outputs of Spin, and Python, and also Assembler.
    ie pick what they are most used to already.

    Given Chip expects Assembler use to be significant, personally I'd like to see a clean up pass done to improve some of the hieroglyph soup.
    The Conditional compile and nice clean in-line asm support already in those above Languages, can reduce the amount of pure P2 ASM actually needed.

    Let's look at Arduino's in-line assembler, from a web example
    void setup() {
      Serial.begin(9600);
     
      asm (
        "ldi r26, 42  \n" //load register r26 with 42
        "sts (a), r26 \n" //store r26 into memory location of variable a
      );
     
      Serial.print("a = "); Serial.println(a);
    }
    
    
    Ugh. That baggage is forced on them by gcc, so they live with it... but adding quotes and /n" to every line of assembler, is strong discouragement from doing too much of it.


    Still to come, are GUI level Step/break debug for P2, but the pieces are in place for that.
    The EFM8UB3 Peter has placed on P2D2, has plenty of code space for a good DEBUG USB pathway.

    That took Arduino many, many years.. (and actually came from Atmel) :)
  • Wuerfel_21Wuerfel_21 Posts: 353
    edited 2019-05-05 - 02:59:18
    Note: GCC (or rather, C++11) supports a much nicer syntax. If I remember correctly, it goes like this:
    void setup() {
      Serial.begin(9600);
     
      asm (R"(
        ldi r26, 42   #load register r26 with 42
        sts (a), r26  #store r26 into memory location of variable a
      )");
     
      Serial.print("a = "); Serial.println(a);
    }
    
    Downside: No C-style comments allowed, have to use GAS comments
  • gnulligan wrote: »

    However, I think we can all agree that the world has changed since the P1 was announced, and some opportunities might have been missed. For example, the arduino craze started around the same time the P1 was released.

    Arduinos are programmed in C, and the open-source nature of the boards inspired dozens of clones, kind of like the IBM PC. I don't think the P1 really compares with most ARMs, since those are generally meant for Linux/MMU applications and the P1 is MMU-less, so that's why I bring up arduino as the main alternative.

    Arduino was first created around 2003 with Wiring and the first ATmega168 microcontroller as a lower cost option to the BASIC Stamp at the time. I believe the P1 came out in 2006.

    Most of the coding with Arduino, especially with the libraries is done in C++, but the whole Arduino platform is a combo of C and C++.

    With regards to ARM processors, following the partnership between Arduino and ARM Holdings, many of the current line of Arduino boards have a SAMD ARM processor, so you would have to compare with then as well. Also, there is an FPGA based Arduino board as well.

    As far as why Arduino became as popular as they did, I believe it was more inline with the tools that were offered. The Arduino IDE was an easy entry point for most and made it easier to move to other C/C++ based platforms. Plus, with a ton of vendors creating their own Shields with associated code, it offered many options to users. However, this does come at a price since there tends to be conflicts when vendors use the same namespace name or label their libraries the same causing issues when adding multiple device libs to a project. Also, some vendors will decide to initialize all of the GPIO ports when their code begins thus potentially causing a conflict with other libs. This has been an issue I have run into too many time.

    However, the whole Arduino brand is facing an identity crisis and has gone through a number of infighting issues as well as side channel deals between the original owners. I believe there was, or still is, two Arduino companies, so which is the original one is beyond me. Then there is the whole lying about his education by Federico Musto claiming to have a PhD from MIT and such. It will be interesting to see where the whole Arduino thing ends up in another 5 years or so.

    So, yeah, I agree that Parallax with the P2 can learn a lot from the whole Arduino thing. Hopefully they do not follow the same path as Arduino and have great success with the P2 just being Parallax. I'm certainly hoping they will.


    @jmg "With that in mind, I'm shuffling a PCB layout I call P2D2Pi, which is a design fork of Peter's very nice P2D2, but with Pi IO connector compatibility."
    This is an awesome idea and I can't wait to give it a whirl.
  • I can't really add anything to that but I will. The chap you refer to was forced out, and his side was glommed up by the original company. It was indeed resolved. That is according to the folks at Hack A Day who reported on this several years earlier. However, even with that companies external identity problems resolved, they still are going through one internally. It's their website, its gone through far more changes than the one for Parallax in the same time period. Now the Parallax one is easier to work with, and theirs is harder. Their Forum is worse, this one is better.

    Oh and the IDE they use has become far more difficult to use. The ones for the P1 including Blockly are easier to use.

    For my part when the P2 does finally start shipping I shall certainly want to try it. I can't currently try any of the eval functions as I do not have access to any of the specialty items behind that.
  • I can't really add anything to that but I will. The chap you refer to was forced out, and his side was glommed up by the original company. It was indeed resolved. That is according to the folks at Hack A Day who reported on this several years earlier. However, even with that companies external identity problems resolved, they still are going through one internally. It's their website, its gone through far more changes than the one for Parallax in the same time period. Now the Parallax one is easier to work with, and theirs is harder. Their Forum is worse, this one is better.

    Oh and the IDE they use has become far more difficult to use. The ones for the P1 including Blockly are easier to use.

    For my part when the P2 does finally start shipping I shall certainly want to try it. I can't currently try any of the eval functions as I do not have access to any of the specialty items behind that.

    Federico Musto stepped down but still owned 50% of Arduino but I am not sure if he was forced to give that up. The education thing came about from an interview by Limor Fried from Adafruit who herself attended MIT. The other issue was when he apparently pulled many of the Open source licenses, schematics, and code from the Arduino site. It's tough to claim to be open source when you don't open your source.

    As far as IDEs are concerned, the Arduino IDE continues to be updated and has support for many Arduino and non Arduino branded boards and shields plus there is a locally installed version as well as the online Create version; although the online Create IDE has a ton of issues. Plus, Arduino has made an attempt at a Cloud offering with their Arduino IoT Cloud which is in Beta and has limited support. There are a number of Block type of Development Environments for the Arduino Platform along with support in Visual Studio Code, Eclipse and Atmel Studio. However, with so much to support and update, issues are bound to occur.

    Parallax seems to follow the whole K.I.S.S. methodology, plus has an awesome community, thus eliminating many of the issues that would otherwise be seen.
  • Uh huh.
    Did you look for the article/blog entry on Hack A Day? I know for example as you do, that Limor went to MIT. But thanks to the business model that Arduino created, practically anyone is free to create a clone board, as long as they say so, I have several here, including ones I've not built yet.

    And yes their IDE is under constant update, and sadly its more difficult to use. The P1 IDE seems to have stabilized with a current version, and of course we have open source examples.

    But let us not forget what I brought up regarding the Forum issues.....
Sign In or Register to comment.