Title: Evolution of Microcontroller Firmware Development
1Evolution of Microcontroller Firmware Development
2Overview
- Traditional microcontroller firmware
- Polling
- Interrupts
- Real-time Operating Systems
- Demonstration
3Polling
- Polling is when a process continually evaluates
the status of a register in an effort to
synchronize program execution. - Polling is not widely used because it is an
inefficient use of microcontroller resources.
4Polling Example
- void main ( void )
-
- while(1)
-
- while (!button1_pressed)
- turn_on_led
- while (!button1_pressed)
- turn_off_led
-
5Interrupts
- Interrupt as defined by Merriam Webster
- to break in upon an action
- Interrupt
- An event that causes the Program Counter (PC) to
change. These events can be internal or
external. - Interrupt Service Routine (ISR)
- Set of instructions that is executed when an
interrupt occurs - Interrupt Vector
- Memory address of the first instruction in the
ISR.
6Interrupts
- Why should one use interrupts?
- Provides more efficient use of microcontroller
resources. - Provides a means to create firmware that can
multi-task.
7Interrupts
- Interrupts are often prioritized within the
system and are associated with a variety of
on-chip and off-chip peripherals - Timers, A/D D/A converters, UART, GP I/O
- A majority of the mC interrupts can be enabled or
disabled. - Globally
- Individually
- Those interrupts that cannot be disabled are
called Non-Maskable Interrupts (NMI). - Interrupts can be nested.
- Interrupts can occur at anyplace, at anytime.
- ISRs should be kept short and fast.
8(No Transcript)
9What happens when an interrupt occurs?
10Interrupts
XXX XXX
0x08A3 0xFE
PC 0x08A2 SR 0xFE
PC 0x0FE0 SR 0x7E
PC 0x8A3 SR 0xFE
STACK
- The current program instruction completes
execution.
- Main()
-
-
- some code
- turn_on_led1 0x08A2
- turn_off_led1 0x08A3
-
-
- __interrupt void port1_ISR(void)
-
- disable_interrupts 0x0FE0
- ...
- reti
-
- The PC and status register values are placed on
the stack.
- The interrupt vector is loaded into the PC and SR
is updated.
- Program execution resumes with the first step of
the ISR.
- When the ISR has completed execution, the values
of the PC and status registers are restored.
- Program execution resumes with next instruction
that would have occurred had the interrupt not
taken place.
11Interrupts vs. Polling
- Allowed for more efficient use of the
microcontroller. - Faster program execution
- Multi-tasking
- Facilitated the development of complex firmware.
- Supports a modular approach to firmware design.
12Real-time Operating Systems
13Real-time Operating System
- A real-time operating system (RTOS) is a
multi-tasking operating system intended for
real-time applications. - Mainly used in embedded applications.
- Facilitates the creation of a real-time system.
- Tool for the real-time software developer.
- Provides a layer abstraction between the hardware
and software.
14Real-time Operating System
- State
- A unique operating condition of the system.
- Task
- A single thread of execution through a group of
related states. - Task Manager
- Responsible for maintaining the current state of
each task. - Responsible for providing each task with
execution time.
15Real-time Operating System
Collection of Tasks
Single Task
16Real-time Operating System
- A more detailed explanation state
- A function
- void idleState ( void )
- Should be kept short and fast
- Should represent a logical step in the task
- i.e. Evaluating different parts of an incoming
message.
17Real-time Operating System
- void idleState( void )
-
- if (rx_buffer_full)
-
- read_rxBuffer
- if (syncByte_received)
-
- transition_to_workState1
-
- else
-
- stay_in_idleState
-
-
- else
-
- stay_in_idleState
-
18Real-time Operating System
- Event-driven
- Tasks are granted execution time, based on an
event (interrupt). - Tasks of higher priority are executed first
(interrupt priorities).
- Time sharing
- Each task is granted a given amount of time to
execute. - Tasks may also be granted execution time based on
events. - Round-robin approach
- Creates a more deterministic multi-tasking
system.
19Real-time Operating Systems
void main ( void ) initSystem() while
(1) work() sleep() void work
(void) doTask(RecieveMsg) doTask(Process) d
oTask(TransmittResponse) __interrupt void
Timer_A (void) wakeUp()
20Real-time Operating System
- Available commercially
- TinyOS -an open source component-based operating
system and platform targeting wireless sensor
networks (WSNs). - Salvo - an RTOS developed by Pumpkin Inc.
- FreeRTOS - free RTOS that runs on several
architectures. - DrRTOS - works with ARM 7
- Implement a custom RTOS
- Can be highly optimized to suit your application
21Real-time Operating Systems
- A tool for real-time software developers.
- Allows increasingly complex systems to be
developed in less time. - Provides a level abstraction between software and
hardware. - Continues the evolution microcontroller system
design.
22Example Implementation
- Example of RTOS application that requires
wireless communication.
- Hardware abstraction layer for the radio.
Performs low-level interaction between mC and
radio.
Application
Application
- Groups low-level interactions from the HAL into
higher-level functions. - Sending a packet
Protocol
Radio Operation Layer
- Middle-ware that provides a gateway between the
application and RTOS.
CC1100 HAL
23Demonstration
24Questions?