~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to doc/README.qemu_mips

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
Notes for the Qemu MIPS port
 
3
 
 
4
I) Example usage:
 
5
 
 
6
# ln -s u-boot.bin mips_bios.bin
 
7
start it:
 
8
qemu-system-mips -L . /dev/null -nographic
 
9
 
 
10
or
 
11
 
 
12
if you use a qemu version after commit 4224
 
13
 
 
14
create image:
 
15
# dd of=flash bs=1k count=4k if=/dev/zero
 
16
# dd of=flash bs=1k conv=notrunc if=u-boot.bin
 
17
start it:
 
18
# qemu-system-mips -M mips -pflash flash -monitor null -nographic
 
19
 
 
20
2) Download kernel + initrd
 
21
 
 
22
On ftp://ftp.denx.de/pub/contrib/Jean-Christophe_Plagniol-Villard/qemu_mips/
 
23
you can downland
 
24
 
 
25
#config to build the kernel
 
26
qemu_mips_defconfig
 
27
#patch to fix mips interupt init on 2.6.24.y kernel
 
28
qemu_mips_kernel.patch
 
29
initrd.gz
 
30
vmlinux
 
31
vmlinux.bin
 
32
System.map
 
33
 
 
34
4) Generate uImage
 
35
 
 
36
# tools/mkimage -A mips -O linux -T kernel -C gzip -a 0x80010000 -e 0x80245650 -n "Linux 2.6.24.y" -d vmlinux.bin.gz uImage
 
37
 
 
38
5) Copy uImage to Flash
 
39
# dd if=uImage bs=1k conv=notrunc seek=224 of=flash
 
40
 
 
41
6) Generate Ide Disk
 
42
 
 
43
# dd of=ide bs=1k cout=100k if=/dev/zero
 
44
 
 
45
# sfdisk -C 261 -d ide
 
46
# partition table of ide
 
47
unit: sectors
 
48
 
 
49
     ide1 : start=       63, size=    32067, Id=83
 
50
     ide2 : start=    32130, size=    32130, Id=83
 
51
     ide3 : start=    64260, size=  4128705, Id=83
 
52
     ide4 : start=        0, size=        0, Id= 0
 
53
 
 
54
7) Copy to ide
 
55
 
 
56
# dd if=uImage bs=512 conv=notrunc seek=63 of=ide
 
57
 
 
58
8) Generate ext2 on part 2 on Copy uImage and initrd.gz
 
59
 
 
60
# Attached as loop device ide offset = 32130 * 512
 
61
# losetup -o 16450560 -f ide
 
62
# Format as ext2 ( arg2 : nb blocks)
 
63
# mke2fs /dev/loop0 16065
 
64
# losetup -d /dev/loop0
 
65
# Mount and copy uImage and initrd.gz to it
 
66
# mount -o loop,offset=16450560 -t ext2 ide /mnt
 
67
# mkdir /mnt/boot
 
68
# cp {initrd.gz,uImage} /mnt/boot/
 
69
# Umount it
 
70
# umount /mnt
 
71
 
 
72
9) Set Environment
 
73
 
 
74
setenv rd_start 0x80800000
 
75
setenv rd_size 2663940
 
76
setenv kernel BFC38000
 
77
setenv oad_addr 80500000
 
78
setenv load_addr2 80F00000
 
79
setenv kernel_flash BFC38000
 
80
setenv load_addr_hello 80200000
 
81
setenv bootargs 'root=/dev/ram0 init=/bin/sh'
 
82
setenv load_rd_ext2 'ide res; ext2load ide 0:2 ${rd_start} /boot/initrd.gz'
 
83
setenv load_rd_tftp 'tftp ${rd_start} /initrd.gz'
 
84
setenv load_kernel_hda 'ide res; diskboot ${load_addr} 0:2'
 
85
setenv load_kernel_ext2 'ide res; ext2load ide 0:2 ${load_addr} /boot/uImage'
 
86
setenv load_kernel_tftp 'tftp ${load_addr} /qemu_mips/uImage'
 
87
setenv boot_ext2_ext2 'run load_rd_ext2; run load_kernel_ext2; run addmisc; bootm ${load_addr}'
 
88
setenv boot_ext2_flash 'run load_rd_ext2; run addmisc; bootm ${kernel_flash}'
 
89
setenv boot_ext2_hda 'run load_rd_ext2; run load_kernel_hda; run addmisc; bootm ${load_addr}'
 
