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


推荐阅读
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
author-avatar
不必在乎外貌涝
这个家伙很懒,什么也没留下!
RankList | 热门文章