Hardware Reference
In-Depth Information
Virtual Address Space
Physical Address Space
[User Space]
[Kernel Space]
Straight Mapped Area
Memory Mapped I/O
Area
32 bits
Memory Mapped I/O
40 bits
Straight Mapped Memory
HIGHMEM Area
HIGHMEM Mapped
Memory
Direct Translation
Indirect Translation
Fig. 5.5
RP-X's Linux address space with HIGHMEM framework
virtual address space and HIGHMEM mapped memory corresponding to the
HIGHMEM area. The size of the straight mapped memory is the same as the
straight mapped area, and this fixed translation is done by H/W. When the Linux
kernel uses the straight mapped memory, it accesses the straight mapped area in
the virtual address space. When the Linux kernel uses the HIGHMEM mapped
memory, it accesses the HIGHMEM area in the virtual address space. The size
of the HIGHMEM area in the virtual address space is smaller than the size of the
HIGHMEM mapped memory, so the Linux kernel manages address translation
using a page translation table. The Linux kernel is able to use the entire physical
memory by this mechanism.
The HIGHMEM framework for RP-X has been newly implemented. In this
case, we need to implement HIGHMEM framework without any modification of
application software (modifying all application software is unrealistic because
we have much application software). To solve this design issue, we separate
software components into three layers, a kernel layer, driver layer, and applica-
tion layer.
3. Kernel Layer
To implement the HIGHMEM framework, it is necessary to place the HIGHMEM
area in the virtual address space (Fig. 5.5 ). To place this area, we need to modify
a memory access function that is architecture dependent.
4. Driver Layer
In the driver layer, we need to consider two device spaces, the I/O space and
memory-mapped I/O space. The I/O space is not related to the virtual address
space because dedicated CPU instructions to access the I/O space are used.
Therefore, I/O space drivers can be used without any modifications. SH architecture
Search WWH ::




Custom Search