compile arm-rtems-gcc and rtems's bsp on 2410

6 篇文章 0 订阅

 

rtems 在arm上开发的工具的制作过程,记录下来,以供其他人可以快速学习使用,也好自己哪天忘了,可以快速想起来。
那从下面几点说起:
1、源码的下载的存放。
    源码下载我是采用下载源码包,然后再编译的。具体从 http://www.rtems.org/ftp/pub/rtems/SOURCES/4.9/ 下载这些软件包。
    当然你也可以通过rpm包的方式安装,这个没有试过,我选择自己编译制作工具链。
    源码存放路径:这个根据自己需要而定,其实放哪都行,但对文件管理而言,最好放在同一个目录下。如$HOME/arm-rtems下面。
2、然后解压和打补丁
    解压就是  tar jxvf binutils-2.19.tar.bz2
            tar jxvf gcc-core-4.3.2.tar.bz2
        tar -xvf gcc-g++-4.3.2.tar.bz2
        tar xvf newlib-1.16.0.tar.gz

    打补丁:这个很重要。
    给各个源代码打补丁,这里以gcc为例:
    $ cd gcc-4.3.2
    $ cat ../gcc-core-4.3.2-rtems4.9-20090825.diff | patch -p1
    这样就把补丁打好了。
3、配置和编译binutils  

  下面就可以开始编译了,首先编译binutils,先配置binutils,进入build-all目录

$  ../binutils-2.19/configure --target=arm-rtems /
  --prefix=/home/fbi/arm-rtems/toolchains

如果要为arm编译工具链,需要使用:

$  ../binutils-2.15/configure --target=arm-rtems /
--prefix=/home/fbi/arm-rtems/toolchains

注意,无论是binutils还是gcc和gdb都是通过配置target来配置产生的交叉编译器类型。

然后编译安装:

$make
$make info
$make install

   接下来,编译好的文件就会出现在/home/fbi/arm-rtems/toolchains/bin目录下面,为了使gcc能使用这些文件,必须输出路径名称:

export PATH=$HOME/arm-rtems/toolchains/bin:${PATH}

注意,这里最好使用绝对路径 也可以将其写入shell的启动配置文件:

PATH=/home/fbi/arm-rtems/toolchains/bin:$PATH
export PATH

4、编译GCC
首先建立newlib-1.16.0的符号链接
$ ln -s ../newlib-1.16.0/newlib
注意,这一部非常重要,这一步也是区别rtems交叉编译环境和其他编译环境建立的重要步骤。
然后建立编译目录进行编译:
$ mkdir gcc-build
$ cd gcc-build
$ vi gcc-build.sh
将下面这些内容写进gcc-build.sh文件。然后$ chmod 755 gcc-build.sh
../gcc-4.3.2/configure --target=arm-rtems /
--with-gnu-as --with-gnu-ld --with-newlib --verbose /
--enable-threads --enable-languages="c,c++" /
--prefix=/home/fbi/arm-rtems/toolchains
然后直接运行 $ ./gcc-build.sh
make all
make info
make install
5、编译gdb
$mkdir gdb-build
$cd gdb-build
$vi gdb-build.sh
把下面这些内容写入文件
./gdb-7.0/configure --target=arm-rtems --prefix=/home/fbi/arm-rtems/toolchains
然后执行
$ chmod 755 gdb-build.sh
$ ./gdb-build.sh
$ make
$ make info
$ make install

成功之后,在/home/fbi/arm-rtems/toolchains/bin下面就会有
$ ls
arm-rtems-addr2line  arm-rtems-cpp        arm-rtems-gcov    arm-rtems-ld       arm-rtems-ranlib   arm-rtems-strings
arm-rtems-ar         arm-rtems-gcc        arm-rtems-gdb     arm-rtems-nm       arm-rtems-readelf  arm-rtems-strip
arm-rtems-as         arm-rtems-gcc-4.3.2  arm-rtems-gdbtui  arm-rtems-objcopy  arm-rtems-run
arm-rtems-c++filt    arm-rtems-gccbug     arm-rtems-gprof   arm-rtems-objdump  arm-rtems-size

这时可以写一个helloworld级的程序测试一下,arm-rtems-gcc hello.c -o hello,如果编译ok,则说明编译工具已经ok!
到这里,工具就编译完成了。下面编译源代码。


二、相关板级支持包的编译。
板级支持包的编译。
1、首先下载源码rtems-4.9.3.tar.bz2
然后
$ tar -jxvf rtems-4.9.3.tar.bz2
$ mkdir arm-rtemsbuild
$ cd arm-rtemsbuild
$ vi build.sh
$ chmod 755 build.sh
写入以下内容。
../rtems-4.9.3/configure --target=arm-rtems /
--enable-posix --enable-networking --enable--cxx --enable-itron/
--enable-rtemsbsp="gp32 smdk241" /
--prefix=/home/fbi/arm-rtems/toolchains

$ ./build.sh
$ gmake RTEMS_BSP="gp32"//gmake all
$ make info
$ make install
一切正常的话,arm的bsp就编译完成了。这里编译是all,所有指定的bsp,--enable-rtemsbsp="gp32 smdk241" /
当然你可以只编译其中的一个或几个,可用命令:gmake RTEMS_BSP=”bsp1 bsp2 ...”,gmake all 命令和 make install 命令在以后对 RTEMS 核心代码进行调试
和修改过程中会常常用到。

2、设置环境变量
这个根据你目标bsp存放的位置不同作不同的修改。我的是:

export PATH=$PATH:/home/fbi/arm-rtems/toolchains/bin
export RTEMS_MAKEFILE_PATH=/home/fbi/arm-rtems/toolchains/arm-rtems/gp32

3、现在可以进入你的demo目录,编译你的程序测试了。
4、编译通过后,可以下载编译好的test.ralf到开发板执行,在终端可以看到正确的结果。


我遇到的问题:不能说是问题,可能是自己不熟悉的原因,在这里花费了太多的时间,这里写出来,供大家参考,不要在这里花费太多的时间。
我主要做了以下几个改动:
1、把smdk2410下目录所在的memmap.c、start.S和linkcmds拷到gp32下面相同的位置,并替换他们,在替换之前,先备份一下原始文件。
2、修改start.S

总结:制作编译工具和编译板级支持包,一定要小心,中间可能会出现问题,只要根据打印的错误提示,一定可以找到解决的方法。
编译bsp时也是一样,开始可能程序不能够正确的执行,这里只要把start.S做相应的修改就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值