Memory Mapping, Bit-Band Operations and Cmsis: Arm Microcontroller & Embedded Systems (17ec62)
The document discusses key features of the ARM Cortex-M3 microcontroller memory system including its predefined memory map, bit-band support for atomic bit operations, and support for unaligned transfers and exclusive accesses. It describes the various memory regions, their access attributes, and default access permissions. The memory map defines which bus interface is used for different memory locations and allows flexibility for manufacturers. Bit-band support maps each word address to a single bit to enable setting or clearing individual bits.
Memory Mapping, Bit-Band Operations and Cmsis: Arm Microcontroller & Embedded Systems (17ec62)
The document discusses key features of the ARM Cortex-M3 microcontroller memory system including its predefined memory map, bit-band support for atomic bit operations, and support for unaligned transfers and exclusive accesses. It describes the various memory regions, their access attributes, and default access permissions. The memory map defines which bus interface is used for different memory locations and allows flexibility for manufacturers. Bit-band support maps each word address to a single bit to enable setting or clearing individual bits.
Operations and CMSIS Shrishail Bhat, Dept. of ECE, AITM Bhatkal 1 Memory System Features Overview • The Cortex-M3 processor has different memory architecture from that of traditional ARM processors. • First, it has a predefined memory map that specifies which bus interface is to be used when a memory location is accessed. • This feature also allows the processor design to optimize the access behavior when different devices are accessed. • Another feature of the memory system in the Cortex-M3 is the bit-band support. • This provides atomic operations to bit data in memory or peripherals. • The bit-band operations are supported only in special memory regions. • The Cortex-M3 memory system also supports unaligned transfers and exclusive accesses. • These features are part of the v7-M architecture. • Finally, the Cortex-M3 supports both little endian and big endian memory configuration.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 2
Memory Maps • The Cortex-M3 processor has a fixed memory map. • This makes it easier to port software from one Cortex-M3 product to another. • For example, components described in previous sections, such as Nested Vectored Interrupt Controller (NVIC) and Memory Protection Unit (MPU), have the same memory locations in all Cortex-M3 products. • Nevertheless, the memory map definition allows great flexibility so that manufacturers can differentiate their Cortex-M3-based product from others. • Some of the memory locations are allocated for private peripherals such as debugging components. • They are located in the private peripheral memory region.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 3
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 4 Shrishail Bhat, Dept. of ECE, AITM Bhatkal 5 Memory Maps (continued) • The Cortex-M3 processor has a total of 4 GB of address space. • Program code can be located in the code region, the Static Random Access Memory (SRAM) region, or the external RAM region. • However, it is best to put the program code in the code region because with this arrangement, the instruction fetches and data accesses are carried out simultaneously on two separate bus interfaces.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 6
Memory Maps (continued) • The SRAM memory range is for connecting internal SRAM. • Access to this region is carried out via the system interface bus. • In this region, a 32-MB range is defined as a bit-band alias. • Within the 32-bit-band alias memory range, each word address represents a single bit in the 1-MB bit-band region. • A data write access to this bit-band alias memory range will be converted to an atomic READ-MODIFY-WRITE operation to the bit-band region so as to allow a program to set or clear individual data bits in the memory. • The bit-band operation applies only to data accesses not instruction fetches. • By putting Boolean information (single bits) in the bit-band region, we can pack multiple Boolean data in a single word while still allowing them to be accessible individually via bit-band alias, thus saving memory space without the need for handling READ-MODIFY-WRITE in software.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 7
Memory Maps (continued) • Another 0.5-GB block of address range is allocated to on-chip peripherals. • Similar to the SRAM region, this region supports bit-band alias and is accessed via the system bus interface. • However, instruction execution in this region is not allowed. • The bit-band support in the peripheral region makes it easy to access or change control and status bits of peripherals, making it easier to program peripheral control.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 8
Memory Maps (continued) • Two slots of 1-GB memory space are allocated for external RAM and external devices. • The difference between the two is that program execution in the external device region is not allowed, and there are some differences with the caching behaviors.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 9
Memory Maps (continued) • The last 0.5-GB memory is for the system-level components, internal peripheral buses, external peripheral bus, and vendor- specific system peripherals. • There are two segments of the private peripheral bus (PPB): • Advanced High-Performance Bus (AHB) PPB, for Cortex-M3 internal AHB peripherals only • This includes NVIC, FPB, DWT, and ITM • Advance Peripheral Bus (APB) PPB, for Cortex-M3 internal APB devices as well as external peripherals (external to the Cortex-M3 processor) • The Cortex-M3 allows chip vendors to add additional on-chip APB peripherals on this private peripheral bus via an APB interface
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 10
Memory Maps (continued) • The NVIC is located in a memory region called the system control space (SCS). • Besides providing interrupt control features, this region also provides the control registers for SYSTICK, MPU, and code debugging control.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 11
Memory Maps (continued) • The remaining unused vendor-specific memory range can be accessed via the system bus interface. • However, instruction execution in this region is not allowed. • The Cortex-M3 processor also comes with an optional MPU. • Chip manufacturers can decide whether to include the MPU in their products.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 12
Memory Access Attributes • The memory map shows what is included in each memory region. • Aside from decoding which memory block or device is accessed, the memory map also defines the memory attributes of the access. • The memory attributes you can find in the Cortex-M3 processor include the following: • Bufferable: Write to memory can be carried out by a write buffer while the processor continues on next instruction execution. • Cacheable: Data obtained from memory read can be copied to a memory cache so that next time it is accessed the value can be obtained from the cache to speed up the program execution. • Executable: The processor can fetch and execute program code from this memory region. • Sharable: Data in this memory region could be shared by multiple bus masters. Memory system needs to ensure coherency of data between different bus masters in shareable memory region. Shrishail Bhat, Dept. of ECE, AITM Bhatkal 13 Memory Access Attributes (continued) • The memory access attributes for each memory region are as follows: • Code memory region (0x00000000–0x1FFFFFFF): This region is executable, and the cache attribute is write through (WT). You can put data memory in this region as well. If data operations are carried out for this region, they will take place via the data bus interface. Write transfers to this region are bufferable. • SRAM memory region (0x20000000–0x3FFFFFFF): This region is intended for on- chip RAM. Write transfers to this region are bufferable, and the cache attribute is write back, write allocated (WB-WA). This region is executable, so you can copy program code here and execute it. • Peripheral region (0x40000000–0x5FFFFFFF): This region is intended for peripherals. The accesses are noncacheable. You cannot execute instruction code in this region (Execute Never, or XN in ARM documentation, such as the Cortex-M3 TRM).
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 14
Memory Access Attributes (continued) • External RAM region (0x60000000–0x7FFFFFFF): This region is intended for either on-chip or off-chip memory. The accesses are cacheable (WB-WA), and you can execute code in this region. • External RAM region (0x80000000–0x9FFFFFFF): This region is intended for either on-chip or off-chip memory. The accesses are cacheable (WT), and you can execute code in this region. • External devices (0xA0000000–0xBFFFFFFF): This region is intended for external devices and/or shared memory that needs ordering/nonbuffered accesses. It is also a nonexecutable region. • External devices (0xC0000000–0xDFFFFFFF): This region is intended for external devices and/or shared memory that needs ordering/nonbuffered accesses. It is also a nonexecutable region. • System region (0xE0000000–0xFFFFFFFF): This region is for private peripherals and vendor-specific devices. It is nonexecutable. For the PPB memory range, the accesses are strongly ordered (noncacheable, nonbufferable). For the vendor-specific memory region, the accesses are bufferable and noncacheable.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 15
Default Memory Access Permissions • The Cortex-M3 memory map has a default configuration for memory access permissions. • This prevents user programs (non-privileged) from accessing system control memory spaces such as the NVIC. • The default memory access permission is used when either no MPU is present or MPU is present but disabled. • If MPU is present and enabled, the access permission in the MPU setup will determine whether user accesses are allowed.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 16
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 17 Bit-Band Operations • Bit-band operation support allows a single load/store operation to access (read/write) to a single data bit. • In the Cortex-M3, this is supported in two predefined memory regions called bit-band regions. • One of them is located in the first 1 MB of the SRAM region, and the other is located in the first 1 MB of the peripheral region. • These two memory regions can be accessed like normal memory, but they can also be accessed via a separate memory region called the bit- band alias. • When the bit-band alias address is used, each individual bit can be accessed separately in the least significant bit (LSB) of each word-aligned address.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 18
Bit-Band Operations (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 19
Bit-Band Operations (continued) • For example, to set bit 2 in word data in address 0x20000000, instead of using three instructions to read the data, set the bit, and then write back the result, this task can be carried out by a single instruction (see Figure 5.4). • The assembler sequence for these two cases could be like the one shown in Figure 5.5.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 20
Bit-Band Operations (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 21
Bit-Band Operations (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 22
Bit-Band Operations (continued) • Similarly, bit-band support can simplify application code if we need to read a bit in a memory location. • For example, if we need to determine bit 2 of address 0x20000000, we use the steps outlined in Figure 5.6. • The assembler sequence for these two cases could be like the one shown in Figure 5.7.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 23
Bit-Band Operations (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 24
Bit-Band Operations (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 25
Bit-Band Operations (continued) • The Cortex-M3 uses the following terms for the bit-band memory addresses: • Bit-band region: This is a memory address region that supports bit- band operation. • Bit-band alias: Access to the bit-band alias will cause an access (a bit- band operation) to the bit-band region. • Note: A memory remapping is performed.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 26
Bit-Band Operations (continued) • Within the bit-band region, each word is represented by an LSB of 32 words in the bit-band alias address range. • What actually happens is that when the bit-band alias address is accessed, the address is remapped into a bit-band address. • For read operations, the word is read and the chosen bit location is shifted to the LSB of the read return data. • For write operations, the written bit data are shifted to the required bit position, and a READ-MODIFY-WRITE is performed. • There are two regions of memory for bit-band operations: • 0x20000000–0x200FFFFF (SRAM, 1 MB) • 0x40000000–0x400FFFFF (peripherals, 1 MB) Shrishail Bhat, Dept. of ECE, AITM Bhatkal 27 Bit-Band Operations (continued) • For the SRAM memory region, the remapping of the bit-band alias is shown in Table 5.2.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 28
Bit-Band Operations (continued) • Similarly, the bit-band region of the peripheral memory region can be accessed via bit-band aliased addresses, as shown in Table 5.3.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 29
Bit-Band Operations (continued) • Here’s a simple example: 1. Set address 0x20000000 to a value of 0x3355AACC. 2. Read address 0x22000008. This read access is remapped into read access to 0x20000000. The return value is 1 (bit[2] of 0x3355AACC). 3. Write 0x0 to 0x22000008. This write access is remapped into a READ- MODIFY-WRITE to 0x20000000. The value 0x3355AACC is read from memory, bit 2 is cleared, and a result of 0x3355AAC8 is written back to address 0x20000000. 4. Now, read 0x20000000. That gives you a return value of 0x3355AAC8 (bit[2] cleared). Shrishail Bhat, Dept. of ECE, AITM Bhatkal 30 CMSIS • The Cortex-M3 microcontrollers are gaining momentum in the embedded application market, as more and more products based on the Cortex-M3 processor and software that support the Cortex-M3 processor are emerging. • There are also a number of companies providing embedded software solutions, including codecs, data processing libraries, and various software and debug solutions. • The CMSIS was developed by ARM to allow users of the Cortex-M3 microcontrollers to gain the most benefit from all these software solutions and to allow them to develop their embedded application quickly and reliably. Shrishail Bhat, Dept. of ECE, AITM Bhatkal 31 CMSIS (continued) • The Cortex Microcontroller Software Interface Standard (CMSIS) was started in 2008 to improve software usability and inter- operability of ARM microcontroller software. • It is integrated into the driver libraries provided by silicon vendors, providing a standardized software interface for the Cortex-M3 processor features, as well as a number of common system and I/O functions. • The library is also supported by software companies including embedded OS vendors and compiler vendors.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 32
CMSIS (continued)
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 33
CMSIS (continued) • The aims of CMSIS are to: • improve software portability and reusability • enable software solution suppliers to develop products that can work seamlessly with device libraries from various silicon vendors • allow embedded developers to develop software quicker with an easy-to-use and standardized software interface • allow embedded software to be used on multiple compiler products • avoid device driver compatibility issues when using software solutions from multiple sources Shrishail Bhat, Dept. of ECE, AITM Bhatkal 34 CMSIS – Areas of Standardization • The scope of CMSIS involves standardization in the following areas: • Hardware Abstraction Layer (HAL) for Cortex-M processor registers: This includes standardized register definitions for NVIC, System Control Block registers, SYSTICK register, MPU registers, and a number of NVIC and core feature access functions. • Standardized system exception names: This allows OS and middleware to use system exceptions easily without compatibility issues. • Standardized method of header file organization: This makes it easier for users to learn new Cortex microcontroller products and improve software portability. • Common method for system initialization: Each Microcontroller Unit (MCU) vendor provides a SystemInit() function in their device driver library for essential setup and configuration, such as initialization of clocks. • Again, this helps new users to start to use Cortex-M microcontrollers and aids software portability. Shrishail Bhat, Dept. of ECE, AITM Bhatkal 35 CMSIS – Areas of Standardization (continued) • Standardized intrinsic functions: Intrinsic functions are normally used to produce instructions that cannot be generated by IEC/ISO C. • By having standardized intrinsic functions, software reusability and portability are considerably improved. • Common access functions for communication: This provides a set of software interface functions for common communication interfaces including universal asynchronous receiver/transmitter (UART), Ethernet, and Serial Peripheral Interface (SPI). • By having these common access functions in the device driver library, reusability and portability of embedded software are improved. • Standardized way for embedded software to determine system clock frequency: A software variable called SystemFrequency is defined in device driver code. • This allows embedded OS to set up the SYSTICK unit based on the system clock frequency.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 36
Organization of CMSIS
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 40
Organization of CMSIS (continued) • The CMSIS is divided into multiple layers as follows: • Core Peripheral Access Layer • Name definitions, address definitions, and helper functions to access core registers and core peripherals • Middleware Access Layer • Common method to access peripherals for the software industry • Targeted communication interfaces include Ethernet, UART, and SPI. • Allows portable software to perform communication tasks on any Cortex microcontrollers that support the required communication interface
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 38
Organization of CMSIS (continued) • Device Peripheral Access Layer (MCU specific) • Name definitions, address definitions, and driver code to access peripherals
• Access Functions for Peripherals (MCU specific)
• Optional additional helper functions for peripherals
• The role of these layers is summarized in Figure 10.7.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 39
Organization of CMSIS (continued) • Device Peripheral Access Layer (MCU specific) • Name definitions, address definitions, and driver code to access peripherals
• Access Functions for Peripherals (MCU specific)
• Optional additional helper functions for peripherals
• The role of these layers is summarized in Figure 10.7.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 40
Advanced Microcontroller Bus Architecture (AMBA) • The Advanced Microcontroller Bus Architecture (AMBA) specification defines an on-chip communications standard for high-performance embedded microcontrollers. • Three distinct buses are defined within the AMBA specification : • Advanced High-performance Bus (AHB)
• Advanced System Bus (ASB)
• Advanced Peripheral Bus (APB)
• A test methodology is included with the AMBA specification which provides an
infrastructure for modular macrocell test and diagnostic access.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 41
Advanced High-performance Bus (AHB) • The AMBA AHB is for high-performance, high clock frequency system modules. • The AHB acts as the high-performance system backbone bus. • AHB supports the efficient connection of processors, on-chip memories and off-chip external memory interfaces with low-power peripheral macrocell functions. • AHB is also specified to ensure ease of use in an efficient design flow using synthesis and automated test techniques.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 42
Advanced System Bus (ASB) • The AMBA ASB is for high-performance system modules. • AMBA ASB is an alternative system bus suitable for use where the high- performance features of AHB are not required. • ASB also supports the efficient connection of processors, on-chip memories and off-chip external memory interfaces with low-power Peripheral macrocell functions.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 43
Advanced Peripheral Bus (APB) • The AMBA APB is for low-power peripherals. • AMBA APB is optimized for minimal power consumption and reduced interface complexity to support peripheral functions. • APB can be used in conjunction with either version of the system bus.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 44
Bus Interfaces on the Cortex-M3 • The bus interfaces on the Cortex-M3 processor are based on AHB-Lite and APB protocols. • These are as follows: • The I-Code Bus • The D-Code Bus • The System Bus • The External PPB
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 45
The I-Code Bus • The I-Code bus is a 32-bit bus based on the AHB-Lite bus protocol for instruction fetches in memory regions from 0x00000000 to 0x1FFFFFFF. • Instruction fetches are performed in word size, even for 16-bit Thumb instructions. • Therefore, during execution, the CPU core could fetch up to two Thumb instructions at a time.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 46
The D-Code Bus • The D-Code bus is a 32-bit bus based on the AHB-Lite bus protocol; it is used for data access in memory regions from 0x00000000 to 0x1FFFFFFF. • Although the Cortex-M3 processor supports unaligned transfers, you won’t get any unaligned transfer on this bus, because the bus interface on the processor core converts the unaligned transfers into aligned transfers for you. • Therefore, devices (such as memory) that attach to this bus need only support AHB-Lite (AMBA 2.0) aligned transfers.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 47
The System Bus • The system bus is a 32-bit bus based on the AHB-Lite bus protocol; it is used for instruction fetch and data access in memory regions from 0x20000000 to 0xDFFFFFFF and 0xE0100000 to 0xFFFFFFFF. • Similar to the D-Code bus, all the transfers on the system bus are aligned.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 48
The External PPB • The External PPB is a 32-bit bus based on the APB bus protocol. • This is intended for private peripheral accesses in memory regions 0xE0040000 to 0xE00FFFFF. • However, since some part of this APB memory is already used for TPIU, ETM, and the ROM table, the memory region that can be used for attaching extra peripherals on this bus is only 0xE0042000 to 0xE00FF000. • Transfers on this bus are word aligned.
Shrishail Bhat, Dept. of ECE, AITM Bhatkal 49
References 1. Joseph Yiu, “The Definitive Guide to the ARM Cortex-M3”, 2nd Edition, Newnes (Elsevier), 2010. 2. https://www.arm.com