ARM开发 在skyeye上运行uClinux.docx

上传人:b****2 文档编号:2374197 上传时间:2023-05-03 格式:DOCX 页数:10 大小:53.18KB
下载 相关 举报
ARM开发 在skyeye上运行uClinux.docx_第1页
第1页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第2页
第2页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第3页
第3页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第4页
第4页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第5页
第5页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第6页
第6页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第7页
第7页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第8页
第8页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第9页
第9页 / 共10页
ARM开发 在skyeye上运行uClinux.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ARM开发 在skyeye上运行uClinux.docx

《ARM开发 在skyeye上运行uClinux.docx》由会员分享,可在线阅读,更多相关《ARM开发 在skyeye上运行uClinux.docx(10页珍藏版)》请在冰点文库上搜索。

ARM开发 在skyeye上运行uClinux.docx

ARM开发在skyeye上运行uClinux

在skyeye上运行uC/OS和uClinuxstepbystep

一、基本概念的介绍

首先介绍一下什么是uClinux,uc/OS和skyeye

uC/OS是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。

其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。

uClinux是一种优秀的嵌入式linux版本。

uClinux是micro-conrol-linux的缩写。

同标准linux相比,它集成了标准linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。

但是由于没有mmu(内存管理单元),其多任务的实现需要一定技巧。

SkyEye是一个开源软件(opensourcesoftware)项目,中文名字是“天目”。

SkyEye的目标是在通用的Linux和Windows平台实现一个仿真集成开发环境,模拟常见的嵌入式计算机系统(目前支持基于arm7tdmi的AT91开发板);可在SkyEye上运行uclinux以及uC/OS-II等多种嵌入式操作系统,并对它们进行源码级的分析和测试。

二、测试环境及其软件的下载

本文的所有操作都是在RedHat9.0上进行的。

1、uClinux-dist-20041215.tar.gz

(http:

//www.uclinux.org/)

2、arm-elf-tools-20030314.sh

(编译uClinux的交叉编译器http:

//www.uclinux.org/)

3、skyeye-0.9.8.tar.bz2(http:

//gro.clinux.org/frs/?

group_id=327&release_id=840)

4、ucosii4skyeye-1.9.3.tar.gz(http:

//gro.clinux.org/frs/?

group_id=327&release_id=716)

下载后的软件均放在/tmp/embed的目录下

三、安装软件及其使用

1、skyeye的安装

Code:

cd/tmp/embed

tar-jvxfskyeye-0.9.8.tar.bz2

cdskyeye

./configure--target=arm-elf--prefix=/usr/local/{--without-gtk-prefix--without-gtk-exec-prefix--disable-gtktest}

如果机器上没有安装gtk的开发包,那么就需要加入大括弧之间的选项

Code:

make;makeinstall

2、arm-elf-tools的安装

所有的交叉编译工具都在arm-elf-tools-20030314.sh文件中,执行下面的命令后将安装在/usr/local/bin目录下

Code:

./arm-elf-tools-20030314.sh

3、ucosii4skyeye-1.9.3.tar.gz

Code:

cd/tmp/embed

exportCROSS_COMPILE="/usr/local/bin/arm-elf-"

或者把以上的命令加入~/.bash_profile文件里

然后运行suyour_login_name--login

Code:

tar-zvxfucosii4skyeye-1.9.3.tar.gz

在没有编译之前先修改一下lib/skyeye_printf.c文件,不然在编译samples时会出现如下错误:

Quote:

skyeye_printf.o:

Infunction`getnum':

/root/src/skyeye/ucosii4skyeye/samples/ucos_test/../../lib/skyeye_printf.c:

118:

undefinedreferenceto`isdigit'

skyeye_printf.o:

Infunction`skyeye_printf':

/root/src/skyeye/ucosii4skyeye/samples/ucos_test/../../lib/skyeye_printf.c:

164:

undefinedreferenceto`isdigit'make:

***[ucos_test.elf]Error1

(不知道在其他的系统中有没有这个Bug,我在RH9上测试时出现了这个问题),把以下代码加入skyeye_printf.c文件中

Code:

staticintisdigit(charch)

{

 if(ch>='0'&&ch<='9')

  return1;

 return0;

}

然后把该文件中的"#include"这一行注释掉。

保存退出进入ucosii4skyeye/samples/ucos_test目录

Code:

cducosii4skyeye/samples/ucos_test

makecleanall

makeconfig

makedep

make

maketest

进入(SkyEye)后,运行

Code:

targetsim

load

r

如果读者看到了如下的界面:

Quote:

skyeyeucos_test.elf

***********************************************************************

****                               ****

**** SkyEye SimulatorVer0.9.8with GDB/Insight5.3Interface****

****                               ****

***********************************************************************

GNUgdb5.3

Copyright2002FreeSoftwareFoundation,Inc.

GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare

welcometochangeitand/ordistributecopiesofitundercertainconditions.

Type"showcopying"toseetheconditions.

ThereisabsolutelynowarrantyforGDB. Type"showwarranty"fordetails.

ThisSkyEyewasconfiguredas"--host=i686-pc-linux-gnu--target=arm-elf"...

(SkyEye)targetsim

cpuinfo:

armv3,arm7tdmi,41007700,fff8ff00,0

machinfo:

nameat91,mach_initaddr0x8161574

SKYEYE:

usearm7100mmuops

Connectedtothesimulator.

(SkyEye)load

Loadingsection.text,size0x7660vma0x1000000

Loadingsection.data,size0x205cvma0x1008000

Startaddress0x1000000

Transferrate:

308704bitsin<1sec.

(SkyEye)r

Startingprogram:

/root/src/skyeye/ucosii4skyeye/samples/ucos_test/ucos_test.elf

Task1running...Pleaseinputastring:

>helloworld...~!

;)

Task2running...Yourinputstring:

"helloworld...~!

;)"

