移植环境

硬件平台:FS2410

U-Boot版本:u-boot-1.1.6

编译器:arm-linux-gcc version 3.4.1


U-Boot主要目录结构


   U-Boot的 stage1代码通常放在 cpu/……/start.S文件中,它用汇编语言写成;

   U-Boot的 stage2代码通常放在 lib/……/board.c文件中,它用 C语言写成。

 


步骤

   1、下载并解压U-Boot源码

tar xvf u-boot-1.1.6.tar.bz2

   2、编译开发板项目

目前U-Boot对很多CPU直接支持,可以查看 board目录的一些子目录

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board$ ls
a3000 cu824 icecube mpc8266ads pn62 snmc
adder dave icu862 mpc8349emds ppmc7xx sorcery
adsvix dbau1x00 ids8247 mpc8540ads ppmc8260 spc1920
alaska delta impa7 mpc8540eval prodrive spd8xx
altera dnp1110 incaip mpc8560ads psyent ssv
amcc eltec inka4x0 mpc8641hpcn purple stamp
amirix emk innokom mpl pxa255_idp stxgp3
armadillo ep7312 integratorap musenki quantum stxxtc
assabet ep8248 integratorcp mvblue r360mpi svm_sc8xx
at91rm9200dk ep8260 ip860 mvs1 r5200 sx1
atc ep82xxm iphase4539 mx1ads rattler tb0229
AtmarkTechno ep88x ispan mx1fs2 rbc823 total5200
atmel eric ivm nc650 rmu tqm5200
barco esd ixdp425 netphone RPXClassic tqm8260
bc3450 esteem192e jse netstar RPXlite tqm834x
bmw etin kb9202 netta RPXlite_dw tqm85xx
BuS etx094 kup netta2 rpxsuper tqm8xx
c2mon evb4510 lantec netvia RRvision trab
canmb evb64260 lart ns9750dev rsdproto uc100
cds eXalion LEOX nx823 sacsng utx8245
cerf250 exbitgen logodl o2dnt sandburst v37
cm4008 ezkit533 lpd7a40x omap1510inn sandpoint v38b
cm41xx fads lubbock omap1610inn sbc2410x versatile
cmc_pu2 flagadm lwmon omap2420h4 sbc405 voiceblue
cmi funkwerk m5271evb omap5912osk sbc8240 w7o
cobra5272 g2000 m5272c3 omap730p2 sbc8260 wepep250
cogent gcplus m5282evb oxc sbc8560 westel
cpc45 gen860t MAI pb1x00 sc520_cdp xaeniax
cpu86 genietv Marvell pcippc2 sc520_spunk xilinx
cpu87 gth mbx8xx pcs440ep scb9328 xm250
cradle gth2 mcc200 pleb2 shannon xpedite1k
cray gw8260 ml2 pm520 siemens xsengine
csb226 hermes modnet50 pm826 sixnet zpc1900
csb272 hidden_dragon mousse pm828 sl8245 zylonite
csb472 hmi1001 mp2usb pm854 smdk2400
csb637 hymod mpc8260ads pm856 smdk2410

在最下面可以看到已经有 smdk2410目录了,看看目录下面有什么东西

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$ ls
config.mk flash.c lowlevel_init.S Makefile smdk2410.c u-boot.lds
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$

OK,都是编译要用到的源文件,现在回到 U-Boot根目录

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/board/smdk2410$ cd ../..
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ ls
arm_config.mk fs MAKEALL
avr32_config.mk i386_config.mk Makefile
blackfin_config.mk include microblaze_config.mk
board lib_arm mips_config.mk
CHANGELOG lib_avr32 mkconfig
CHANGELOG-before-U-Boot-1.1.5 lib_blackfin nand_spl
common lib_generic net
config.mk lib_i386 nios2_config.mk
COPYING lib_m68k nios_config.mk
cpu lib_microblaze post
CREDITS lib_mips ppc_config.mk
disk lib_nios README
doc lib_nios2 rtc
drivers lib_ppc rules.mk
dtt m68k_config.mk tools
examples MAINTAINERS
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$

   查看 U-Boot根目录下的Makefile

我们的目标平台是三星的2410,所以找到里面的 smdk2410_config

这就是默认的配置选项了,由于 U-Boot里面已经给2410配置好了,所以这里直接编译项目

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ make smdk2410_config
Configuring for smdk2410 board...
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$

OK,出现Configuring for smdk2410 board...,就说明项目编译成功了

下面编译 U-Boot.bin文件

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$make

看着满屏幕的命令不停的闪,总觉得会出问题,果然

然后百度,说是 gcc库使用是硬浮点,而 uboot指定了使用软浮点,但是都未提供解决办法,只提到注释掉 Makefile里面的-msoft-float参数,但是在Makefile里面,根本就没有这个参数,囧

但是我在另外一个文件中找到了这个参数

mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6$ cd cpu/arm920t/
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/cpu/arm920t$ ls
at91rm9200 cpu.c imx interrupts.o libarm920t.a s3c24x0 start.S
config.mk cpu.o interrupts.c ks8695 Makefile start.o
mystery@lcw:~/Desktop/transplant/u-boot/u-boot-1.1.6/cpu/arm920t$ more config.mk

看看这个 config.mk 文件

我把其中的 -msoft-float删除了,但是还是编译到这里就出错了,囧……

然后我又换了u-boot-2009.08.tar.bz2,但是编译到这里时仍然是这个错误……

所以,改这个是不对滴!


解决方案

我们需要修改两个文件:lib_arm/_umodsi3.Slib_arm/_udivsi3.S
bl __div0 (PLT) 改为 bl __div0

然后再进行编译

OK,成功!

 

本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1223166

【嵌入式】FS2410移植U-Boot-1.1.6的更多相关文章

  1. CH02基于ZYNQ的嵌入式LINUX移植

    CH02基于ZYNQ的嵌入式LINUX移植 1.1概述 实验环境: Windows 10 专业版 Vmware workstation 14.1.1 Ubuntu 16.04.3 Xilinx SDx ...

  2. 【转载】嵌入式 Linux 移植 Dropbear SSH server

    0. 背景  OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中.  Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种 ...

  3. 手把手带你基于嵌入式Linux移植samba服务

    摘要:Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 本文分享自华为云社区<嵌入式Linux下移植samba服务--<基于北斗和4G ca ...

  4. 嵌入式linux移植LAMP服务器

    一.工具准备工作  要想在ARM平台上移植一套Apache+Msql+PHP的Web型服务器. 所用物理机系统: Ubuntu 14.04 LTS(64位) 交叉编译环境:   arm-linux-g ...

  5. [国嵌攻略][182][Sqlite嵌入式数据库移植]

    数据库系统构成 在计算机系统中,保存数据的方式一般有两种: 1.普通文件方式 2.数据库方式 相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性. 数据库系统一般由三个部分构成 1. ...

  6. [国嵌攻略][173][BOA嵌入式服务器移植]

    1.解压boa嵌入式web服务 tar zxvf boa-0.94.13.tar.gz 2.进入src目录生成配置文件 ./configure 3.修改生成的Makefile CC=arm-linux ...

  7. 嵌入式linux------SDL移植(am335x下显示bmp图片)

    #include<stdio.h> #include "/usr/local/ffmpeg_arm/include/SDL/SDL.h" char *bmp_name[ ...

  8. 嵌入式 linux 移植修改后的libjpeg 实现内存中解码

    1.修改libjpeg源码,使之实现内存解码. 修改libjpeg中读取或者输出jpeg文件的函数接口文件jdatadst.c和jdatasrc.c见下面这篇帖子. http://blog.163.c ...

  9. 嵌入式QT移植

    1  开发环境 目标版:FS4412(Cortex-A9)开发板 交叉工具链:arm-linux-gcc 4.6.4 版本 Qt:qt-everywhere-opensource-src-5.4.2. ...

随机推荐

  1. ios发布

    https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Gu ...

  2. Using PHP as a Spring MVC View via Quercus(转)

    原贴: http://blog.caucho.com/2009/04/14/using-php-as-a-spring-mvc-view-via-quercus/ This week, I’ve be ...

  3. Eclipse导入项目时出错提示 project is missing required library

    Eclipse导入(import)项目时出错提示 project is missing required library... 以至于不能build... 然后项目会有红色感叹号: [解决办法] 右击 ...

  4. iOS开发调试Reveal使用

    推荐通过Xcode中加断点的方式集成Reveal(小缺陷,当你禁用断点时或者不用Xcode而用Appcode开发时,这个方式是不管用). 打开您的iOS工程,选择 View → Navigators ...

  5. C# WinForm开发系列 - DataGrid/DataGridView

    在WinForm开发中,DataGrid/DataGridView被广泛使用于绑定数据库中数据进行呈现.整理一些关于DataGrid/DataGridView使用的文章,涉及DataGrid/Data ...

  6. Git 提交更新到仓库(分布式版本控制系统)

    1.Git 文件生命周期 工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪. 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改 ...

  7. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

  8. android蓝牙开发---与蓝牙模块进行通信

    近半个月来一直在搞android蓝牙这方面,主要是项目需要与蓝牙模块进行通信.开头的进展很顺利,但因为蓝牙模块不在我这里,所以只能用手机测试.一开头就发现手机的蓝牙不能用,为了证明这点,我刷了四次不同 ...

  9. MySQL -- 全文检索(查询扩展检索)

    通常用在查询的关键词太短,用户需要隐含知识进行扩展.例如,查单词database时,用户可能还希望不仅仅包含database的文档,可能还指包含mysql.oracle.db2等单词.这时就需要查询扩 ...

  10. git经常使用命令和问题

    和远程仓库相关的命令: 下载仓库代码:git clone 远程仓库地址 查看远程仓库:git remote -v 加入远程仓库:git remote add origin [url], 当中origi ...