蜗窝科技

Cubieboard u-boot移植遇到的问题

蜗窝讨论区存档 · Linux kernel技术问答 · 楼主 OSer · 2016-11-02 · 12 帖

本文是原「蜗窝讨论区」的历史存档(2016-11-02),来自版块「Linux kernel技术问答」,共 12 帖。讨论区已停止服务,此处仅供查阅。

OSer · 2016-11-02 17:25

我这有一块Cubieboard的板子,所以想要自己移植一下u-boot(上流分支以支持cubieboard),学习一下u-boot的架构和工作流程,然后按着X-Project项目的入门介绍, 然后开始的移植。 我所做的工作已经都提交到了我的github上了,https://github.com/OSer916/u-boot 对应的分支是cubieboard

下面的内容是 git diff master cubieboard 的输出:


[== Undefined ==]
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index d7a9b11..298da70 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -873,6 +873,11 @@ config TARGET_THUNDERX_88XX
    select OF_CONTROL
    select SYS_CACHE_SHIFT_7

+config TARGET_SUNNY

  • bool "Support Sunny board"
  • select CPU_V7

endchoice

source "arch/arm/mach-at91/Kconfig" @@ -935,6 +940,7 @@ source "arch/arm/cpu/armv8/Kconfig"

source "arch/arm/imx-common/Kconfig"

source "board/bosch/shc/Kconfig" source "board/BuR/brxre1/Kconfig" source "board/BuR/brppt1/Kconfig" @@ -1021,6 +1027,7 @@ source "board/woodburn/Kconfig" source "board/work-microwave/work_92105/Kconfig" source "board/zipitz2/Kconfig"

+source "board/sunny/Kconfig" source "arch/arm/Kconfig.debug"

endmenu diff –git a/arch/arm/Makefile b/arch/arm/Makefile index 42093c2..f0bf884 100644 — a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -65,6 +65,7 @@ machine-$(CONFIG_ARCH_MVEBU) += mvebu machine-$(CONFIG_ORION5X) += orion5x machine-$(CONFIG_ARCH_S5PC1XX) += s5pc1xx machine-$(CONFIG_ARCH_SUNXI) += sunxi +machine-$(CONFIG_SUNNY) += sunny machine-$(CONFIG_ARCH_SNAPDRAGON) += snapdragon machine-$(CONFIG_ARCH_SOCFPGA) += socfpga machine-$(CONFIG_ARCH_RMOBILE) += rmobile diff –git a/arch/arm/cpu/armv7/Makefile b/arch/arm/cpu/armv7/Makefile index 4d3bc94..6f4329c 100644 — a/arch/arm/cpu/armv7/Makefile +++ b/arch/arm/cpu/armv7/Makefile @@ -12,7 +12,7 @@ obj-y += cache_v7.o cache_v7_asm.o obj-y += cpu.o cp15.o obj-y += syslib.o

-ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_ARCH_SUNXI)$(CONFIG_ARCH_SOCFPGA)$(CONFIG_LS102XA),) +ifneq ($(CONFIG_SUNNY)$(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_ARCH_SUNXI)$(CONFIG_ARCH_SOCFPGA)$(CONFIG_LS102XA),) ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y) obj-y += lowlevel_init.o endif @@ -45,4 +45,5 @@ obj-$(CONFIG_OMAP54XX) += omap5/ obj-$(CONFIG_RMOBILE) += rmobile/ obj-$(if $(filter stv0991,$(SOC)),y) += stv0991/ obj-$(CONFIG_ARCH_SUNXI) += sunxi/ +obj-$(CONFIG_SUNNY) += sunny/ obj-$(CONFIG_VF610) += vf610/ diff –git a/arch/arm/cpu/armv7/sunny/Makefile b/arch/arm/cpu/armv7/sunny/Makefile new file mode 100644 index 0000000..62c0dad — /dev/null +++ b/arch/arm/cpu/armv7/sunny/Makefile @@ -0,0 +1,2 @@ +# +obj-y += start.o diff –git a/arch/arm/cpu/armv7/sunny/start.c b/arch/arm/cpu/armv7/sunny/start.c new file mode 100644 index 0000000..8337712 — /dev/null +++ b/arch/arm/cpu/armv7/sunny/start.c @@ -0,0 +1 @@ +// diff –git a/arch/arm/mach-sunny/Makefile b/arch/arm/mach-sunny/Makefile new file mode 100644 index 0000000..8ad9650 — /dev/null +++ b/arch/arm/mach-sunny/Makefile @@ -0,0 +1,3 @@ + +obj-y += board.o + diff –git a/arch/arm/mach-sunny/board.c b/arch/arm/mach-sunny/board.c new file mode 100644 index 0000000..17f9c99 — /dev/null +++ b/arch/arm/mach-sunny/board.c @@ -0,0 +1,3 @@ +void s_init(void) +{ +} diff –git a/board/sunny/Kconfig b/board/sunny/Kconfig new file mode 100644 index 0000000..65e80c4 — /dev/null +++ b/board/sunny/Kconfig @@ -0,0 +1,39 @@ + +config ARCH_SUNNY

  • bool
  • default y +config SYS_CPU
  • default "armv7" +config SYS_SOC
  • default "sunny" +config SYS_BOARD
  • default "sunny"