pParamis16814060Task1running...Pleaseinputastring:

>

恭喜你,你成功了,剩下的问题就是用skyeye深入的去熟悉ucos,理解它的内部结构并写出自己程序。

除了这一个ucos_test以外,在samples目录下还有其他的ucos的测试目录,其中lwip_on_ucos_test时作者把lwip移植到了ucos里面(ucos本身并不带协议栈),有兴趣的朋友可以试试,编译它的命令与编译ucos_test的一样。

4、uclinux的安装和使用

1>、安装

Code:

cd/tmp/embed

tar-zvxfuClinux-dist-20041215.tar.gz

cduClinux-dist

makexconfig

在"TargetPlatformSelection"中选择"GDB/skyeye",内核选择linux-2.4.x

如下图1所示

[图1、uClinuxConfig选项]

Code:

makedep

make

在当前目录下建立仿真AT91的skyeye配置文件skyeye.conf,内容如下:

Quote:

  cpu:

arm7tdmi

  mach:

at91

  mem_bank:

map=M,type=RW,addr=0x00000000,size=0x00004000

  mem_bank:

map=M,type=RW,addr=0x01000000,size=0x00400000

  mem_bank:

map=M,type=R,addr=0x01400000,size=0x00400000,file=images/romfs.img

  mem_bank:

map=M,type=RW,addr=0x02000000,size=0x00400000

  mem_bank:

map=M,type=RW,addr=0x02400000,size=0x00008000

  mem_bank:

map=M,type=RW,addr=0x04000000,size=0x00400000

  mem_bank:

map=I,type=RW,addr=0xf0000000,size=0x10000000

  #setnicinfostate=on/offmac=xx:

xx:

xx:

xx:

xx:

xxethmod=tuntap/vnethostip=dd.dd.dd.dd

  net:

state=on,mac=0:

4:

3:

2:

1:

f,ethmod=tun,hostip=10.0.0.1

2>、使用

Code:

skyeyelinux-2.4.x/linux

targetsim

load

r

结果如下所示:

Quote:

***********************************************************************

****                               ****

**** SkyEye SimulatorVer0.9.8with GDB/Insight5.3Interface****

