打印

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

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文档

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

TOP

你好,我在编译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
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

gcc: Command not found

你的gcc(编译器)呢?

TOP

我是按照《使用SkyEye来模拟运行RT-Thread [win32]》帖子的方法编译的
用的是MSys,在win下编译的
而且编译0.2.1内核的时候没有问题呀,是不是编译0.2.2的时候还需要配置gcc呢?
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

需要特别注意config.mk文件

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

添加如下内容:

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

ifeq ($(BUILDTYPE), RAM)
TEXTBASE= 0x8000
else
TEXTBASE= 0x0
endif


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

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

TOP

我按照你说的方法改了,又出现了新错误,麻烦帮忙看看!编译结果如下:
$ 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
make[3]: Entering directory `/d/rtt-0.2.2/kernel/bsp/lumit4510'
Makefile:33: .depend: No such file or directory
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
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

编译终于过去了
我把0.2.1的lumit4510.lds文件拷贝到\rtt-0.2.2\kernel\bsp\lumit4510目录中,编译才过去,是什么原因呢?会不会带来什么新问题啊?lumit4510_ram.lds和lumit4510.lds有什么区别么
还有一个问题,怎么rtthread-lumit4510.elf不能运行,而rtthread-lumit4510.elf却能运行?
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

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

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

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

TOP

都ok了,感谢各位帮助
顺便问一下,export PATH=/arm-elf/bin:$PATH有什么用处?
对不起,上边打错了,想问的是rtthread-lumit4510.bin不能运行,而rtthread-lumit4510.elf却能运行?一般不都是运行.bin么
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

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

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

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

TOP

/kernel/testsuite下的文件不能像0.2.1那样直接编译么?
要是还想试验一下应该修改哪个文件呢
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

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

TOP

今天Skyeye终于在Linux(SUSE Linux10)下跑起来了,本来想试下rtt可是make不过去 ,有两处错误:-(
期待ing
二十来岁,一人来高;啥也不会,吃饱就睡!

TOP

RT-Thread 0.2.3版本已经发布,并且RT-Thread 0.3.0技术预览版本也快发布了,在官方网站上:www.rt-thread.org
自由与理想!

TOP


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

TOP