SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Integrated Computer Solutions Inc. www.ics.com 1
Integrated Computer Solutions Inc. www.ics.com
About ICS
● Founded in 1987
● Largest source of independent Qt expertise in North America
● Trusted Qt Service Partner since 2002
● Exclusive Open Enrollment Training Partner in North America
● Provides integrated custom software development and user experience (UX) design
● Embedded, touchscreen, mobile and desktop applications
● HQ in Waltham, MA with offices in California, Canada, Europe
Boston UX
● Part of the ICS family, focusing on UX design
● Designs intuitive touchscreen interfaces for high-impact embedded and
connected medical, industrial and consumer devices
Integrated Computer Solutions Inc. www.ics.com
What we will cover
3
Overview of MCUs and their features
● Current scope of MCU-based applications
● Convergence of microcontrollers and microprocessors
● Peripherals available and protocols used in today´s projects
Discussion on programming approaches
● Pros and cons of programming bare-metal vs RTOS
● Running Python scripts on MCUs
Challenges in firmware implementation (with example code)
● Application fragments implemented with the ubiquitous ESP32 MCU
● Network-enabled demo that connects to a Mender server and retrieves over-the-air
updates
Integrated Computer Solutions Inc. www.ics.com
Current scope of MCU-based applications
4
● Reduce the cost of the project
○ Hardware costs lower than MPU-based (less peripherals)
○ Firmware development costs equal or higher (more tools available on
embedded Linux, for example Qt, imply less time for implementation)
○ => Bottom line will depend on the expected size of production.
● Solve specific tasks within a system containing other controllers
○ Split the application into smaller subtasks handled by several MCUs
○ Tough timing requirements (high speed protocols)
Integrated Computer Solutions Inc. www.ics.com
Convergence of MCU and MPU fields
5
● Traditional approach
○ MPUs = external storage and runtime memory
○ MCUs = single chip processors
○ MCUs ran customized firmware on devices, MPUs ran OS on desktops with
general-purpose applications
● Today: blurring boundaries
○ Improvements in levels of integration
○ Widespread growth of Linux for devices, i.e. ‘non-computers’
○ Reduced MCU development time.
■ Versatile hardware configuration options
■ Small OS available (mostly FreeRTOS)
■ Hardware abstraction layers (STM32´s CubeMx, for example)
■ Large ecosystems of developers bring many open source code
Integrated Computer Solutions Inc. www.ics.com
STM32CubeMX: MCU setup with auto-code generation
Integrated Computer Solutions Inc. www.ics.com
Today´s peripherals
7
● MCUs embed as many peripherals as possible inside the device, in line with the
targeted market: automotive, consumer goods with low power needs, etc.
○ Timers, counters, Pulse Width Modulation (PWM)
○ Serial ports (USART, SPI, I2
C, CAN, Ethernet, …)
○ ADCs & DACs (analog/digital converters)
○ Radiofrequency transceivers (WiFi, Bluetooth, …)
○ Cryptographic accelerators
● External peripherals:
○ Inertial Measurement Units: accelerometers, gyroscopes, magnetometers
○ Weather sensors: temperature, humidity, pressure
○ Other RF transceivers (Zigbee, 5G, LoRa…)
○ …
Integrated Computer Solutions Inc. www.ics.com
SPI I2
C
8
Serial Peripheral Interface
● Full-duplex
● Originally was 1:1, then extended
to 1:N
Inter-Integrated Circuit
● Bus topology
● Addressing mechanism needed,
peripheral specific
Integrated Computer Solutions Inc. www.ics.com
CAN
9
Controller Area Network
● Bus topology
● No device ID, but message ID
● Frames
○ Data
○ Remote
○ Error
○ Overload
● Bitwise arbitration
● Widespread usage in automobile and
industrial automation
● Higher layers (CANOpen)
Integrated Computer Solutions Inc. www.ics.com
Bare-metal development
10
● Firmware duties:
○ interaction with peripherals/hardware resources (lower level)
○ business logic (higher level)
○ The glue needed to accomplish with the business logic also needs to
provide concurrency
● On bare-metal programming, the operating system is “us” (developers)
○ Concurrency implemented as a round-robin of “never-blocking” functions..
Integrated Computer Solutions Inc. www.ics.com
Bare-metal example
11
void main_loop() {
// ….
while (1) {
// …
slow_status = aSlowTask ( slow_params,
slow_result);
fast_status = aFastTask ( fast_params,
fast_result);
do_business_logic ( slow_status,
slow_params,
slow_result,
fast_status,
fast_params,
fast_result );
}
}
Integrated Computer Solutions Inc. www.ics.com
Example (continued)
12
char neverBLockingTask (char *params, char *result) {
switch (stateMachine) {
//…
case WAIT_ANSWER:
if ( timedOut(&timer) ) {
stateMachine = HANDLE_TIMEOUT;
result = ANSWER_TIMEOUT;
} else {
receiveData( rxBuff + buffLen, *buffLen);
if (*buff_len==0) {
result = ANSWER_PENDING;
} else {
if ( ! fullAnswerReceived( *rxBuff, uint16_t *buffLen) ) {
result = ANSWER_PENDING;
} else {
stateMachine = IDLE;
result = ANSWER_RECEIVED;
}
}
}
break;
// …
} // switch
return result;
}
Integrated Computer Solutions Inc. www.ics.com
Running Python scripts on MCUs
13
● Traditionally, MCUs languages are C and C++
○ compilers, debuggers
● Python popularity
○ Huge community
○ Sintax simplicity
○ Excellent libraries
○ Good for data science/machine learning
○ Zoomers (Generation Z) prefer .py rather than .c
● Micropython: a small Python 3 interpreter and runtime for MCUs (bare-metal)
○ Open Source, MIT License
○ Footprint: 256 kb flash, 16 kb RAM
○ Not as performant as C (Python runtime needs to parse the script)
Integrated Computer Solutions Inc. www.ics.com
Micropython example
14
from machine import SPI, Pin
spi = SPI(0, baudrate=400000)
cs = Pin(4, mode=Pin.OUT, value=1)
txdata = b"12345678"
rxdata = bytearray(len(txdata))
try:
cs(0)
spi.write_readinto(txdata, rxdata)
finally:
cs(1)
Integrated Computer Solutions Inc. www.ics.com
FreeRTOS
15
● Small kernel, it provides concurrency, with a small computing overhead
○ Open source and lightweight: footprint is around 4Kbytes
○ Concurrency implemented through threads.
○ Inter-task communication
■ Queues
■ Semaphores
■ Mutexes
https://www.freertos.org/Inter-Task-Communication.html
Integrated Computer Solutions Inc. www.ics.com
FreeRTOS example
16
Two tasks communicating through queues
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
QueueHandle_t q=NULL;
void app_main()
{
q=xQueueCreate(20,sizeof(unsigned long));
if (q != NULL) {
vTaskDelay(1000/portTICK_PERIOD_MS); // one second delay
xTaskCreate(&producer_task,"producer_task",2048,NULL,5,NULL);
xTaskCreate(&consumer_task,"consumer_task",2048,NULL,5,NULL);
} else {
printf("Queue creation failed");
}
}
Integrated Computer Solutions Inc. www.ics.com
FreeRTOS example (cont)
17
void producer_task(void *pvParameter)
{
unsigned long counter=1;
BaseType_t resultQueue;
while(1) {
resultQueue = xQueueSend( q,
&counter,
(TickType_t )0);
if (pdTrue == resultQueue) {
printf("sent to the queue: %lun",counter);
counter++;
}
vTaskDelay(1000/portTICK_PERIOD_MS);
}
}
void consumer_task(void *pvParameter)
{
unsigned long counter;
BaseType_t resultQueue;
while(1) {
resultQueue = xQueueReceive( q,
&counter,
(TickType_t ) 0);
if (pdTrue == resultQueue) {
printf("received from the queue: %lu n",counter);
}
vTaskDelay(20/portTICK_PERIOD_MS);
}
}
Integrated Computer Solutions Inc. www.ics.com
About ESP32
18
Integrated Computer Solutions Inc. www.ics.com
ESP32 flash management
19
● Bootloader
● Flexible application partition options:
○ flat
○ ota_0/ota_1 (a.k.a. A/B partition)
● Optional user data, called ‘storage’ (can be FAT, or plain)
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x4000,
otadata, data, ota, 0xd000, 0x2000
phy_init, data, phy, 0xf000, 0x1000,
ota_0, app, ota_0, 0x10000, 0x140000,
ota_1, app, ota_1, , 0x140000,
storage, data, fat, , 0x140000,
Integrated Computer Solutions Inc. www.ics.com
A microcontroller challenge…
20
Could a third-party Over-The-Air updates solution like Mender
be implemented on a ESP32 module?
● Mender originally targeted for Linux cards, not MCUs…
● Enough flash space?
Integrated Computer Solutions Inc. www.ics.com
Updating capabilities
21
Integrated Computer Solutions Inc. www.ics.com
Web management console
22
Integrated Computer Solutions Inc. www.ics.com
ESP32: flash partitioning trade-offs…
23
● with the storage partition
○ flash space divided by 3
○ full download before updating
○ uncompress after download feasible
# Name, Type, SubType, Offset, Size,
nvs, data, nvs, 0x9000, 0x4000,
otadata, data, ota, 0xd000, 0x2000
phy_init, data, phy, 0xf000, 0x1000,
ota_0, app, ota_0, 0x10000, 0x140000,
ota_1, app, ota_1, , 0x140000,
storage, data, fat, , 0x140000,
● without the storage partition
○ flash space divided by 2
○ partial downloads, update by chunks
○ needs uncompressed artifacts
# Name, Type, SubType, Offset, Size,
nvs, data, nvs, 0x9000, 0x4000,
otadata, data, ota, 0xd000, 0x2000
phy_init, data, phy, 0xf000, 0x1000,
ota_0, app, ota_0, 0x10000, 0x1F8000,
ota_1, app, ota_1, , 0x1F8000,
Integrated Computer Solutions Inc. www.ics.com
Understanding a 3rd party file format
24
● Based on tar format
○ Header
○ One or more files
packed, including
version, payload type,
checksum.
● Mender utility for artifact preparation
● Compression options (gzip, lzma or none)
Integrated Computer Solutions Inc. www.ics.com
Moving from challenge into action
25
● #1 receive firmware by chunks
○ firmware footprint around 2 Mbytes
○ Receive buffer size tradeoffs
● #2 parse a tar file on the fly
○ At proper offset, obtain the firmware file size
○ At proper offset, get fragments of the firmware file as they
arrive.
Integrated Computer Solutions Inc. www.ics.com
Receive firmware by chunks
26
● Use HTTP Range header
● Tested with cURL first, then implemented on the ESP32 HTTP
API
GET /api/devices/v1/deployments/device/deployments/next?artifact_name=fw_v1_0.mender&device_type=ESP32 HTTP/1.1
Host: docker.mender.io
Range: bytes=0-1023
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/1246515
Content-Length: 1024
...
(binary content)
Integrated Computer Solutions Inc. www.ics.com
Receive firmware by chunks (cont.)
27
if (body_length>0)
{
offset=0;
esp_http_client_handle_t client = esp_http_client_init(&config);
to=-1;
while (1)
{
from=to+1;
if (from>=body_length-1)
{ /* Reached the end of GET answer, run latest OTA API call , for latest bootloader setup */
esp_ota_end(update_handle);
esp_ota_set_boot_partition(update_partition);
result=MENDER_DOWNLOAD_OK;
break;
}
to=from+MENDER_RESPONSE_BUFFER-1;
if (to>body_length-1)
{
to=body_length-1;
}
sprintf (range_string,"bytes=%d-%d", from, to);
esp_http_client_set_header(client, "Range", range_string);
esp_http_client_perform(client);
content_length = esp_http_client_get_content_length(client);
artifact_processBlock( client->response_buffer, ...);
// …
}
}
Integrated Computer Solutions Inc. www.ics.com
Parse a tarball by chunks
28
● Understand the tarball definition
● Understand artifacts structure (tar inside a tar)
● Implement the stream parser.
Integrated Computer Solutions Inc. www.ics.com
Parse a tarball by chunks
29
int artifact_processBlock ( char *inbuff, size_t inbuff_length, size_t *offset, char *outbuff, size_t *outbuff_length, size_t outbuff_size)
{
//….
if (*offset + inbuff_length <= FILESIZE_OFFSET + FILESIZE_LENGTH) { // start of file size reached, end of file size not reached
if (*offset< FILESIZE_OFFSET) { // start of buffer before start of file size
size_t amount = inbuff_length-(FILESIZE_OFFSET-*offset);
memcpy (filesizeBuffer+filesizeBufferLength, inbuff+(FILESIZE_OFFSET-*offset), amount);
filesizeBufferLength += amount;
} else { // start of buffer after start of file size
size_t amount = inbuff_length;
memcpy (filesizeBuffer+filesizeBufferLength, inbuff, amount);
filesizeBufferLength += amount;
}
if (FILESIZE_LENGTH == filesizeBufferLength) {
convertBufferToFileSize (filesizeBuffer, &fileSize);
fileSizeValid = true;
}
*offset += inbuff_length;
result = 0;
goto exit_func;
}
// …..
Integrated Computer Solutions Inc. www.ics.com
Security aspects
30
● Open source version:
○ Transport Secure Layer protocol, TLS
○ Self signed or Certificate Authority
○ Provisioning @ factory plant
● Paid plans
○ Same as above, plus mutual TLS authentication
Integrated Computer Solutions Inc. www.ics.com
Conclusions
● Big MCU/MPUs ecosystems raise the bar for more complex projects
● Modules integrating MCU and radio chips provide quick yet powerful resource
for IoT.
● Cybersecurity concerns for IoT devices.
● Peripherals integrated to the MCU processor. Serial links (SPI, I2C, CAN,
USART) for off-chip peripherals,
● FreeRTOS and similar small footprint simplifies implementation on MCUs
Integrated Computer Solutions Inc. www.ics.com
All images were taken from STM32, Mender’s online documentation.
Questions?
gstola@ics.com

Contenu connexe

Tendances

Newbie’s guide to_the_gpgpu_universe
Newbie’s guide to_the_gpgpu_universeNewbie’s guide to_the_gpgpu_universe
Newbie’s guide to_the_gpgpu_universeOfer Rosenberg
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELinaro
 
The Actor Model applied to the Raspberry Pi and the Embedded Domain
The Actor Model applied to the Raspberry Pi and the Embedded DomainThe Actor Model applied to the Raspberry Pi and the Embedded Domain
The Actor Model applied to the Raspberry Pi and the Embedded DomainOmer Kilic
 
Making an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerMaking an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerICS
 
Design and Optimize your code for high-performance with Intel® Advisor and I...
Design and Optimize your code for high-performance with Intel®  Advisor and I...Design and Optimize your code for high-performance with Intel®  Advisor and I...
Design and Optimize your code for high-performance with Intel® Advisor and I...Tyrone Systems
 
Creating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsCreating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsMediaTek Labs
 
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptx
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptxProjectVault[VivekKumar_CS-C_6Sem_MIT].pptx
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptxVivek Kumar
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureChristian Charreyre
 
Eric Theis resume61.1
Eric Theis resume61.1Eric Theis resume61.1
Eric Theis resume61.1Eric Theis
 
VLSI Training presentation
VLSI Training presentationVLSI Training presentation
VLSI Training presentationDaola Khungur
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Introduction to intel galileo board gen2
Introduction to intel galileo board gen2Introduction to intel galileo board gen2
Introduction to intel galileo board gen2Harshit Srivastava
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Labs
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processorsaccount inactive
 

Tendances (20)

Newbie’s guide to_the_gpgpu_universe
Newbie’s guide to_the_gpgpu_universeNewbie’s guide to_the_gpgpu_universe
Newbie’s guide to_the_gpgpu_universe
 
LAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEELAS16-406: Android Widevine on OP-TEE
LAS16-406: Android Widevine on OP-TEE
 
The GPGPU Continuum
The GPGPU ContinuumThe GPGPU Continuum
The GPGPU Continuum
 
The Actor Model applied to the Raspberry Pi and the Embedded Domain
The Actor Model applied to the Raspberry Pi and the Embedded DomainThe Actor Model applied to the Raspberry Pi and the Embedded Domain
The Actor Model applied to the Raspberry Pi and the Embedded Domain
 
Making an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media ManagerMaking an OpenSource Automotive IVI Media Manager
Making an OpenSource Automotive IVI Media Manager
 
Design and Optimize your code for high-performance with Intel® Advisor and I...
Design and Optimize your code for high-performance with Intel®  Advisor and I...Design and Optimize your code for high-performance with Intel®  Advisor and I...
Design and Optimize your code for high-performance with Intel® Advisor and I...
 
Creating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek LabsCreating a successful IoT product with MediaTek Labs
Creating a successful IoT product with MediaTek Labs
 
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptx
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptxProjectVault[VivekKumar_CS-C_6Sem_MIT].pptx
ProjectVault[VivekKumar_CS-C_6Sem_MIT].pptx
 
Developing an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architectureDeveloping an embedded video application on dual Linux + FPGA architecture
Developing an embedded video application on dual Linux + FPGA architecture
 
Eric Theis resume61.1
Eric Theis resume61.1Eric Theis resume61.1
Eric Theis resume61.1
 
Free / Open Source EDA Tools
Free / Open Source EDA ToolsFree / Open Source EDA Tools
Free / Open Source EDA Tools
 
VLSI Training presentation
VLSI Training presentationVLSI Training presentation
VLSI Training presentation
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
CV_Arshad_21June16
CV_Arshad_21June16CV_Arshad_21June16
CV_Arshad_21June16
 
Security and functional safety
Security and functional safetySecurity and functional safety
Security and functional safety
 
LPC4300_two_cores
LPC4300_two_coresLPC4300_two_cores
LPC4300_two_cores
 
Introduction to intel galileo board gen2
Introduction to intel galileo board gen2Introduction to intel galileo board gen2
Introduction to intel galileo board gen2
 
MediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 WebinarMediaTek Linkit Smart 7688 Webinar
MediaTek Linkit Smart 7688 Webinar
 
Internet of Smaller Things
Internet of Smaller ThingsInternet of Smaller Things
Internet of Smaller Things
 
Case Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded ProcessorsCase Study: Porting Qt for Embedded Linux on Embedded Processors
Case Study: Porting Qt for Embedded Linux on Embedded Processors
 

Similaire à An In-Depth Look Into Microcontrollers

LAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George GreyLAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George Grey96Boards
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLinaro
 
CodeWarrior, Linux; OrCad and Hyperlynx; QMS Tools
CodeWarrior, Linux; OrCad and Hyperlynx; QMS ToolsCodeWarrior, Linux; OrCad and Hyperlynx; QMS Tools
CodeWarrior, Linux; OrCad and Hyperlynx; QMS Toolsdjerrybellott
 
Presentation on Computer Basics and architecture.pdf
Presentation on Computer Basics and architecture.pdfPresentation on Computer Basics and architecture.pdf
Presentation on Computer Basics and architecture.pdfnavikvel
 
Unit i-introduction
Unit i-introductionUnit i-introduction
Unit i-introductionakruthi k
 
George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1Linaro
 
MergeResult_2023_04_02_05_26_56.pptx
MergeResult_2023_04_02_05_26_56.pptxMergeResult_2023_04_02_05_26_56.pptx
MergeResult_2023_04_02_05_26_56.pptxbhaveshagrawal35
 
Embedded platform choices
Embedded platform choicesEmbedded platform choices
Embedded platform choicesTavish Naruka
 
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIM
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIMAn Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIM
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIMjournalBEEI
 
High Performance Computer Architecture
High Performance Computer ArchitectureHigh Performance Computer Architecture
High Performance Computer ArchitectureSubhasis Dash
 
Overview_Of_Intel_x86[1].pdf
Overview_Of_Intel_x86[1].pdfOverview_Of_Intel_x86[1].pdf
Overview_Of_Intel_x86[1].pdfMunazza63
 

Similaire à An In-Depth Look Into Microcontrollers (20)

LAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George GreyLAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George Grey
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
 
K vector embedded_linux_workshop
K vector embedded_linux_workshopK vector embedded_linux_workshop
K vector embedded_linux_workshop
 
Grid computing
Grid computingGrid computing
Grid computing
 
CodeWarrior, Linux; OrCad and Hyperlynx; QMS Tools
CodeWarrior, Linux; OrCad and Hyperlynx; QMS ToolsCodeWarrior, Linux; OrCad and Hyperlynx; QMS Tools
CodeWarrior, Linux; OrCad and Hyperlynx; QMS Tools
 
Presentation on Computer Basics and architecture.pdf
Presentation on Computer Basics and architecture.pdfPresentation on Computer Basics and architecture.pdf
Presentation on Computer Basics and architecture.pdf
 
Unit i-introduction
Unit i-introductionUnit i-introduction
Unit i-introduction
 
George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1George Grey Welcome Keynote - BUD17-100K1
George Grey Welcome Keynote - BUD17-100K1
 
COA.pptx
COA.pptxCOA.pptx
COA.pptx
 
MergeResult_2023_04_02_05_26_56.pptx
MergeResult_2023_04_02_05_26_56.pptxMergeResult_2023_04_02_05_26_56.pptx
MergeResult_2023_04_02_05_26_56.pptx
 
module01.ppt
module01.pptmodule01.ppt
module01.ppt
 
A STUDY OF AN ENTRENCHED SYSTEM USING INTERNET OF THINGS
A STUDY OF AN ENTRENCHED SYSTEM USING INTERNET OF THINGSA STUDY OF AN ENTRENCHED SYSTEM USING INTERNET OF THINGS
A STUDY OF AN ENTRENCHED SYSTEM USING INTERNET OF THINGS
 
Embedded platform choices
Embedded platform choicesEmbedded platform choices
Embedded platform choices
 
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIM
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIMAn Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIM
An Enhanced FPGA Based Asynchronous Microprocessor Design Using VIVADO and ISIM
 
Architecture presentation
Architecture presentationArchitecture presentation
Architecture presentation
 
Main (5)
Main (5)Main (5)
Main (5)
 
Microprocessor
MicroprocessorMicroprocessor
Microprocessor
 
High Performance Computer Architecture
High Performance Computer ArchitectureHigh Performance Computer Architecture
High Performance Computer Architecture
 
Ijetr042175
Ijetr042175Ijetr042175
Ijetr042175
 
Overview_Of_Intel_x86[1].pdf
Overview_Of_Intel_x86[1].pdfOverview_Of_Intel_x86[1].pdf
Overview_Of_Intel_x86[1].pdf
 

Plus de ICS

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfICS
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...ICS
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarICS
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfICS
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfICS
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfICS
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfICS
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up ICS
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfICS
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesICS
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureICS
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt UsersICS
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...ICS
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer FrameworkICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyICS
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoTICS
 

Plus de ICS (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues Webinar
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdf
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdf
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdf
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management Solution
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with Azure
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt Users
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer Framework
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case Study
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoT
 

Dernier

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Dernier (20)

Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

An In-Depth Look Into Microcontrollers

  • 1. Integrated Computer Solutions Inc. www.ics.com 1
  • 2. Integrated Computer Solutions Inc. www.ics.com About ICS ● Founded in 1987 ● Largest source of independent Qt expertise in North America ● Trusted Qt Service Partner since 2002 ● Exclusive Open Enrollment Training Partner in North America ● Provides integrated custom software development and user experience (UX) design ● Embedded, touchscreen, mobile and desktop applications ● HQ in Waltham, MA with offices in California, Canada, Europe Boston UX ● Part of the ICS family, focusing on UX design ● Designs intuitive touchscreen interfaces for high-impact embedded and connected medical, industrial and consumer devices
  • 3. Integrated Computer Solutions Inc. www.ics.com What we will cover 3 Overview of MCUs and their features ● Current scope of MCU-based applications ● Convergence of microcontrollers and microprocessors ● Peripherals available and protocols used in today´s projects Discussion on programming approaches ● Pros and cons of programming bare-metal vs RTOS ● Running Python scripts on MCUs Challenges in firmware implementation (with example code) ● Application fragments implemented with the ubiquitous ESP32 MCU ● Network-enabled demo that connects to a Mender server and retrieves over-the-air updates
  • 4. Integrated Computer Solutions Inc. www.ics.com Current scope of MCU-based applications 4 ● Reduce the cost of the project ○ Hardware costs lower than MPU-based (less peripherals) ○ Firmware development costs equal or higher (more tools available on embedded Linux, for example Qt, imply less time for implementation) ○ => Bottom line will depend on the expected size of production. ● Solve specific tasks within a system containing other controllers ○ Split the application into smaller subtasks handled by several MCUs ○ Tough timing requirements (high speed protocols)
  • 5. Integrated Computer Solutions Inc. www.ics.com Convergence of MCU and MPU fields 5 ● Traditional approach ○ MPUs = external storage and runtime memory ○ MCUs = single chip processors ○ MCUs ran customized firmware on devices, MPUs ran OS on desktops with general-purpose applications ● Today: blurring boundaries ○ Improvements in levels of integration ○ Widespread growth of Linux for devices, i.e. ‘non-computers’ ○ Reduced MCU development time. ■ Versatile hardware configuration options ■ Small OS available (mostly FreeRTOS) ■ Hardware abstraction layers (STM32´s CubeMx, for example) ■ Large ecosystems of developers bring many open source code
  • 6. Integrated Computer Solutions Inc. www.ics.com STM32CubeMX: MCU setup with auto-code generation
  • 7. Integrated Computer Solutions Inc. www.ics.com Today´s peripherals 7 ● MCUs embed as many peripherals as possible inside the device, in line with the targeted market: automotive, consumer goods with low power needs, etc. ○ Timers, counters, Pulse Width Modulation (PWM) ○ Serial ports (USART, SPI, I2 C, CAN, Ethernet, …) ○ ADCs & DACs (analog/digital converters) ○ Radiofrequency transceivers (WiFi, Bluetooth, …) ○ Cryptographic accelerators ● External peripherals: ○ Inertial Measurement Units: accelerometers, gyroscopes, magnetometers ○ Weather sensors: temperature, humidity, pressure ○ Other RF transceivers (Zigbee, 5G, LoRa…) ○ …
  • 8. Integrated Computer Solutions Inc. www.ics.com SPI I2 C 8 Serial Peripheral Interface ● Full-duplex ● Originally was 1:1, then extended to 1:N Inter-Integrated Circuit ● Bus topology ● Addressing mechanism needed, peripheral specific
  • 9. Integrated Computer Solutions Inc. www.ics.com CAN 9 Controller Area Network ● Bus topology ● No device ID, but message ID ● Frames ○ Data ○ Remote ○ Error ○ Overload ● Bitwise arbitration ● Widespread usage in automobile and industrial automation ● Higher layers (CANOpen)
  • 10. Integrated Computer Solutions Inc. www.ics.com Bare-metal development 10 ● Firmware duties: ○ interaction with peripherals/hardware resources (lower level) ○ business logic (higher level) ○ The glue needed to accomplish with the business logic also needs to provide concurrency ● On bare-metal programming, the operating system is “us” (developers) ○ Concurrency implemented as a round-robin of “never-blocking” functions..
  • 11. Integrated Computer Solutions Inc. www.ics.com Bare-metal example 11 void main_loop() { // …. while (1) { // … slow_status = aSlowTask ( slow_params, slow_result); fast_status = aFastTask ( fast_params, fast_result); do_business_logic ( slow_status, slow_params, slow_result, fast_status, fast_params, fast_result ); } }
  • 12. Integrated Computer Solutions Inc. www.ics.com Example (continued) 12 char neverBLockingTask (char *params, char *result) { switch (stateMachine) { //… case WAIT_ANSWER: if ( timedOut(&timer) ) { stateMachine = HANDLE_TIMEOUT; result = ANSWER_TIMEOUT; } else { receiveData( rxBuff + buffLen, *buffLen); if (*buff_len==0) { result = ANSWER_PENDING; } else { if ( ! fullAnswerReceived( *rxBuff, uint16_t *buffLen) ) { result = ANSWER_PENDING; } else { stateMachine = IDLE; result = ANSWER_RECEIVED; } } } break; // … } // switch return result; }
  • 13. Integrated Computer Solutions Inc. www.ics.com Running Python scripts on MCUs 13 ● Traditionally, MCUs languages are C and C++ ○ compilers, debuggers ● Python popularity ○ Huge community ○ Sintax simplicity ○ Excellent libraries ○ Good for data science/machine learning ○ Zoomers (Generation Z) prefer .py rather than .c ● Micropython: a small Python 3 interpreter and runtime for MCUs (bare-metal) ○ Open Source, MIT License ○ Footprint: 256 kb flash, 16 kb RAM ○ Not as performant as C (Python runtime needs to parse the script)
  • 14. Integrated Computer Solutions Inc. www.ics.com Micropython example 14 from machine import SPI, Pin spi = SPI(0, baudrate=400000) cs = Pin(4, mode=Pin.OUT, value=1) txdata = b"12345678" rxdata = bytearray(len(txdata)) try: cs(0) spi.write_readinto(txdata, rxdata) finally: cs(1)
  • 15. Integrated Computer Solutions Inc. www.ics.com FreeRTOS 15 ● Small kernel, it provides concurrency, with a small computing overhead ○ Open source and lightweight: footprint is around 4Kbytes ○ Concurrency implemented through threads. ○ Inter-task communication ■ Queues ■ Semaphores ■ Mutexes https://www.freertos.org/Inter-Task-Communication.html
  • 16. Integrated Computer Solutions Inc. www.ics.com FreeRTOS example 16 Two tasks communicating through queues #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" QueueHandle_t q=NULL; void app_main() { q=xQueueCreate(20,sizeof(unsigned long)); if (q != NULL) { vTaskDelay(1000/portTICK_PERIOD_MS); // one second delay xTaskCreate(&producer_task,"producer_task",2048,NULL,5,NULL); xTaskCreate(&consumer_task,"consumer_task",2048,NULL,5,NULL); } else { printf("Queue creation failed"); } }
  • 17. Integrated Computer Solutions Inc. www.ics.com FreeRTOS example (cont) 17 void producer_task(void *pvParameter) { unsigned long counter=1; BaseType_t resultQueue; while(1) { resultQueue = xQueueSend( q, &counter, (TickType_t )0); if (pdTrue == resultQueue) { printf("sent to the queue: %lun",counter); counter++; } vTaskDelay(1000/portTICK_PERIOD_MS); } } void consumer_task(void *pvParameter) { unsigned long counter; BaseType_t resultQueue; while(1) { resultQueue = xQueueReceive( q, &counter, (TickType_t ) 0); if (pdTrue == resultQueue) { printf("received from the queue: %lu n",counter); } vTaskDelay(20/portTICK_PERIOD_MS); } }
  • 18. Integrated Computer Solutions Inc. www.ics.com About ESP32 18
  • 19. Integrated Computer Solutions Inc. www.ics.com ESP32 flash management 19 ● Bootloader ● Flexible application partition options: ○ flat ○ ota_0/ota_1 (a.k.a. A/B partition) ● Optional user data, called ‘storage’ (can be FAT, or plain) # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x4000, otadata, data, ota, 0xd000, 0x2000 phy_init, data, phy, 0xf000, 0x1000, ota_0, app, ota_0, 0x10000, 0x140000, ota_1, app, ota_1, , 0x140000, storage, data, fat, , 0x140000,
  • 20. Integrated Computer Solutions Inc. www.ics.com A microcontroller challenge… 20 Could a third-party Over-The-Air updates solution like Mender be implemented on a ESP32 module? ● Mender originally targeted for Linux cards, not MCUs… ● Enough flash space?
  • 21. Integrated Computer Solutions Inc. www.ics.com Updating capabilities 21
  • 22. Integrated Computer Solutions Inc. www.ics.com Web management console 22
  • 23. Integrated Computer Solutions Inc. www.ics.com ESP32: flash partitioning trade-offs… 23 ● with the storage partition ○ flash space divided by 3 ○ full download before updating ○ uncompress after download feasible # Name, Type, SubType, Offset, Size, nvs, data, nvs, 0x9000, 0x4000, otadata, data, ota, 0xd000, 0x2000 phy_init, data, phy, 0xf000, 0x1000, ota_0, app, ota_0, 0x10000, 0x140000, ota_1, app, ota_1, , 0x140000, storage, data, fat, , 0x140000, ● without the storage partition ○ flash space divided by 2 ○ partial downloads, update by chunks ○ needs uncompressed artifacts # Name, Type, SubType, Offset, Size, nvs, data, nvs, 0x9000, 0x4000, otadata, data, ota, 0xd000, 0x2000 phy_init, data, phy, 0xf000, 0x1000, ota_0, app, ota_0, 0x10000, 0x1F8000, ota_1, app, ota_1, , 0x1F8000,
  • 24. Integrated Computer Solutions Inc. www.ics.com Understanding a 3rd party file format 24 ● Based on tar format ○ Header ○ One or more files packed, including version, payload type, checksum. ● Mender utility for artifact preparation ● Compression options (gzip, lzma or none)
  • 25. Integrated Computer Solutions Inc. www.ics.com Moving from challenge into action 25 ● #1 receive firmware by chunks ○ firmware footprint around 2 Mbytes ○ Receive buffer size tradeoffs ● #2 parse a tar file on the fly ○ At proper offset, obtain the firmware file size ○ At proper offset, get fragments of the firmware file as they arrive.
  • 26. Integrated Computer Solutions Inc. www.ics.com Receive firmware by chunks 26 ● Use HTTP Range header ● Tested with cURL first, then implemented on the ESP32 HTTP API GET /api/devices/v1/deployments/device/deployments/next?artifact_name=fw_v1_0.mender&device_type=ESP32 HTTP/1.1 Host: docker.mender.io Range: bytes=0-1023 HTTP/1.1 206 Partial Content Content-Range: bytes 0-1023/1246515 Content-Length: 1024 ... (binary content)
  • 27. Integrated Computer Solutions Inc. www.ics.com Receive firmware by chunks (cont.) 27 if (body_length>0) { offset=0; esp_http_client_handle_t client = esp_http_client_init(&config); to=-1; while (1) { from=to+1; if (from>=body_length-1) { /* Reached the end of GET answer, run latest OTA API call , for latest bootloader setup */ esp_ota_end(update_handle); esp_ota_set_boot_partition(update_partition); result=MENDER_DOWNLOAD_OK; break; } to=from+MENDER_RESPONSE_BUFFER-1; if (to>body_length-1) { to=body_length-1; } sprintf (range_string,"bytes=%d-%d", from, to); esp_http_client_set_header(client, "Range", range_string); esp_http_client_perform(client); content_length = esp_http_client_get_content_length(client); artifact_processBlock( client->response_buffer, ...); // … } }
  • 28. Integrated Computer Solutions Inc. www.ics.com Parse a tarball by chunks 28 ● Understand the tarball definition ● Understand artifacts structure (tar inside a tar) ● Implement the stream parser.
  • 29. Integrated Computer Solutions Inc. www.ics.com Parse a tarball by chunks 29 int artifact_processBlock ( char *inbuff, size_t inbuff_length, size_t *offset, char *outbuff, size_t *outbuff_length, size_t outbuff_size) { //…. if (*offset + inbuff_length <= FILESIZE_OFFSET + FILESIZE_LENGTH) { // start of file size reached, end of file size not reached if (*offset< FILESIZE_OFFSET) { // start of buffer before start of file size size_t amount = inbuff_length-(FILESIZE_OFFSET-*offset); memcpy (filesizeBuffer+filesizeBufferLength, inbuff+(FILESIZE_OFFSET-*offset), amount); filesizeBufferLength += amount; } else { // start of buffer after start of file size size_t amount = inbuff_length; memcpy (filesizeBuffer+filesizeBufferLength, inbuff, amount); filesizeBufferLength += amount; } if (FILESIZE_LENGTH == filesizeBufferLength) { convertBufferToFileSize (filesizeBuffer, &fileSize); fileSizeValid = true; } *offset += inbuff_length; result = 0; goto exit_func; } // …..
  • 30. Integrated Computer Solutions Inc. www.ics.com Security aspects 30 ● Open source version: ○ Transport Secure Layer protocol, TLS ○ Self signed or Certificate Authority ○ Provisioning @ factory plant ● Paid plans ○ Same as above, plus mutual TLS authentication
  • 31. Integrated Computer Solutions Inc. www.ics.com Conclusions ● Big MCU/MPUs ecosystems raise the bar for more complex projects ● Modules integrating MCU and radio chips provide quick yet powerful resource for IoT. ● Cybersecurity concerns for IoT devices. ● Peripherals integrated to the MCU processor. Serial links (SPI, I2C, CAN, USART) for off-chip peripherals, ● FreeRTOS and similar small footprint simplifies implementation on MCUs
  • 32. Integrated Computer Solutions Inc. www.ics.com All images were taken from STM32, Mender’s online documentation. Questions? gstola@ics.com