中国Linux公社论坛's Archiver

ffxz 发表于 2006-10-10 16:31

RT-Thread单内核v0.2.2正式版发布

RT-Thread v0.2.2单内核正式版发布,这个版本主要是增加更多的BSP移植:

- s3c44b0的移植 [Xu Xinming]
- AT91SAM7S64的移植 [Bernard Xiong,感谢icdev.com.cn提供开发板]

以下的移植仍然是试验性质的
- NDS掌上游戏机的移植[vai]
- ia32的移植[Qiu Yi],在QEMU虚拟机中测试完成

以下是各个移植的一些说明:

AT91SAM7S64: (系统资源:16k RAM,64k ROM Flash)
为配合小内存情况,RT-Thread 0.2.2支持任务最大优先级为32的情况,以保证内存占用更小(所有二进制代码小于10k)
在AT91SAM7S64移植中,串口并没打开,finsh也没启用。
在bsp/icdevs64/build目录下附带uVision的工程文件,需要机器上安装有keil的gcc编译器

ia32:
支持i386-elf-gcc for windows的编译,linux下的还没试,应该也可以顺利编译。
编译完成后在bsp/qemu目录下生成rtthread-qemu.elf
把这个elf文件配置到grub的配置文件中,具体的grub配置请参看grub文档

下载地址:(注:国外地址)
[url]http://openlab.rt-thread.com/rtt-download/rtt-0.2.2.tar.bz2[/url]

zjz_lgd 发表于 2006-12-6 09:52

你好,我在编译0.2.2的时候出现了如下错误,而在编译0.2.1的时候都已经顺利通过了,不明白是哪里出了问题。

$ make
make -C kernel
make[1]: Entering directory `/d/rtt-0.2.2/kernel'
make -C src
make[2]: Entering directory `/d/rtt-0.2.2/kernel/src'
gcc -c -I../include -I../bsp/ -Wall -nostdinc -fno-builtin -g -o kservice.o kservice.c
make[2]: gcc: Command not found
make[2]: *** [kservice.o] Error 127
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/d/rtt-0.2.2/kernel'
make: *** [all] Error 2

ffxz 发表于 2006-12-6 15:47

gcc: Command not found

你的gcc(编译器)呢?

zjz_lgd 发表于 2006-12-6 21:00

我是按照《使用SkyEye来模拟运行RT-Thread [win32]》帖子的方法编译的
用的是MSys,在win下编译的
而且编译0.2.1内核的时候没有问题呀,是不是编译0.2.2的时候还需要配置gcc呢?

samguns 发表于 2006-12-6 22:17

需要特别注意config.mk文件

在kernel目录下的config.mk文件需要作适当的自行修改(因为V0.2.2比前一版本支持的平台更多了),修改如下:

添加如下内容:

[b]ARCH=arm
CROSS_COMPILE=arm-elf-
CPU=s3c4510
BOARD=lumit4510
BUILDTYPE=RAM

ifeq ($(BUILDTYPE), RAM)
TEXTBASE= 0x8000
else
TEXTBASE= 0x0
endif[/b]

CC                = $(CROSS_COMPILE)gcc
CXX                = $(CROSS_COMPILE)g++
LD                = $(CROSS_COMPILE)ld
AR                = $(CROSS_COMPILE)ar
AS                = $(CROSS_COMPILE)as
RANLIB        = $(CROSS_COMPILE)ranlib

如果还是有问题,再来这里详细说明一下就行了,呵呵 :)

zjz_lgd 发表于 2006-12-7 10:23

