diff options
author | Tom Rini <trini@konsulko.com> | 2021-05-25 11:48:37 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2021-05-25 11:48:37 -0400 |
commit | 4c3e99460c6551ef1a626375dd1dd1f7f7c55af8 (patch) | |
tree | 6435bfd4e7d8af923c11486a7741bc170a919262 | |
parent | e1bf0336a58cfe873a34c36ff53e5e3806f2d263 (diff) | |
parent | 835b4fdf3bf5ec778e1fb7610f00707754454974 (diff) | |
download | u-boot-4c3e99460c6551ef1a626375dd1dd1f7f7c55af8.zip u-boot-4c3e99460c6551ef1a626375dd1dd1f7f7c55af8.tar.gz u-boot-4c3e99460c6551ef1a626375dd1dd1f7f7c55af8.tar.bz2 |
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
-rw-r--r-- | .azure-pipelines.yml | 12 | ||||
-rw-r--r-- | .gitlab-ci.yml | 24 | ||||
-rw-r--r-- | arch/mips/Kconfig | 11 | ||||
-rw-r--r-- | board/qemu-mips/Kconfig | 26 | ||||
-rw-r--r-- | board/qemu-mips/MAINTAINERS | 14 | ||||
-rw-r--r-- | board/qemu-mips/Makefile | 7 | ||||
-rw-r--r-- | board/qemu-mips/lowlevel_init.S | 40 | ||||
-rw-r--r-- | board/qemu-mips/qemu-mips.c | 85 | ||||
-rw-r--r-- | configs/octeon_ebb7304_defconfig | 5 | ||||
-rw-r--r-- | configs/qemu_mips64_defconfig | 29 | ||||
-rw-r--r-- | configs/qemu_mips64el_defconfig | 30 | ||||
-rw-r--r-- | configs/qemu_mips_defconfig | 27 | ||||
-rw-r--r-- | configs/qemu_mipsel_defconfig | 28 | ||||
-rw-r--r-- | doc/board/emulation/qemu-mips.rst | 273 | ||||
-rw-r--r-- | include/configs/qemu-mips.h | 89 | ||||
-rw-r--r-- | include/configs/qemu-mips64.h | 89 | ||||
-rw-r--r-- | scripts/config_whitelist.txt | 1 |
17 files changed, 81 insertions, 709 deletions
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml index 59e99b8..35ab7f3 100644 --- a/.azure-pipelines.yml +++ b/.azure-pipelines.yml @@ -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" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bff4874..3e250f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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" diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 77f563e..e548016 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -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" diff --git a/board/qemu-mips/Kconfig b/board/qemu-mips/Kconfig deleted file mode 100644 index e696a12..0000000 --- a/board/qemu-mips/Kconfig +++ /dev/null @@ -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 diff --git a/board/qemu-mips/MAINTAINERS b/board/qemu-mips/MAINTAINERS deleted file mode 100644 index 334f9d8..0000000 --- a/board/qemu-mips/MAINTAINERS +++ /dev/null @@ -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 diff --git a/board/qemu-mips/Makefile b/board/qemu-mips/Makefile deleted file mode 100644 index 98e3874..0000000 --- a/board/qemu-mips/Makefile +++ /dev/null @@ -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 diff --git a/board/qemu-mips/lowlevel_init.S b/board/qemu-mips/lowlevel_init.S deleted file mode 100644 index b0f7072..0000000 --- a/board/qemu-mips/lowlevel_init.S +++ /dev/null @@ -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 diff --git a/board/qemu-mips/qemu-mips.c b/board/qemu-mips/qemu-mips.c deleted file mode 100644 index f570917..0000000 --- a/board/qemu-mips/qemu-mips.c +++ /dev/null @@ -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(); -} diff --git a/configs/octeon_ebb7304_defconfig b/configs/octeon_ebb7304_defconfig index 253de23..bf34ac8 100644 --- a/configs/octeon_ebb7304_defconfig +++ b/configs/octeon_ebb7304_defconfig @@ -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 diff --git a/configs/qemu_mips64_defconfig b/configs/qemu_mips64_defconfig deleted file mode 100644 index 30d42ef..0000000 --- a/configs/qemu_mips64_defconfig +++ /dev/null @@ -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 diff --git a/configs/qemu_mips64el_defconfig b/configs/qemu_mips64el_defconfig deleted file mode 100644 index 4a45d5e..0000000 --- a/configs/qemu_mips64el_defconfig +++ /dev/null @@ -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 diff --git a/configs/qemu_mips_defconfig b/configs/qemu_mips_defconfig deleted file mode 100644 index ebf7af0..0000000 --- a/configs/qemu_mips_defconfig +++ /dev/null @@ -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 diff --git a/configs/qemu_mipsel_defconfig b/configs/qemu_mipsel_defconfig deleted file mode 100644 index 03862f7..0000000 --- a/configs/qemu_mipsel_defconfig +++ /dev/null @@ -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 diff --git a/doc/board/emulation/qemu-mips.rst b/doc/board/emulation/qemu-mips.rst index d359251..5fd8a0a 100644 --- a/doc/board/emulation/qemu-mips.rst +++ b/doc/board/emulation/qemu-mips.rst @@ -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 - -Download kernel + initrd -^^^^^^^^^^^^^^^^^^^^^^^^ - -On ftp://ftp.denx.de/pub/contrib/Jean-Christophe_Plagniol-Villard/qemu_mips/ -you can downland:: + dd if=/dev/zero bs=1M count=4 | tr '\000' '\377' > pflash.img + dd if=${UBOOT_BIN} of=pflash.img conv=notrunc - #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 -^^^^^^^^^^^^^^^ - -.. 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 -^^^^^^^^^^^^^^^^^^^^ +Start Qemu: .. code-block:: bash - dd if=uImage bs=1k conv=notrunc seek=224 of=flash - -Generate Ide Disk -^^^^^^^^^^^^^^^^^ + 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 of=ide bs=1k count=100k if=/dev/zero + U-Boot 2021.04-00963-g60279a2b1d (Apr 21 2021 - 19:54:32 +0200) - # 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 + Board: MIPS Malta CoreLV + DRAM: 256 MiB + Flash: 4 MiB + Loading Environment from Flash... *** Warning - bad CRC, using default environment -Copy to ide -^^^^^^^^^^^ + In: serial@3f8 + Out: serial@3f8 + Err: serial@3f8 + Net: pcnet#0 + IDE: Bus 0: not available + maltael # -.. code-block:: bash - - dd if=uImage bs=512 conv=notrunc seek=63 of=ide +How to debug U-Boot +------------------- -Generate ext2 on part 2 on Copy uImage and initrd.gz -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +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). Start Qemu in the first console: .. 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 + 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 - 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 +In the second console start gdb: .. code-block:: bash - qemu-system-mips -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide - - -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) + gdb-multiarch --eval-command "target remote :1234" u-boot .. code-block:: bash - qemu-system-mips -S -s -M mips -pflash flash -monitor null -nographic -net nic -net user -tftp `pwd` -hda ide - -in an other console you start gdb - -Debugging of U-Boot Before Relocation -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Before relocation, the addresses in the ELF file can be used without any problems -by connecting to the gdb server localhost:1234 - -.. code-block:: none - - $ 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 - -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) + 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/>. + + 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. diff --git a/include/configs/qemu-mips.h b/include/configs/qemu-mips.h deleted file mode 100644 index 5e787d7..0000000 --- a/include/configs/qemu-mips.h +++ /dev/null @@ -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 */ diff --git a/include/configs/qemu-mips64.h b/include/configs/qemu-mips64.h deleted file mode 100644 index 0ed00bc..0000000 --- a/include/configs/qemu-mips64.h +++ /dev/null @@ -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 */ diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt index 465f89e..cb0cf1d 100644 --- a/scripts/config_whitelist.txt +++ b/scripts/config_whitelist.txt @@ -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 |