Why does ARM have two boot modes? What is the difference between ARM7 and ARM-Cortex? What are fast interrupts and interrupts?
Why are there two boot modes for ARM (NAND FLASH and NOR FLASH)?
This is mainly determined by the different characteristics of the two FLASH.
NAND FLASH has a large capacity and the cost of storing unit bit data is much lower, but NAND FLASH must be read and written according to a specific timing, so the CPU cannot directly address the data in NAND FLASH. The CPU reads and writes data in NAND FLASH through a dedicated NAND flash controller, so NAND FLASH is more suitable for storing data.
NOR FLASH has a small capacity and fast speed. When reading and writing NOR FLASH, you input the address and then give the read and write signals to get data from the data bus. However, its price is higher than NAND FLASH, so it is suitable for program storage.
In summary, NOR FLASH can be directly connected to the arm bus, but DAND FLASH needs to be connected to S3S2440 through the NAND FLASH controller.
Difference between ARM7 and ARM-Cortex
ARM7: ARMv4 architecture, ARM9: ARMv5 architecture, ARM11: ARMv6 architecture, ARM-Cortex series: ARMv7 architecture.
ARM7 does not have MMU (memory management unit), it can only be called MCU (microcontroller), and cannot run modern multi-user multi-process operating systems such as Linux and WinCE, because running these systems requires MMU to allocate each user process its own independent address space. UCOS, UCLinux and other streamlined real-time RTOS do not need MMU, and of course they can run on ARM7.
ARM9 and ARM11 are embedded CPUs (processors) with MMU. They can run multi-user and multi-process operating systems such as Linux, and their application scenarios are also different from ARM7.
When it comes to the ARMv7 architecture, it starts to be named Cortex, and is divided into three series: Cortex-A, Cortex-R, and Cortex-M. The three series have clear division of labor: the "A" series is aimed at cutting-edge virtual memory-based operating systems and user applications; the "R" series is aimed at real-time systems; and the "M" series is for microcontrollers. Simply put, the Cortex-A series is a CPU for the mobile field, and the Cortex-R and Cortex-M series are MCUs for real-time control.
So ARM7 and Cortex-M look very similar, because they are both MCUs, but they are MCUs of different generations and architectures (Cortex-M is three generations higher than ARM7!), so there is a big difference in performance. In addition, the Cortex-M series is further divided into M0, M3, M4 and the ultra-low power M0+. Users choose chips based on factors such as cost, performance, and power consumption.
I believe you must know the difference between ARM7 and Cortex-M now, but I still spent some time to organize it here, which can help later beginners understand these basic conceptual issues.
ARM's FIQ (Fast Interrupt) IRQ (Interrupt)
IRQ, FIQ definition: This is a normal interrupt. When our program defines this interrupt, and an IRQ interrupt occurs when the program is running, the chip will run like this: the interrupt handler uses the IRQ request line to high-speed ARM, and ARM knows that an IRQ interrupt has come, and then ARM switches to IRQ mode. Similarly, if the interrupt is set to FIQ, then when the interrupt occurs, the interrupt handler tells ARM through the FIQ request line, and ARM knows that a FIQ interrupt has come, and then switches to FIQ mode.
So the question is, why do we have these two interrupts, or why are they divided into these two interrupts? The reason is simple, the speed is different, FIQ or fast interrupt is faster, so the question is again, why is FIQ faster???
reason:
1: ARM's FIQ mode provides more banked registers, r8 to r14 and SPSR, while IRQ mode does not have so many banked registers. There are no banked registers corresponding to R8, R9, R10, R11, and R12. This means that in ARM's IRQ mode, the interrupt handler must save the registers from R8 to R12 by itself, and then restore these registers when exiting the interrupt handler. In FIQ mode, since these registers are banked registers, the CPU automatically saves these values to banked registers when the mode is switched, and automatically restores them when exiting FIQ mode. Therefore, this process of FIQ is faster than IRQ. Don't underestimate these registers. When ARM is compiled, if your FIQ interrupt handler is sufficient to use these independent registers to operate, it will not push general registers to the stack, which also saves some time.
2: FIQ has a higher priority than IRQ. If FIQ and IRQ are generated at the same time, FIQ is processed first.
3: In the Symbian system, when the CPU is in FIQ mode to handle FIQ interrupts, prefetch instruction exceptions, undefined instruction exceptions, software interrupts are all disabled, and all interrupts are masked. Therefore, FIQ will execute very quickly and will not be interrupted by other exceptions or interrupts, so it is faster than IRQ. However, IRQ is different. When ARM handles IRQ interrupts in IRQ mode, if a FIQ interrupt request comes, the IRQ interrupt handler being executed will be preempted, and ARM will switch to FIQ mode to execute this FIQ, so FIQ is much faster than IRQ.
4: In addition, the entry address of FIQ is 0x1c, and the entry address of IRQ is 0x18. Those who have written a complete assembly system understand the difference. 18 can only hold one instruction. In order not to conflict with the FIQ at 1C, this place can only jump. FIQ is different. There is no interrupt vector table after 1C. In this way, the interrupt handler of FIQ can be placed directly at 1C. Due to the limitation of the jump range, at least one jump instruction is missing.
Previous article:Analysis of the differences between Arduino/Raspberry Pi/MCU/ARM
Next article:What do ARM core and architecture mean? What is the relationship between core and architecture?
Recommended ReadingLatest update time:2024-11-16 15:42
- Popular Resources
- Popular amplifiers
- Practical Deep Neural Networks on Mobile Platforms: Principles, Architecture, and Optimization
- ARM Embedded System Principles and Applications (Wang Xiaofeng)
- ARM Cortex-M4+Wi-Fi MCU Application Guide (Embedded Technology and Application Series) (Guo Shujun)
- An ARM7-based automotive gateway solution
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- Innolux's intelligent steer-by-wire solution makes cars smarter and safer
- 8051 MCU - Parity Check
- How to efficiently balance the sensitivity of tactile sensing interfaces
- What should I do if the servo motor shakes? What causes the servo motor to shake quickly?
- 【Brushless Motor】Analysis of three-phase BLDC motor and sharing of two popular development boards
- Midea Industrial Technology's subsidiaries Clou Electronics and Hekang New Energy jointly appeared at the Munich Battery Energy Storage Exhibition and Solar Energy Exhibition
- Guoxin Sichen | Application of ferroelectric memory PB85RS2MC in power battery management, with a capacity of 2M
- Analysis of common faults of frequency converter
- In a head-on competition with Qualcomm, what kind of cockpit products has Intel come up with?
- Dalian Rongke's all-vanadium liquid flow battery energy storage equipment industrialization project has entered the sprint stage before production
- Allegro MicroSystems Introduces Advanced Magnetic and Inductive Position Sensing Solutions at Electronica 2024
- Car key in the left hand, liveness detection radar in the right hand, UWB is imperative for cars!
- After a decade of rapid development, domestic CIS has entered the market
- Aegis Dagger Battery + Thor EM-i Super Hybrid, Geely New Energy has thrown out two "king bombs"
- A brief discussion on functional safety - fault, error, and failure
- In the smart car 2.0 cycle, these core industry chains are facing major opportunities!
- The United States and Japan are developing new batteries. CATL faces challenges? How should China's new energy battery industry respond?
- Murata launches high-precision 6-axis inertial sensor for automobiles
- Ford patents pre-charge alarm to help save costs and respond to emergencies
- New real-time microcontroller system from Texas Instruments enables smarter processing in automotive and industrial applications
- Do the read and write registers of the ds2438 coulomb meter have a lifespan?
- Raspberry Pi based smartphone
- Share WB-Serial Port Debugging Assistant
- About bus conflicts (Part 2)
- PMOS is turned on
- CCS compiles and generates binary files
- Mobile phone calculators are all dead: What is 10% + 10%? [Have you ever calculated it?]
- When the serial port is connected, if the host receives wrong data, it will return to the initial state.
- How to set the temperature of the battery temperature detection pin TS of BQ24650 to -10℃-50℃
- Summary of DSP CMD file writing method