:?: 我按照你说的方法改了,又出现了新错误,麻烦帮忙看看!编译结果如下:
$ make
make -C kernel
make[1]: Entering directory `/d/rtt-0.2.2/kernel'
make -C src
make[2]: Entering directory `/d/rtt-0.2.2/kernel/src'
arm-elf-ar r ../lib/libkernel_arm.a kservice.o clock.o heap.o object.o ipc.o tim                                             l.o
arm-elf-ranlib ../lib/libkernel_arm.a
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/src'
make -C libcpu
make[2]: Entering directory `/d/rtt-0.2.2/kernel/libcpu'
make -C arm
make[3]: Entering directory `/d/rtt-0.2.2/kernel/libcpu/arm'
make -C common
make[4]: Entering directory `/d/rtt-0.2.2/kernel/libcpu/arm/common'
Makefile:17: .depend: No such file or directory
arm-elf-gcc -I../../../include -I../../../bsp/lumit4510 -Wall -nostdinc -fno-bui
make[4]: Leaving directory `/d/rtt-0.2.2/kernel/libcpu/arm/common'
make[4]: Entering directory `/d/rtt-0.2.2/kernel/libcpu/arm/common'
arm-elf-gcc -c -I../../../include -I../../../bsp/lumit4510 -Wall -nostdinc -fno-
arm-elf-gcc -c -x assembler-with-cpp -DTEXT_BASE=0x8000 -o divsi3.o divsi3.S
make[4]: Leaving directory `/d/rtt-0.2.2/kernel/libcpu/arm/common'
arm-elf-ar r ../../lib/libcpu_s3c4510.a s3c4510/context.o s3c4510/cpu.o s3c4510/                                             s3c4510/trap.o common/divsi3.o common/div0.o
arm-elf-ranlib ../../lib/libcpu_s3c4510.a
make -C s3c4510
make[4]: Entering directory `/d/rtt-0.2.2/kernel/libcpu/arm/s3c4510'
arm-elf-gcc -x assembler-with-cpp -DTEXT_BASE=0x8000 -DTEXT_BASE=0x8000 -c start
make[4]: Leaving directory `/d/rtt-0.2.2/kernel/libcpu/arm/s3c4510'
make[3]: Leaving directory `/d/rtt-0.2.2/kernel/libcpu/arm'
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/libcpu'
make -C finsh
make[2]: Entering directory `/d/rtt-0.2.2/kernel/finsh'
Makefile:26: .depend: No such file or directory
arm-elf-gcc -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -I.                                              _node.c finsh_token.c finsh_heap.c finsh_ops.c finsh_var.c finsh_compiler.c fins
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/finsh'
make[2]: Entering directory `/d/rtt-0.2.2/kernel/finsh'
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-gcc -c -I../include -I../bsp/lumit4510 -Wall -nostdinc -fno-builtin -g -
arm-elf-ar -r ../lib/libfinsh_arm.a cmd.o shell.o symbol.o finsh_error.o finsh_n                                             finsh_var.o finsh_compiler.o finsh_init.o finsh_parser.o finsh_vm.o
arm-elf-ranlib ../lib/libfinsh_arm.a
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/finsh'
make -C bsp
make[2]: Entering directory `/d/rtt-0.2.2/kernel/bsp'
make -C lumit4510
[color=red]make[3]: Entering directory `/d/rtt-0.2.2/kernel/bsp/lumit4510'
Makefile:33: .depend: No such file or directory[/color]arm-elf-gcc -I../../include -I../../bsp/lumit4510 -Wall -nostdinc -fno-builtin -                                              -M board.c startup.c > .depend
make[3]: Leaving directory `/d/rtt-0.2.2/kernel/bsp/lumit4510'
make[3]: Entering directory `/d/rtt-0.2.2/kernel/bsp/lumit4510'
arm-elf-gcc -c -I../../include -I../../bsp/lumit4510 -Wall -nostdinc -fno-builti                                             NSH -o board.o board.c
arm-elf-gcc -c -I../../include -I../../bsp/lumit4510 -Wall -nostdinc -fno-builti                                             NSH -o startup.o startup.c
arm-elf-gcc -c -I../../include -I../../bsp/lumit4510 -Wall -nostdinc -fno-builti                                             NSH -o application.o application.c
arm-elf-ld -static -nostdlib -T lumit4510.lds -Ttext 0x8000 ../../lib/start_s3c4                                             ib/libfinsh_arm.a ../../lib/libkernel_arm.a ../../lib/libcpu_s3c4510.a -o rtthre
C:\msys\1.0\arm-elf\bin\arm-elf-ld.exe: cannot open linker script file lumit4510
make[3]: *** [rtthread-lumit4510] Error 1
make[3]: Leaving directory `/d/rtt-0.2.2/kernel/bsp/lumit4510'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/d/rtt-0.2.2/kernel/bsp'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/d/rtt-0.2.2/kernel'
make: *** [all] Error 2

zjz_lgd 发表于 2006-12-7 10:33

