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

RTEMS实时操作系统精要(1)-简介 最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive for Military Systems) 1、RTEMS(多处理系统实时可执行体)是一个为嵌入式系统而设计的自由的开源实时操作系统。 在缩写词RTEMS取其现在的含义之前,初始时代表导弹系统实时可执行体,然后变成了军用系统实时可执行体。 RTEMS曾被移殖到多个以不同类型的中央处理器(CPU)为基础的计算机系统上。 阅读详情

 

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做相应的修改就可以了。

使用RTEMS Source Builder 编译RTEMS-4.11的开发工具链 最近一直在折腾学习RTEMS,想移植到:STM32F429上,终于在VM 虚拟机:CentOS 6.6上架起了基于STM32F429-Discovery 的RTEMS 4.11 的开发测试环境。 开发环境如下: PC机:windows 7 64bit VM: CentOS 6.6 RTEMS: RTEMS-4.11 RTEMS工具链:arm-rtems-4.11        其实官方 阅读详情

相关推荐

嵌入式系统/ARM技术中的开发RTEMS实时系统的板级支持包

来源:单片机及嵌入式系统应用  作者:国防科学技术大学 樊超 桂先洲     一个优秀的RTOS(Real-Time Operating system)不但要拥有一个高可靠、多任务的实时内核,还应具有可剪裁和可移植的能力。RTEMS(the Real - Time Executivefor Multiprocessor Systems)[1]就是这样的系统,它提供的环境可以满足高性能的嵌入式多任务实时应用。目前,RTEMS支持的CPU系列有:A29k、ARM、H8300、1386、1960、M68k、MIPS、PPC和SPARC等。    板级支持包BSP(Board Support Pac

RTEMS-BBB(一):arm-rtems4.11起步

从1月份开始把RTEMS作为毕业设计题目到现在,差不多有半年时间了。一路摸打滚爬过来,对RTEMS的开发流程多少有了些了解,在此简单总结下。 先是针对移植了LEON3软核的FPGA,进行了sprac-rtems4.10的相关研究,目前开发板为beagleboneblack,从arm-rtems4.11起步。

cike44的博客 2274

网络安全 —— 实验(基于华为eNSP模拟器)

8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)8. 实验八 —— 通过路由的远程管理(基于实验七的基础配置)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)6. 实验六 —— 交换机的远程控制(直接控制和间接控制)5. 实验五 —— 将交换机作为PC端通过交换机相连。5. 实验五 —— 将交换机作为PC端通过交换机相连。4. 实验四 —— 两个PC机通过两台交换机相连。2. 实验二 —— 两个PC机通过交换机相连。2. 实验二 —— 两个PC机通过交换机相连。

这个家伙看起来很懒,只想把你留下来哦 9338

基于ubuntu的rtems-libbsd编译运行beagleboneblack bsp

rtems除了自身开发的rtems之外,还和freebsd合作开发了rtems-libbsd系统。 rtems-libbsd系统git说明如下: Welcome to building LibBSD for RTEMS using Waf. This package is a library containing various parts of the Fr...

weixin_33973600的博客 332

拼多多爬虫实战:逆向sign与anti_content动态参数解析

现代电商爬虫已远超基础HTTP请求范畴,其核心在于理解服务端如何通过动态签名(sign)、设备指纹、行为验证等多维机制定义‘合法请求’。拼多多作为典型代表,将价格、销量、评价等关键数据完全剥离HTML,转由强校验API返回,依赖HMAC-SHA256嵌套签名、anti_content前端加密载荷及滑动验证token闭环。这类机制本质上是客户端环境可信度与请求上下文一致性的实时博弈,技术价值在于保障数据安全与业务风控。典型应用场景包括竞品价格监控、销量趋势分析、评价情感挖掘等需高保真数据的商业分析任务。本文聚

weixin_29741447的博客 831

微信小程序音视频通话(for硬件)授权与设备注册实战指南

本文详细介绍了微信小程序音视频通话(for硬件)组件的开发实践,涵盖授权流程、设备注册与VoIP插件集成。重点解析了如何通过服务端获取snTicket实现用户授权,确保硬件设备与微信端的音视频通话安全可靠,适用于智能门禁、话机等物联网场景。

u6v7w8x的博客 945

项目 Nano-RTEMS for ARMV7M 启动

Project Nano-RTEMS for ARMV7M   我的想法如下: 1、为 ARMV7M 平台提供一个可靠的RTOS 平台,RTEMS本身就是这么一个可靠的硬实时系统,而Cortex-M3,M4有着越来越强的处理能力,可扩展NAND和SDRAM,非常适合跑这类本身就是比较完善的系统。 2、提供一个相对精简的核心,只耗 20KROM 和 10K RAM,取代 ucos 或者fre

Etual的专栏 3801

ArcGIS 10.4 Desktop安装步骤。

步骤 1 :安装 LicenseManager 有了安装包以后,我们进入安装包文件目录,如图所示,首先需要安装ArcGIS license manager,即点击打开图中红色框中exe文件。 PS:安装 LicenseManager,关于 License 的安装路径一般默认即可,因为很小的,装C 盘也无所谓了,当然了自己改了也可以的,但是不建议! 即便修改路径,建议只改盘符,不修改相对路径方式! 如:C:\Program Files (x86)\ArcGIS\License10.6 修改为 D:\.

IT爱好者 2万+

rtems-4.11移植到MINI2440 (一) 之环境搭建

注: make时加上-j4(job数)会显著提高编译速度... 环境: OS: Ubuntu 12.04 LTS rtems: rtems-4.11 0. 准备目录 rtems/archieve:放压缩包及补丁; rtems/src: rtems-4.11源码; rtems/tools: 工具编译目录 rtems/tools/b-xxx: build目录;

