Author Topic: Looking for set of MCU devkits representative of industry and hobbyists  (Read 10836 times)

0 Members and 1 Guest are viewing this topic.

Offline teijoTopic starter

  • Newbie
  • Posts: 5
  • Country: fi
Hello EEVblog forum, my first post here! :)

Having had background in software only, I've been lucky to have a chance to work closer to hardware for the past year and a half. It has also sparked my interest in electronics again which I haven't really visited since elementary school (loved to tinker some electronics by the book, literally).

I have so far seen only a slice of the embedded ecosystem and I'd be now very interested to get a better general understanding of the full diversity of MCUs. There are many vendors with multiple MCU families and architectures, so I'd be interested to hear what you see as the most popular and trusted models from different vendors that are in active use today (when starting to develop something new).

I feel I have a reasonable understanding of the TI MSP430 series and their tool chain, having worked with 4 MCU variants from them, but that's about it. I've also touched Atmel and their tool chain with the SAM series, and Xilinx ZYNQ SoC, but I'm not really interested in anything running over ten(s) of MHz at this time.

From my experience so far, I feel that TI and Atmel provide some basic code samples, but not something to seriously build on top of (except for the device headers). The goal of this project is for me to better understand the differences between vendors, their tool chains, and their approach on supporting the software development for their chips. As the side effect of learning, I'm hoping to have some good open source abstractions and drivers for the most common use cases that could then be used as a baseline for developing business logic on top of. If that ever gets realized on some level, having focused on the most common MCU devkits would probably benefit the largest number of people.

If you happen to know similar projects / frameworks, open source or commercial, I'd be interested to hear of them too.

Specs:

  • Models that have cheapish (under $50) devkits à la TI's LaunchPad series (preferably integrated programming) so that getting a set of, say, 6 kits, doesn't empty my pockets too much to start with
  • Variety of brands
  • MCU should have proper development support from the vendor, e.g. I worked a while with TI MSP430 FR5739 which you basically had to use mspdebug to program since TIs own tools didn't properly support the old LaunchPad. Switch to FR5969 was a blessing, especially from workflow POV
  • Variety of architectures and capabilities
  • Weight on how common the MCU is

What do you think? Especially do you see inherent problems in trying to provide common abstraction in embedded environment, regardless of how lightweight it might be?
 

Offline colorado.rob

  • Frequent Contributor
  • **
  • Posts: 419
  • Country: us
 :popcorn:
 
The following users thanked this post: Jeroen3

Online NorthGuy

  • Super Contributor
  • ***
  • Posts: 3143
  • Country: ca
Especially do you see inherent problems in trying to provide common abstraction in embedded environment, regardless of how lightweight it might be?

I certainly don't know of all MCUs. I know more about Microchip PICs than the others. There are over 1500 different PICs, all with their own idiosyncrasies, and providing common abstractions would be really hard.

Abstractions are very good for software. You write a program for Windows and you cannot rely on particular hardware because you want it to run on any hardware where Windows can run. So, the OS abstracts the hardware and you then work with OS, not with hardware.

The situation is quite different in embedded development (at least in small-ish embedded). The very reason the MCU and its software exists is because it is attached to particular hardware you're designing. Abstracting the hardware engineer from his hardware might not be such a good idea.

 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
I would suggest Hitachi SH1-3, but ... since those chips are very rare, it's more an hack proposal like ... finding a 1998-GPS with an Hitachi chip aboard, hack it, and take the control.

It costs 5-10 euro from surplus sellers (usually on ebay) and it offers a lot weeks of fun. Well, gcc is .... not exactly well supported, therefore it also offers several weeks of fighting against the GNU toolchain.

Not so bad, aint'it?  :D
 

Offline teijoTopic starter

  • Newbie
  • Posts: 5
  • Country: fi
Thanks for the great responses so far, I'll dig deeper into them a bit later.

Regarding the level of abstraction, I'm mostly interested to understand the HW interfacing differences among different MCUs and see how well more declarative and functional programming approaches would fit into bare metal and driver development.

Will definitely check out the available operating system level abstractions to see where they draw the line and what kind of device driver interfaces they use. Out of lightweight operating systems I've only had experience with FreeRTOS, and building anything on top of that I'd consider too high level in the scope of this project.
 


