[转]u-boot-2010.12移植到2440(一,编译)

2024-01-07 02:08
文章标签 编译 移植 boot 2440 2010.12

本文主要是介绍[转]u-boot-2010.12移植到2440(一,编译),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

u-boot-2010.12移植到2440(一,编译)

转自

http://my.chinaunix.net/space.php?uid=24319701&do=blog&id=125381

 

2010 年初曾经将 uboot 2009.11.1 移植到我们自己做的一块 2440 单板上,该单板具有 64M SDRAM  64M nand FLASH ,网卡为 DM9000 。最新版本的 uboot 源码有较大的变化,此次计划利用几天时间将最新版本的 u-boot-2010.12 移植到该单板 上,在此记录移植过程及遇到的问题以备忘并供朋友参考。


移植的第一步当然是下载最新版本的uboot源码,下载地址如下:
ftp://ftp.denx.de/pub/u-boot/u-boot-2010.12.tar.bz2
进入相应路径:
cd /home/bsc
解压缩:
tar jxvf u-boot-2010.12.tar.bz2
进入生成的文件夹,在uboot主目录:
cd u-boot-2010.12
首先编译下看看是否可以编译成功(交叉编译器为4.3.2):

make distclean              /*清除已经形成的链接,修改顶层Makefile文件必须执行*/
make smdk2410_config

[root@localhost u-boot-2010.12]# make smdk2410_config

awk '(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }' boards.cfg > .boards.depend

Configuring for smdk2410 board...

 [root@localhost u-boot-2010.12]# make smdk2410_config

Generating include/autoconf.mk

Generating include/autoconf.mk.dep

Configuring for smdk2410 board...

[root@localhost u-boot-2010.12]#
然后make all
make测试一下,产生如下错误
board.c: In function '__dram_init_banksize':
board.c:233: error: 'CONFIG_SYS_SDRAM_BASE' undeclared (first use in this function)
board.c:233: error: (Each undeclared identifier is reported only once
board.c:233: error: for each function it appears in.)
board.c: In function 'board_init_f':
board.c:279: error: 'CONFIG_SYS_INIT_SP_ADDR' undeclared (first use in this function)
board.c:312: error: 'CONFIG_SYS_SDRAM_BASE' undeclared (first use in this function)
make[1]: *** [board.o] Error 1
make[1]: Leaving directory `/home/bsc/u-boot-2010.12/arch/arm/lib'
make: *** [arch/arm/lib/libarm.o] Error 2
宏未定义,可能是新版ubootbug
smdk2410.h中添加
#define CONFIG_SYS_SDRAM_BASE             0x00000000
#define CONFIG_SYS_INIT_SP_ADDR              (CONFIG_SYS_TEXT_BASE - GENERATED_GBL_DATA_SIZE)

修改完毕再次编译出现如下错误:

arch/arm/lib/libarm.o: In function `arch_lmb_reserve':

