davylin 发表于 2006-6-19 08:36:09

在cygwin下使用skyeye运行RTEMS

RTEMS开发环境的建立
                   ----在cygwin下使用skyeye运行RTEMS

作 者:davylin
时 间:2006.6.18
EMail:[email protected]

一.安装cygwin-1.5.19
1.在Windows XP下用WinRAR将cygwin-1.5.19-for-skyeye.tar.bz2解压,
2.运行cygwin的setup.exe程序进行安装,安装路径选用"Install from Local Directory",安装时选择"All install"(全部安装)
假设安装路径如下:
目标路径:C:\cygwin
源 路 径:D:\cygwin-1.5.19

二、编译skyeye1.2-RC7安装RTEMS的交叉编器
1.将skyeye-1.2-RC7-3.tar.bz2拷到/usr/src,并解压它
tar xjf skyeye-1.2-RC7-3.tar.bz2

2.编译skyeye
skyeye-1.2-RC7要求gcc的版本为3.3以上的编译器,cygwin 1.5.19的gcc的版本是3.4.4所以是满足要求的。
进入/usr/src/skyeye-v1修改Makefile文件:


CC = gcc-3.3
#CC = gcc

改为:
#CC = gcc-3.3
CC = gcc

然后,进入/usr/src/skyeye-v1目录运行make命令来编译skyeye
cd /usr/src/skyeye-v1
make

编译完后会在/usr/src/skyeye-v1/binary目录生成一个skyeye.exe文件和一些目标文件,skyeye.exe就是我们所要的硬件仿真程序。
把skyeye.exe拷贝到/usr/local/bin目录或者在/usr/local/bin目录建立一个名为skyeye的,指向skyeye.exe程序的链接。
建立skyeye.exe程序链接的命令如下:
ln -s /usr/src/skyeye-v1/binary/skyeye.exe/usr/local/bin/skyeye

说明:
如果解压后,真接运行make命令,则会出现找不到gcc-3.3的错误。
如果不改skyeye的Makefile文件,则可建立一个名为gcc-3.3指向gcc.exe程序的链接。
建立gcc.exe程序链接的命令如下:
ln -s /bin/gcc.exe/bin/gcc-3.3


三、安装RTEMS的交叉编译器
由于我要编译RTEMS(实时多处理器运行系统)所以要安装它的交叉编译器

1.将下列文件拷到cygwin的根目录下。即:“/”
rtems-4.6-arm-rtems-binutils-2.13.2.1-2.tar.bz2
rtems-4.6-arm-rtems-gcc-gcc3.2.3newlib1.11.0-4.tar.bz2
rtems-4.6-arm-rtems-gdb-5.2-1.tar.bz2
rtems-4.6-autoconf-rtems-2.59-0.tar.bz2
rtems-4.6-automake-rtems-1.7.2-2.tar.bz2

2.启动cygwin,使用tar命令解压文件.
cd /
tar xjf rtems-4.6-arm-rtems-binutils-2.13.2.1-2.tar.bz2
tar xjf rtems-4.6-arm-rtems-gcc-gcc3.2.3newlib1.11.0-4.tar.bz2
tar xjf rtems-4.6-arm-rtems-gdb-5.2-1.tar.bz2
tar xjf rtems-4.6-autoconf-rtems-2.59-0.tar.bz2
tar rtems-4.6-automake-rtems-1.7.2-2.tar.bz2

文件会解压到/opt/rtems-4.6目录下


3.在profile文件中加入RTEMS交叉编译器所在的路径
打开/etc/profile文件(即:C:\cygwin\etc\profile),在PATH中加入/opt/rtems-4.6/bin(用冒号“:”隔开)
如:
PATH=/opt/rtems-4.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$PATH

测试交叉编译器是否安装成功:$arm-rtems-gcc --version
如果成功则显示版本信息

四、编译RTEMS-4.6.6                                          ...........
下面以编译EP7312(内核ARM720t)为例来说明对rtems的编译.
将rtems-4.6.6.tar.bz2拷贝到/usr/src,然后解压
cd /usr/src
tar xjf rtems-4.6.6.tar.bz2

