您的位置:首页 > 运维架构 > Linux

嵌入式Linux学习-----u-boot移植

2015-12-25 14:02 681 查看
自从大二我就开始接触单片机,开始学习51单片机编程及电路图绘制,经过一段时间的学习,发现嵌入式很有意思。后来在师兄的推荐下,我到图书馆借了韦东山老师写的《嵌入式Linux应用开发完全手册》,开始学习嵌入式linux,在虚拟机安装Linux,熟悉Linux环境,各种命令。根据书本的指引,我很快入门了,主要是书写得很好。结合书本视频,也就是韦东山嵌入式Linux第一期视频,我被嵌入式深深吸引住了。最后决定继续购买韦老师的后期视频,快速提高技术水平。

下面我来记录一下我的学习过程及心得。

首先了解需要用到的工具及源码,如下:

交叉编译工具:arm-linux-gcc-4.4.3.tar.gz

linux内核:linux-2.6.22.6.tar.bz2,补丁:linux-2.6.22.6_jz2440.patch

u-boot源码:u-boot-1.1.6.tar.bz2,补丁:u-boot-1.1.6_jz2440.patch

busybox源码:busybox-1.7.0.tar.bz2

yaffs2制作工具:yaffs_source_util_larger_small_page_nand.tar.bz2

jffs2制作工具路径:F:\韦东山\CD1_主光盘\GUI\xwindow\X\deps

以上源码和工具均来自韦东山光盘。

一、u-boot移植

首先通过观看u-boot相关的视频,了解大概情况后开始移植。

工具和源码在路径:F:\韦东山\CD1_主光盘\system。

tar xjf u-boot-1.1.6.tar.bz2 //解压缩

cd u-boot-1.1.6 //进入目录

patch -p1 < ../u-boot-1.1.6_jz2440.patch //打补丁,-p1是指忽略第一个目录

root@ubuntu:/share/u-boot-1.1.6# make 100ask24x0_config //产生配置文件

Configuring for 100ask24x0 board...

make all //编译

结果会遇到这个问题,发现浮点错误,因为gcc造成,所以修改以下文件

gedit cpu/arm920t/config.mk

undefined reference to ‘raise’ //提示错误

将cpu /arm920t/config.mk 改为

PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 /

-msoft-float
PLATFORM_CPPFLAGS +=

# ===========================================================#

# Supply options according to compiler version

PLATFORM_CPPFLAGS +=$(call cc-option,)

PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))
在uboot的根目录中把Makefile中的PLATFORM_LIBS 修该为如下值

PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lc -L/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

然后重新 make distclean,make 100ask24x0_config, make
应就能通过了,最后可生产u-boot.bin

通过jlink下载u-boot.bin到nor flash

下载成功后,从nor flash启动,选择k命令,

开启dnw,选择dnw的USB Port下载uImage,

在u-boot界面输入b即可启动内核。

启动u-boot后,要保证能ping通虚拟机linux。

下一节讲解Linux内核移植。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: