In the link script, the starting address is 0xffffffff00000000. I can then load my own bare metal kernel (for aarch64) in an arbitrary (physical) address and use relative addressing. So when I turn on MMU, how do I know memory won't be written at where kernel is loaded? I mean, if I loaded kernel at 0x01000000, and map physical memory from 0xffffffff00000000 to 0xffffffffffffffff, it seems to me I will still be running into problems if I combine relative with absolute addressing. And it seems like the only solution is to ensure the kernel is loaded always at the same physical address, and then to map that to 0xffffffff00000000... But somehow this beats the purpose of an MMU. Am I correct in my thinking?
mmu in arm: how to map kernel code (bare metal)
397 Views Asked by samuzu.pazael At
1
There are 1 best solutions below
Related Questions in ARM64
- Advanced Arm64 books or tutorials?
- Copy constructors and const& versus the ARM ABI
- Failed to find a mounted cgroups hierarchy for the 'cpu' subsystem; you probably need to mount cgroups manually on MacOS Sonoma 14.3.1
- docker inspect splunkImage Container ID: Warining: cannot create \"/opt/splunk/var/log/splunk
- How to work around the "collect2: error: ld returned 1 exit status" error when running simple fortran files with the gfortran command?
- How to run android emulator on Ubuntu 20.04 arm64 architecture
- OpenSSL with C++ app - getting undefined references during compilation
- How do I get the atoi function to work in Assembly?
- How to navigate to the structure definition for the target architecture when cross-compiling on Ubuntu with VS Code?
- Why is data loaded bigger than expected using ADRP, ADD, and LDR instructions?
- Can't start complete colima & docker engine as x86_64 on arm64
- ARM Neon Intrinsics - Lanes in FMA
- Linker Command Failed with Exit Code 1 When Excluding arm64 Architecture on Simulator with Xcode 15
- cpython3.6.15 has Bus error (core dumped) problem in arm paltform
- QMainWindow not found
Related Questions in BARE-METAL
- In rke kube-proxy pod is not present
- Portenta H7 Baremetal Development and a Little Guidance on Embedded System Learning Roadmap
- I am trying to write bare metal programming for STM32F407, How to configure registers the steps to initialize the CAN1 to transmit the message
- Debug a fake STM32F103C6 using STM32CubeIDE
- Unit tests on registers with bare metal programming
- ARM Cortex-A9 MCR for some CoProcs Causes Undefined Instruction in SYS Mode
- I'm programming UART on STM32F103C6. I made the code below but when I try it, it's not working. Could anyone help me find my error?
- Assistance Needed: Trouble Running Bare-Metal Code on second core in Cyclone V SoC
- STM32G4 Irq Handler block main function
- libgcc - Overview from the used functions by gcc depending on the architecture
- Why does I2C send wrong data?
- Initializer element is not a compile-time constant but compiler doesn't throw error
- Can't make UART work in Bare Metal using STM32
- How to implement non-blocking IO input in embedded baremetal systems?
- Using CMSIS with baremetal ARM cortex-M0 on Texas Instruments
Related Questions in MMU
- Converting virtual address to real address - in hexadecimal
- What are the differences between VMID and ASID in the context of virtualization and operating systems?
- If multi-core CPUs share the MMU, can multiple processes run in parallel?
- Address translation from supervisor to user mode in RiscV
- Why does it take so long for cpu to write memory after it has obtained the physical address?
- What is (special in) the elf format for static-pie? And what preforms the fixups to the GOT?
- Is it possible to disable completely the MMU/MPU and read/write in completely arbitrary memory regions?
- fb_deferred_io callback is never called in framebuffer driver on Raspberry Pi Zero V1.1
- How are memory addresses translated in QEMU
- Can two pages have the same physical address + offset?
- How do memory controllers allocate a page?
- Does TTBR1 changes after linux kernel init (ARMv8-A)?
- What is the Armv8 VMMU address range limit for 4K pages
- Unable to access any addresses after enabling MMU in QEMU on arm64
- Understanding AArch64 Translation Tables
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Actually the realization that ADR instruction on Aarch64 returns physical address helped me achieve what I wanted. I hope I am right in my thinking, though:
So I don't really need to know the physical address (at which the kernel was loaded) at compile time to set a boundary around kernel to set MMU up properly.