编译终于过去了 :-D
我把0.2.1的[b]lumit4510.lds[/b]文件拷贝到\rtt-0.2.2\kernel\bsp\lumit4510目录中,编译才过去,是什么原因呢?会不会带来什么新问题啊?[b][color=red]lumit4510_ram.lds和lumit4510.lds有什么区别么[/color][/b] :!:
还有一个问题,怎么[color=red]rtthread-lumit4510.elf不能运行[/color],而rtthread-lumit4510.elf却能运行?

ffxz 发表于 2006-12-7 11:58

这个应该是Makefile的问题,
在/bsp/lumit4510/Makefile文件中,把如下去掉:
TEXTBASE= 0x8000
LDSCRIPT= lumit4510.lds

这样应该可以顺利编译通过,谢谢指出问题。

然后你再试试rtthread-lumit4510.elf能否模拟运行。

zjz_lgd 发表于 2006-12-7 19:04

:wink: 都ok了,感谢各位帮助
顺便问一下,export PATH=/arm-elf/bin:$PATH有什么用处?
对不起,上边打错了,想问的是rtthread-lumit4510.[color=red]bin[/color]不能运行,而rtthread-lumit4510.[color=red]elf[/color]却能运行?一般不都是运行.bin么

ffxz 发表于 2006-12-8 15:52

export PATH=/arm-elf/bin:$PATH

用于设置arm-elf-gcc的执行路径,否则make时找不到gcc

.bin是内存映像文件,可以直接配置在skyeye的配置文件中,skyeye -e指定的是elf格式文件,所以需要使用.elf。

zjz_lgd 发表于 2006-12-8 18:43

/kernel/testsuite下的文件不能像0.2.1那样直接编译么?
要是还想试验一下应该修改哪个文件呢

ffxz 发表于 2006-12-11 10:42

testsuite下的测试在新版本中还没怎么测试:-P

zjz_lgd 发表于 2006-12-12 18:05

今天Skyeye终于在Linux(SUSE Linux10)下跑起来了,本来想试下rtt可是make不过去 ,有两处错误:-(
期待ing :-D

ffxz 发表于 2008-10-30 07:37

RT-Thread 0.2.3版本已经发布,并且RT-Thread 0.3.0技术预览版本也快发布了,在官方网站上:[url]www.rt-thread.org[/url]

江涛的马甲 发表于 2008-10-30 11:38

:shock:
2 年…… 0.0.1 的升级……
偷偷问问 x86 的支持如何?

ffxz 发表于 2008-10-31 07:24

呵呵,2年0.0.1的升级也很正常啊

x86的支持基本原地踏步,因为x86并不太适合于做嵌入式系统,功耗过大了

jiangtao9999 发表于 2008-10-31 19:21

x86 的软件兼容问题却是最好解决的。
现在 VIA 的 nano ,Intel 的 atom ,AMD 的 geode 都是针对低功耗准备的。我觉得应该支持一下了吧~
:?

ffxz 发表于 2008-10-31 22:08

[quote]原帖由 [i]jiangtao9999[/i] 于 2008-10-31 19:21 发表 [url=http://www.linuxfans.org/bbs/redirect.php?goto=findpost&pid=4873050&ptid=168144][img]http://www.linuxfans.org/bbs/images/common/back.gif[/img][/url]
x86 的软件兼容问题却是最好解决的。
现在 VIA 的 nano ,Intel 的 atom ,AMD 的 geode 都是针对低功耗准备的。我觉得应该支持一下了吧~
:? [/quote]

x86的软件兼容问题容易解决?依赖于wine?

目前这些x86芯片确实功耗要低一些,但运用到嵌入式系统中还需要一段时间。RT-Thread最大的问题不是支不支持x86,而是内部没有虚存管理,所以即使完善的支持了x86,也不能做到用户程序和内核程序的分离及内存保护。既然如此,那么x86的支持还不如先彻底放弃掉。

ffxz 发表于 2008-10-31 22:11

当然,对于想在PC上试试/开发RT-Thread是没什么问题的,用我们修改过的QEMU/s3c2410虚拟机能够虚拟运行几乎RT-Thread的所有功能(shell,网络,文件系统,GUI),而且速度也比较快。

[[i] 本帖最后由 ffxz 于 2008-10-31 22:12 编辑 [/i]]

jiangtao9999 发表于 2008-11-19 13:16

针对性性的系统,我觉得内存管理不是大问题。兼容性相对更需要吧……

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.