QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: hhq0216

u-boot + s3c2410 for skyeye?

[复制链接]
发表于 2006-12-26 13:02:53 | 显示全部楼层


请问hhq0216:
mem_bank: map=M, type=RW, addr=0x33f00000, size=0x01000000, file=u-boot.bin, boot=yes
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x01000000, file=vmlinux
mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000, file=initrd.img

上面第一个file后面是u-boot的文件
第二,三个file后面的是linux系统的文件吗?

这样设置之后,是不是把linux系统启动起来了?

(我是新手,对skyeye还在琢磨中:) )
回复

使用道具 举报

 楼主| 发表于 2006-12-26 13:10:14 | 显示全部楼层
是这样的,skyeye启动后将会把这三个文件加载到内存
不过由于u-boot是从flash中加载内核和根文件的,因此u-boot会停在命令提示符(不知是否支持flash的模拟,有待于版主老大的支持),我们可以用go 0xc0000000 来手动跳转到内核入口运行
回复

使用道具 举报

发表于 2006-12-26 13:20:22 | 显示全部楼层
哦,谢谢了!

期待你的大作!
回复

使用道具 举报

 楼主| 发表于 2006-12-26 13:30:12 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2006-12-29 09:42:35 | 显示全部楼层
u-boot开发手记  -- u-boot for skyeye
author: hhq0216
time: 06.12.26

1、前言

由于工作的需要,我开始尝试在s3c2410开发板上移植u-boot1.1.6,由于没有硬件仿真器,我的工作进展得非常痛苦,每次只能将认为有较大进展和把握的u-boot.bin烧写进我的开发板测试,而一次的烧写近20分钟。在这种情况下我选择了在skyeye上移植,希望能将工作平台转移到skyeye上,这样不仅减轻了开发难度,更加快了开发速度。
这篇文章即我开发过程中的一点手记,希望能对大家有所帮忙,同时更希望能起到抛砖引玉的作用,让更多的朋友加入到skyeye中。

2、开发环境

我使用的硬件平台是华恒的study r3开发板,s3c2410x CPU,16M NOR flash,64M SDram
软件开发是在cygwin下用skyeye进行u-boot for smdk2410的仿真

3、skyeye的安装

首先下载安装skyeye-1.2-RC8.tar.tar的源码包,解压,按readme里的说明编译:

在正式编译之前我想先提下关于skyeye 的LCD支持,请先确认你的cygwin有以下软件包的支持:
gtk+-2.0-dev pkg-config atk-dev pango-dev freetype2-dev glib-dev x11-dev binutils-dev(bfd)

[注]、我下载了个cygwin的完整安装包cygwin-cd-release-20051128.iso,里边有所需的所有支持包。

确认安装了以上支持包后,就可以开始编译了,由于头文件路径的原因会提示个小错误:

arch/arm/mach/skyeye_mach_ps7500.c:50:26: mpw/sys/time.h: No such file or direct
ory
make: *** [binary/skyeye_mach_ps7500.o] Error 1

只需找到arch/arm/mach/skyeye_mach_ps7500.c文件,做如下修改即可:

#ifdef __CYGWIN__
//#include "mpw/sys/time.h"
#include <time.h>
#endif

重新编译即可生成binary/skyeye.exe
建立个指向执行文件的链接 ln -s /home/skyeye-v1/binary/skyeye.exe /bin/skyeye.exe 这样我们就可以方便地执行skyeye程序了。

4、交叉编译器的安装

下载安装bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.exe
我将交叉编译器安装在d:/cygwin/GNUARM/
安装时不要选中Install Cygwin Dlls,否则运行时会提示:
$ arm-elf-ar
d:\cygwin\gnuarm\bin\arm-elf-ar.exe (1296): *** proc version mismatch detected -
0xD94C588A/0x19C16FB6.
You have multiple copies of cygwin1.dll on your system.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version.  The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution.
提示系统中重复安装了cygwin1.dll,须删除多余库文件,保留x:\cygwin\bin下的那个。

最后提示是否将交叉编译器路径加入环境变量中,这要看个人习惯了,我是没选。

安装后可以测试下交叉编译器是否可用

$export PATH=/GNUARM/bin:$PATH
$arm-elf-ar
$arm-linux-gcc -o test test.c
$file test
test: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped.

5、编译u-boot-1.1.6

从uboot的网站上可以下载到最新的uboot源代码,你可以从以下的网址下载 :
http://u-boot.sourceforge.net/
目前u-boot的最新版本是u-boot-1.1.6.tar.bz2,u-boot源码目录结构清晰,是学习bootloader很好的范例,这里我的硬件平台是s3c2410,u-boot已经支持一个smdk2410的板子,我们只要根据实际硬件做少许修改即可,以下是我所做的修改:
有关开发板的配置都在”include/configs/smdk2410.h”
源码:
#ifdef CONFIG_AMD_LV400
#define PHYS_FLASH_SIZE                0x00080000 /* 512KB */
#define CFG_MAX_FLASH_SECT        (11)        /* max number of sectors on one chip */
#define CFG_ENV_ADDR                (CFG_FLASH_BASE + 0x070000) /* addr of environment */
#endif
修改:
#ifdef CONFIG_AMD_LV400
#define PHYS_FLASH_SIZE                0x01000000 /* 16MB */
#define CFG_MAX_FLASH_SECT        (12        /* max number of sectors on one chip */
#define CFG_ENV_ADDR                (CFG_FLASH_BASE + 0x020000) /* addr of environment */
#endif

