Article Title: Address issues during Linux kernel startup. Linux is a technology channel of the IT lab in China. Includes basic categories such as desktop applications, Linux system management, kernel research, embedded systems, and open source.
Question 1:
I found that TEXT = 0xC0008000 is the virtual address for Kernel startup. What is the concept of virtual address here? What is the virtual address? Why is TEXT = 0xC0008000? Is the virtual address setting related to the chip?
Question 2:
Are ZTEXTADDR and ZRELADDR offset addresses? I think the makefile in the s3c2410 I used defines ZTEXTADDR = 0x30008000 ZRELADDR = 0x30008000. It seems that it is not a virtual address concept, it should be the starting address of the Self-extracting code and the starting address of the code output after the kernel is decompressed. But why do I know from the Internet that these two are offset addresses?
Question 3:
Also, the online query says, "If you need to start from flash, you also need to set the ZTEXTADDR address ." What does it mean? Does it mean to store the kernel compressed file in FLASH? Why does it correspond to the ZTEXTADDR address? Because I think the specified ZTEXTADDR address is the address of the SDRAM.
Answer: set the TEXT variable based on your circuit.
ZRELADDR determines the data output address after the kernel is decompressed.
ZTEXTADDR is the starting address of flash for burning the compressed Kernel File of bootloader, that is, the starting position where the bootloader is executed. If it runs directly at startup, set it to 0; if the built-in bios can jump to the desired address, you can change it to the desired location. Set ZTEXTADDR and ZRELADDR variables based on your own circuit.