****                               ****

***********************************************************************

GNUgdb5.3

Copyright2002FreeSoftwareFoundation,Inc.

GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare

welcometochangeitand/ordistributecopiesofitundercertainconditions.

Type"showcopying"toseetheconditions.

ThereisabsolutelynowarrantyforGDB. Type"showwarranty"fordetails.

ThisSkyEyewasconfiguredas"--host=i686-pc-linux-gnu--target=arm-elf"...

(SkyEye)targetsim

cpuinfo:

armv3,arm7tdmi,41007700,fff8ff00,0

machinfo:

nameat91,mach_initaddr0x8161574

nic[0]info:

state=1,ethmodnum=1,macaddr=0:

5:

3:

2:

1:

f,hostip=192.168.2.1

nic_init_begin

tapif_initbegin

tapif_init:

fd6

tapif_init:

system("ifconfigtap0inet192.168.2.1");

tapif_initend

nic_init_end

SKYEYE:

usearm7100mmuops

LoadedROM ./romfs.img

Connectedtothesimulator.

(SkyEye)load

Loadingsection.init,size0xa000vma0x1000000

Loadingsection.text,size0xe0e90vma0x100a000

Loadingsection.data,size0xa594vma0x10ec000

Startaddress0x1000000

Transferrate:

4018320bits/sec.

(SkyEye)r

Startingprogram:

/root/src/skyeye/uclinux/linux

Linuxversion2.4.27-uc1(root@TEST)(gccversion2.95.320010315(release)(Cold

Firepatches-20010318fromXIPandshared

libpatchesfrom#2FriAug515:

13:

59CST2005

Processor:

AtmelAT91M40xxxrevision0

.......

.......

......

Shellinvokedtorunfile:

/etc/rc

Command:

hostnameGDB-ARMulator

Command:

/bin/expand/etc/ramfs.img/dev/ram0

Command:

mount-tprocproc/proc

mount:

/etc/mtab:

Read-onlyfilesystem

Command:

mount-text2/dev/ram0/var

mount:

/etc/mtab:

Read-onlyfilesystem

Command:

mkdir/var/tmp

Command:

mkdir/var/log

Command:

mkdir/var/run

Command:

mkdir/var/lock

Command:

mkdir/var/empty

Command:

cat/etc/motd

Welcometo

     _____ _

    / __|||_|

  _ _|| ||_____ _ _ _ _

 ||||| |||| _\||||\\//

 ||_|||__||||||||_||/  \

 | ___\____|_||_|_||_|\____|\_/\_/

 ||

 |_|

GDB/ARMulatorsupportby

Forfurtherinformationcheck:

http:

//www.uclinux.org/

Command:

/bin/ifconfigeth0up10.0.0.2

ExecutionFinished,Exiting

Sashcommandshell(version1.1.1)

/>ps

 PIDPORTSTAT SIZESHARED%CPUCOMMAND

  1   S  150K  0K 5.0/sbin/init

  2   S   0K  0K 0.0keventd

  3   S   0K  0K 0.0ksoftirqd_CPU0

  4   S   0K  0K 0.0kswapd

  5   S   0K  0K 0.0bdflush

  6   S   0K  0K 0.0kupdated

 12 S0R   44K  0K 6.0/bin/sh

 13   S   22K  0K 3.0/bin/inetd

/>

3>、在uclinux里面添加自己的应用程序

先写一个helloworld~!

的程序

Code:

#include

intmain()

{

 printf("welcometouclinuxworld~!

\n");

}

编译hello.c,

Code:

arm-elf-gcc-Wl,elf2flthello.c-ohello

把hello拷贝到romfs/bin目录下

接着运行

Code:

makeromfs

makeimage

再按2的方法运行一次

然后执行hello,

看到"welcometouclinuxworld~!

"了吧...

往uclinux里面加入程序还有另外一种方发,不过那种方法很繁琐,这里就不介绍了,

有兴趣的朋友参考uclinux-dist/Documentation/Adding-User-Apps-HOWTO文件

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2