每一天为明天@liitokala 5296

告别手动复制粘贴:3种高效合并Excel表格的方法对比(含代码)

本文对比了VBA、Power Query和Python三种高效合并Excel表格的方法,并提供了可直接运行的代码。针对不同数据量、更新频率和技术背景,详细分析了各方案的优缺点与适用场景,帮助读者告别低效的手动操作,实现自动化数据整合。

weixin_29057237的博客 441

Python爬虫实战:使用最新技术抓取采购网招标公告信息

本文将详细介绍如何使用Python最新爬虫技术构建一个高效的采购网招标公告信息抓取系统。我们将从爬虫基础概念讲起,逐步深入到高级技巧,包括异步处理、反爬虫对策、数据解析与存储等,并提供完整的代码实现。本文旨在为读者提供一套完整的网络数据采集解决方案,适用于各类政府采购平台和商业招标网站。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序或脚本,它们按照一定的规则,自动地浏览万维网并提取所需数据。在现代商业环境中,爬虫技术广泛应用于价格监控、竞争情报收集、市场研究等领域。

2201_76125261的博客 1620

RTEMS for Cortex M3 M4 with KeilMDK 项目进度(完成)

项目主要用在 Cortex-M3 , M4上,使用 KeilMDK 编译 项目的移植理念 http://blog.youkuaiyun.com/etual/article/details/19121115 原始代码可以访问RTEMS 的官网 http://www.rtems.org 20140217 经过一个多月的艰苦移植,内核算是跑起来了,SCORE, RTEMS,SAP

Etual的专栏 6078

YOLO11检测中的内存占用分析与优化:讲解如何分析并优化推理时的内存使用

YOLOv11模型内存分析与优化摘要:本文系统分析了YOLOv11目标检测模型的内存使用模式,重点探讨了显存(VRAM)、系统内存(RAM)和共享内存的特性差异。通过PyTorch内置工具和自定义分析器,详细剖析了骨干网络、颈部网络和检测头各组件内存占用规律,指出激活值内存与输入尺寸呈平方级增长关系。文章提供了卷积层内存计算公式,并强调合理规划"工作台"(显存)与"仓库"(内存)间的数据流动是优化关键。最后通过流程图直观展示了YOLOv11推理过程的三类内存使用模式,

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 343

rtems移植到树莓派

RTEMS on the Raspberry Pi What is the Raspberry Pi? The Raspberry Pi is a neat little ARM SoC (System on a Chip) based computer that runs Linux and a growing number of small/embedded opera

wuxinju的专栏 1953

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

硬实时和软实时区别

  嵌入式实时系统中采用的操作系统我们称为嵌入式实时操作系统,它既是嵌入式操作系统,又是实时操作系统。作为一种嵌入式操作系统,它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;而作为一种实时操作系统(本文对实时操作系统特性的讨论仅限于强实时操作系统,下面提到的实时操作系统也均指强实时操作系统),它与通用操作系统(如Windows、Unix、Linux等)相比有很大的差别,下面我们将通过比较这

5245

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

rtems系统时钟原理

  一:从应用看原理二:从RTEMS4.6.99.3-GP32说起三:RTEMS4.6.99.3-GP32启动系统时钟代码流程四:关于TICK五:怎么实现年,月,日,时,分,秒六:TICK的发生七:定时器实现TICK计数八:结束 一:从应用看原理     每个系统都有一种时钟来支持,常常听到的某某系统支持“时分复用”(亦或叫“轮转调度”),TCP/IP中

1222

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

rtems 信号处理

通过阅读rtems源码中的测试用例,对信号处理的简单理解。下在附上代码。代码编译时有告警,但不影响结果。  init.c 初始化任务:创建两个任务,并启动。任务的优先级高于任务1。任务11、调用rtems_signal_catch设置异步信号的处理函数为Process_asr2、调用rtems_signal_send向它本身发送一个信号RTEMS_SIGNAL_163、判定

603

rtems 最简单的读写文件程序

看了两周的rtems,测试了几个程序, 在pc机下面都是测试通过的。现在帖出来方便以后记得。个别句子会说明一下其作用。 #include #include #include #include char *bufr = "Happy days are here again. Good morning! This is a great decision!"; rtems_task Init

487

训练数据示例

针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。

liuxs2009的专栏 57

从瀑布到流水线:DevOps 入门与 GitLab + Jenkins + Docker 落地实践

先看清软件开发生命周期(SDLC)的全貌,再对比瀑布模型与敏捷开发,随后进入持续集成与 CI/CD 的机制内核;最后落到实操——在 GitLab、Jenkins、Docker 组成的四机实验环境里,走完源码托管、自动化构建、镜像封装与远程部署,直到参数化构建与版本回滚。概念与命令并重,既是入门地图,也是操作手册。

年轻的时候很穷,经过我多年的努力,终于不再年轻。 238

DNS 不是把域名翻译成 IP:递归解析、TTL 缓存、CNAME 与报文排错实战

本文通过离线Python实验,拆解DNS递归解析、缓存机制与报文结构,揭示“DNS不是全局映射表”的本质。重点解析递归器角色、TTL衰减、CNAME链处理、负缓存隔离及修改记录延迟生效等核心问题,结合实战排错案例,阐明缓存层级、事务匹配、截断处理与安全边界,强调从应用到权威的逐层排查逻辑,实现可复现、可验证的DNS教学系统。

此人很懒,什么都没有写~~ 347

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 116
上一篇: S3C2410 SDRAM寄存器初始化设置
下一篇: rtems系统时钟原理
control_tech
博客等级 码龄17年 53粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值