第一次编译RT出现头文件找不到问题,但头文件明明在那里的。。。
原码: RT-Thread 3.0.1
方式:Linux gcc 编译
步骤:
获取RT-Thread 3.0.1后进入到bsp/mini2440下
编辑 rtconfig.py,指定使用gcc:
```CROSS_TOOL = ‘gcc’
if CROSS_TOOL == ‘gcc’:
arm-none-eabi-gcc -o key.o -c -mcpu=arm920t -DRTUSING_MINILIBC -nostdinc -nostdlib -fno-builtin -O0 -gdwarf-2 -D FINSH_USING_SYMTAB -DFINSH_USING_DESCRIPTION -I. -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/include -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/libcpu/arm/s3c24x0_ -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/libc/minilibc -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/finsh -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/filesystem/dfs -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/filesystem/dfs/include -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src/include -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src/include/ipv4 -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src/arch/include -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src/include/netif -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/net/lwip/src/netif/ppp -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/rtgui/include -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/rgtui/common -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/rtgui/server -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/rtgui/widgets -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/filesystem/dfs -I/home/zwang/work_dir/rtos_stm32/RT-Thread-0.3.1/filesystem/dfs/include key.c
key.c221: fatal error: S3C24x0.h: No such file or directory
$ find ../../* -iname "S3C24x0.h"
../../libcpu/arm/s3c24x0/s3c24x0.h
补充俩问题:
完全新手,请多包含。。。
那个是文件大小写的问题,把S3C2440.h更改为小写名称即可。 [s:166] 没想到0.3.1中居然还存在这个问题
编译完成后会是elf文件,后缀名被更改为.axf了,应该也会有bin文件产生,在相应的bsp目录下。
汗,咋就没看出是大小写的问题。。。
编译后有2.1M,是不是大了些!
请问能跑的最小的rt系统应该必须包括哪些? 比如上面的build目录下,那些不是必须的呢?
另,看到其它的帖子介绍模拟运行的时候,需要单独下载qemu-system-arm进行编译;
bsp目录下的那个qemu是什么目录? 可以用来模拟吗?
有没有qemu for stm3210的下载包呢 ?
汗,咋就没看出是大小写的问题。。。
编译后有2.1M,是不是大了些!
请问能跑的最小的rt系统应该必须包括哪些? 比如上面的build目录下,那些不是必须的呢?
另,看到其它的帖子介绍模拟运行的时候,需要单独下载qemu-system-arm进行编译;
bsp目录下的那个qemu是什么目录? 可以用来模拟吗?
有没有qemu for stm3210的下载包呢 ?
-最小系统只需要src, libcpu, bsp就行了,仅运行RT-Thread内核,编译后大小在几K左右。
-bsp目录下的qemu是X86处理器的移植。可以在qemu for x86上运行。
-没有qemu for stm3210
你应该看那个bin文件的尺寸,axf文件是包括了调试信息的。
通过qemu模拟,好像指定kernel为.bin的时候不工作,所以最后真正加载到板子的应该还是.axf吧,那么编译最后一步生成的.bin文件到底有什么用?
通过参照另一篇帖子已经运行起来了RTOS,但有些参数不是太明白 (原文命令如下):
-M —- machine name, 字符串”mini2440”是不是应该跟bsp目录下的名称一致? 后面的 “$“ 是什么意思? (不要”$“也能正常执行起来 )
-sd —- 参考帖子里面好像存在文件 tools/SDCARD.zip ,我这边没有,所以没要这个参数,但也能执行,就是出现了一堆重复的错误log:
这些log应该是由于没有指定sd输出的吧? SDCARD.zip是个什么包, 文件系统吗 ? 该如何生成 ?
-serial file:virtualkbd 是什么意思?前面不是已经重定向一个串口设备了吗? (移除该行好像也能正常启动的)
关于文件系统的疑问:
1) 通过原码目录看到RT当前可支持elmfat文件系统(yaffs2目录是空的,v0.3.1),该文件系统最后只能跑在SD卡或是SPI flash上是吗(手册上的图示) ?
2) 由此来看我上面模拟运行仅是kernel,并没有文件系统对吧 ?
3) 那么那个图形demo程序属于运行在内核空间还是用户空间呢 ? (或者是跟“finsh”一样都跟kernel和filesystem属于并列级别的 ?)
4) demo启动后看到finsh>>了,那么假如还有文件系统,文件系统里面应该不会再有shell程序了吧 ?
问题比较多,请多指点,多谢。
QEMU相关的还是等shaolin来解释吧。
其他的,
1) 通过原码目录看到RT当前可支持elmfat文件系统(yaffs2目录是空的,v0.3.1),该文件系统最后只能跑在SD卡或是SPI flash上是吗(手册上的图示) ?
yaffs2文件系统目前还未支持,在做uffs的移植,它能够支持nand flash。2) 由此来看我上面模拟运行仅是kernel,并没有文件系统对吧 ?
文件系统与RT-Thread并不耦合,不需要文件系统,RT-Thread/GUI也能够运行起来。3) 那么那个图形demo程序属于运行在内核空间还是用户空间呢 ? (或者是跟“finsh”一样都跟kernel和filesystem属于并列级别的 ?)
RT-Thread没有用户空间,只有内核。4) demo启动后看到finsh>>了,那么假如还有文件系统,文件系统里面应该不会再有shell程序了吧 ?
没有shell程序,finsh shell是和内核集成在一起的。
通过qemu模拟,好像指定kernel为.bin的时候不工作,所以最后真正加载到板子的应该还是.axf吧,那么编译最后一步生成的.bin文件到底有什么用?
[.bin文件可以直接下载到mini2440开发板上运行]-M —- machine name, 字符串”mini2440”是不是应该跟bsp目录下的名称一致? 后面的 “$“ 是什么意思? (不要”$“也能正常执行起来 )
[该版本的QEMU是专门for mini2440开发板的,所以M—- machine name 只能是mini2440,其他bsp目录是不支持的.]
-sd —- 参考帖子里面好像存在文件 tools/SDCARD.zip ,我这边没有,所以没要这个参数,但也能执行,就是出现了一堆重复的错误log:
代码: 全选
…
CMD55:SDICSTA=0xc37, SDIRSP0=0x0
CMD55 error
…
这些log应该是由于没有指定sd输出的吧? SDCARD.zip是个什么包, 文件系统吗 ? 该如何生成 ?
[SDCARD.zip文件在RT-Thread源代码SVN中能够下载到,将它解压出来就行了.它就是一个模拟SD卡.由elmfat文件系统管理.]
-serial file:virtualkbd 是什么意思?前面不是已经重定向一个串口设备了吗? (移除该行好像也能正常启动的)
[主要是为了在QEMU中模拟按键操作,mini2440开发板本身不支持键盘,修改了该QEMU版本的代码,将第二个串口重定向到键盘了.这样来使该QEMU版本支持键盘]
-serial file:virtualkbd 是什么意思?前面不是已经重定向一个串口设备了吗? (移除该行好像也能正常启动的)
[ 主要是为了在QEMU中模拟按键操作,mini2440开发板本身不支持键盘,修改了该QEMU版本的代码,将第二个串口重定向到键盘了.这样来使该QEMU版本支持键盘 ]
指定了SDCARD之后启动Log就干净多了,不过加上“-serial file:virtualkbd ”还是无法响应键盘输入,正常吗?
另:
read_index, write_index 分别指什么?(一直也没构建出一个环形的示意图)
另:
- 对于手册里讲的环形buffer不是很明白,可不可以再解释一下,比如下面这段:
read_index, write_index 分别指什么?(一直也没构建出一个环形的示意图)
- 看到很多示例程序里面都有“#ifdef RT_USING_TC”这一段,testcase, 仅仅属于测试用的是吧?