mini2440 编译U-Boot-1.1.6遇到的一些问题

发布者:Jinyu2022最新更新时间:2024-06-24 来源: elecfans关键字:mini2440  编译  U-Boot 手机看文章 扫描二维码
随时随地手机看文章

Linux环境: Ubuntu 11.10

交叉编译工具:arm-linux-gcc4.3.2

目标板:mini2440 Flash 256M

u-boot源代码:由友善之臂提供,基于1.1.6版本修改后的FriendlyARM修改过的U-Boot.1.1.6

下载在Linux公社的1号FTP服务器里,下载地址:

FTP地址:ftp://www.linuxidc.com

用户名:www.linuxidc.com

密码:www.muu.cc

在 2011年LinuxIDC.com12月Android_sdk_linux_x86.tar.gz 下载

下载方法见 http://www.linuxidc.net/thread-1187-1-1.html

下面马上进入我们的编译之旅!

1、解压缩源码包

  1. tar zxvf u-boot-1.1.6-FA24x0.tar.gz  

2、make clean


这时候将会出现第一个问题:

  1. /bin/sh: lex: command not found  

解决方法可以参见:Linux命令make报错总结 见 http://www.linuxidc.com/Linux/2011-12/50152.htm


3、make open24x0_config

配置板子资源

  1. Configuring for open24x0 board...  


4、删除Makefile.l文件,否则make的时候会出现一些错误

5、make

编译出现错误:

  1. undefined reference to ‘raise’  

解决方法参见:undefined reference to ‘raise’ 见 http://www.linuxidc.com/Linux/2011-12/50151.htm


之后编译还是会出现问题。通过找查找论坛资料,一位网友提出make distclean可以解决问题!

make distclean

make open24x0_config

make

6、编译成功

7、在display_banner()函数里面加入自己的一些调试显示信息

printf('###Hello u-boot!My name is care###n');

8、再次编译u-boot

9、将u-boot.bin烧写到板子的0x33000000地址上

10、复位一下板子,通过超级终端可以看到调试信息

###hello u-boot!My name is care###

大功告成。

