- MIPS: octeon: fix CFI flash setup

- MIPS: remove qemu_mips boards
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiQkHUH+J02LLC9InKPlOlyTyXBgFAmCs/XcACgkQKPlOlyTy
 XBhc2g//fMT4IfCjRRwKXdTuifpqI80ONPoNNaf2Hwq7AeW5l0VPdXd5JfMYJBHX
 107gLyR6QL5UtZyixF1DR2COjVe2k/4Bw60crGt2AvRmW9eeej+QKmZ84Zgam+sy
 a5fgkqsQrNVccWZWJyGw5MCrdLbK02JZUQBUsT0YiAr6dlyyV8ZWPtWFkisyfYTr
 5J/a1z+D7G1BJqgus7iLOMsWpKoE2otXefJGWG4qPDGH80SN845MzkPRQeeZahxF
 03oQPkiLwrjYRXorL7x7cozansi22HpY+3RtW+vxuox64HTWe6Ruam4bkeqPDpXw
 k4Mko0PxGLnzett/GzPg/pIJ9Mn4YiMzILg6QcWTfFbtyPt8ZZkhe+D0Zo8kvrko
 LZZeh0yBxuYwChCvcIfXyaY/L7w1GpSmhJZH5Vj+ufzUCPX83+ZdlYkni5esNjjt
 lFuJ/gNdvZC0Yr44ipVb3hHeNuaKe77RJV/DUiO9YCz24eGkg5BV+LAD/B7JiUzx
 E16e9+NSSkHEzI3nIktX+Qf8zedwEi0/6dItElIaBJ6l2BawGEZnwGJhZ46tl/dw
 muhIAoFfjlXFepqmzzgqD/l4BSU+J5iStzzMk83tDGp5h9zdTDrc3Zn5VfndTjhp
 KYGR6IU9CTgugojwljAc5QwXhja4NnSri0Tghkgfs/wJHtiBW8U=
 =g+33
 -----END PGP SIGNATURE-----

Merge tag 'mips-pull-2021-05-25' of https://source.denx.de/u-boot/custodians/u-boot-mips

- MIPS: octeon: fix CFI flash setup
- MIPS: remove qemu_mips boards
This commit is contained in:
Tom Rini 2021-05-25 11:48:37 -04:00
commit 4c3e99460c
17 changed files with 79 additions and 707 deletions

View File

@ -205,18 +205,6 @@ jobs:
qemu_arm64:
TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep"
qemu_mips:
TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep"
qemu_mipsel:
TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep"
qemu_mips64:
TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep"
qemu_mips64el:
TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep"
qemu_malta:
TEST_PY_BD: "malta"
TEST_PY_ID: "--id qemu"

View File

@ -225,30 +225,6 @@ qemu_arm64 test.py:
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu_mips test.py:
variables:
TEST_PY_BD: "qemu_mips"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu_mipsel test.py:
variables:
TEST_PY_BD: "qemu_mipsel"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu_mips64 test.py:
variables:
TEST_PY_BD: "qemu_mips64"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu_mips64el test.py:
variables:
TEST_PY_BD: "qemu_mips64el"
TEST_PY_TEST_SPEC: "not sleep"
<<: *buildman_and_testpy_dfn
qemu_malta test.py:
variables:
TEST_PY_BD: "malta"

View File

@ -12,16 +12,6 @@ choice
prompt "Target select"
optional
config TARGET_QEMU_MIPS
bool "Support qemu-mips"
select ROM_EXCEPTION_VECTORS
select SUPPORTS_BIG_ENDIAN
select SUPPORTS_CPU_MIPS32_R1
select SUPPORTS_CPU_MIPS32_R2
select SUPPORTS_CPU_MIPS64_R1
select SUPPORTS_CPU_MIPS64_R2
select SUPPORTS_LITTLE_ENDIAN
config TARGET_MALTA
bool "Support malta"
select DM
@ -174,7 +164,6 @@ endchoice
source "board/imgtec/boston/Kconfig"
source "board/imgtec/malta/Kconfig"
source "board/imgtec/xilfpga/Kconfig"
source "board/qemu-mips/Kconfig"
source "arch/mips/mach-ath79/Kconfig"
source "arch/mips/mach-mscc/Kconfig"
source "arch/mips/mach-bmips/Kconfig"