+config SYS_CONFIG_NAME

  • default "sunny"

+config NR_DRAM_BANKS

  • int "DRAM bank number"
  • default 1

+config SYS_MAXARGS

  • int "max arguments"
  • default 16

+config ENV_IS_NOWHERE

  • bool "where is the envs"
  • default y

+config BAUDRATE

  • int "serail port baudrate"
  • default 115200

+config SYS_CBSIZE

  • int "Console I/O buffer size"
  • default 1024

+config CONS_INDEX

  • int "console index"
  • default 1

diff –git a/board/sunny/Makefile b/board/sunny/Makefile new file mode 100644 index 0000000..933f5d0 — /dev/null +++ b/board/sunny/Makefile @@ -0,0 +1,2 @@ + +obj-y += board.o diff –git a/board/sunny/board.c b/board/sunny/board.c new file mode 100644 index 0000000..2717fe2 — /dev/null +++ b/board/sunny/board.c @@ -0,0 +1,27 @@ +#include <common.h> +void reset_cpu(ulong addr) +{ +} + +//void lowlevel_init(void) +////{ +//} +int board_run_command(const char *buf) +{

  • return 0; +}

+int dram_init(void) +{

  • return 0; +}

+int board_init(void) +{

  • return 0; +}

+ulong get_tbclk(void) +{

  • return 0; +} diff –git a/configs/sunny_defconfig b/configs/sunny_defconfig new file mode 100644 index 0000000..7bc77ca — /dev/null +++ b/configs/sunny_defconfig @@ -0,0 +1,593 @@ +# +# Automatically generated file; DO NOT EDIT. +# U-Boot 2016.11-rc2 Configuration +# +CONFIG_CREATE_ARCH_SYMLINK=y +# CONFIG_ARC is not set +CONFIG_ARM=y +# CONFIG_AVR32 is not set +# CONFIG_BLACKFIN is not set +# CONFIG_M68K is not set +# CONFIG_MICROBLAZE is not set +# CONFIG_MIPS is not set +# CONFIG_NDS32 is not set +# CONFIG_NIOS2 is not set +# CONFIG_OPENRISC is not set +# CONFIG_PPC is not set +# CONFIG_SANDBOX is not set +# CONFIG_SH is not set +# CONFIG_SPARC is not set +# CONFIG_X86 is not set +# CONFIG_XTENSA is not set +CONFIG_SYS_ARCH="arm" +CONFIG_SYS_CPU="armv7" +CONFIG_SYS_SOC="sunny" +CONFIG_SYS_BOARD="sunny" +CONFIG_SYS_CONFIG_NAME="sunny"

