An Introduction to ARM
Anyone interested in the embedded systems started to hear these two terms frequently. These are actually ARM and Embedded Linux. No longer, everyone goes towards to work in these areas. Writing code in a free medium, when merging with ease of getting rid of software licenses that cost millions, Embedded Linux started to gain popularity. As you all know, the ARM architecture is very popular in the world and most of the projects use ARM-based processors with Embedded Systems.
Throughout this article series, I would like to share my knowledge about ARM architecture and microprocessors that I learned during my exchange period at the Tampere University of Technology. While sharing the pieces of information I have learned, of course, I can make mistakes, also sometimes I can give incomplete information. Please feel free to contact me if you have the possibility to correct the places you see wrong. After making our first explanations, let’s get into the main topic.
What is ARM?
ARM is an architecture and its name refer to a company that invented ARM. This architecture started to design in 1983 by Acorn Computers Ltd. with a name of ARM1 (Acorn RISC Machine 1) and release in 1985. Following year, the company released 32-bit ARM2 and it creates a tremendous impression with its simple and practical structure. In 1990, the company changed its name to Advanced RISC Machines Ltd. Later in 1998, the company changed its name again and ARM Ltd. used today.
In addition to its 32-bit architecture, its low cost has resulted in the creation of processor cores that are very popular today. ARM has been able to license the cores produced by various companies, thus enabling them to perform various applications. In other words, ARM does not produce an integrated circuit. Instead, many companies, such as Apple, Samsung, Hewlett-Packard, Qualcomm, Texas Instruments, NXP, Atmel, STM have developed ARM kernels and improved their implementation, or launched their own ARM-based processors.
We will talk about ARM commands in our article series. C programming examples with ARM might take place, but for now, we will continue with the ARM instruction set. Because to get to know a microprocessor, I think it is possible to learn its instruction set, its registers. If you already know C programming, you can use this information more effectively.
Basically, ARM command sets are divided into 2 sub-sections, 16-bit THUMB and 32-bit ARM instruction sets. We will first refer to 32-bit instruction sets. I do not intend to use any computer or board during this process, but if I can find the time, I can do a few complementary applications and share the images. The development kit I have in ARM applications is shown below.
The ARM although not certain but it is a RISC (Reduced Instruction Set Computer) class processor, ie the command set is a reduced processor. Let’s explain why it’s not exactly the RISC processor. Firstly it has 32-bit registers from r1 to r16, and we can control all instruction sets conditionally. Also, it has 32-bit barrel shifter, which is known as a combinational circuit, ie it allows several operations in a clock pulse independent from the clock signal. All these features do not make the ARM processors a fully RISC class microprocessor.
The ARM has a total of seven operating modes.
- Use Mode
- Fast Interrupt (FIQ)Mode
- Interrupt (IRQ) Mode
- Supervisor Mode
- Abort Mode
- System Mode
- Undefined Mode
The ARM consists of thirty-seven registers. The registers are arranged in partially overlapping banks. There is a different register bank for each processor mode. These registers are not all accessible at the same time. The processor state and operating mode determine which registers are available to the programmer.
- Thirty-one of these registers have 32-bit general-purpose registers,
- Six are status registers,
- The ARM-state register set contains sixteen directly-accessible (programmer-capable) registers, r0 to r15.
In general, ARM has a small-endian system but can be set as big-endian if desired.
I think it’s enough for today. In the next article, we will touch on technical issues. In order to better understand, it is useful for the reader friends to reinforce their knowledge by repeating terms such as RISC, Registers, Little Endian and Big Endian. See you in our next articles.