嵌入式软件使用POSIX接口的优缺点

2023-05-16

嵌入式软件使用POSIX接口的优缺点

POSIX,即Portable Operating System Interface,即可移植操作系统接口。是操作系统为应用程序提供的接口标准。POSIX标准同样适用于嵌入式软件,这里总结一下嵌入式软件使用POSIX接口的优缺点。

http://blog.csdn.net/zoomdy/article/details/50633554
mingdu.zheng at gmail dot com

优点

可移植性高

POSIX既然是可移植操作系统接口,那基于该接口的应用程序可移植性自然是很高的。基于POSIX接口设计的应用程序可以在不做修改或仅做极少量的修改就可以在支持POSIX的不同RTOS之间移植。如果仅使用POSIX中被广泛支持的部分,那么应用程序不需要做任何修改就可以在多个系统中编译执行。支持POSIX接口的RTOS包括eCos、VxWorks、RT-Linux、RTEMS、NuttX等。

可移植性高也就意味着开发效率高、开发成本低,这是老板们都喜欢的呀,让老板喜欢才能涨工资不是吗?

便于测试

因为嵌入式软件的开发环境和运行环境不一致,因此嵌入式软件的测试一直是个难题。解决这个难题的方案之一是将嵌入式软件在宿主机的模拟环境下执行,以便利用相对容易获得的桌面软件测试工具来对嵌入式软件进行测试。这种方案通常需要对嵌入式软件进行插桩,使用宿主机的API来模拟实现目标程序的底层API。如果嵌入式软件使用POSIX接口,那就容易多了。三大主流桌面系统Windows、Linux和Mac OS X中的Linux和Mac OS X本身就支持POSIX接口,而Windows则可以通过Cygwin等提供POSIX支持。在接口相同的情况下,目标程序不需要做任何修改就可以在宿主机上编译运行,当然还可以利用宿主机的测试工具对程序进行测试。

资料丰富

POSIX API的文档非常丰富,随便找一下就是一大堆,各国语言都有,应用的示例也很容易找到,因为人家是标准嘛,而且是应用极其广泛的标准。相对的,一些RTOS专有的API资料就相对难找了,而且基本上只有English版。

缺点

占用更多资源

多数支持POSIX的RTOS自身有一套专有的API,然后在这套专有的API上再建一层POSIX兼容层来提供POSIX支持。多一层意味着需要更多的代码空间、数据空间和执行时间。因此使用POSIX会多占用一点系统资源。然而从发展趋势看,硬件是越来越便宜的,而开发成本是越来越高的(开发人员的工资越来越高),牺牲一点执行效率来换取开发效率是值得的。Unix设计哲学中就有一条“舍高效率而取可移植性“。

总结

