Setting Up External Flash for Cortex-M1 Instruction Fetch

The Cortex-M1 processor supports instruction fetch from external flash memory. This allows for larger and more complex programs to be run than would fit in the processor’s internal flash memory. Setting up external flash requires configuring the memory interface and ensuring the instruction fetch mechanism can access the external memory correctly. Overview of Cortex-M1 Instruction…

File System Limitations on Cortex-M1 in FPGA Implementations

The Cortex-M1 processor from ARM is a popular choice for FPGA implementations due to its small footprint and low power consumption. However, when implementing the Cortex-M1 in an FPGA, there are some limitations that need to be considered regarding the file system support. Limited Internal Memory One of the biggest limitations of the Cortex-M1 is…

Microlib vs Standard Libraries for Resource-Constrained Cortex-M1 Applications

When developing applications for resource-constrained microcontrollers like the Cortex-M1, choosing the right software libraries is critical. Standard libraries like the C standard library provide rich functionality but have high memory and CPU overhead. Microlibs are optimized libraries designed specifically for microcontrollers. This article compares microlibs and standard libraries for Cortex-M1 development. The Constraints of Cortex-M1…

Software Development on Cortex-M1 Hardware Without an OS

Developing software directly on Cortex-M1 hardware without using an operating system (bare metal) provides maximum performance and optimization opportunities but also comes with challenges. Careful planning is required to properly structure and architect the software. Benefits of Bare Metal Cortex-M1 Development The main benefits of developing software directly on Cortex-M1 hardware without an OS include:…

Implementing File I/O on Cortex-M1 without an OS or Filesystem

The Cortex-M1 processor from ARM is a powerful 32-bit chip well-suited for embedded applications. However, it lacks support for filesystems and OS capabilities out of the box. This presents challenges for implementing file I/O, as traditional approaches rely on having an OS and filesystem available. Despite this limitation, with careful planning it is possible to…

Symbol ferror multiply defined Errors with Keil and Cortex-M1

When compiling code for the ARM Cortex-M1 using the Keil compiler, you may encounter an error saying “Symbol ferror multiply defined”. This error occurs when there are multiple conflicting definitions for the ferror symbol, resulting in a compile-time error. The ferror symbol refers to the standard C library function ferror(), which returns the error status…

Debugging issues when porting the Cortex-M1 DesignStart project

Porting the Cortex-M1 DesignStart project to a new hardware platform can be challenging, with many potential issues arising during the debugging process. This article provides an overview of common debugging problems and solutions when porting the DesignStart project. Issues with JTAG/SWD connectivity One of the first issues that may arise is not being able to…

Memory Mapped Peripheral Register Access with ARM Cortex-M1

The ARM Cortex-M1 processor provides a simple and efficient way to access peripheral registers through memory mapped I/O. This allows developers to read and write to peripherals as if they were normal memory locations. The key advantage of this approach is that standard load and store instructions can be used without any special peripheral access…

Building FreeRTOS for ARM Cortex-M1 Using Xilinx SDK

FreeRTOS is a popular real-time operating system that provides a framework for developing multi-threaded applications on embedded systems. The ARM Cortex-M1 is one of the most widely used 32-bit processor cores designed by ARM for microcontroller use. Xilinx SDK (Software Development Kit) offers a complete software suite for developing applications on Xilinx devices like Zynq…

Stack Limit Checking in Arm Cortex-M for Stack Overflow Detection

Stack overflows are a common source of vulnerabilities in embedded systems using the Arm Cortex-M series of microcontrollers. A stack overflow occurs when a program writes past the allocated stack space, corrupting adjacent memory which may contain code or data critical to the system’s operation. The Arm Cortex-M includes hardware features to help detect stack…