$make distclean;make smdk2410_config;make
编译生成u-boot.bin和u-boot,其中u-boot.bin是raw的二进制文件,u-boot是ELF格式的,这里我选用u-boot.bin在skyeye里运行。

6、配置skyeye.conf,运行u-boot

编辑skyeye.conf,这个文件是用来配置主板的,详细说明见skyeye的相关文档。我的skyeye.conf如下:
# add by hhq, 06.12.16

cpu: arm920t
mach: s3c2410x

#memory area
mem_bank: map=M, type=RW, addr=0x33f00000, size=0x01000000, file=u-boot.bin, boot=yes
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x01000000, file=vmlinux
mem_bank: map=M, type=RW, addr=0xc1000000, size=0x00800000, file=initrd.img

#all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000

[注]:这里的peripherals i/o mapping area是根据cpu手册确定的,设置不对会导致当机

好的,如果一切顺利你将会看到u-boot的命令提示符SMDK2410#
$ skyeye.exe
SKYEYE: If you have ELF kernel file, please use -e option to indicate your ELF f
ormat kernel filename
SKYEYE: If you only have kernel binary image, you should put the filename of ker
nel binary image in skyeye.conf file
arch: arm
cpu info: armv4, arm920t, 41009200, ff00fff0, 2
mach info: name s3c2410x, mach_init addr 0x4163e0
SKYEYE: use arm920t mmu ops
Loaded RAM   u-boot.bin
Loaded RAM   vmlinux
Loaded RAM   initrd.img


U-Boot 1.1.6 (Dec 26 2006 - 21:57:44)

DRAM:  64 MB
Flash: 16MB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
SMDK2410 #

不知1.2版本的skyeye是否已经支持flash的仿真,总之我是没成功配置过,所以导致u-boot没能自动引导内核,而停在了命令提示符,不过这没关系,我们可以通过go c0000000来手动跳转到内核入口来执行:
$go c0000000

这样我们就初步实现了整个系统在skyeye上的移植工作,不过这只完成了u-boot在skyeye上的移植,真正要完成开发,最终在板子上运行还有很多工作要做,如不同flash的支持,网络的支持,及command的扩展等等。

7、遗留的问题

关于skyeye中LCD的支持,虽然编译通过了,可不知该怎么仿真
lcd:state=on,type=smdk2410,mod=gtk
运行时提示:
(<unknown>:92: Gtk-WARNING **: cannot open display:
回复

使用道具 举报

 楼主| 发表于 2006-12-29 09:50:31 | 显示全部楼层
很少写文章,写得有些乱,大家看后有什么问题欢迎提出,我会及时修改补充
也欢迎论坛的大侠们帮忙补充,谢谢
回复

使用道具 举报

发表于 2006-12-29 22:41:19 | 显示全部楼层
hhq0216,你发到KSH老大那里,能不能顺便给我也发一份啊![email protected]
谢谢了!
回复

使用道具 举报

发表于 2006-12-29 22:52:56 | 显示全部楼层
谢谢hhq0216带来的好文章!期待你能够继续发扬共享精神。。


楼上的兄弟的要求太“过分”了,你直接cp不就得了,难道ksh老大得到那一份有“秘方”吗?
回复

使用道具 举报

发表于 2006-12-29 22:55:00 | 显示全部楼层
谢谢hhq0216带来的好文章!期待你能够继续发扬共享精神。。


楼上的兄弟的要求太“过分”了,你直接cp不就得了,难道ksh老大得到那一份有“秘方”吗?
回复

使用道具 举报

 楼主| 发表于 2006-12-30 13:12:23 | 显示全部楼层
呵呵,我没给ksh老大发邮件,这里贴的就是原稿
看来是写得太不咋的,使得naroya老兄怀疑其真实性  :(

ps:LCD仿真已经可以,主要是我原先的cygwin没装全
   另怎么贴图?
回复

使用道具 举报

发表于 2006-12-30 13:20:59 | 显示全部楼层
Good. Flash simulation should can run on uboot also. Hope you can keep on going   to dig into.
回复

使用道具 举报

 楼主| 发表于 2006-12-31 12:53:06 | 显示全部楼层
ok
回复

使用道具 举报

发表于 2007-1-17 10:03:37 | 显示全部楼层
太谢谢了,我买了2410的开发板,最后发现还是要用skyeye来调试,正无从下手呢,楼主给了我很大的帮助!
回复

使用道具 举报

发表于 2007-2-2 12:13:08 | 显示全部楼层
hhq0216 如果能再详细的介绍一下背景知识就更好,说说你的开发板的情况,为什么mem_bank的起始地址是****.......这样对新手来说就更好...........

好像还没有这样的文章
回复

使用道具 举报

 楼主| 发表于 2007-2-7 13:17:38 | 显示全部楼层
多谢farley的提醒 这是当时写时的疏忽
最近也太久没来坛子关注
我尽量改下吧  争取年后回来补上
:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-23 22:55 , Processed in 0.149322 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表