总而言之,使用POSIX虽然稍微会降低一点执行效率,但是可以大大提供开发效率,总体上讲是利大于弊的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式软件使用POSIX接口的优缺点 的相关文章

  • PX4源码学习一--Pix和APM的区别

    pixhawk是硬件平台 xff0c PX4是pixhawk的原生固件 xff0c 专门为pixhawk开发的 APM xff08 Ardupilot Mega xff09 也是硬件 Ardupilot是APM的固件 xff0c 所以称Ar
  • px4源码学习三--px4源码结构分析

    px4源码结构分析 Px4源码目录 cmake xff1a 是存放的 Cmake 编辑脚本文件夹 xff0c 其中 Cmake Configs 是存放的不同硬件的编译脚本 xff0c nuttx mindpx v2 default 是 PI
  • px4源码学习五--固定翼位置控制模块

    fw pos control模块 class landingslope 为固定翼着陆的角度变化模块 calulateSlopeValues void private 更新H1 H0 d1 根据log xff08 H0 H1 xff09 的比
  • px4源码学习六--uORB模块研究

    UORB模块研读 uORB函数解析 xff1a uORB模块 xff08 Micro Object Request Broker xff0c 微对象请求代理器 xff09 uORB是Pixhawk系统中关键的一个模块 xff0c 肩负了数据
  • Ubuntu开机进入busybox

    Ubuntu开机进入busybox 一般是因为ubuntu的文件系统出了问题 xff0c 所以需要在bushbox中进行扫描修复 看一下错误信息 xff0c 然后在busybox的命令行中运行fsck ext4 y dev sda1 xff
  • 关于JAVA文件都在没问题,没有错误提示波浪线,但编译时候提示找不到对应包的问题

    使用springboot做电商网站时候 修改了一点小功能 然后运行不了 提示XX XXX domain XX类找不到等一大堆类都找不到 但是对应包是存在的 而且在编辑框里没有红色的错误提示波浪线 所以 猜测应该不是代码的问题 又因为我们是g
  • c++泛型编程编译问题

    undefined reference to 模板类 c 43 43 泛型编程时候 xff0c 由于 h文件中放声明 xff0c cpp里放实现 xff0c main里调用 xff0c 编译时候 xff0c 就出现这样的问题 解决方法 xf
  • STM32CUBEMX的freertos一般使用方法笔记

    一 使用STM32CubeMX创建FreeRTOS操作系统 LED闪烁的配置 接下来配置时钟 xff0c 点击生成 此处为用户代码编写处 xff1b 开启这个选项便可以使用更加精确的延时 在代码区添加 便可以 xff01 二 任务挂起和取消
  • Qt5之QStatus状态栏

    1 一些常见用法 xff0c 来自其他优秀博文 xff1a https www cnblogs com toby zhang p 5729629 html 2 我这里添加状态了 xff0c 状态栏上放了一个QLabel控件显示时间 创建和添
  • 主函数一定要有while(1)吗?

    主函数一定要有while 1 吗 xff1f 在我两次移植例程时 xff0c 执行的结果都不对 xff0c 后来检查发现 xff0c 缺省了while 1 xff0c 加上之后结果就正确了 xff0c 这让我百思不得其解 xff0c 于是我
  • 解决error:legacy boot of uefi media

    错误 uefi媒体的传统引导 可能你的是GPT分区 xff0c 要改成UEFI引导 按F2 进入bios更换其他引导 xff0c 不同的品牌有自己进入的bios的方式 xff0c 我的是F2 按F10保存 解决
  • MongoDB安全实战之SSL协议加密

    邓开表同学实战MongoDB系列文章 xff0c 非常不错 xff0c 赞 xff01 大力推荐 xff01 本文主要讲述MongoDB的SSL协议加密的使用和配置的实战经验 xff0c 非常值得一看 前面系列文章 xff1a MongoD
  • 关于开源项目——C语言实现FTP服务器的结构解析

    项目地址 xff1a https github com beckysag ftp 针对此开源项目的说明 xff0c 结构分析 服务端整体框架 xff1a 1 从命令行输入得到服务端绑定端口号 2 设置套接口选项 xff0c 创建监听套接字
  • Nvidia Xavier NX 刷机 内置EMMC 带固态版

    Nvidia Xavier NX 刷机 内置EMMC 带固态版 前言一 烧录系统1 准备linux系统的电脑一台2 下载SDK Manager3 烧录过程 二 将NX系统迁移到NVME固态硬盘上1 格式化分区2 将EMMC SD卡的root
  • 关于vscode安装包下载太慢解决方法(详解)

    方法一 第一步 vscode官网选择下载版本 vscode官网 这里直接按系统选择合适的版本进行下载 xff01 第二步 进入下载界面 xff08 这一步别着急 xff0c 一定要进入下载过程 xff09 这里一定要点击保存 xff01 下
  • java 导出excel

    目录 一 动态下拉框二 合并行单元格三 复杂表头四 批量生成文件上传到文件服务器 xff0c 再从文件服务器批量下载压缩成压缩包后导出 一 动态下拉框 如何得到这样一张表格 xff1f 在单元格中插入可选下拉框 思路分析 xff1a exc
  • win10 H3C 映射外网端口,实现外网端口访问

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 cmd 进入 控制台 登录H3C命令行控制台 xff0c 输入账号密码 查看dns网卡等基本信息 进入系统视图 映射 查看映射情况
  • VMware Workstation v16.2 + CentOS6.5命令行模式

    VMware下载地址和安装教程 CentOS官网下载 文章目录 一 VMware部分1 新建虚拟机2 选择驱动3 配置网络 xff08 NAT配置 xff09 二 CentOs部分1 安装驱动2 联网补充 xff1a 一 VMware部分
  • 并发编程(一)cpu,进程,线程,并发

    文章目录 一 程序和进程1 程序的进化论2 程序和进程的关系3 进程和线程的关系4 CPU和RAM的关联5 CPU 进程 线程之间的关系6 CPU如何执行 二 线程1 线程的使用2 线程的生命周期 三 并发和并行1 并发和并行2 高并发的定
  • 并发编程(二)原子性和Synchronized同步锁

    文章目录 一 原子性1 什么是原子性2 造成原子性的原因3 解决原子性问题之Synchronized同步锁 二 Synchronized1 Synchronized的使用2 Synchronized的原理2 1 JVM的结构 2 2 类的加

