I'm fairly certain that Ryan got some of these terminologies wrong. A microprocessor is the processor chip itself. A microcontroller is the processor chip on a break-out board, a-la the Teensy or the Arduino. And the Raspberry Pi is an example of an SoC (System on a Chip) on a break-out board, which I suppose is a type of more advanced microcontroller. That's at least the terminology I got taught when I started doing embedded stuff years before the Raspberry Pi was even a thing.
Although a lot of people consider e.g. an Arduino a microcontroller (while meaning the whole board) I have to completely disagree here. AFAIK there is no strict rule for distinction between microcontrollers and microprocessors but being soldered to a breakout board most certainly is not. E.g. having a MMU (Memory Management Unit) is considered to be a feature that only microprocessors have, while microcontrollers do not. All ARM Cortex-M processors lack a MMU, while all Cortex-A processors have one. Cortex-M processors are generally considered to be "microcontrollers" (therefore the M), while Cortex-A processors are considered to be "application processors" (i.e. microprocessors). In this sense the Raspberry Pi is a SBC (Single Board Computer), being powered by a SoC (because it contains the GPU as well and for the RPi 1 even the RAM), which consists (among other things) of an application processor. Having a MMU, it is possible to run a "standard" Linux Kernel on this platform, while you can not run Linux e.g. on a Teensy (besides uC-Linux which works around the missing MMU but that is definitely different).
There is a distinction; a microprocessor typically requires separate memory and a bootup process, while a microcontroller may not. Breakout boards can carry either and are most certainly not part of them. Modern SoCs do blur the lines slightly, but it's a rare case indeed to run your entire application code in the cache of one. Note that RPi1 doesn't have the RAM within the SoC, it's a package on package sandwich. Besides this, the talk gives a terribly inaccurate description of a microcontroller also; he speaks of it having a single memory when the very one he points out has three to five types (program flash, internal and external SRAM, data EEPROM, USB RAM), and most definitely runs code in different contexts with interrupts. The interrupts have all the familiar synchronization issues and more, since you can't just yield out of the ISR. There are also SoCs with microcontroller style processors built in, like the Beaglebone Black's PRUs. In a sense, a microcontroller is the archetype of a SoC, having peripherals, processor, memory and often clock sources within one single IC. Some of them are even multicore (XMOS for instance).
I think video gets it right. Both can refer to individual chip or (although not entirely accurate) that chip on a breakout board or SoC. The main distinction MCU's don't need seperate ram, memory and mostly feature a Harvard architecture. For example Cortex-M, AVR. I wouldn't call Pi a microcontroller, it's basically a small computer.
From the first week of a class on microcontrollers: All microcontrollers have a microprocessor in them. What makes it different is that a microcontroller has several peripherals in it as well. These peripherals include Analog to Digital Converters, Digital to Analog converters, timers, and other components that are not general purpose computing machines. An Arduino is not a microcontroller, but a development board for one of the Atmega chips. A Raspberry Pi is not a microcontroller because it doesn't have internal peripherals. A Raspberry pi is really a desktop computer with some of the pins on the CPU configured for GPIO. No ADC, DAC, or timers.
Great talk!
I'm fairly certain that Ryan got some of these terminologies wrong.
A microprocessor is the processor chip itself.
A microcontroller is the processor chip on a break-out board, a-la the Teensy or the Arduino.
And the Raspberry Pi is an example of an SoC (System on a Chip) on a break-out board, which I suppose is a type of more advanced microcontroller.
That's at least the terminology I got taught when I started doing embedded stuff years before the Raspberry Pi was even a thing.
Although a lot of people consider e.g. an Arduino a microcontroller (while meaning the whole board) I have to completely disagree here. AFAIK there is no strict rule for distinction between microcontrollers and microprocessors but being soldered to a breakout board most certainly is not. E.g. having a MMU (Memory Management Unit) is considered to be a feature that only microprocessors have, while microcontrollers do not. All ARM Cortex-M processors lack a MMU, while all Cortex-A processors have one. Cortex-M processors are generally considered to be "microcontrollers" (therefore the M), while Cortex-A processors are considered to be "application processors" (i.e. microprocessors). In this sense the Raspberry Pi is a SBC (Single Board Computer), being powered by a SoC (because it contains the GPU as well and for the RPi 1 even the RAM), which consists (among other things) of an application processor. Having a MMU, it is possible to run a "standard" Linux Kernel on this platform, while you can not run Linux e.g. on a Teensy (besides uC-Linux which works around the missing MMU but that is definitely different).
There is a distinction; a microprocessor typically requires separate memory and a bootup process, while a microcontroller may not. Breakout boards can carry either and are most certainly not part of them. Modern SoCs do blur the lines slightly, but it's a rare case indeed to run your entire application code in the cache of one. Note that RPi1 doesn't have the RAM within the SoC, it's a package on package sandwich.
Besides this, the talk gives a terribly inaccurate description of a microcontroller also; he speaks of it having a single memory when the very one he points out has three to five types (program flash, internal and external SRAM, data EEPROM, USB RAM), and most definitely runs code in different contexts with interrupts. The interrupts have all the familiar synchronization issues and more, since you can't just yield out of the ISR. There are also SoCs with microcontroller style processors built in, like the Beaglebone Black's PRUs.
In a sense, a microcontroller is the archetype of a SoC, having peripherals, processor, memory and often clock sources within one single IC. Some of them are even multicore (XMOS for instance).
I think video gets it right. Both can refer to individual chip or (although not entirely accurate) that chip on a breakout board or SoC. The main distinction MCU's don't need seperate ram, memory and mostly feature a Harvard architecture. For example Cortex-M, AVR. I wouldn't call Pi a microcontroller, it's basically a small computer.
From the first week of a class on microcontrollers:
All microcontrollers have a microprocessor in them. What makes it different is that a microcontroller has several peripherals in it as well. These peripherals include Analog to Digital Converters, Digital to Analog converters, timers, and other components that are not general purpose computing machines.
An Arduino is not a microcontroller, but a development board for one of the Atmega chips. A Raspberry Pi is not a microcontroller because it doesn't have internal peripherals. A Raspberry pi is really a desktop computer with some of the pins on the CPU configured for GPIO. No ADC, DAC, or timers.
Great speech