/home/bsc/u-boot-2010.12/arch/arm/lib/bootm.c:74: undefined reference to `get_sp'

arm-linux-ld: BFD (Sourcery G++ Lite 2008q3-72) 2.18.50.20080215 assertion fail /scratch/julian/lite-respin/linux/obj/binutils-src-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:9537

arm-linux-ld: BFD (Sourcery G++ Lite 2008q3-72) 2.18.50.20080215 assertion fail /scratch/julian/lite-respin/linux/obj/binutils-src-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu/bfd/elf32-arm.c:9771

/bin/sh: line 1: 27564 Segmentation fault      arm-linux-ld -Bstatic -T u-boot.lds -pie -Ttext 0x33F80000 $UNDEF_SYM arch/arm/cpu/arm920t/start.o --start-group api/libapi.o arch/arm/cpu/arm920t/libarm920t.o arch/arm/cpu/arm920t/s3c24x0/libs3c24x0.o arch/arm/lib/libarm.o common/libcommon.o disk/libdisk.o drivers/bios_emulator/libatibiosemu.o drivers/block/libblock.o drivers/dma/libdma.o drivers/fpga/libfpga.o drivers/gpio/libgpio.o drivers/hwmon/libhwmon.o drivers/i2c/libi2c.o drivers/input/libinput.o drivers/misc/libmisc.o drivers/mmc/libmmc.o drivers/mtd/libmtd.o drivers/mtd/nand/libnand.o drivers/mtd/onenand/libonenand.o drivers/mtd/spi/libspi_flash.o drivers/mtd/ubi/libubi.o drivers/net/libnet.o drivers/net/phy/libphy.o drivers/pci/libpci.o drivers/pcmcia/libpcmcia.o drivers/power/libpower.o drivers/rtc/librtc.o drivers/serial/libserial.o drivers/spi/libspi.o drivers/twserial/libtws.o drivers/usb/gadget/libusb_gadget.o drivers/usb/host/libusb_host.o drivers/usb/musb/libusb_musb.o drivers/usb/phy/libusb_phy.o drivers/video/libvideo.o drivers/watchdog/libwatchdog.o fs/cramfs/libcramfs.o fs/ext2/libext2fs.o fs/fat/libfat.o fs/fdos/libfdos.o fs/jffs2/libjffs2.o fs/reiserfs/libreiserfs.o fs/ubifs/libubifs.o fs/yaffs2/libyaffs2.o lib/libfdt/libfdt.o lib/libgeneric.o lib/lzma/liblzma.o lib/lzo/liblzo.o net/libnet.o post/libpost.o board/samsung/smdk2410/libsmdk2410.o --end-group /home/bsc/u-boot-2010.12/arch/arm/lib/eabi_compat.o -L /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t -lgcc -Map u-boot.map -o u-boot

make: *** [u-boot] Error 139

查看bootm.c:代码,发现里面明明存在get_sp()函数,支持在一些宏定义条件下。可能是这些宏未定义导致该函数未编译。查到网上一个patch

[PATCH] arm: get_sp() should always be compiled

<ratbert.chuang <at> gmail.com>
2010-11-01 07:55:27 GMT

From: Po-Yu Chuang <ratbert <at> faraday-tech.com>

get_sp() was incorrectly excluded if none of

  CONFIG_SETUP_MEMORY_TAGS

  CONFIG_CMDLINE_TAG

  CONFIG_INITRD_TAG

  CONFIG_SERIAL_TAG

  CONFIG_REVISION_TAG

were defined.

 

Signed-off-by: Po-Yu Chuang <ratbert <at> faraday-tech.com>

---

 arch/arm/lib/bootm.c |    4 +---

 1 files changed, 1 insertions(+), 3 deletions(-)

 

diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c

index a1649ee..7734953 100644

--- a/arch/arm/lib/bootm.c

+++ b/arch/arm/lib/bootm.c

@@ -327,12 +327,12 @@ void setup_revision_tag(struct tag **in_params)

 }

 #endif  /* CONFIG_REVISION_TAG */

 

-

 static void setup_end_tag (bd_t *bd)

 {

        params->hdr.tag = ATAG_NONE;

        params->hdr.size = 0;

 }

+#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */

 

 static ulong get_sp(void)

 {

@@ -341,5 +341,3 @@ static ulong get_sp(void)

        asm("mov %0, sp" : "=r"(ret) : );

        return ret;

 }

-

-#endif /* CONFIG_SETUP_MEMORY_TAGS || CONFIG_CMDLINE_TAG || CONFIG_INITRD_TAG */

修改完毕后,再次编译通过(从编译过程来看,新版本的BUG还不少)。

 

这篇关于[转]u-boot-2010.12移植到2440(一,编译)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/578374

相关文章

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

Spring Boot 中整合 MyBatis-Plus详细步骤(最新推荐)

《SpringBoot中整合MyBatis-Plus详细步骤(最新推荐)》本文详细介绍了如何在SpringBoot项目中整合MyBatis-Plus,包括整合步骤、基本CRUD操作、分页查询、批... 目录一、整合步骤1. 创建 Spring Boot 项目2. 配置项目依赖3. 配置数据源4. 创建实体类

详解Spring Boot接收参数的19种方式

《详解SpringBoot接收参数的19种方式》SpringBoot提供了多种注解来接收不同类型的参数,本文给大家介绍SpringBoot接收参数的19种方式,感兴趣的朋友跟随小编一起看看吧... 目录SpringBoot接受参数相关@PathVariable注解@RequestHeader注解@Reque

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

RabbitMQ使用及与spring boot整合

1.MQ   消息队列(Message Queue,简称MQ)——应用程序和应用程序之间的通信方法   应用:不同进程Process/线程Thread之间通信   比较流行的中间件:     ActiveMQ     RabbitMQ(非常重量级,更适合于企业级的开发)     Kafka(高吞吐量的分布式发布订阅消息系统)     RocketMQ   在高并发、可靠性、成熟度等

Spring Boot 入门篇

一、简介 Spring Boot是一款开源的Java Web应用框架,旨在简化Spring应用的初始搭建以及开发过程。它整合了Spring技术栈中的诸多关键组件,为开发者提供了一种快速、简便的Spring应用开发方式。Spring Boot遵循“约定优于配置”的原则,通过自动配置、起步依赖和内置的Servlet容器,极大地简化了传统Spring应用的配置和部署过程。 二、Spring Boot