热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RTEMS在S3C2440上的移植(2)

将一个复杂的工程分解为多个小的目标或模块是一个明智的选择。上文我们提到移植RTEMS到S3C2440上有三个技术难关,第一个便是交叉编译工具的安装。这里我们先攻这第一

        将一个复杂的工程分解为多个小的目标或模块是一个明智的选择。上文我们提到移植RTEMS到S3C2440上有三个技术难关,第一个便是交叉编译工具的安装。这里我们先攻这第一个难关,解决交叉编译工具的安装有两种方案可供实验:1.使用官方提供的工具源码一个一个的编译生成所需的工具链。2.下载现成的RPM安装包。编译官方的工具源码相对来说比较高大上,难度比使用RPM包复杂一些。安装的工具、顺序、版本等都有可能造成最终不能生成正确能用的交叉工具链。由于对该系统和开发环境还不是太熟悉的,因此此次我们尝试使用官方提供的RPM包,下载地址由QQ群RTEMS爱好者之家(253222959)的Kunkka兄提供。地址为:http://www.rtems.org/ftp/pub/rtems/linux/。

        那么使用官方提供的RPM包来生产交叉编译工具需要做哪些具体的工作了?主要分为四个步骤:

        1.选择宿主机运行的OS,可以使用几种不同的方案,如使用官方提供的Linux镜像然后用Virtual Box或VMware运行;不使用官方的Linux系统镜像的话可以在虚拟机或PC上自己安装一个Linux系统;当然还可以在Windows下使用Cygwin。当然作为初学者的我使用了最简便的方法,直接使用官方提供的Linux镜像在Virtual Box中跑。官方提供了许多可供下载的Linux镜像,我以前使用的是Fedora14,这次由于下载了7个RPM包是Fedora20的在以前的Fedora14中安装起来有问题,具体问题忘了,好像从安装gdb工具的时候就报错。所幸的是我以前还下载了cetos6.2版本的Linux,这次正好就可以派上用场了。在Virtual Box中导入下载的cetos6.2版本的Linux,然后安装下载的7个RPM包,当然另外还有autoconf和automake这两个RPM包。


        2.安装刚刚下载的这些工具链的RPM包,使用的命令式rpm -ivh xxx。安装完前面的5个包时完全没有问题,在安装gcc工具是报错了,提示安装这个gcc工具少一个其所依赖的文件libmpc.so.2。自己在百度上下了一个libmpc-0.8-3.el6.src.rpm,没敢用,咨询了大牛Etual,他让我用yum先试试。试了不成功,他给哥们一个文件libmpc-0.8-3.el6.i686.rpm,安装是报一个警告,没管这个警告,继续安装gcc工具,成功了。至此,我们的7个工具的包都安装成功了,听说还要装autoconf和automake的RPM包,至于这两个包有什么作用我也不太清楚。kunkka兄弟说autoconfig是配置内核的,automake是自动编译。不管他吧,我先装了试试,然而发现安装的时候报错,说是什么有文件冲突,看了半天不知道啥意思。kunkka兄弟说,冲突就正常了,有些包是相互依赖的。我认为是不是官方已经给装了什么了呀。

        3.针对于你所使用的嵌入式微控制器选择BSP,并进行配置、编译和安装。

        $:cd /home/rtems/rtems-4.11-work

        $:export PATH=/opt/rtems-4.11/bin:$PATH

        $:chmod 777 build_bsp

        $:./build_bsp arm smdk2410

        $:cd b-smdk2410

        $:make install


        上面这几步,其本质是执行的一个build_bsp的脚本文件。当然你也可以不执行这个脚本,而在命令终端中自己敲命令。


        我选择了使用build_bsp的脚本进行系统的编译,最后完成了针对2410的RTEMS的编译。当然这里我们要清楚如果我要移植到自己特定的S3C2440的平台上,还需要对BSP进行修改。下面就可以编译应用程序来测试验证我们制作的工具链及编译的系统是否可用了。

        4.编译应用程序。将应用程序下载到某一个目录下,然后使用make进行编译。如我首先测试的是HELLO WORLD这一测试程序。第一次编译是发生了错误,说有两个文件/Makefile.ine和/make/leaf.cfg找不到。记得以前也在PC104上测试时也碰到过,当时的解决办法比较笨,就是在系统镜像里找到这两个文件,然后拷贝到相关位置。这次有了群里道兄弟的文档,发现其实是一个环境变量没有设置。设好这个环境变量就OK了。具体做法:

export RTEMS_MAKEFILE_PATH=/home/rtems/rtems-4.11-work/bsp-install/arm-rtems4.11/smdk2410。然后一切搞定,使用make clean和make命令便可以在o-optimize目录下得到所要编译生成的文件了。接下来就可以将编译生成的文件下载到开发板上进行测试了。编译生成的文件如下:


        使用命令将.exe文件转化成.bin文件,arm-rtems4.9-objcopy -O binary -S hello.exe hello.bin。

        注:编译工具选择gcc,链接工具选择binutils包中的ld和as。还没有搞清的问题是autoconf和automake的作用是什么。 


推荐阅读
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
不必在乎外貌涝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有