View File

@ -1,26 +0,0 @@
if TARGET_QEMU_MIPS
config SYS_BOARD
default "qemu-mips"
config SYS_CONFIG_NAME
default "qemu-mips" if 32BIT
default "qemu-mips64" if 64BIT
config SYS_TEXT_BASE
default 0xbfc00000 if 32BIT
default 0xffffffffbfc00000 if 64BIT
config SYS_DCACHE_SIZE
default 16384
config SYS_DCACHE_LINE_SIZE
default 32
config SYS_ICACHE_SIZE
default 16384
config SYS_ICACHE_LINE_SIZE
default 32
endif

View File

@ -1,14 +0,0 @@
QEMU-MIPS BOARD
M: Vlad Lungu <vlad.lungu@windriver.com>
S: Maintained
F: board/qemu-mips/
F: include/configs/qemu-mips.h
F: configs/qemu_mips_defconfig
QEMU_MIPSEL BOARD
#M: -
S: Maintained
F: configs/qemu_mipsel_defconfig
F: include/configs/qemu-mips64.h
F: configs/qemu_mips64_defconfig
F: configs/qemu_mips64el_defconfig

View File

@ -1,7 +0,0 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2003-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
obj-y = qemu-mips.o
obj-y += lowlevel_init.o

View File

@ -1,40 +0,0 @@
/* Memory sub-system initialization code */
#include <config.h>
#include <asm/regdef.h>
#include <asm/mipsregs.h>
.text
.set noreorder
.set mips32
.globl lowlevel_init
lowlevel_init:
/*
* Step 2) Establish Status Register
* (set BEV, clear ERL, clear EXL, clear IE)
*/
li t1, 0x00400000
mtc0 t1, CP0_STATUS
/*
* Step 3) Establish CP0 Config0
* (set K0=3)
*/
li t1, 0x00000003
mtc0 t1, CP0_CONFIG
/*
* Step 7) Establish Cause
* (set IV bit)
*/
li t1, 0x00800000
mtc0 t1, CP0_CAUSE
/* Establish Wired (and Random) */
mtc0 zero, CP0_WIRED
nop
jr ra
nop

View File

@ -1,85 +0,0 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2007
* Vlad Lungu vlad.lungu@windriver.com
*/
#include <common.h>
#include <command.h>
#include <init.h>
#include <net.h>
#include <asm/global_data.h>
#include <asm/mipsregs.h>
#include <asm/io.h>
#include <netdev.h>
DECLARE_GLOBAL_DATA_PTR;
int dram_init(void)
{
/* Sdram is setup by assembler code */
/* If memory could be changed, we should return the true value here */
gd->ram_size = MEM_SIZE * 1024 * 1024;
return 0;
}
int checkboard(void)
{
u32 proc_id;
u32 config1;
proc_id = read_c0_prid();
printf("Board: Qemu -M mips CPU: ");
switch (proc_id) {
case 0x00018000:
printf("4Kc");
break;
case 0x00018400:
printf("4KEcR1");
break;
case 0x00019000:
printf("4KEc");
break;
case 0x00019300:
config1 = read_c0_config1();
if (config1 & 1)
printf("24Kf");
else
printf("24Kc");
break;
case 0x00019500:
printf("34Kf");
break;
case 0x00000400:
printf("R4000");
break;
case 0x00018100:
config1 = read_c0_config1();
if (config1 & 1)
printf("5Kf");
else
printf("5Kc");
break;
case 0x000182a0:
printf("20Kc");
break;
default:
printf("unknown");
}
printf(" proc_id=0x%x\n", proc_id);
return 0;
}
int misc_init_r(void)
{
set_io_port_base(0);
return 0;
}
int board_eth_init(struct bd_info *bis)
{
return ne2k_register();
}

View File

