RTEMS 的 AT91SAM9260 移植(1):开题

09年我接触到 RTEMS,然后开始学习RTEMS,自己先后将 RTEMS移植到 AT91SAM9260的单板上,然后又移植到 Marvell 的 88F6281 的单板上。通过这两个移植,大量的阅读RTEMS 的手册,算是入了点门。

 

于是乎,把 AT91SAM9260 的RTEMS 4.9.4  BSP 撰写的整个过程与调试过程与大家分享。

 

开发 BSP的过程大致如下:

1.选择BSP模板,根据操作系统提供的BSP模板,选择与应用硬件环境最为相似的参考设计,针对具体的目标机对参考BSP进行必要的修改,形成自己的BSP;

2.建立新BSP目录。将模板BSP整个目录拷贝到适当的目录下(如 libbsp/arm/),重命名为at9260;
3.建立BSP配置文件。拷贝任意一个BSP.cfg,重命名为at9260.cfg,修改相关的体系结构定义;
4.修改启动代码、中断代码、调试串口的驱动、时钟系统的驱动、基本的CPU初始化、设置中断堆栈等;
5.修改autotools的宏;
6.修改链接脚本;
7.配置编译安装RTEMS的库;
8.针对应用裁剪RTEMS;
9.编译调试和测试。

 

开发AT91SAM9260的BSP

 

1.AT91SAM9260属于arm926ej-s,csb337是目前rtems支持arm版本最高的bsp,为arm920t,故选择csb337为模板修改
2.将c/src/lib/libbsp/arm/csb337复制为 c/src/lib/libbsp/arm/at9260
3.将c/src/lib/libcpu/arm/at91rm9200复制为c/src/lib/libcpu/arm/at91sam9260

 

注意:bsp的命名,由于bsp的名称需要出现在autotools宏中,所以,名称不能以数字开头,要符合autotools名称的命名规范。

 

将make/custom/csb337.cfg 复制为make/custom/at9260.cfg,文件内容修改如下:

# # Config file for ZWJ4 - at91sam9260 # # $Id: at9260.cfg,v 1.0 2009/12/1 Bacon Xu$ # include $(RTEMS_ROOT)/make/custom/default.cfg RTEMS_CPU=arm RTEMS_CPU_MODEL=at91sam9260 # This is the actual bsp directory used during the build process. RTEMS_BSP_FAMILY=at9260 # This contains the compiler options necessary to select the CPU model # and (hopefully) optimize for it. CPU_CFLAGS = -mcpu=arm920 -mstructure-size-boundary=8 # optimize flag: typically -O2 CFLAGS_OPTIMIZE_V = -O0 -g

 

这里注意:rtems 4.9 使用的gcc  版本是 4.3.2,对于4.3.2支持的CPU类型,可以查看《GNU gcc manual 4.3.2》的相关章节。

虽然gcc支持at91sam9260的arm926ej-s,可以这么写 -mcpu=arm926ej-s。但我在编译中发现:rtems4.9.1的版本 -mcpu=arm926ej-s 没有问题,但是 rtems4.9.4中就有编译问题,猜测可能是自动脚本没有生成相应的配置宏造成的问题。

所以,rtems4.9.4版本中我使用了 -mcpu=arm920 。

 

 

为了调试方便,尽量使用 -O0 的优化选项;

如果为了速度和性能,可选用 -O2 的选项;

如果为了生成执行体的体积,可以选择-Os 的选项。

 

(未完待续。。。下次讲修改相关代码。。。)

 

 

 

 

你可能感兴趣的:(优化,gcc,脚本,File,Build,compiler)