What has 10 different sensors for monitoring aspects of your physical
condition and your environment, a full color display and a friendly user
interface to allow you to interpret the data? And by the way, can also be worn
on your wrist? An activity watch! The latest activity watches, powered by
embedded microcontrollers, require manufacturers to pack in vast functionality
in a tiny and extremely portable package. To allow for increasing data needs
for so many sensors along with eye-catching human to machine interfaces,
manufacturers of embedded controllers have expanded memory capabilities on
their microcontrollers. This trend has impacted both internal and
external memory features for MCUs. For example, let’s take a
closer look at the
Kinetis K70 MCU family to demonstrate the numerous options and capabilities related to memory
resources.
Internal memory
The table below summarizes the main
internal memory capabilities of the Kinetis K70 devices,
which can be partitioned into two categories: volatile and non-volatile. Some
of the benefits of internal memory can be generalized as higher throughput to
support performance and energy efficiency, integrated power gating and
security. The incredibly large 1 megabyte (8Mbits) of embedded flash of the
Kinetis K70 MCU allows space for firmware along with full bytes of memory for
storage of sensor or other data. Within the volatile memory integrated in to
the Kinetis K70 MCU, there are memory accelerators, such as the program
acceleration RAM and caches that perform special functions that allow for more
efficient operations. On some Kinetis MCUs, the program acceleration RAM can
even be used to buffer data programmed into the embedded flash of the
device. So, for a use case that requires the storage of large amounts of
sensor data, the Kinetis K70 MCU offers many advantages: sensor data can be
collected into the program acceleration RAM and up to 4096 bytes of that data
can be stored. The Kinetis K70 MCU embedded flash supports a
Program Section command that will then move the data from the program
acceleration RAM into non-volatile storage. All this work is done with minimal
CPU intervention, programming time and programming current.
Kinetis K70 MCU Internal Memory Resources
|
Memory Category |
Memory |
Non-Volatile |
Up to 1Mbytes of Flash |
Up to 16Kbytes of EEEPROM |
Volatile |
128Kbytes SRAM |
16Kbytes program acceleration RAM |
8KB I/D Cache |
8KB System Cache |
Peripheral Buffers (FIFOs, Mailboxes, etc) |
External memory
Internal memory is a limited resource.
The embedded flash and SRAM resources on a device like the Kinetis K70 MCU are
relatively large, but they still may not be sufficient for all cases. In those
instances, the Kinetis K70 MCU also offers a variety of options for external
volatile and non-volatile memory, as the table below illustrates. External
memory advantages generally include lower cost per bit of memory and larger
total memory sizes. But the disadvantages of external memory can include power
consumption, throughput limitations, interface pin requirements and security.
Kinetis MCUs, along with memory ICs provided by other companies, are working
to mitigate the disadvantages of external memory capabilities. For example,
the Kinetis K70 MCU contains a total of 16KB of cache memory (8KB I/D cache
and 8KB system cache). This internal volatile memory works to buffer data from
other memory sources that can be slower or have higher access power. For
memory ICs provided by other companies, there are advancements in interface
speeds and support for double data rates on I/O pins. The K70 MCU has
the capability of interfacing to up to 1 GigaByte of external double data rate
SDRAM at 1.8V(LPDDR). This large memory scalability can be used to support
complex operating systems or space for graphics buffers.
Kinetis K70 MCU External Memory Resources
|
Memory Category |
Memory |
Non-Volatile |
NAND Flash Controller |
SPI, I2C (Serial NOR flash, EEPROM) |
SDHC (SD Card, eMMC) |
Flexbus (32bit) (Parallel NOR Flash) |
Volatile |
Flexbus (32bit) (SRAM) |
DDR Controller (16bit) (DDR1, DDR2, LPDDR) |
Looking forward
Having a large internal memory and many
external memory options allows embedded developers the freedom needed to
create wonderful end devices with ever increasing functionality. This trend
for memory flexibility is apparent in the latest ARM® Cortex®-M7
core. This latest edition ARM Cortex-M core has various new features to
enhance the use of both internal and external memories. Like the Kinetis K70
MCU, it has integrated cache features that can be used as a memory
accelerator. This new option on the ARM Cortex-M7 will ensure that as data
needs expand, performance and efficiency are maintained. In addition, as
an option for the new core, the bus fabric is enhanced to 64-bit AXI bus. This
is the first implementation of this type of bus fabric for the ARM Cortex-M
cores. These features coupled with the scalability, performance
and flexibility of the ARM Cortex-M7 are sure to bring exciting new
capabilities to a broad range of electronic devices.