@ -3,7 +3,7 @@ CONFIG_SYS_TEXT_BASE=0xffffffff80000000
CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_NR_DRAM_BANKS=2
CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_SECT_SIZE=0x10000
CONFIG_ENV_SECT_SIZE=0x2000
CONFIG_DEBUG_UART_BASE=0x8001180000000800
CONFIG_DEBUG_UART_CLOCK=1200000000
CONFIG_ARCH_OCTEON=y
@ -33,7 +33,7 @@ CONFIG_AMIGA_PARTITION=y
CONFIG_EFI_PARTITION=y
CONFIG_PARTITION_TYPE_GUID=y
CONFIG_ENV_IS_IN_FLASH=y
CONFIG_ENV_ADDR=0x1FBFE000
CONFIG_ENV_ADDR=0x800000001FBFE000
CONFIG_CLK=y
# CONFIG_INPUT is not set
CONFIG_MISC=y
@ -46,6 +46,7 @@ CONFIG_FLASH_CFI_DRIVER=y
CONFIG_CFI_FLASH=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_FLASH_CFI_MTD=y
CONFIG_SYS_FLASH_PROTECTION=y
CONFIG_SYS_FLASH_CFI=y
CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_ATMEL=y

View File

@ -1,29 +0,0 @@
CONFIG_MIPS=y
CONFIG_SYS_TEXT_BASE=0xFFFFFFFFBFC00000
CONFIG_ENV_SIZE=0x8000
CONFIG_ENV_SECT_SIZE=0x8000
CONFIG_TARGET_QEMU_MIPS=y
CONFIG_CPU_MIPS64_R1=y
CONFIG_BOOTDELAY=10
CONFIG_MISC_INIT_R=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="qemu-mips64 # "
CONFIG_CMD_IMLS=y
CONFIG_CMD_IDE=y
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_LOADS is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_RARP=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
# CONFIG_ISO_PARTITION is not set
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_FLASH=y
CONFIG_ENV_ADDR=0xFFFFFFFFBFFF8000
CONFIG_MTD_NOR_FLASH=y
CONFIG_FLASH_CFI_DRIVER=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_SYS_FLASH_CFI=y
CONFIG_SYS_NS16550=y
CONFIG_LZMA=y

View File

@ -1,30 +0,0 @@
CONFIG_MIPS=y
CONFIG_SYS_TEXT_BASE=0xFFFFFFFFBFC00000
CONFIG_ENV_SIZE=0x8000
CONFIG_ENV_SECT_SIZE=0x8000
CONFIG_TARGET_QEMU_MIPS=y
CONFIG_SYS_LITTLE_ENDIAN=y
CONFIG_CPU_MIPS64_R1=y
CONFIG_BOOTDELAY=10
CONFIG_MISC_INIT_R=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="qemu-mips64el # "
CONFIG_CMD_IMLS=y
CONFIG_CMD_IDE=y
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_LOADS is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_RARP=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
# CONFIG_ISO_PARTITION is not set
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_FLASH=y
CONFIG_ENV_ADDR=0xFFFFFFFFBFFF8000
CONFIG_MTD_NOR_FLASH=y
CONFIG_FLASH_CFI_DRIVER=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_SYS_FLASH_CFI=y
CONFIG_SYS_NS16550=y
CONFIG_LZMA=y

View File

@ -1,27 +0,0 @@
CONFIG_MIPS=y
CONFIG_SYS_TEXT_BASE=0xBFC00000
CONFIG_ENV_SIZE=0x8000
CONFIG_ENV_SECT_SIZE=0x8000
CONFIG_TARGET_QEMU_MIPS=y
CONFIG_BOOTDELAY=10
CONFIG_MISC_INIT_R=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="qemu-mips # "
CONFIG_CMD_IMLS=y
CONFIG_CMD_IDE=y
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_LOADS is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
# CONFIG_ISO_PARTITION is not set
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_FLASH=y
CONFIG_ENV_ADDR=0xBFFF8000
CONFIG_MTD_NOR_FLASH=y
CONFIG_FLASH_CFI_DRIVER=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_SYS_FLASH_CFI=y
CONFIG_SYS_NS16550=y
CONFIG_LZMA=y

View File