修改EP7312的BSP,操作如下:
(1)linkcmds
首先是修改/usr/src/rtems-4.6.6/c/src/lib/libbsp/arm/edb7312/startup 目录下面的linkcmds ,修改如下:
1.change linkcmds from 0x00000000 to 0xC0000000
MEMORY {
sdram : ORIGIN = 0xC0000000 , LENGTH = 16M
regs : ORIGIN = 0x80000000, LENGTH = 1M
}

/*Declare some sizes. */
_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0xC0000000 ;

(2) 修改 bsp_irq_init.c
修改/usr/src/rtems-4.6.6/c/src/lib/libbsp/arm/edb7312/irq 目录下面的 bsp_irq_init.c 因为 skyeye 仿真 EP7312 平台还不支持 EP7312_INTMR2 , EP7312_INTMR3
注释掉下面两行
/* *EP7312_INTMR2 = 0x0; */
/* *EP7312_INTMR3 = 0x0; */

(3) 编译 ep7312 的 BSP
cd /usr/src
mkdir rtems-build
cd rtems-build

../rtems-4.6.6/configure --target=arm-rtems \
--disable-posix --disable-networking --disable-cxx \
--prefix=/usr/src/rtems-build/edb7312
$make RTEMS_BSP="edb7312"

编译完后会在/usr/src/rtems-build/arm-rtems/edb7312目录的samples和test目录下成生编译好的,后缀为exe的二进制文件。

(4) 建立一个skyeye 的配置文件
在/usr/src/rtems-build/arm-rtems/edb7312目录的test目录建立一个skyeye的配置文件skyeye.conf
文件内容如下:
#skyeye config file sample

cpu: arm720t
mach: ep7312

mem_bank: map=I, type=RW, addr=0x80000000, size=0x00010000
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x1000000

log: logon=1, logfile=/tmp/sk1.log, start=2000000, end=3000000


(5) 运行RTEMS的hello程序
运行RTEMS的hello程序的命如下:
先进入/usr/src/rtems-build/arm-rtems/edb7312/test,然后再运行skyeye仿真命令,要使用-e参数,否则运行无法通过(即:“死机”)。
cd /usr/src/rtems-build/arm-rtems/edb7312/test
skyeye -e hello.exe-c skyeye.conf

(也可直接运行skyeye -e hello.exe命令,因为skyeye缺省要调用的配置文件是skyeye.conf)

运行结果如下:
$ skyeye -e hello.exe-c skyeye.conf
arch: arm
cpu info: armv4, arm720t, 41807200, ffffff00, 1
mach info: name ep7312, mach_init addr 0x4238ac
log_info: log is on.
log_info:log file is /tmp/sk1.log, fd is 0x100e0304
log_info: log start clock 2000000
log_info: log end clock 300000
SKYEYE: use arm7100 mmu ops
exec file "hello.exe"'s format is elf32-little.
not load section .base: addr = 0xc0000000size = 0x00000120 .
load section .init: addr = 0xc0000120size = 0x00000004.
load section .text: addr = 0xc0000124size = 0x00013444.
load section .fini: addr = 0xc0013568size = 0x00000004.
load section .data: addr = 0xc001356csize = 0x00000978.
load section .eh_frame: addr = 0x00000000size = 0x00000000.
load section .rodata: addr = 0xc0013ee4size = 0x00000e3f.
not load section .bss: addr = 0xc0014e00size = 0x00004e00 .
not load section .comment: addr = 0x00000000size = 0x00004150 .
not load section .debug_aranges: addr = 0x00000000size = 0x00001900 .
not load section .debug_pubnames: addr = 0x00000000size = 0x000045ec .
not load section .debug_info: addr = 0x00000000size = 0x00301eb5 .
not load section .debug_abbrev: addr = 0x00000000size = 0x0001b3ba .
not load section .debug_line: addr = 0x00000000size = 0x00036283 .
not load section .debug_frame: addr = 0x00000000size = 0x00004574 .
not load section .debug_str: addr = 0x00000000size = 0x0000ec4a .
not load section .debug_ranges: addr = 0x00000000size = 0x00000450 .
start addr is set to 0xc0000124 by exec file.