+# +# ARM architecture +# +CONFIG_HAS_VBAR=y +CONFIG_HAS_THUMB2=y +CONFIG_CPU_V7=y +CONFIG_SYS_ARM_ARCH=7 +CONFIG_SYS_CACHE_SHIFT_6=y +CONFIG_SYS_CACHELINE_SIZE=64 +# CONFIG_SEMIHOSTING is not set +# CONFIG_SYS_L2CACHE_OFF is not set +# CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_TARGET_EDB93XX is not set +# CONFIG_TARGET_VCMA9 is not set +# CONFIG_TARGET_SMDK2410 is not set +# CONFIG_TARGET_ASPENITE is not set +# CONFIG_TARGET_GPLUGD is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_KIRKWOOD is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_TARGET_DEVKIT3250 is not set +# CONFIG_TARGET_WORK_92105 is not set +# CONFIG_TARGET_MX25PDK is not set +# CONFIG_TARGET_ZMX25 is not set +# CONFIG_TARGET_APF27 is not set +# CONFIG_TARGET_APX4DEVKIT is not set +# CONFIG_TARGET_XFI3 is not set +# CONFIG_TARGET_M28EVK is not set +# CONFIG_TARGET_MX23EVK is not set +# CONFIG_TARGET_MX28EVK is not set +# CONFIG_TARGET_MX23_OLINUXINO is not set +# CONFIG_TARGET_BG0900 is not set +# CONFIG_TARGET_SANSA_FUZE_PLUS is not set +# CONFIG_TARGET_SC_SPS_1 is not set +# CONFIG_ORION5X is not set +# CONFIG_TARGET_SPEAR300 is not set +# CONFIG_TARGET_SPEAR310 is not set +# CONFIG_TARGET_SPEAR320 is not set +# CONFIG_TARGET_SPEAR600 is not set +# CONFIG_TARGET_STV0991 is not set +CONFIG_TARGET_SUNNY=y +# CONFIG_TARGET_X600 is not set +# CONFIG_TARGET_IMX31_PHYCORE is not set +# CONFIG_TARGET_MX31ADS is not set +# CONFIG_TARGET_MX31PDK is not set +# CONFIG_TARGET_WOODBURN is not set +# CONFIG_TARGET_WOODBURN_SD is not set +# CONFIG_TARGET_FLEA3 is not set +# CONFIG_TARGET_MX35PDK is not set +# CONFIG_ARCH_BCM283X is not set +# CONFIG_TARGET_VEXPRESS_CA15_TC2 is not set +# CONFIG_TARGET_VEXPRESS_CA5X2 is not set +# CONFIG_TARGET_VEXPRESS_CA9X4 is not set +# CONFIG_TARGET_BRXRE1 is not set +# CONFIG_TARGET_BRPPT1 is not set +# CONFIG_TARGET_DRACO is not set +# CONFIG_TARGET_THUBAN is not set +# CONFIG_TARGET_RASTABAN is not set +# CONFIG_TARGET_ETAMIN is not set +# CONFIG_TARGET_PXM2 is not set +# CONFIG_TARGET_RUT is not set +# CONFIG_TARGET_TI814X_EVM is not set +# CONFIG_TARGET_TI816X_EVM is not set +# CONFIG_TARGET_BCM23550_W1D is not set +# CONFIG_TARGET_BCM28155_AP is not set +# CONFIG_TARGET_BCMCYGNUS is not set +# CONFIG_TARGET_BCMNSP is not set +# CONFIG_ARCH_EXYNOS is not set +# CONFIG_ARCH_S5PC1XX is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MX7 is not set +# CONFIG_ARCH_MX6 is not set +# CONFIG_ARCH_MX5 is not set +# CONFIG_TARGET_M53EVK is not set +# CONFIG_TARGET_MX51EVK is not set +# CONFIG_TARGET_MX53ARD is not set +# CONFIG_TARGET_MX53EVK is not set +# CONFIG_TARGET_MX53LOCO is not set +# CONFIG_TARGET_MX53SMD is not set +# CONFIG_OMAP34XX is not set +# CONFIG_OMAP44XX is not set +# CONFIG_OMAP54XX is not set +# CONFIG_AM43XX is not set +# CONFIG_AM33XX is not set +# CONFIG_ARCH_RMOBILE is not set +# CONFIG_TARGET_S32V234EVB is not set +# CONFIG_ARCH_SNAPDRAGON is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_TARGET_CM_T43 is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_TARGET_TS4800 is not set +# CONFIG_TARGET_VF610TWR is not set +# CONFIG_TARGET_COLIBRI_VF is not set +# CONFIG_TARGET_PCM052 is not set +# CONFIG_TARGET_BK4R1 is not set +# CONFIG_ARCH_ZYNQ is not set +# CONFIG_ARCH_ZYNQMP is not set +# CONFIG_TEGRA is not set +# CONFIG_TARGET_VEXPRESS64_AEMV8A is not set +# CONFIG_TARGET_VEXPRESS64_BASE_FVP is not set +# CONFIG_TARGET_VEXPRESS64_BASE_FVP_DRAM is not set +# CONFIG_TARGET_VEXPRESS64_JUNO is not set +# CONFIG_TARGET_LS2080A_EMU is not set +# CONFIG_TARGET_LS2080A_SIMU is not set +# CONFIG_TARGET_LS2080AQDS is not set +# CONFIG_TARGET_LS2080ARDB is not set +# CONFIG_TARGET_HIKEY is not set +# CONFIG_TARGET_LS1012AQDS is not set +# CONFIG_TARGET_LS1012ARDB is not set +# CONFIG_TARGET_LS1012AFRDM is not set +# CONFIG_TARGET_LS1021AQDS is not set +# CONFIG_TARGET_LS1021ATWR is not set +# CONFIG_TARGET_LS1043AQDS is not set +# CONFIG_TARGET_LS1043ARDB is not set +# CONFIG_TARGET_LS1046AQDS is not set +# CONFIG_TARGET_LS1046ARDB is not set +# CONFIG_TARGET_H2200 is not set +# CONFIG_TARGET_ZIPITZ2 is not set +# CONFIG_TARGET_COLIBRI_PXA270 is not set +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_STM32 is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_TARGET_THUNDERX_88XX is not set +# CONFIG_ARMV7_LPAE is not set +CONFIG_IDENT_STRING="" +# CONFIG_PRE_CONSOLE_BUFFER is not set +# CONFIG_VIDEO is not set + +# +# ARM debug +# +# CONFIG_DEBUG_LL is not set + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_DISTRO_DEFAULTS is not set +# CONFIG_SYS_MALLOC_F is not set +CONFIG_EXPERT=y +CONFIG_SYS_MALLOC_CLEAR_ON_INIT=y +# CONFIG_TOOLS_DEBUG is not set +# CONFIG_PHYS_64BIT is not set + +# +# Boot images +# +# CONFIG_FIT is not set +CONFIG_SYS_EXTRA_OPTIONS="" +CONFIG_ARCH_FIXUP_FDT=y + +# +# Boot timing +# +# CONFIG_BOOTSTAGE is not set +CONFIG_BOOTSTAGE_USER_COUNT=20 +CONFIG_BOOTSTAGE_STASH_ADDR=0 +CONFIG_BOOTSTAGE_STASH_SIZE=4096 + +# +# Boot media +# +# CONFIG_NAND_BOOT is not set +# CONFIG_ONENAND_BOOT is not set +# CONFIG_QSPI_BOOT is not set +# CONFIG_SATA_BOOT is not set +# CONFIG_SD_BOOT is not set +# CONFIG_SPI_BOOT is not set +CONFIG_BOOTDELAY=2 + +# +# Console +# +# CONFIG_CONSOLE_RECORD is not set +# CONFIG_SILENT_CONSOLE is not set +# CONFIG_CONSOLE_MUX is not set +# CONFIG_SYS_CONSOLE_IS_IN_ENV is not set +# CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE is not set +# CONFIG_SYS_CONSOLE_ENV_OVERWRITE is not set +# CONFIG_SYS_CONSOLE_INFO_QUIET is not set +# CONFIG_SYS_STDIO_DEREGISTER is not set +CONFIG_DEFAULT_FDT_FILE="" +# CONFIG_SYS_NO_FLASH is not set +# CONFIG_VERSION_VARIABLE is not set +# CONFIG_DISPLAY_CPUINFO is not set +# CONFIG_DISPLAY_BOARDINFO is not set + +# +# SPL / TPL +# + +# +# Command line interface +# +# CONFIG_CMDLINE is not set +CONFIG_SYS_PROMPT="=> " + +# +# Autoboot options +# +CONFIG_AUTOBOOT=y +# CONFIG_AUTOBOOT_KEYED is not set + +# +# FASTBOOT +# +# CONFIG_FASTBOOT is not set + +# +# Commands +# + +# +# Info commands +# +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_CONSOLE is not set +# CONFIG_CMD_CPU is not set +# CONFIG_CMD_LICENSE is not set + +# +# Boot commands +# +# CONFIG_CMD_BOOTD is not set +# CONFIG_CMD_BOOTM is not set +# CONFIG_CMD_BOOTZ is not set +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_GO is not set +# CONFIG_CMD_RUN is not set +# CONFIG_CMD_IMI is not set +# CONFIG_CMD_IMLS is not set +# CONFIG_CMD_XIMG is not set + +# +# Environment commands +# +# CONFIG_CMD_ASKENV is not set +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +# CONFIG_CMD_EDITENV is not set +# CONFIG_CMD_GREPENV is not set +# CONFIG_CMD_SAVEENV is not set +# CONFIG_CMD_ENV_EXISTS is not set + +# +# Memory commands +# +# CONFIG_CMD_MEMORY is not set +# CONFIG_CMD_CRC32 is not set +# CONFIG_LOOPW is not set +# CONFIG_CMD_MEMTEST is not set +# CONFIG_CMD_MX_CYCLIC is not set +# CONFIG_CMD_MEMINFO is not set + +# +# Device access commands +# +# CONFIG_CMD_LOADB is not set +# CONFIG_CMD_LOADS is not set +# CONFIG_CMD_FLASH is not set +# CONFIG_CMD_ARMFLASH is not set +# CONFIG_CMD_MMC is not set +# CONFIG_CMD_NAND is not set +# CONFIG_CMD_SF is not set +# CONFIG_CMD_SPI is not set +# CONFIG_CMD_I2C is not set +# CONFIG_CMD_USB is not set +# CONFIG_CMD_DFU is not set +# CONFIG_CMD_USB_MASS_STORAGE is not set +# CONFIG_CMD_FPGA is not set +# CONFIG_CMD_GPIO is not set + +# +# Shell scripting commands +# +# CONFIG_CMD_ECHO is not set +# CONFIG_CMD_ITEST is not set +# CONFIG_CMD_SOURCE is not set +# CONFIG_CMD_SETEXPR is not set + +# +# Network commands +# +# CONFIG_CMD_NET is not set +# CONFIG_CMD_TFTPPUT is not set +# CONFIG_CMD_TFTPSRV is not set +# CONFIG_CMD_RARP is not set +# CONFIG_CMD_DHCP is not set +# CONFIG_CMD_NFS is not set +# CONFIG_CMD_MII is not set +# CONFIG_CMD_PING is not set +# CONFIG_CMD_CDP is not set +# CONFIG_CMD_SNTP is not set +# CONFIG_CMD_DNS is not set +# CONFIG_CMD_LINK_LOCAL is not set + +# +# Misc commands +# +# CONFIG_CMD_CACHE is not set +# CONFIG_CMD_TIME is not set +# CONFIG_CMD_MISC is not set +# CONFIG_CMD_TIMER is not set +# CONFIG_CMD_QFW is not set + +# +# Power commands +# + +# +# Security commands +# + +# +# Firmware commands +# + +# +# Filesystem commands +# +# CONFIG_CMD_EXT2 is not set +# CONFIG_CMD_EXT4 is not set +# CONFIG_CMD_FAT is not set +# CONFIG_CMD_FS_GENERIC is not set +# CONFIG_CMD_UBI is not set +CONFIG_SUPPORT_OF_CONTROL=y + +# +# Device Tree Control +# +# CONFIG_OF_CONTROL is not set +CONFIG_NET=y +# CONFIG_NET_RANDOM_ETHADDR is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NET_TFTP_VARS is not set +CONFIG_BOOTP_PXE_CLIENTARCH=0x15 +CONFIG_BOOTP_VCI_STRING="U-Boot.armv7" + +# +# Device Drivers +# + +# +# Generic Driver Options +# +# CONFIG_DM is not set +# CONFIG_ADC is not set +# CONFIG_ADC_EXYNOS is not set +# CONFIG_ADC_SANDBOX is not set +# CONFIG_BLOCK_CACHE is not set + +# +# Clock +# +# CONFIG_CPU is not set + +# +# Hardware crypto devices +# +# CONFIG_FSL_CAAM is not set + +# +# Demo for driver model +# + +# +# DFU support +# + +# +# DMA Support +# +# CONFIG_TI_EDMA3 is not set + +# +# FPGA support +# +# CONFIG_FPGA_XILINX is not set + +# +# GPIO Support +# + +# +# I2C support +# +# CONFIG_SYS_I2C_DW is not set +# CONFIG_CROS_EC_KEYB is not set + +# +# LED Support +# + +# +# Mailbox Controller Support +# + +# +# Memory Controller drivers +# + +# +# Multifunction device drivers +# +# CONFIG_CROS_EC is not set +# CONFIG_FSL_SEC_MON is not set +# CONFIG_MXC_OCOTP is not set +# CONFIG_NUVOTON_NCT6102D is not set +# CONFIG_PCA9551_LED is not set +# CONFIG_WINBOND_W83627 is not set + +# +# MMC Host controller Support +# + +# +# MTD Support +# + +# +# NAND Device Support +# +# CONFIG_NAND_DENALI is not set +# CONFIG_NAND_VF610_NFC is not set +# CONFIG_NAND_PXA3XX is not set +# CONFIG_NAND_ARASAN is not set + +# +# Generic NAND options +# + +# +# SPI Flash Support +# +# CONFIG_SPI_FLASH is not set + +# +# UBI support +# +# CONFIG_MTD_UBI is not set +# CONFIG_PHYLIB is not set +# CONFIG_NETDEVICES is not set +# CONFIG_PCI is not set +# CONFIG_MVEBU_COMPHY_SUPPORT is not set + +# +# Pin controllers +# + +# +# Power +# + +# +# Power Domain Support +# + +# +# Remote Processor drivers +# + +# +# Reset Controller Support +# + +# +# Real Time Clock +# + +# +# Serial drivers +# +# CONFIG_DEBUG_UART is not set +# CONFIG_DEBUG_UART_SKIP_INIT is not set +# CONFIG_ATMEL_USART is not set +# CONFIG_FSL_LPUART is not set +# CONFIG_MVEBU_A3700_UART is not set +# CONFIG_SYS_NS16550 is not set + +# +# Sound support +# +# CONFIG_SOUND is not set + +# +# SPI Support +# +# CONFIG_FSL_ESPI is not set +# CONFIG_FSL_QSPI is not set +# CONFIG_TI_QSPI is not set + +# +# SPMI support +# + +# +# System reset device drivers +# +# CONFIG_DM_THERMAL is not set + +# +# Timer Support +# + +# +# TPM support +# +# CONFIG_USB is not set + +# +# Graphics support +# + +# +# TrueType Fonts +# +# CONFIG_VIDEO_VESA is not set +# CONFIG_VIDEO_LCD_ANX9804 is not set +# CONFIG_VIDEO_LCD_SSD2828 is not set +# CONFIG_VIDEO_MVEBU is not set +# CONFIG_LCD is not set +# CONFIG_PHYS_TO_BUS is not set + +# +# File systems +# + +# +# Library routines +# +# CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED is not set +CONFIG_HAVE_PRIVATE_LIBGCC=y +CONFIG_USE_PRIVATE_LIBGCC=y +CONFIG_SYS_HZ=1000 +# CONFIG_USE_TINY_PRINTF is not set +CONFIG_REGEX=y +# CONFIG_LIB_RAND is not set +# CONFIG_CMD_DHRYSTONE is not set +# CONFIG_RSA is not set + +# +# Hashing Support +# +# CONFIG_SHA1 is not set +# CONFIG_SHA256 is not set +# CONFIG_SHA_HW_ACCEL is not set + +# +# Compression Support +# +# CONFIG_LZ4 is not set +# CONFIG_ERRNO_STR is not set +# CONFIG_OF_LIBFDT is not set +# CONFIG_OF_LIBFDT_OVERLAY is not set +# CONFIG_SPL_OF_LIBFDT is not set + +# +# System tables +# +# CONFIG_UNIT_TEST is not set diff –git a/include/configs/sunny.h b/include/configs/sunny.h new file mode 100644 index 0000000..5a1af26 — /dev/null +++ b/include/configs/sunny.h @@ -0,0 +1,29 @@ +#ifndef SUNNY_H + +#define SUNNY_H + +#define CONFIG_SUNNY + +#define CONFIG_ENV_SIZE (128 << 10) +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (64 << 20)) +#define CONFIG_SYS_TEXT_BASE 0x2a000000 +#define CONFIG_SYS_LOAD_ADDR 0x22000000 +#define CONFIG_SYS_NO_FLASH + +#define CONFIG_SYS_INIT_RAM_ADDR 0x0 +#define CONFIG_SYS_INIT_RAM_SIZE 0x8000 +#define CONFIG_SYS_INIT_SP_OFFSET \

  • (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) +#define CONFIG_SYS_INIT_SP_ADDR \
  •   (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
    

+#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_CLK 24000000 +#define CONFIG_SYS_NS16550_REG_SIZE -4 + +#define SUNXI_UART0_BASE 0x01c28000 +#define CONFIG_SYS_NS16550_COM1 SUNXI_UART0_BASE +#endif +

然后我执行make sunny_defconfig 输出正常 再执行 make CROSS_COMPILE=arm-linux-gnueabihf-下面是最后的输出结果,在最后链接的时候出现了链接错误

LDS u-boot.lds LD u-boot arm-linux-gnueabihf-ld.bfd: BFD (GNU Binutils) 2.25.0 Linaro 2015_10 assertion fail /home/tcwg-buildslave/workspace/tcwg-make-release/label/tcwg-x86_64-ex40/target/arm-linux-gnueabihf/snapshots/binutils-gdb.git~linaro_binutils-2_25-branch/bfd/elf32-arm.c:7827 arm-linux-gnueabihf-ld.bfd: error: required section '.rel.plt' not found in the linker script arm-linux-gnueabihf-ld.bfd: final link failed: Invalid operation Makefile:1207: recipe for target 'u-boot' failed make: *** Error 1

wowo · 2016-11-03 09:14

应该是编译器版本不对,不知道这个板子为什么用arm-linux-gnueabihf的编译器?版本是多少呢?另外,你可以试试下面的这个: ifeq ($(BOARD_NAME), tiny210)

use arm-linux-gcc-4.8.3 to build uboot and uboot-spl.

COMPILE_URL=https://github.com/ooonebook/arm-none-linux-gnueabi-4.8.git CROSS_COMPILE=$(shell pwd)/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- endif

OSer · 2016-11-03 09:21

不是编译器的问题,我编译make Cubieboard_defconfig && make CROSS_COMPILE=arm-linux-gnueabihf- 就正常

wowo · 2016-11-03 11:47

我看了你的代码,觉得移植的有点问题,因为在你的分支上,make Cubieboard_defconfig && make CROSS_COMPILE=arm-linux-gnueabihf- ,也编译不通过。 具体原因我没有细看,我大概对比了一下两个分支的一些内容,发现有一些异常,你可以先看看(例如cub1_conf和cub2_conf的对比,明显CONFIG_ARCH_SUNNY不该出现):


[== Undefined ==]
/* cubieboard 分支 */
pengo@ubuntu:~/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- sunny_defconfig > sunny.log
pengo@ubuntu:~/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- >> sunny.log

pengo@ubuntu:/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- Cubieboard_defconfig > cub1.log pengo@ubuntu:/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- >> cub1.log

/* master 分支 */ pengo@ubuntu:/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- Cubieboard_defconfig > cub2.log pengo@ubuntu:/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- >> cub2.log

/* cubieboard 分支 */ pengo@ubuntu:~/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- Cubieboard_defconfig

configuration written to .config

pengo@ubuntu:~/work/oser/u-boot$ cp .config cub1_conf

pengo@ubuntu:/work/oser/u-boot$ cp .config cub1_conf pengo@ubuntu:/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- sunny_defconfig

configuration written to .config

pengo@ubuntu:~/work/oser/u-boot$ cp .config sunny_conf

/* master 分支 */ pengo@ubuntu:~/work/oser/u-boot$ make CROSS_COMPILE=/home/pengo/work/xprj/build/arm-none-linux-gnueabi-4.8/bin/arm-none-linux-gnueabi- Cubieboard_defconfig

configuration written to .config

pengo@ubuntu:~/work/oser/u-boot$ cp .config cub2_conf

OSer · 2016-11-03 12:36

在分支cubieboard编译make Cubieboard_defconfig && make CROSS_COMPILE=arm-linux-gnueabihf- 的问题已经解决,但是编译sunny_defconfig还是之前的问题

下面是更改过后的diff:


[== Undefined ==]
oser@OnePiece:~/github/u-boot$ git diff 17cbc0a df3b616
diff --git a/board/sunny/Kconfig b/board/sunny/Kconfig
index 183bbe9..65e80c4 100644
--- a/board/sunny/Kconfig
+++ b/board/sunny/Kconfig
@@ -1,4 +1,3 @@
-if TARGET_SUNNY

config ARCH_SUNNY bool @@ -37,4 +36,4 @@ config CONS_INDEX int "console index" default 1

-endif +

wowo · 2016-11-03 18:36

OSer 写道: 在分支cubieboard编译make Cubieboard_defconfig && make CROSS_COMPILE=arm-linux-gnueabihf- 的问题已经解决,但是编译sunny_defconfig还是之前的问题

下面是更改过后的diff:


[== Undefined ==]
oser@OnePiece:~/github/u-boot$ git diff 17cbc0a df3b616
diff --git a/board/sunny/Kconfig b/board/sunny/Kconfig
index 183bbe9..65e80c4 100644
--- a/board/sunny/Kconfig
+++ b/board/sunny/Kconfig
@@ -1,4 +1,3 @@
-if TARGET_SUNNY

config ARCH_SUNNY bool @@ -37,4 +36,4 @@ config CONS_INDEX int "console index" default 1

-endif +

今天比较忙,你先稍等,有时间我帮你debug一下。

wowo · 2016-11-05 08:59

昨天试着移植了一下armv7的board,确实有这个问题。根据链接器的错误信息,发现是通过-pie选项,生成位置无关代码的时候,有些*.o不符合要求,可能是少了什么东西。暂时还没有解决。 没想到armv7还这么难搞,我会再看看,解决了会写一个armv7的移植指南。 有经验的同学也请帮忙提供一下思路。

OSer · 2016-11-05 13:32

麻烦你了,谢谢,共同学习。

wowo · 2016-11-05 22:07

找到原因了,在board/sunny/board.c中,定义下面两个函数:


[== Undefined ==]
ulong get_timer(ulong base)
{
        return 0;
}

void __udelay(unsigned long usec) { }

就可以正确编译(把get_tbclk删掉)。 不知道为什么直接定义get_tbclk,可以解决编译问题,为什么不能解决链接问题,这真是一个有意思的事情。

wowo · 2016-11-05 22:23

继续查原因……………………………… 把这个函数注释掉:


[== Undefined ==]
#if 0
void __udelay(unsigned long usec)
{
}
#endif

把这个加回来:


[== Undefined ==]
ulong get_tbclk(void)
{
        return 0;
}

编译不通过,范围收窄到__delay中。 把lib/time.c中__delay函数的get_ticks接口注释掉,如下:


[== Undefined ==]
void __weak __udelay(unsigned long usec)
{
        uint64_t tmp;
    tmp = /* get_ticks( + */ usec_to_tick(usec);   /* get current timestamp */

    /* while (get_ticks( &lt; tmp+1) */       /* loop till event */
             /*NOP*/;

}

编译通过,范围缩小到get_ticks中。 继续查get_ticks,发现这个代码:


[== Undefined ==]
#ifdef CONFIG_SYS_TIMER_COUNTER
unsigned long notrace timer_read_counter(void)
{
#ifdef CONFIG_SYS_TIMER_COUNTS_DOWN
        return ~readl(CONFIG_SYS_TIMER_COUNTER);
#else
        return readl(CONFIG_SYS_TIMER_COUNTER);
#endif
}
#else
extern unsigned long __weak timer_read_counter(void);
#endif

真相终于大白了,我们没有定义CONFIG_SYS_TIMER_COUNTER,也没有实现 timer_read_counter,这里只有一个声明,就造成编译通过,链接不过的问题(说实话这个坑很大啊!!!!!!),最终的解决方法有2: 1. 定义CONFIG_SYS_TIMER_COUNTER。 2. 实现timer_read_counter。

最后吐槽一下,这样的代码:


[== Undefined ==]
extern unsigned long __weak timer_read_counter(void);

简直是狗屎!! 既然用__weak了,还extern个屁啊,直接实现一个空函数就行了啊!!

OSer · 2016-11-05 22:38

你好,可以不可以告诉我遇到这样的问题是怎样分析的?

wowo · 2016-11-06 21:07

OSer 写道: 你好,可以不可以告诉我遇到这样的问题是怎样分析的?

其实我也折腾很久,本来一个很简单的问题,按理说应该是一个链接错误,直接指出哪个符号没有,就很容易找。 但这里竟是一个奇奇怪怪的错误,看起来应该是-pie选项的原因。 至于我是怎么分析的,就是试了很多次之后,慢慢的怀疑是某个符号找不到,然后怀疑到time.c上,一点一点的找出来的。