@ -1,28 +0,0 @@
CONFIG_MIPS=y
CONFIG_SYS_TEXT_BASE=0xBFC00000
CONFIG_ENV_SIZE=0x8000
CONFIG_ENV_SECT_SIZE=0x8000
CONFIG_TARGET_QEMU_MIPS=y
CONFIG_SYS_LITTLE_ENDIAN=y
CONFIG_BOOTDELAY=10
CONFIG_MISC_INIT_R=y
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="qemu-mipsel # "
CONFIG_CMD_IMLS=y
CONFIG_CMD_IDE=y
# CONFIG_CMD_LOADB is not set
# CONFIG_CMD_LOADS is not set
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_DHCP=y
CONFIG_CMD_EXT2=y
CONFIG_CMD_FAT=y
# CONFIG_ISO_PARTITION is not set
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_FLASH=y
CONFIG_ENV_ADDR=0xBFFF8000
CONFIG_MTD_NOR_FLASH=y
CONFIG_FLASH_CFI_DRIVER=y
CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
CONFIG_SYS_FLASH_CFI=y
CONFIG_SYS_NS16550=y
CONFIG_LZMA=y

View File

@ -1,246 +1,129 @@
.. SPDX-License-Identifier: GPL-2.0+
.. sectionauthor:: Vlad Lungu <vlad.lungu@windriver.com>
.. sectionauthor:: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
QEMU MIPS
=========
Qemu is a full system emulator. See http://www.nongnu.org/qemu/
Qemu for MIPS is based on the MIPS Malta board. The built Malta U-Boot
images can be used for Qemu and on physical hardware. The Malta board
supports all combinations of Little and Big Endian as well as 32 bit
and 64 bit.
Limitations & comments
----------------------
Supports the "-M mips" configuration of qemu: serial,NE2000,IDE.
Supports little and big endian as well as 32 bit and 64 bit.
Derived from au1x00 with a lot of things cut out.
Supports emulated flash (patch Jean-Christophe PLAGNIOL-VILLARD) with
recent qemu versions. When using emulated flash, launch with
-pflash <filename> and erase mips_bios.bin.
Notes for the Qemu MIPS port
----------------------------
The memory size for Qemu is hard-coded to 256 MiB. For Malta Little Endian
targets an extra endianness swapped image named *u-boot-swap.bin* is
generated and required for Qemu.
Example usage
^^^^^^^^^^^^^
-------------
Using u-boot.bin as ROM (replaces Qemu monitor):
32 bit, big endian
Build for 32 bit, big endian:
.. code-block:: bash
make qemu_mips_defconfig
qemu-system-mips -M mips -bios u-boot.bin -nographic
make malta_defconfig
make
UBOOT_BIN=u-boot.bin
QEMU_BIN=qemu-system-mips
QEMU_CPU=24Kc
32 bit, little endian
Build for 32 bit, little endian:
.. code-block:: bash
make qemu_mipsel_defconfig
qemu-system-mipsel -M mips -bios u-boot.bin -nographic
make maltael_defconfig
make
UBOOT_BIN=u-boot-swap.bin
QEMU_BIN=qemu-system-mipsel
QEMU_CPU=24Kc
64 bit, big endian
Build for 64 bit, big endian:
.. code-block:: bash
make qemu_mips64_defconfig
qemu-system-mips64 -cpu MIPS64R2-generic -M mips -bios u-boot.bin -nographic
make malta64_defconfig
make
UBOOT_BIN=u-boot.bin
QEMU_BIN=qemu-system-mips64
QEMU_CPU=MIPS64R2-generic
64 bit, little endian
Build for 64 bit, little endian:
.. code-block:: bash
make qemu_mips64el_defconfig
qemu-system-mips64el -cpu MIPS64R2-generic -M mips -bios u-boot.bin -nographic
make malta64el_defconfig
make
UBOOT_BIN=u-boot-swap.bin
QEMU_BIN=qemu-system-mips64el
QEMU_CPU=MIPS64R2-generic
or using u-boot.bin from emulated flash:
if you use a QEMU version after commit 4224
Generate NOR flash image with U-Boot binary:
.. code-block:: bash
# 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 (see above):
qemu-system-mips[64][el] [-cpu MIPS64R2-generic] -M mips -pflash flash -nographic
dd if=/dev/zero bs=1M count=4 | tr '\000' '\377' > pflash.img
dd if=${UBOOT_BIN} of=pflash.img conv=notrunc
Download kernel + initrd
^^^^^^^^^^^^^^^^^^^^^^^^
On ftp://ftp.denx.de/pub/contrib/Jean-Christophe_Plagniol-Villard/qemu_mips/
you can downland::
#config to build the kernel
qemu_mips_defconfig
#patch to fix mips interrupt init on 2.6.24.y kernel
qemu_mips_kernel.patch
initrd.gz
vmlinux
vmlinux.bin
System.map
Generate uImage
^^^^^^^^^^^^^^^
Start Qemu:
.. code-block:: bash
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
Copy uImage to Flash
^^^^^^^^^^^^^^^^^^^^
mkdir tftproot
${QEMU_BIN} -nographic -cpu ${QEMU_CPU} -m 256 -drive if=pflash,file="$(pwd)/pflash.img",format=raw -netdev user,id=net0,tftp="$(pwd)/tftproot" -device pcnet,netdev=net0
.. code-block:: bash
dd if=uImage bs=1k conv=notrunc seek=224 of=flash
U-Boot 2021.04-00963-g60279a2b1d (Apr 21 2021 - 19:54:32 +0200)
Generate Ide Disk
^^^^^^^^^^^^^^^^^
.. code-block:: bash
dd of=ide bs=1k count=100k if=/dev/zero
# Create partion table
sudo sfdisk ide << EOF
label: dos
label-id: 0x6fe3a999
device: image
unit: sectors
image1 : start= 63, size= 32067, Id=83
image2 : start= 32130, size= 32130, Id=83
image3 : start= 64260, size= 4128705, Id=83
EOF
Copy to ide
^^^^^^^^^^^
.. code-block:: bash
dd if=uImage bs=512 conv=notrunc seek=63 of=ide
Generate ext2 on part 2 on Copy uImage and initrd.gz
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: bash
# Attached as loop device ide offset = 32130 * 512
sudo losetup -o 16450560 /dev/loop0 ide
# Format as ext2 ( arg2 : nb blocks)
sudo mkfs.ext2 /dev/loop0 16065
sudo losetup -d /dev/loop0
# Mount and copy uImage and initrd.gz to it
sudo mount -o loop,offset=16450560 -t ext2 ide /mnt
sudo mkdir /mnt/boot
cp {initrd.gz,uImage} /mnt/boot/
# Umount it
sudo umount /mnt
Set Environment
^^^^^^^^^^^^^^^
.. code-block:: bash
setenv rd_start 0x80800000
setenv rd_size 2663940
setenv kernel BFC38000
setenv oad_addr 80500000
setenv load_addr2 80F00000
setenv kernel_flash BFC38000
setenv load_addr_hello 80200000
setenv bootargs 'root=/dev/ram0 init=/bin/sh'
setenv load_rd_ext2 'ide res; ext2load ide 0:2 ${rd_start} /boot/initrd.gz'
setenv load_rd_tftp 'tftp ${rd_start} /initrd.gz'
setenv load_kernel_hda 'ide res; diskboot ${load_addr} 0:2'
setenv load_kernel_ext2 'ide res; ext2load ide 0:2 ${load_addr} /boot/uImage'
setenv load_kernel_tftp 'tftp ${load_addr} /qemu_mips/uImage'
setenv boot_ext2_ext2 'run load_rd_ext2; run load_kernel_ext2; run addmisc; bootm ${load_addr}'
setenv boot_ext2_flash 'run load_rd_ext2; run addmisc; bootm ${kernel_flash}'
setenv boot_ext2_hda 'run load_rd_ext2; run load_kernel_hda; run addmisc; bootm ${load_addr}'
setenv boot_ext2_tftp 'run load_rd_ext2; run load_kernel_tftp; run addmisc; bootm ${load_addr}'
setenv boot_tftp_hda 'run load_rd_tftp; run load_kernel_hda; run addmisc; bootm ${load_addr}'
setenv boot_tftp_ext2 'run load_rd_tftp; run load_kernel_ext2; run addmisc; bootm ${load_addr}'
setenv boot_tftp_flash 'run load_rd_tftp; run addmisc; bootm ${kernel_flash}'
setenv boot_tftp_tftp 'run load_rd_tftp; run load_kernel_tftp; run addmisc; bootm ${load_addr}'
setenv load_hello_tftp 'tftp ${load_addr_hello} /examples/hello_world.bin'
setenv go_tftp 'run load_hello_tftp; go ${load_addr_hello}'
setenv addmisc 'setenv bootargs ${bootargs} console=ttyS0,${baudrate} rd_start=${rd_start} rd_size=${rd_size} ethaddr=${ethaddr}'
setenv bootcmd 'run boot_tftp_flash'
Now you can boot from flash, ide, ide+ext2 and tfp
.. code-block:: bash
qemu-system-mips -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide
Board: MIPS Malta CoreLV
DRAM: 256 MiB
Flash: 4 MiB
Loading Environment from Flash... *** Warning - bad CRC, using default environment
In: serial@3f8
Out: serial@3f8
Err: serial@3f8
Net: pcnet#0
IDE: Bus 0: not available
maltael #
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)
and waiting the connection to start the CPU (-S). Start Qemu in the first console:
.. code-block:: bash
qemu-system-mips -S -s -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide
mkdir tftproot
${QEMU_BIN} -s -S -nographic -cpu ${QEMU_CPU} -m 256 -drive if=pflash,file="$(pwd)/pflash.img",format=raw -netdev user,id=net0,tftp="$(pwd)/tftproot" -device pcnet,netdev=net0
in an other console you start gdb
In the second console start gdb:
Debugging of U-Boot Before Relocation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: bash
Before relocation, the addresses in the ELF file can be used without any problems
by connecting to the gdb server localhost:1234
gdb-multiarch --eval-command "target remote :1234" u-boot
.. code-block:: none
.. code-block:: bash
$ 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.
GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
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
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.
.. code-block:: none
(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)
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from u-boot...
Remote debugging using :1234
0xbfc00000 in ?? ()
(gdb) c
Continuing.