随机推荐

  • 【异常】执行yum install lrzsz 报错

    报错信息如图 可以看出yum源出了问题 xff0c 配置yum源 按以下步骤执行 配置yum源 xff1a cd etc yum repos d mkdir bak mv repo bak vi iso repo span class hl
  • 【笔记】etc/profile和~/.bashrc的区别

    在搭建单节点的hadoop集群时 xff0c jdk的环境变量是在 bashrc 文件中配置的 而搭建三节点的hadoop集群时 xff0c 是在root用户下的 etc profile目录下配置的环境变量 两者有什么区别呢 xff1f e
  • sql存储过程语法详解

    一 定义变量 使用关键字declare申明变量 xff1a declare 64 变量名 变量类型 span class hljs comment 简单赋值 span declare span class hljs variable 64
  • Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

    mysql 5 6 43 xff0c windows10 安装好之后 xff0c 在命令行net start mysql 时 xff0c 打印mysql 服务无法启动 1067 进程意外停止 进入事件查看器 缺少mysql plugin表
  • JavaScript学生管理系统

    JavaScript学生管理系统 一 系统功能描述1 系统界面2 查看全部学员信息3 搜索学生信息4 添加学生信息5 修改学生信息6 删除学生信息7 退出系统8 检查学号是否存在 二 完整代码 一 系统功能描述 1 系统界面 系统总共包含功
  • touchGFX 初探

    touchGFX是一套在MCU上运行的GUI方案 本文使用的平台是mt2523 xff0c M4内核 1 xff0c 安装TouchGFX 4 8 0 msi 下载链接 xff1a http touchgfx com en try touc
  • Linux Centos下软件的安装与卸载方法

    linux下软件的安装与卸载 第一章 linux下安装软件 xff0c 如何知道软件安装位置 注 xff1a 一般的软件的默认安装目录在 usr local 或者 opt 里 xff0c 可以到那里去找找 指令名称 xff1a wherei
  • TX2系统环境镜像制作及烧写

    参考 Jetson TX2镜像刷板法 传统TX2采用JetPack刷机的方法来部署板子的环境 对于单个板子而言没有问题 但对于大批量的TX2板子 如果都采用同样的方法 重复的操作来部署系统环境 无疑是一件很费时间的事情 如果有了母板 即配置
  • 2016 CSDN最佳博客(Android)

    无意中在CSDN上看见了今年的十佳博客 xff0c 虽然现在还没有分出伯仲 xff0c 但是结果大概已知 xff0c 其中看了几篇文章 xff0c 感触挺深 xff0c 故把几大博客整理下来 xff0c 一方面方便广大博友 xff0c 另一
  • java中线程池-ThreadPoolExecutor中corePoolSize和maximumPoolSize的理解

    span class token keyword import span java span class token punctuation span io span class token punctuation span IOExcep
  • 顺丰Java面试

    1 jvm中复制算法的原理 xff1b 2 线程有哪几种状态 xff1b 3 观察者模式的原理 xff1b 4 mysql中默认的隔离级别是什么 xff1b 5 redis常用的数据结构 xff1b 6 网络七层模型中的网络层的作用 xff
  • 关于双系统redhat7.6网络不可用

    博主安装的双系统是windows10和redhat7 6 xff1b 本来安装完一个星期内都是正常的 xff0c 两个都可以上网 xff0c 但是不知道是不是有一天windows自动更新了的原因 xff0c redhat突然就连不上网了 此
  • updateFill不生效

    mybatis plus core版本 xff1a 3 4 1 现象 xff1a insertFill正常 xff0c 但是updateFill一直执行不到 原因 xff1a 因为实体的参数名称没有定义为et 注 xff1a Constan
  • java指定时间,增加一年、一天、减十天等

    代码如下 xff1a span class token keyword public span span class token keyword static span span class token keyword void span
  • vue入门

    1 安装node xff08 node和npm是绑定的 xff0c 安装了node xff0c npm自然也就有了 xff09 xff1b 2 设置淘宝镜像 npm config set registry https registry np
  • 系统调用和进程切换时的寄存器信息保存在哪里?

    系统调用是什么 xff1f xff1f xff1f 系统调用是操作系统为用户提供的一系列API xff1b 系统调用将用户的请求发给内核 xff0c 内核执行完以后 xff0c 将结果返回给用户 xff1b 以open为例 xff0c 进行
  • 给一副扑克牌,求最长的顺子

    span class hljs preprocessor include lt iostream gt span span class hljs preprocessor include lt vector gt span span cla
  • lvs的四种工作模式及其优缺点比较

    1 VS NAT xff08 地址翻译实现虚拟服务器 xff09 调度器接受到客户端的请求之后 xff0c 根据调度算法 xff0c 将客户端的的请求发送给服务器 xff0c 服务器处理完请求 xff0c 查看默认路由 xff08 NAT模
  • 通过Linux学习RTOS

    通过Linux学习RTOS 原文 xff1a http blog csdn net zoomdy article details 50549901 mingdu zheng at gmail dot com RTOS应用很广 xff0c 种
  • 嵌入式软件使用POSIX接口的优缺点

    嵌入式软件使用POSIX接口的优缺点 POSIX xff0c 即Portable Operating System Interface xff0c 即可移植操作系统接口 是操作系统为应用程序提供的接口标准 POSIX标准同样适用于嵌入式软件