*** HELLO WORLD TEST ***
Hello World
*** END OF HELLO WORLD TEST ***


关于RTEMS的编译部分参考了Ray所写的“在Skyeye上运行RTMES”的文章,有关于RTEMS的专题文章请看Ray写的“RTEMS连载 (1-26) ”。
网址为:www.rtems.net


===============================================
另外说明:
   如果要想仿真LCD,则先要行启动Cyrwin的X server.启动X server的方法是在cygwin文本控制台下运行startx命令.
要想仿真LCD,先要保证GTK能正常运.测试GTK是否正常的方法是,启运X server后再运行gtk-demo.exe程序.如果gtk-demo.exe
程序运行正常,则说明GTK工作正常.对于LCD的仿真测试可以从http://gro.clinux.org/frs/?group_id=327下载testsuite2.1.tar.bz2,
这是skyeye的LINUX的演示程序.
使用testsuite2\ep7312\ep7312_with_framebuffer_touchscreen_minigui目下的演示程序。
skyeye的LCD仿真如下:
1.启动cygwin
2.启动X server
startx
3.运行skyeye的LCD仿真程序
skyeye -e vmlinux-8-332 -c skyeye.conf.withlcd

结果是弹出一个黑色的窗口,并显示一个小企鹅的图标。

==============================================

所需相关文件:
1.Cygwin                                     --------------108M
cygwin-1.5.19-for-skyeye.tar.bz2      

2.RTEMS-4.6.6                              --------------10.5M
rtems-4.6.6.tar.bz2

3.RTEMS-4.6.6交叉编译工具                  --------------16.7M
rtems-4.6-arm-rtems-binutils-2.13.2.1-2.tar.bz2
rtems-4.6-arm-rtems-gcc-gcc3.2.3newlib1.11.0-4.tar.bz2
rtems-4.6-arm-rtems-gdb-5.2-1.tar.bz2
rtems-4.6-autoconf-rtems-2.59-0.tar.bz2
rtems-4.6-automake-rtems-1.7.2-2.tar.bz2

4. Skyeye-1.2-RC7-3                        ----------------346K
skyeye-1.2-RC7-3.tar.bz2   

5.RTEMS 演示程序
rtems-demo.tar.bz2                         ----------------1.35M

6.使用说明                                 ----------------6.79K
RTEMS开发环境的建立----在cygwin下使用skyeye运行RTEMS .txt

7.cygwin安装信息读取程序,(读取setup.ini的信息),含VC源码------538 KB
CygwinSetupInfo.rar

8.cygwin 1.5.19的安装信息                     ---------------207 KB
SetupInI-1.5.19.xls

davylin 发表于 2006-6-19 08:46:26

将cygwin-1.5.19-for-skyeye.tar.bz2解压后其目录如下:

2006-06-1908:39    <DIR>          _update-info-dir
2006-06-1908:39    <DIR>          alternatives
2006-06-1908:39    <DIR>          ash
2006-06-1908:39    <DIR>          atk
2006-06-1908:39    <DIR>          autoconf
2006-06-1908:39    <DIR>          automake
2006-06-1908:39    <DIR>          base-files
2006-06-1908:39    <DIR>          base-passwd
2006-06-1908:39    <DIR>          bash
2006-06-1908:39    <DIR>          binutils
2006-06-1908:39    <DIR>          bzip2
2006-06-1908:39    <DIR>          cairo
2006-06-1908:39    <DIR>          ccache
2006-06-1908:39    <DIR>          coreutils
2006-06-1908:39    <DIR>          crypt
2006-06-1908:39    <DIR>          ctags
2006-06-1908:39    <DIR>          cygwin
2006-06-1908:39    <DIR>          d
2006-06-1908:39    <DIR>          diffstat
2006-06-1908:39    <DIR>          diffutils
2006-06-1908:39    <DIR>          editrights
2006-06-1908:39    <DIR>          expat
2006-06-1908:39    <DIR>          findutils
2006-06-1908:39    <DIR>          gawk
2006-06-1908:39    <DIR>          gcc
2006-06-1908:39    <DIR>          gdb
2006-06-1908:39    <DIR>          gdbm
2006-06-1908:39    <DIR>          gettext
2006-06-1908:39    <DIR>          glib
2006-06-1908:39    <DIR>          glib2
2006-06-1908:39    <DIR>          gmp
2006-06-1908:39    <DIR>          grep
2006-06-1908:39    <DIR>          groff
2006-06-1908:39    <DIR>          gtk+
2006-06-1908:39    <DIR>          gtk2-x11
2006-06-1908:39    <DIR>          gzip
2006-06-1908:39    <DIR>          indent
2006-06-1908:39    <DIR>          jpeg
2006-06-1908:39    <DIR>          less
2006-06-1908:39    <DIR>          libiconv
2006-06-1908:39    <DIR>          libpng
2006-06-1908:39    <DIR>          libungif
2006-06-1908:39    <DIR>          login
2006-06-1908:39    <DIR>          m4
2006-06-1908:39    <DIR>          make
2006-06-1908:39    <DIR>          man
2006-06-1908:39    <DIR>          mathomatic
2006-06-1908:39    <DIR>          mktemp
2006-06-1908:39    <DIR>          ncurses
2006-06-1908:39    <DIR>          opengl
2006-06-1908:39    <DIR>          pango
2006-06-1908:39    <DIR>          patch
2006-06-1908:39    <DIR>          pcre
2006-06-1908:39    <DIR>          perl
2006-06-1908:39    <DIR>          ping
2006-06-1908:39    <DIR>          pkg-config
2006-06-1908:39    <DIR>          readline
2006-06-1908:39    <DIR>          sed
2006-06-1908:39    <DIR>          tar
2006-06-1908:39    <DIR>          termcap
2006-06-1908:39    <DIR>          terminfo
2006-06-1908:39    <DIR>          tetex
2006-06-1908:39    <DIR>          texinfo
2006-06-1908:39    <DIR>          tiff
2006-06-1908:39    <DIR>          w32api
2006-06-1908:39    <DIR>          which
2006-06-1908:39    <DIR>          X11
2006-06-1908:39    <DIR>          zlib

davylin 发表于 2006-6-19 08:51:55

        CygwinSetupInfo程序的使用说明

1.目的
   为了方便大家使用Cygwin我还特地用VC写了这个程序,可以读取Cygwin的setup.ini文件中记录的所有要安装的软件包的信息。
如,模块名、当前版本、类别、需求类别、安装包的路径、简要说明。
  通过该程序可以明了地看出各个模块是做什么用的,以及它的依赖关系。这样就可以方便明白地有选择地下载所需要的程序了。
通过该程还可以生成一个文本的表格文件件SetupIni.txt,使用Excel将该文本文件打开,并选择TAB的为分隔符,这样在Excel中
对软件包进行分析就更方便了。
  目前我已经安装了cygwin-1.5.19和skyeye-1.2-RC7-3并通过了对TREMS和μClinux的仿真,效果很好,还可以实现对LCD的仿真。

2.使用方法
1)从ftp://cygwin.osuosl.org下载cygwin最新的setup.ini 将其和CygwinSetupInfo.exe放于同一目录
2)运行CygwinSetupInfo.exe,并按“Get Setup Info”按钮读取setup.ini中的所有软件包的信息
3)按“Save to Setupini.txt”按”将信息保存于Setupini.txt文件
4)使用Excel打开SetupIni.txt选择TAB的为分隔符,然后将件另存为Excel的工作簿文件(*.xls)

davylin 发表于 2006-6-19 09:04:45

大家好!
我想将以上的所有文件传到网上,供大家一起学习论讨。如何才能传上去啊?能否提供一个可上传的FTP网址呢?
我的EMail:[email protected]

davylin 发表于 2006-6-23 14:50:54

版主,你好!
我已经将整理后的Cygwin V1.5.19的软件包、RTEMS V4.6.6及相关文件传到你提供的FTP网址了.
希望帮忙把它们放到ORG上.
谢谢!

horserun_cai 发表于 2006-6-23 16:35:15

非常非常非常感谢davvlin~~~~~~~
页: [1]
查看完整版本: 在cygwin下使用skyeye运行RTEMS