Online wraper

  • Supporter
  • ****
  • Posts: 16849
  • Country: lv
You could get some silicon labs dev board (very fast 8051 core). For example https://www.element14.com/community/docs/DOC-75767/l/efm8ub1-universal-bee-8-bit-mcu-starter-kit-for-usb. Includes Jlink debugger, can debug/program external devices as well. Those are not popular with hobbyists but are really popular in industry. These MCUs have very interesting peripherals and are very cheap. They also have ARM dev boards at similar price but I believe their ARM MCUs aren't as popular in industry as 8051. Silabs also offers completely free IDE, and free licence for Keil compiler. Code examples are given as well.
List of 8 bit dev boards:
http://www.silabs.com/products/development-tools/mcu/8-bit#starter
« Last Edit: July 13, 2017, 01:54:32 pm by wraper »
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
(
p.s.
Oh, I have two 8051 boards and an old (but brand new) PIC-KIT2 for sale.
)
 

Offline flochlandla

  • Newbie
  • Posts: 6
  • Country: at
Regarding MSP430:
Take a look to Olimex (www.olimex.com). It's a bulgarian company which has a big offer for starter kits, header boards, etc.
Unfortunately they stopped providing new DLLs for their MSP-debugger, i.e. it does not work with the latest IAR workbench  :(

I think one of the most powerful starter kits they provide is this one:
https://www.olimex.com/Products/MSP430/Starter/MSP430-5438-STK/
 

Offline teijoTopic starter

  • Newbie
  • Posts: 5
  • Country: fi
I'm surprised of no mention of AVR yet. It's one of the few chips I had heard of even before getting to learn more about MCUs. Coincidence or what's that about?
 

Offline teijoTopic starter

  • Newbie
  • Posts: 5
  • Country: fi
Take a look to Olimex (www.olimex.com). It's a bulgarian company which has a big offer for starter kits, header boards, etc.
Unfortunately they stopped providing new DLLs for their MSP-debugger, i.e. it does not work with the latest IAR workbench  :(

Thanks for the Olimex pointer, looks like they offer plenty of stuff to tinker with :)

Degrading/ed support sucks. I'm trying to avoid any chips/kits that have any complications with the development workflow. I don't want to waste my time on another MSP430FR5739.
 

Online NorthGuy

  • Super Contributor
  • ***
  • Posts: 3143
  • Country: ca
Degrading/ed support sucks. I'm trying to avoid any chips/kits that have any complications with the development workflow.

No matter what you use, you may hit problems with "development workflow". One guy hits problems with ABC and swears XYZ is better. Another one hits problems with XYZ and swears ABC is better. In reality, all of them are more or less the same.
 

Offline tggzzz

  • Super Contributor
  • ***
  • Posts: 19469
  • Country: gb
  • Numbers, not adjectives
    • Having fun doing more, with less
Even if you never use these devices, understanding their philosophy will improve the way you "think about" and architect realtime systems. The philosophy has a good theoretical pedigree, was first defined and implemented in the 70s, and continues to be incorporated into new languages and hardware.

The XMOS xCORE devices are interesting because they have a set of unique characteristics:
  • cycle-accurate deterministic timing, which is critical for hard realtime systems whatever their speed
  • FPGA-like I/O structures easily and simply controlled by software, e.g. SERDES up to 250Mb/s, externally/internally clocked, strobed/master-slave
  • timed i/o, e.g. this input occurred at time t, or do that output at time t, where t is defined in clock cycles, where a cycle can be 4ns
  • encroaching into FPGA territory in ways that are impossible for conventional device such as ARMs etc
  • multicore - up to 32 32-bit 100MIPS cores on a chip, extendable across chips
  • parallelism isn't a bolt-on afterthought; it has solid hardware support and the programming language (xC) is a good example of Tony Hoare's 40 year old CSP concepts (many other modern languages are borrowing concepts from CSP, e.g Go and arguably Rust)
  • no need for an RTOS!
  • free Eclipse based development environment

A simple example of their power: they can implement a 100Mb/s MII ethernet interfaces, and USB interfaces in software; try that with any other processor! (Some of their chips also have onboard hardware USB and Ethernet interfaces)

£12 devkit: https://www.digikey.co.uk/en/product-highlight/x/xmos/startkit (or Farnell)
30000 ft concepts: http://www.xmos.com/published/xcore-architecture-flyer?version=latest
Very readable programming tutorial : https://www.xmos.com/support/tools/programming?component=17653
There are lies, damned lies, statistics - and ADC/DAC specs.
Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
Having fun doing more, with less
 
The following users thanked this post: NivagSwerdna

Offline teijoTopic starter

  • Newbie
  • Posts: 5
  • Country: fi
£12 devkit: https://www.digikey.co.uk/en/product-highlight/x/xmos/startkit (or Farnell)
30000 ft concepts: http://www.xmos.com/published/xcore-architecture-flyer?version=latest
Very readable programming tutorial : https://www.xmos.com/support/tools/programming?component=17653

The xCORE MCUs looked very interesting. With that pricing I'll definitely put one kit into my shopping basket, even if it might not be in mainstream use :)
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
cycle-accurate deterministic timing, which is critical for hard realtime systems whatever their speed

I have been designing a softcore with this characteristic for four years. I have recently committed a revision five, not so good, but not so bad, I mean ... in the "multi cycles" version (not pipelined) every core cycle, except some arithmetic operations (e.g. MUL/DIV/MAC) cycles and load/store cycles whose characteristics depends on wait states, is composed exactly by ten clock cycles and every exception takes only 20 clock cycles to switch into a completely isolated context, so, no need to spend more time saving registers, you are all done!

The core is thin enough to fit into a spartan3e-200 fpga with 45% resource utilization (well, it consume a lot of Block RAM as well as Distributed RAM), therefore on spartan3e-500 you can have up to four cores with the same characteristics (already tried, it does fit, and it works) :D

The pipelined version is a branch of research which is good only because it improves the CPI, but it's not efficient as a five-stages-MIPS (e.g. R2K), and it is bad because it introduces the need of having a branch prediction, pipeline stalls (bubbling? nopping? oh well ...).

At the end, it makes the design more complex, especially for the built in debugger, and it uses more resources on the fpga, and the whole design has been made with the intention of being more friendly than a classic RISC to be programmed in assembly.

In short, I will confirm the cycle-accurate feature, and for the next step ... I'd like to "grab & copy" some good concepts from XMOS.
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
encroaching into FPGA territory in ways that are impossible for conventional device such as ARMs etc[/li][/list]

what do you mean with that?

p.s.
in my case, cores have a simple "interrupt driven hardware mailbox unit" which makes them to communicate.  On spartan3e-500 I have enough resources to implement it.
 

Offline tggzzz

  • Super Contributor
  • ***
  • Posts: 19469
  • Country: gb
  • Numbers, not adjectives
    • Having fun doing more, with less
    encroaching into FPGA territory in ways that are impossible for conventional device such as ARMs etc[/li][/list]

    what do you mean with that?

    It is the combination of the features I mentioned; see XMOS' literature for more details.

    (BTW, I forgot to mention the "wait for port to eq/neq a value" in combination with the other port capabilities, and multiple programmable clocks).

    Quote
    p.s.
    in my case, cores have a simple "interrupt driven hardware mailbox unit" which makes them to communicate.  On spartan3e-500 I have enough resources to implement it.

    Interrupts instantly destroy the possibility of knowing how long a piece of code will take to execute, thus losing the cycle-accurate attribute. The same is true for any form of cache or statistical prediction logic.

    Let's consider a couple of use-cases to illustrate possibilities:
    • using only the general purpose built-in i/o facilities and software, make a frequency counter by counting the transitions on two input pins (fIn and fReference). Do that while reporting results up a USB link to a PC and interacting with front panel controls
    • LCDs require zero DC bias across their segments, which implies guaranteed i/o waveform timings; that's why most people use a display module with inbuilt controller. With the XMOS devices that can be done in software with a small part of one chip
    There are lies, damned lies, statistics - and ADC/DAC specs.
    Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
    Having fun doing more, with less
     

    Offline legacy

    • Super Contributor
    • ***
    • !
    • Posts: 4415
    • Country: ch
    Interrupts instantly destroy the possibility of knowing how long a piece of code will take to execute, thus losing the cycle-accurate attribute. The same is true for any form of cache or statistical prediction logic.

    Well, on { D, I }, { I } is the worst since its cache miss makes you unable to estimate how long a piece of code will take to execute, the best you can do is considering the worst of the possible foreseeable circumstances when you have to reload the cache and access the (slow) memory to do so.

    In my case there is no cache, and all the fetches happen within the same time.

    Btw, how can you make cores able to communicate each others if you don't use an interrupt driven mail box?

    Another possible solution is that each cpucore keeps looping on a shared memory waiting for data. It implies TAS instructions to implement software semaphore, as well as read-modify-write cycles to save the coherence. In my case, since I have fours cores connected through a bar-matrix, I can implement a quadri-port-memory, but it's not a good idea on fpga since BRAM is usually dual port, thus I abandoned it since it implies a lot of resource wasted.

    A hardware mail box looks easier and more efficient. Indeed, in avionics, we have a lot of hardware mail boxes in our fly-boards.

    I still have to see what has been implemented in XMOS chips to allow their cores to communicate.
    « Last Edit: July 17, 2017, 02:40:55 pm by legacy »
     

    Offline Sal Ammoniac

    • Super Contributor
    • ***
    • Posts: 1668
    • Country: us
    • cycle-accurate deterministic timing, which is critical for hard realtime systems whatever their speed

    Cycle-accurate deterministic timing is nice to have when designing hard real-time systems, but it's not a necessity. I've designed plenty of hard real-time systems over the years that did not have cycle-accurate timing.
    Complexity is the number-one enemy of high-quality code.
     

    Online NorthGuy

    • Super Contributor
    • ***
    • Posts: 3143
    • Country: ca
    Cache certainly destroy real-timeliness and creates lots of problems in testing. But highly pipelined cores are not very fast without cache. For example, PIC32MZ can run at 200MHz. Their cash-less version PIC32MM only runs at 25MHz. For comparison, dsPIC33EP has a processor designed to run from flash without cache, can run at 70MHz and produces cycle-accurate results.

    Interrupts are not impedance, but rather a means to meat real time requirements. But with one CPU you can meet requirements of only one process - if two things happens at the same time, a single CPU can't deal with both.

    Therefore, a design with multiple cores, each of them performing its own task, is very good for real time. There are few problems though.

    Lots of tasks the MCU is performing are standard. For example, you often will need UART. You can create a core to do UART. However,  low cost MCUs, such as PIC16, already have several UART "cores" and cost much less. So, you often can get by with a small CPU and diverse specialized peripherals. In such case, multicore will be an overkill.

    If you want to do something highly non-standard, then FPGA comes to mind. You can build any numbers of any cores and also make them work really fast. They will run in parallel and will meet real-time requirements perfectly. The only real drawback is cost. To compete with FPGAs, the multi-core designs must be much less expensive than FPGAs. Doesn't seem to be the case.

     

    Offline tggzzz

    • Super Contributor
    • ***
    • Posts: 19469
    • Country: gb
    • Numbers, not adjectives
      • Having fun doing more, with less
    Interrupts instantly destroy the possibility of knowing how long a piece of code will take to execute, thus losing the cycle-accurate attribute. The same is true for any form of cache or statistical prediction logic.

    Well, on { D, I }, { I } is the worst since its cache miss makes you unable to estimate how long a piece of code will take to execute, the best you can do is considering the worst of the possible foreseeable circumstances when you have to reload the cache and access the (slow) memory to do so.

    In my case there is no cache, and all the fetches happen within the same time.

    We agree; to get consistent timing, you have to turn caches off - so why have the bloody things in the first place!

    Quote
    Btw, how can you make cores able to communicate each others if you don't use an interrupt driven mail box?

    RTFXMOSLiterature, understand CSP, and think about what hardware and software is necessary to support it. I have some computers datestamped 8751 that supported it in hardware; I never had an application for them. The XMOS devices are descendants of those processors.

    Quote
    Another possible solution is that each cpucore keeps looping on a shared memory waiting for data.

    Shared memory isn't scalable, even on-chip and definitely off-chip.

    Quote
    It implies TAS instructions to implement software semaphore, as well as read-modify-write cycles to save the coherence. In my case, since I have fours cores connected through a bar-matrix, I can implement a quadri-port-memory, but it's not a good idea on fpga since BRAM is usually dual port, thus I abandoned it since it implies a lot of resource wasted.

    A pain indeed. Plus, when there's nothing for a core to do, spin loops waste power doing nothing. Much better to sleep until the relevant event occurs. XMOS is quoting event to processor handling the event latencies of <100ns. Obviously that is presuming the processor is waiting for the event to occur.

    Quote
    A hardware mail box looks easier and more efficient. Indeed, in avionics, we have a lot of hardware mail boxes in our fly-boards.

    Yup. You need the hardware to make it efficient, and the software languages to be able to use it. XMOS has both: xCORE and xC.

    Quote
    I still have to see what has been implemented in XMOS chips to allow their cores to communicate.

    RTFDS :) You will find it worthwhile.

    You may even note echoes of CSP in the way systems are architected.
    There are lies, damned lies, statistics - and ADC/DAC specs.
    Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
    Having fun doing more, with less
     

    Offline tggzzz

    • Super Contributor
    • ***
    • Posts: 19469
    • Country: gb
    • Numbers, not adjectives
      • Having fun doing more, with less
    Cache certainly destroy real-timeliness and creates lots of problems in testing. But highly pipelined cores are not very fast without cache. For example, PIC32MZ can run at 200MHz. Their cash-less version PIC32MM only runs at 25MHz. For comparison, dsPIC33EP has a processor designed to run from flash without cache, can run at 70MHz and produces cycle-accurate results.

    Well, if you come from an x86/ARM background and can't think outside that box, then I suppose you are right. But XMOS has built on what their designers were doing 30 years ago - so your experience is misleading you as to what is practical!

    The xCORE devices are 32-bit 10ns cycle time and are quoted at up to 4000MIPS for a 32-core chip. If that isn't enough, the on-chip comms hardware and software also work between chips - so 32 cores and 4000MIPS isn't the limit.

    The top-of-the range processor costs $31 in one-off quantities. Cheapest is £4.50, 250 off.
    FFI see https://www.digikey.com/products/en/integrated-circuits-ics/embedded-microcontrollers/685?FV=fffc0370%2Cffe002ad%2C1f140000&mnonly=0&ColumnSort=-143&page=1&stock=0&pbfree=0&rohs=0&cad=0&datasheet=0&nstock=0&photo=0&nonrohs=0&newproducts=0&quantity=&ptm=0&fid=0&pageSize=25

    Quote
    Interrupts are not impedance, but rather a means to meat real time requirements. But with one CPU you can meet requirements of only one process - if two things happens at the same time, a single CPU can't deal with both.

    Therefore, a design with multiple cores, each of them performing its own task, is very good for real time. There are few problems though.

    Not really. Interrupts are one way of doing that, but they come with significant disadvantages in hard realtime applications. A clear example is the latency required to notice an input has changed, then  save/restore processor and RTOS state.

    Other mechanisms avoid those problems. (xCORE latency <100ns :) )

    Quote
    Lots of tasks the MCU is performing are standard. For example, you often will need UART. You can create a core to do UART. However,  low cost MCUs, such as PIC16, already have several UART "cores" and cost much less. So, you often can get by with a small CPU and diverse specialized peripherals. In such case, multicore will be an overkill.

    Yes and no; it depends on the combination of I/O devices an application requires. That can lead to "kitchen sink" chips where much of the (expensive) silicon remains unused in an application.

    Apart from that, UARTs are boringly and trivially slow.  Can a "conventional" processor implement a 100Mb/s ethernet link in software, while also doing other things? Or a USB endpoint? The XMOS devices can - but obviously that isn't always a good choice, so some xCORE devices also have dedicated USB and Ethernet links in them.

    Quote
    If you want to do something highly non-standard, then FPGA comes to mind. You can build any numbers of any cores and also make them work really fast. They will run in parallel and will meet real-time requirements perfectly. The only real drawback is cost. To compete with FPGAs, the multi-core designs must be much less expensive than FPGAs. Doesn't seem to be the case.

    Just so. xCORE devices aren't magic!

    Nonetheless they are pushing into FPGA territory in ways that conventional processors and languages simply cannot.
    There are lies, damned lies, statistics - and ADC/DAC specs.
    Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
    Having fun doing more, with less
     

    Online NorthGuy

    • Super Contributor
    • ***
    • Posts: 3143
    • Country: ca
    The xCORE devices are 32-bit 10ns cycle time and are quoted at up to 4000MIPS for a 32-core chip. If that isn't enough, the on-chip comms hardware and software also work between chips - so 32 cores and 4000MIPS isn't the limit.

    This is an interesting way of measuring performance.

    Other mechanisms avoid those problems. (xCORE latency <100ns :) )

    PIC18 interrupt latency is 125ns ;)

    Quote
    Lots of tasks the MCU is performing are standard. For example, you often will need UART. You can create a core to do UART. However,  low cost MCUs, such as PIC16, already have several UART "cores" and cost much less. So, you often can get by with a small CPU and diverse specialized peripherals. In such case, multicore will be an overkill.

    Apart from that, UARTs are boringly and trivially slow.  Can a "conventional" processor implement a 100Mb/s ethernet link in software, while also doing other things? Or a USB endpoint? The XMOS devices can - but obviously that isn't always a good choice, so some xCORE devices also have dedicated USB and Ethernet links in them.

    This example illustrates my point well. 100BaseT Ethernet controller is cheaper when done in hardware. Software implementations will be more expensive. Thus, when you can do things in hardware, it is more cost-efficient.

    UART may look boring to you, but if you need it what do you do?

    - Small MCUs have hardware modules - very little silicon, low cost, low power.

    - XMOS needs to sacrifice a full core - the one that could do much much more than simple UART. The capabilities get unused, but the core still uses power.

    - FPGA uses a very tiny part of the logic. Xilinx FPGA requires 4 or 5 slices. It is way more silicon that hardware implementation, but it is much less than is needed to build the whole core. And there's no waste - you use only your 5 slices.

    Now imagine you need 3 UARTs, 4 SPI, and I2C, 5 simple PWMs. Each task uses its own core but does very little. The same could've been accomplished by a small MCU with diverse peripheral, or by very small part of FPGA logic. And the cost (in terms of used silicon, power etc.) would be less in both cases.

    So, multi-core sounds like a good idea, but when you look at the economy of things, it really isn't. And you can see how this is reflected in the prices of XMOS devices.

     

    Offline tggzzz

    • Super Contributor
    • ***
    • Posts: 19469
    • Country: gb
    • Numbers, not adjectives
      • Having fun doing more, with less
    The xCORE devices are 32-bit 10ns cycle time and are quoted at up to 4000MIPS for a 32-core chip. If that isn't enough, the on-chip comms hardware and software also work between chips - so 32 cores and 4000MIPS isn't the limit.

    This is an interesting way of measuring performance.

    Fairly standard, and quite relevant when moving away from the old-fashioned single core processors. (And the instructions in each IPS are relatively high level; they certainly aren't microcode!)

    Quote
    Other mechanisms avoid those problems. (xCORE latency <100ns :) )

    PIC18 interrupt latency is 125ns ;)

    Does the IDE guarantee that at compile time? And what is it when it is simultaneously dealing with i/o from a USB link plus a front-panel, plus  a motor, plus control-loop processing, plus data presentation processing, plus some DSP, plus... That's what hard realtime systems have to do.

    With xCORE the IDE guarantees maximum timings, for the entire chip with all its cores. That's "FPGA like"!

    Quote
    Quote
    Lots of tasks the MCU is performing are standard. For example, you often will need UART. You can create a core to do UART. However,  low cost MCUs, such as PIC16, already have several UART "cores" and cost much less. So, you often can get by with a small CPU and diverse specialized peripherals. In such case, multicore will be an overkill.

    Shrug. Anyone can come up with small systems with relaxed non-critical timing. Boring.

    Quote
    Apart from that, UARTs are boringly and trivially slow.  Can a "conventional" processor implement a 100Mb/s ethernet link in software, while also doing other things? Or a USB endpoint? The XMOS devices can - but obviously that isn't always a good choice, so some xCORE devices also have dedicated USB and Ethernet links in them.

    This example illustrates my point well. 100BaseT Ethernet controller is cheaper when done in hardware. Software implementations will be more expensive. Thus, when you can do things in hardware, it is more cost-efficient.

    UART may look boring to you, but if you need it what do you do?

    - Small MCUs have hardware modules - very little silicon, low cost, low power.

    - XMOS needs to sacrifice a full core - the one that could do much much more than simple UART. The capabilities get unused, but the core still uses power.

    No, and no.

    No, it doesn't need to use a full core. In some circumstances it is possible for the compiler to merge tasks onto a single core (see the xC [[composable]] annotation).  Even when not, it is easy to manually interleave processing from several sources in a single core. (Currently I'm using a single core for several independent tasks: UART IO plus protocol, reading front panel controls, and a few other things as well)

    No, it doesn't use power. If a core is waiting for an incoming event (e.g. an input or timeout) then it consumes zero power.

    Quote
    - FPGA uses a very tiny part of the logic. Xilinx FPGA requires 4 or 5 slices. It is way more silicon that hardware implementation, but it is much less than is needed to build the whole core. And there's no waste - you use only your 5 slices.

    Two can play that (rather unenlightening) game, viz: presumably you are either using a tiny part of an FPGA and have an additional processor, or you have a very inefficient soft-processor in the FPGA. Either way is wasteful :)

    Quote
    Now imagine you need 3 UARTs, 4 SPI, and I2C, 5 simple PWMs. Each task uses its own core but does very little. The same could've been accomplished by a small MCU with diverse peripheral, or by very small part of FPGA logic. And the cost (in terms of used silicon, power etc.) would be less in both cases.

    Many of my designs have non-standard IO devices for which there are no standard protocols. xCORE can deal with those without needing extra external hardware; standard MCUs need extra external custom hardware.

    xCORE can even "suck in" some traditional external logic, thus reducing the board cost. A neat example that is simple to explain is LCD processors. They guarantee LCDs have zero DC voltage applied across the segments. You couldn't safely do that in a bog-standard MCU, but the guaranteed timing in an xCORE processor makes it possible.

    Quote
    So, multi-core sounds like a good idea, but when you look at the economy of things, it really isn't. And you can see how this is reflected in the prices of XMOS devices.

    That entirely depends on your application. Don't presume that your limited view of the world encompasses all applications.

    That's reflected in the company's (XMOS's) valuation, in the number of companies that have invested and are continuing to invest in XMOS.
    There are lies, damned lies, statistics - and ADC/DAC specs.
    Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
    Having fun doing more, with less
     

    Offline tggzzz

    • Super Contributor
    • ***
    • Posts: 19469
    • Country: gb
    • Numbers, not adjectives
      • Having fun doing more, with less
    If I just want as high MMACS as possible with as guaranteed timing as possible while being constrained by cost, give me a reason not to use MAX 10 or Cyclone 10 LP? Hardware multipliers, true dual port RAM, on chip configuration (MAX 10) and proven language and IDE.

    I don't know what an MMACS is (a mini hamburger?), so I can' t help you there. I'm not an XMOS employee, so I don't feel any reason to try to persuade you to leave your comfort zone. As for "proven language and IDE", you are clearly unaware of the long history!

    The architectural concepts in the language have a very good pedigree - both theoretical and commercial - having been first developed in the mid 70s, i.e. 40 years ago. FFI, see Tony Hoare's Communicating Sequential Processes (CSP). (Yes, that Tony Hoare, of Quicksort, Dining Philosophers, null references, Z, formal methods fame!)

    The first language and highly scalable parallel processors (OCCAM and the Transputer) were developed in the mid 80s, i.e. 30 years ago. Some of the hardware concepts are so good they keep being reinvented over the decades, e.g. in some of the Texas TMS320 chips. Modern non-embedded languages are beginning to pick up on its concepts - because they have been proven to be sound and practical over the decades.

    The xCORE processors and xC language are direct descendents of OCCAM and the Transputer, by some of the same people.

    The IDE is Eclipse, and the compiler is LLVM, and the debugger is GDB. They seem to have a reasonable pedigree.

    So I really don't think that the language and IDE are as much of a problem as you leaving your comfort zone.

    Moores law is at an end. Multicore computing is everywhere. C won't cut it for long, and will gradually become less important, in the same way that Cobol and C++ are. Unless you are at the end of your career, you are going to have to leave your comfort zone. Might as well do it with something that has a solid pedigree forged over the decades.
    There are lies, damned lies, statistics - and ADC/DAC specs.
    Glider pilot's aphorism: "there is no substitute for span". Retort: "There is a substitute: skill+imagination. But you can buy span".
    Having fun doing more, with less
     


    Share me

    Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
    Smf