mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 12:08:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| Notes for the Qemu MIPS port
 | |
| 
 | |
| I) Example usage:
 | |
| 
 | |
| # ln -s u-boot.bin mips_bios.bin
 | |
| start it:
 | |
| qemu-system-mips -L . /dev/null -nographic
 | |
| 
 | |
| or
 | |
| 
 | |
| if you use a qemu version after commit 4224
 | |
| 
 | |
| create image:
 | |
| # dd of=flash bs=1k count=4k if=/dev/zero
 | |
| # dd of=flash bs=1k conv=notrunc if=u-boot.bin
 | |
| start it:
 | |
| # qemu-system-mips -M mips -pflash flash -monitor null -nographic
 | |
| 
 | |
| II) How to debug U-Boot
 | |
| 
 | |
| In order to debug U-Boot you need to start qemu with gdb server support (-s)
 | |
| and waiting the connection to start the CPU (-S)
 | |
| 
 | |
| # qemu-system-mips -S -s -M mips -pflash flash -monitor null -nographic
 | |
| 
 | |
| in an other console you start gdb
 | |
| 
 | |
| 1) Debugging of U-Boot Before Relocation
 | |
| 
 | |
| Before relocation, the addresses in the ELF file can be used without any problems
 | |
| buy connecting to the gdb server localhost:1234
 | |
| 
 | |
| # mipsel-unknown-linux-gnu-gdb u-boot
 | |
| GNU gdb 6.6
 | |
| Copyright (C) 2006 Free Software Foundation, Inc.
 | |
| GDB is free software, covered by the GNU General Public License, and you are
 | |
| welcome to change it and/or distribute copies of it under certain conditions.
 | |
| Type "show copying" to see the conditions.
 | |
| There is absolutely no warranty for GDB.  Type "show warranty" for details.
 | |
| This GDB was configured as "--host=i486-linux-gnu --target=mipsel-unknown-linux-gnu"...
 | |
| (gdb)  target remote localhost:1234
 | |
| Remote debugging using localhost:1234
 | |
| _start () at start.S:64
 | |
| 64		RVECENT(reset,0)	/* U-boot entry point */
 | |
| Current language:  auto; currently asm
 | |
| (gdb)  b board.c:289
 | |
| Breakpoint 1 at 0xbfc00cc8: file board.c, line 289.
 | |
| (gdb) c
 | |
| Continuing.
 | |
| 
 | |
| Breakpoint 1, board_init_f (bootflag=<value optimized out>) at board.c:290
 | |
| 290		relocate_code (addr_sp, id, addr);
 | |
| Current language:  auto; currently c
 | |
| (gdb) p/x addr
 | |
| $1 = 0x87fa0000
 | |
| 
 | |
| 2) Debugging of U-Boot After Relocation
 | |
| 
 | |
| For debugging U-Boot after relocation we need to know the address to which
 | |
| U-Boot relocates itself to 0x87fa0000 by default.
 | |
| And replace the symbol table to this offset.
 | |
| 
 | |
| (gdb) symbol-file
 | |
| Discard symbol table from `/private/u-boot-arm/u-boot'? (y or n) y
 | |
| Error in re-setting breakpoint 1:
 | |
| No symbol table is loaded.  Use the "file" command.
 | |
| No symbol file now.
 | |
| (gdb) add-symbol-file u-boot 0x87fa0000
 | |
| add symbol table from file "u-boot" at
 | |
| 	.text_addr = 0x87fa0000
 | |
| (y or n) y
 | |
| Reading symbols from /private/u-boot-arm/u-boot...done.
 | |
| Breakpoint 1 at 0x87fa0cc8: file board.c, line 289.
 | |
| (gdb) c
 | |
| Continuing.
 | |
| 
 | |
| Program received signal SIGINT, Interrupt.
 | |
| 0xffffffff87fa0de4 in udelay (usec=<value optimized out>) at time.c:78
 | |
| 78		while ((tmo - read_c0_count()) < 0x7fffffff)
 |