View File

@ -1,89 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* (C) Copyright 2003
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*/
/*
* This file contains the configuration parameters for qemu-mips target.
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#define CONFIG_QEMU_MIPS
#define CONFIG_TIMESTAMP /* Print image info with timestamp */
#define CONFIG_EXTRA_ENV_SETTINGS \
"addmisc=setenv bootargs ${bootargs} " \
"console=ttyS0,${baudrate} " \
"panic=1\0" \
"bootfile=/tftpboot/vmlinux\0" \
"load=tftp 80500000 ${u-boot}\0" \
""
#define CONFIG_BOOTCOMMAND "bootp;bootelf"
/*
* BOOTP options
*/
#define CONFIG_BOOTP_BOOTFILESIZE
#define CONFIG_DRIVER_NE2000
#define CONFIG_DRIVER_NE2000_BASE 0xb4000300
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE 1
#define CONFIG_SYS_NS16550_CLK 115200
#define CONFIG_SYS_NS16550_COM1 0xb40003f8
#ifdef CONFIG_SYS_BIG_ENDIAN
#define CONFIG_IDE_SWAP_IO
#endif
#define CONFIG_SYS_IDE_MAXBUS 2
#define CONFIG_SYS_ATA_IDE0_OFFSET 0x1f0
#define CONFIG_SYS_ATA_IDE1_OFFSET 0x170
#define CONFIG_SYS_ATA_DATA_OFFSET 0
#define CONFIG_SYS_ATA_REG_OFFSET 0
#define CONFIG_SYS_ATA_BASE_ADDR 0xb4000000
#define CONFIG_SYS_IDE_MAXDEVICE 4
/*
* Miscellaneous configurable options
*/
#define CONFIG_SYS_MALLOC_LEN (256 << 10)
#define CONFIG_SYS_BOOTPARAMS_LEN 128*1024
#define CONFIG_SYS_MHZ 132
#define CONFIG_SYS_MIPS_TIMER_FREQ (CONFIG_SYS_MHZ * 1000000)
/* Cached addr */
#define CONFIG_SYS_SDRAM_BASE 0x80000000
/* default load address */
#define CONFIG_SYS_LOAD_ADDR 0x81000000
/*-----------------------------------------------------------------------
* FLASH and environment organization
*/
/* The following #defines are needed to get flash environment right */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_INIT_SP_OFFSET 0x400000
/* We boot from this flash, selected with dip switch */
#define CONFIG_SYS_FLASH_BASE 0xbfc00000
#define CONFIG_SYS_MAX_FLASH_BANKS 1
#define CONFIG_SYS_MAX_FLASH_SECT 128
/* Address and size of Primary Environment Sector */
#define MEM_SIZE 128
#endif /* __CONFIG_H */

