Reason for modification:
Because both eboot and kitl call the dm9000dbg_init function at the same time, when eboot is removed, the address is not mapped. When the image is loaded, the address is mapped. However, dm9000dbg_init is not mapped. The direct consequence of this operation is that kitl immediately crashes when the access address is unavailable (0x15000000.
However, another problem is raised, that is, when eboot is started, the mapped address is used, accessing the mapped address in eboot will also crash (because MMU is not available ).
Finally, we found a solution that is better than the following:
When compiling eboot, use the followingCode:
Dm9000dbg_init
{
......
// Add ed by Peng
/Oalpatova (uint32) 0x15000000, false );
// Oalpatova (uint32) 0x15000000 + 0x400, false );
// Mask by Peng
// Give the index and data port address
Dwindexportaddress = 0 x15000000;
Dwdataportaddress = 0x15000000 + 0x400;
.......
}
Use the following code to compile the kernel:
Dm9000dbg_init
{
......
// Add ed by Peng
Dwindexportaddress = oalpatova (uint32) 0x15000000, false );
Dwdataportaddress = oalpatova (uint32) 0x15000000 + 0x400, false );
// Mask by Peng
// Give the index and data port address
// Dwindexportaddress = 0x15000000;
// Dwdataportaddress = 0x15000000 + 0x400;
.......
}