struct machine_desc { |
#define MACHINE_START(_type,_name) / |
So we can define our own machine_desc
MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch |
Here we create machine_desc and assign values to some of its members. This is equivalent to the programming interface provided by the kernel so that we can call our own functions.
Among them, map_io is called in setup_arch. If we follow it, we will find:
在smdk2410_map_io-->s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc))->iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc)) 看到:
void __init iotable_init(struct map_desc *io_desc, int nr) |
It is here that create_mapping() is called to create the page table. The first parameter, map_desc, is defined as follows:
struct map_desc { |
create_mapping() is a mapping table created by this structure, so we can create the corresponding virtual address --> physical address mapping by creating map_desc and passing it to this function.
在 inlcude/asm-arch/Arch-s3c2410/Map.h
Defines macros for each resource used in the map_desc variable, such as:
/* MMC controller - available on the S3C2400 */ |
Then for a specific peripheral, there is a definition of specific registers, such as:
include/asm/arch-s3c2410/regs-timer.h
#ifndef __ASM_ARCH_REGS_TIMER_H |
Previous article:Memory Management of S3C2440
Next article:Introduction to ARM DSP X86 POWERPC MIPS FPGA
- Popular Resources
- Popular amplifiers
- Learn ARM development(16)
- Learn ARM development(17)
- Learn ARM development(18)
- Embedded system debugging simulation tool
- A small question that has been bothering me recently has finally been solved~~
- Learn ARM development (1)
- Learn ARM development (2)
- Learn ARM development (4)
- Learn ARM development (6)
Professor at Beihang University, dedicated to promoting microcontrollers and embedded systems for over 20 years.
- LED chemical incompatibility test to see which chemicals LEDs can be used with
- Application of ARM9 hardware coprocessor on WinCE embedded motherboard
- What are the key points for selecting rotor flowmeter?
- LM317 high power charger circuit
- A brief analysis of Embest's application and development of embedded medical devices
- Single-phase RC protection circuit
- stm32 PVD programmable voltage monitor
- Introduction and measurement of edge trigger and level trigger of 51 single chip microcomputer
- Improved design of Linux system software shell protection technology
- What to do if the ABB robot protection device stops
- CGD and Qorvo to jointly revolutionize motor control solutions
- CGD and Qorvo to jointly revolutionize motor control solutions
- Keysight Technologies FieldFox handheld analyzer with VDI spread spectrum module to achieve millimeter wave analysis function
- Infineon's PASCO2V15 XENSIV PAS CO2 5V Sensor Now Available at Mouser for Accurate CO2 Level Measurement
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- Advanced gameplay, Harting takes your PCB board connection to a new level!
- A new chapter in Great Wall Motors R&D: solid-state battery technology leads the future
- Naxin Micro provides full-scenario GaN driver IC solutions
- Interpreting Huawei’s new solid-state battery patent, will it challenge CATL in 2030?
- Are pure electric/plug-in hybrid vehicles going crazy? A Chinese company has launched the world's first -40℃ dischargeable hybrid battery that is not afraid of cold
- Thank you for being here
- Ask a question about the make command
- Get it for free|Play with Espressif's new product ESP32-S3-Korvo-2 worth 400 yuan
- Design of Li-ion Battery Management System
- What is the resistance value of a 0Ω resistor? How much current can a 0Ω resistor pass?
- Features of Ad Hoc Networks
- APWM
- Power supply obstacles - practical experience
- Industrial DACs: The Evolution of 3-Wire Analog Output
- Chapter 5 GD32L23x I2C Usage - Read and Write DHT12