View File

@ -1,89 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* (C) Copyright 2003
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*/
/*
* This file contains the configuration parameters for qemu-mips64 target.
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#define CONFIG_QEMU_MIPS
#define CONFIG_TIMESTAMP /* Print image info with timestamp */
#define CONFIG_EXTRA_ENV_SETTINGS \
"addmisc=setenv bootargs ${bootargs} " \
"console=ttyS0,${baudrate} " \
"panic=1\0" \
"bootfile=/tftpboot/vmlinux\0" \
"load=tftp ffffffff80500000 ${u-boot}\0" \
""
#define CONFIG_BOOTCOMMAND "bootp;bootelf"
/*
* BOOTP options
*/
#define CONFIG_BOOTP_BOOTFILESIZE
#define CONFIG_DRIVER_NE2000
#define CONFIG_DRIVER_NE2000_BASE 0xffffffffb4000300
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE 1
#define CONFIG_SYS_NS16550_CLK 115200
#define CONFIG_SYS_NS16550_COM1 0xffffffffb40003f8
#ifdef CONFIG_SYS_BIG_ENDIAN
#define CONFIG_IDE_SWAP_IO
#endif
#define CONFIG_SYS_IDE_MAXBUS 2
#define CONFIG_SYS_ATA_IDE0_OFFSET 0x1f0
#define CONFIG_SYS_ATA_IDE1_OFFSET 0x170
#define CONFIG_SYS_ATA_DATA_OFFSET 0
#define CONFIG_SYS_ATA_REG_OFFSET 0
#define CONFIG_SYS_ATA_BASE_ADDR 0xffffffffb4000000
#define CONFIG_SYS_IDE_MAXDEVICE 4
/*
* Miscellaneous configurable options
*/
#define CONFIG_SYS_MALLOC_LEN (256 << 10)
#define CONFIG_SYS_BOOTPARAMS_LEN 128*1024
#define CONFIG_SYS_MHZ 132
#define CONFIG_SYS_MIPS_TIMER_FREQ (CONFIG_SYS_MHZ * 1000000)
/* Cached addr */
#define CONFIG_SYS_SDRAM_BASE 0xffffffff80000000
/* default load address */
#define CONFIG_SYS_LOAD_ADDR 0xffffffff81000000
/*-----------------------------------------------------------------------
* FLASH and environment organization
*/
/* The following #defines are needed to get flash environment right */
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_INIT_SP_OFFSET 0x400000
/* We boot from this flash, selected with dip switch */
#define CONFIG_SYS_FLASH_BASE 0xffffffffbfc00000
#define CONFIG_SYS_MAX_FLASH_BANKS 1
#define CONFIG_SYS_MAX_FLASH_SECT 128
/* Address and size of Primary Environment Sector */
#define MEM_SIZE 128
#endif /* __CONFIG_H */

View File

@ -1264,7 +1264,6 @@ CONFIG_PXA_STD_I2C
CONFIG_PXA_VGA
CONFIG_PXA_VIDEO
CONFIG_QBMAN_CLK_DIV
CONFIG_QEMU_MIPS
CONFIG_QIXIS_I2C_ACCESS
CONFIG_QSPI
CONFIG_QUOTA