热门标签 | 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的作用是什么。 


推荐阅读
  • 本文介绍了如何在Windows操作系统中安装FFTW库,并详细说明了使用Visual Studio 2010进行4096点快速傅里叶变换(FFT)的步骤。包括下载预编译文件、生成库文件以及配置环境等关键环节。 ... [详细]
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 告别繁琐安装!微软推出Windows软件包管理器winget
    2020年5月20日,在Build 2020全球开发者大会上,微软正式推出了全新的Windows Package Manager(winget),旨在简化Windows应用的安装流程。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 本文档提供了首次周测的答案解析,涵盖特殊符号、命令作用、路径说明以及实战练习等内容。 ... [详细]
  • 本文详细介绍了如何在ReactJS项目中集成Onsen-UI的ActionSheetButton组件,并通过具体示例展示了其使用方法及效果。 ... [详细]
  • 在使用Visual Studio构建项目时遇到了IntelliSense错误,具体表现为预期的')'未找到。本文提供了详细的解决方案和可能的原因分析。 ... [详细]
  • IEC60825激光产品安全标准详解
    随着激光技术在全球范围内的广泛应用,尤其是激光投影显示技术的兴起,了解和遵守相关的安全标准变得尤为重要。本文将详细介绍IEC60825激光产品安全标准及其重要性。 ... [详细]
  • 本文探讨了如何利用数组来构建二叉树,并介绍了通过队列实现的二叉树层次遍历方法。通过具体的C++代码示例,详细说明了构建及打印二叉树的过程。 ... [详细]
  • Mysqlcheck作为MySQL提供的一个实用工具,主要用于数据库表的维护工作,包括检查、分析、修复及优化等操作。本文将详细介绍如何使用Mysqlcheck工具,并提供一些实践建议。 ... [详细]
  • 本文详细介绍了Elasticsearch中CVE-2015-3337目录遍历漏洞的具体情况,包括漏洞的影响范围、复现步骤及相关的安全建议。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
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社区 版权所有