最近公司忙着赶项目,我负责的是之前没有接触过的u-boot 。浪费了3天时间,都是在做无用功。主要的原因是切入点不对,3天的时间主要都用来跟着网上的高手移植u-boot。对于源码的阅读反而不是很多。看到了一篇文章(http://www.linuxidc.com/Linux/2011-12/50150p2.htm),描述了作者初学u-boot的心得。很有体会,在此附上连接。希望对和我一样的bootloader初学者能有帮助。


新手移植u-boot的一些建议

经过将近两个星期的时间,总算移植好了一个勉强能支持基本功能的u-boot了,泪流满面。在刚刚开始移植uboot时走了很多弯路,不过坚持下来,也算是苦中有乐!

一开始我是照着友善的移植Uboot手册上改代码,虽然也看了前半部分的uboot执行流程,但是到了改代码的时候还是很多东西不懂,就照着做,出现各种编译错误,慢慢改,一路下来,最后满怀期待的上电,超级终端里却无我所期待的字样。因为对很多代码不懂,也不知道到底是哪里出了错,甚是迷茫。

经过几次的尝试,还是没有得到最后想要的结果,几乎就要放弃。冷静下来,好好想了想,觉得自己的方法就不对,于是从头再把uboot的执行流程重新仔细学了一遍,大家在学start.S这个文件时基本不会有什么问题,建议大家可以在这个文件下先不用实现nand flash相关部分代码,只要能实现将代码从nor flash搬运即可(其实从nor flash搬运到sdram相关代码Uboot源码已经实现,就是relocate标号),关键的是跳转到lib_arm/board.c这个文件里的函数后就不知道是什么情况了,其实它就是执行一系列的初始化,每个函数基本初始化一个相应的部分,而且这些函数能不能执行都是由我们在include/configs/mini2440.h这个头文件中定义的所有宏来决定的,因此我根据自己的经历建议大家在确保start.S这个文件正确执行的前提下先使得我们自己的uboot执行board_init这个函数,这个函数里的一些修改比较简单,能运行后再使我们的serial_init函数能运行正确,其余board.c下面的很多初始化的函数的不用管,都给注释掉。因为这样,我们的Uboot如果能运行正确的话,我们是可以在串口看到一些相应的基本信息,这样就有助于我们的观察了,就算以后加入什么功能,哪里出了问题,我们也可以用printf输出到串口进行观察。

接下来就是一步步完善uboot功能的时刻了,大家可以根据自己实际的需求去增加一些功能,其实主要就是一些初始化(主要在比如实现从nand flash里面启动,这个你可以照着友善的手册(而且使用他们的nand_read.c这个文件);又比如你要实现网络,在mini2440.h里面增加dm9000相关的宏,然后在board.c里面将cs8900相关初始化的代码更换成dm9000的代码,uboot支持dm9000驱动,所以比较简单,当然,完善Uboot的功能可以照着友善移植uboot手册,关键是要理解相关宏的作用。

如果这样坚持下来,相信你对Uboot的执行流程会有一个真正比较深刻的理解,还是这个道理,从简单过渡到复杂,最后移植完成后最好回头把相关的部分重新温习一下,这样相信以后就算我们在工作中遇到新的板子,我们应该也会知道从哪里开始,怎么去深入。


关键字:mini2440  编译  U-Boot 引用地址:mini2440 编译U-Boot-1.1.6遇到的一些问题

上一篇:移植U-Boot-2009.08到mini2440 基础配置篇
下一篇:mini2440 驱动ds18b20

推荐阅读最新更新时间:2026-01-17 16:52

mini2440 实现u-boot的usb slave下载功能
友善公司不知为何,一直没有发布一个好用的u-boot。之前已移植过2008.10版的u-boot,最近,又移植了2009.08的u-boot。 移植完毕后,总觉得友善自带的dnw下的usb下载功能真的很好用,于是,决定在u-boot中,也加上此功能。搜索网络后,发现,已有人,即本网的老大,在u-boot1.1.6上实现了此功能,并发布了源代码,于是,接下来的工作,就是把这些代码移植到u-boot 2009.08上来。为此,利用春节休假,仔细研究了u-boot关于USB方面的代码,原来,u-boot已实现usb host功能,而usb 下载所需的usb device功能未实现(源码中,已有部分代码,不过未完成)。对照本网的源代码,经
[单片机]
U-Boot 2010.09 支持mini2440
手头上只有mini2440的板子,移植也是针对它,感觉老了点,^.^!,本来uboot的版本想选定最新的,如2011.03等,但是uboot从2010年12月份的版本起,前面的初始化代码结构改动比较多,而且存在很多bug,尤其是开始搬运代码处的bug(没搬运代码就改变了全局变量,对norflash这是不可以的),开始琢磨着改,但是越到后来越发现,改就改回了旧式的结构,索性还不如用旧式结构的版本,因此移植的版本选定了旧式结构的最后一个版本2010.09。 移植期间参考了Tekkaman Ninja 关于03版本的部分源代码,在此对其表示感谢! U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2
[单片机]
mini2440 u-boot linux 内核启动,u-boot.2012.10——mini2440(二、启动流程分析)
参考资料:https://blog.csdn.net/suiyuan19840208/article/details/7239949 https://blog.csdn.net/pugu12/article/details/47011159 http://tscsh.blog.163.com/blog/static/200320103201312645149965/ https://blog.csdn.net/winheroii58/article/details/6803327 1、第一阶段功能 * 硬件设备初始化 * 加载u-boot第二段代码到RAM空间 * 设置好栈 * 跳转到第二段代码入口 2、第二段代码的功能 * 初始
[单片机]
<font color='red'>mini2440</font> <font color='red'>u-boot</font> linux 内核启动,u-boot.2012.10——<font color='red'>mini2440</font>(二、启动流程分析)
mini2440 u-boot linux 内核启动,Mini2440 uboot,kernel,根文件系统搭建
按照mini2440的手册,我所学到的uboot,kernel以及根文件系统的搭建过程分别如下,具体细节暂时不考虑,只考虑整个编译烧写的过程。 首先我们的宿主机一定要有nfs服务器,tftp服务器,具体搭建的过程,可以自己参考 1. mini 2440 编译uboot过程 下载u-boot-2010.03-embedclub-201111.tar.gz, 1:tar zxf u-boot-2010.03-embedclub-201111.tar.gz 2:cd u-boot-2010.03 3:make disclean #执行清理工作 4:make smdk2440a_config #Makefile的对应项 5:make
[单片机]
从零开始移植U-bootmini2440(三)——CPU初始化篇
经过前两节的准备,我们现在可以开始肝u-boot的代码了 U-boot版本:2020/5/2 编译环境:Ubuntu 16.04 arm-none-eabi-gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 运行环境:mini2440(s3c2440,arm920t) 代码仓库:git@github.com:JingyeLi/u-boot_2440.git https://github.com/JingyeLi/u-boot_2440/tree/v0.1 u-boot.lds 这是一个很容易被人忽略的一个文件,包括我自己,以前一般用keil的时候都是自
[单片机]
【ARM】使用J-Link下载u-bootMini2440开发板
#1各种引导系统介绍 ##1.1 bios 1 BIOS是英文 Basic Input Output System 的缩略语,直译过来后中文名称就是 基本输入输出系统 。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。 ##1.2 Grub 2 GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的
[单片机]
【ARM】使用J-Link下载<font color='red'>u-boot</font>到<font color='red'>Mini2440</font>开发板
友善之臂最新版mini2440学习笔记——u-boot 1.1.6移植(一)
从本文开始,将记录博主在进行u-boot 1.1.6移植过程中遇到的问题。本文将涉及两个问题: 1. u-boot中添加开发板 2. u-boot第一阶段启动代码 1. u-boot中添加开发板 1.1. Makefile更改 1.1.1. 增加反汇编文件输出 Makefile文件中239行,源文件为: ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) 更改为: ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(obj)u-boot.dis $
[单片机]
IMX6ULL学习笔记(5)——获取和编译U-Boot
一、简介 1.1 BootLoader BootLoader 是系统上电时运行的一段初始化代码,用于引导完整的操作系统,然后将控制器交给操作系统。 这段 BootLoader 程序会先初始化 DDR 等外设,然后将 Linux 内核从 Flash(NAND,NOR FLASH,SD,MMC 等)拷贝到 DDR 中,最后启动 Linux 内核。 另外,某些 BootLoader 可能含有一些高级特性,如校验操作系统镜像,从多个操作系统镜像中选择引导合适的操作系统, 或者添加网络功能,让系统自主从网上寻找合适的镜像并且进行引导等等。 1.2 U-Boot U-Boot(Universal Boot Loader) 是一个主要
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved