分类: LINUX
2011-09-19 20:12:28
在花了几天学习skyeye,自己有点心得体会,把它写下来,希望对看到的人有些帮助!
我在网上搜了很多关于在skyeye下启动uboot都说得不是很完整,所以我决定把资料整理一下
1.关于skyeye,uboot是干什么的,我就不多说了!
2.我所使用的环境wm+fedora12+gcc4.4.2,skyeye-1-3-1_rc1是从官网上下载的,uboot是1.1.6
3,首先编译skyeye
tar xzvf skyeye-1-3-1_rc1.tar.gz
然后运行如下命令编译
./configure
make lib
make
其中 make lib 来编译第三方的库,make 来编译 skyeye 的源代码
make install_lib
make install
如果没有指定安装目录则默认安装在/opt目录下
安装之后,/opt/skyeye 应该有以下目录:
bin include info lib testsuite
其中 bin 目录存放了 skyeye 的二进制程序,描述如下:
mknandflashdump : 用来制作 nandflash 的镜像文件
skyeye :skyeye 的命令行应用程序。
Skyeye-gui: skyeye 的图形应用程序。
uart_instance : 被 skyeye 调用的应用程序,功能为通过一个 xterm 终端来显示串口的输出。
include 目录存放了 skyeye 开发插件时所用到的头文件,这些头文件定义了 skyeye 提供的 API 函数的原
型。
info 目录存放了 info 格式的文档,暂时没有提供。
Lib 目录存放了 skyeye 的核心库 libcommon.so 和其他一些以动态库存在的插件。
testsuite 目录存放了一个简单的测试用例,用来演示 skyeye 的一些功能。
下一步编译uboot,uboot里面带了一个smdk2410的板子,我们就使用这个
首先解压u-boot源码,更改Makefile中
........................
ifeq ($(ARCH),arm)
CROSS_COMPILE =/home/jjinl/gcc/bin/arm-linux-
endif
......................
/home/jjinl/gcc/bin/arm-linux- 是我的交叉编译器路径,如果你把交叉编译器安装在系统搜索路径中就直接arm-linux-
下一步就执行
make distclean
make smdk2410_config
make all
我编译完后部分截图
在uboot目录下,我们会发现u-boot.bin和u-boot两个文件,其中u-boot.bin是raw的二进制文件。u-boot是ELF格式的。
编写skyeye.conf文件
关于skyeye.conf(这个文件是用来配置主板的),需要参考uboot下include/configs/
分析"include/configs/smdk2410.h"
/*-----------------------------------------------------------------------
* Physical Memory Map
*/
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */起始地址
#define PHYS_SDRAM_1_SIZE 0x04000000 /* 64 MB */大小
#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */
#define CFG_FLASH_BASE PHYS_FLASH_1
所以我们的
mem_bank: map=M, type=RW, addr=0x30000000, size=0x01000000
要改为:
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
再看
/*-----------------------------------------------------------------------
* FLASH and environment organization
*/
#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */
#if 0
#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */
#endif
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
#ifdef CONFIG_AMD_LV800
#define PHYS_FLASH_SIZE 0x00100000 /* 1MB */
#define CFG_MAX_FLASH_SECT (19) /* max number of sectors on one chip */
#define CFG_ENV_ADDR (CFG_FLASH_BASE + 0x0F0000) /* addr of environment */
#endif
#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
看
#define PHYS_FLASH_1 0x00000000 /* Flash Bank #1 */起始地址
#define PHYS_FLASH_SIZE 0x00080000 /* 512KB */大小
所以我们的
mem_bank: map=M, type=RW, addr=0x00000000, size=0x01000000, file=./u-boot, boot=yes
要改为:
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00080000, file=./u-boot, boot=yes
改完后我的skyeye.conf文件内容如下
------------------------------------------------------------------------以下内容
#skyeye config file sample
cpu: arm920t
mach: s3c2410x
#physical memory
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00080000,file=./u-boot,boot=yes
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
#all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x19000300, size=0x00000020
#net: type=cs8900a, base=0x19000300, size=0x20,int=9, mac=0:4:3:2:1:f, ethmod=tuntap, hostip=10.0.0.1
uart:mod=term
#lcd:type=s3c2410x,mod=gtk
#dbct:state=on
现在把u-boot.bin,和刚刚编写的skyeye.conf文件拷贝到一个文件夹中,我是在/home目录下新建了一个skyeyeT文件夹如下
接下来在此目录运行
/opt/skyeye/bin/skyeye -e u-boot
注意:因为我的skyeye没有安装在系统搜索路径中,所以要带上完整的路径
我运行的效果如下
输入run后就会有uart instance窗口弹出来