90
setenv boot_ext2_tftp 'run load_rd_ext2; run load_kernel_tftp; run addmisc; bootm ${load_addr}'
 
91
setenv boot_tftp_hda 'run load_rd_tftp; run load_kernel_hda; run addmisc; bootm ${load_addr}'
 
92
setenv boot_tftp_ext2 'run load_rd_tftp; run load_kernel_ext2; run addmisc; bootm ${load_addr}'
 
93
setenv boot_tftp_flash 'run load_rd_tftp; run addmisc; bootm ${kernel_flash}'
 
94
setenv boot_tftp_tftp 'run load_rd_tftp; run load_kernel_tftp; run addmisc; bootm ${load_addr}'
 
95
setenv load_hello_tftp 'tftp ${load_addr_hello} /examples/hello_world.bin'
 
96
setenv go_tftp 'run load_hello_tftp; go ${load_addr_hello}'
 
97
setenv addmisc 'setenv bootargs ${bootargs} console=ttyS0,${baudrate} rd_start=${rd_start} rd_size=${rd_size} ethaddr=${ethaddr}'
 
98
setenv bootcmd 'run boot_tftp_flash'
 
99
 
 
100
10) Now you can boot from flash, ide, ide+ext2 and tfp
 
101
 
 
102
# qemu-system-mips -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide
 
103
 
 
104
II) How to debug U-Boot
 
105
 
 
106
In order to debug U-Boot you need to start qemu with gdb server support (-s)
 
107
and waiting the connection to start the CPU (-S)
 
108
 
 
109
# qemu-system-mips -S -s -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide
 
110
 
 
111
in an other console you start gdb
 
112
 
 
113
1) Debugging of U-Boot Before Relocation
 
114
 
 
115
Before relocation, the addresses in the ELF file can be used without any problems
 
116
by connecting to the gdb server localhost:1234
 
117
 
 
118
# mipsel-unknown-linux-gnu-gdb u-boot
 
119
GNU gdb 6.6
 
120
Copyright (C) 2006 Free Software Foundation, Inc.
 
121
GDB is free software, covered by the GNU General Public License, and you are
 
122
welcome to change it and/or distribute copies of it under certain conditions.
 
123
Type "show copying" to see the conditions.
 
124
There is absolutely no warranty for GDB.  Type "show warranty" for details.
 
125
This GDB was configured as "--host=i486-linux-gnu --target=mipsel-unknown-linux-gnu"...
 
126
(gdb)  target remote localhost:1234
 
127
Remote debugging using localhost:1234
 
128
_start () at start.S:64
 
129
64              RVECENT(reset,0)        /* U-boot entry point */
 
130
Current language:  auto; currently asm
 
131
(gdb)  b board.c:289
 
132
Breakpoint 1 at 0xbfc00cc8: file board.c, line 289.
 
133
(gdb) c
 
134
Continuing.
 
135
 
 
136
Breakpoint 1, board_init_f (bootflag=<value optimized out>) at board.c:290
 
137
290             relocate_code (addr_sp, id, addr);
 
138
Current language:  auto; currently c
 
139
(gdb) p/x addr
 
140
$1 = 0x87fa0000
 
141
 
 
142
2) Debugging of U-Boot After Relocation
 
143
 
 
144
For debugging U-Boot after relocation we need to know the address to which
 
145
U-Boot relocates itself to 0x87fa0000 by default.
 
146
And replace the symbol table to this offset.
 
147
 
 
148
(gdb) symbol-file
 
149
Discard symbol table from `/private/u-boot-arm/u-boot'? (y or n) y
 
150
Error in re-setting breakpoint 1:
 
151
No symbol table is loaded.  Use the "file" command.
 
152
No symbol file now.
 
153
(gdb) add-symbol-file u-boot 0x87fa0000
 
154
add symbol table from file "u-boot" at
 
155
        .text_addr = 0x87fa0000
 
156
(y or n) y
 
157
Reading symbols from /private/u-boot-arm/u-boot...done.
 
158
Breakpoint 1 at 0x87fa0cc8: file board.c, line 289.
 
159
(gdb) c
 
160
Continuing.
 
161
 
 
162
Program received signal SIGINT, Interrupt.
 
163
0xffffffff87fa0de4 in udelay (usec=<value optimized out>) at time.c:78
 
164
78              while ((tmo - read_c0_count()) < 0x7fffffff)