精华内容
下载资源
问答
  • 服务过的公司一般都用VC++开发后台服务,如通信网关... 用.Net也能实现同样的功能,但是为什么很多公司都不用来做后台,历史遗留的原因呢,还是.Net效率不高,如果效率不高,那现在硬件成本已经很低了。这些比较

        服务过的公司一般都是用VC++开发后台服务,如通信网关,应用服务器之类,前台应用采用ASP.Net。想当年公司服务器经常出现的都是通信不稳定,或者通信队列满之类的问题,觉得通信那块应该要求很高,对我来说也比较神秘(本身不做通信那块)。

       用.Net也能实现同样的功能,但是为什么很多公司都不用来做后台,是历史遗留的原因呢,还是.Net效率不高,如果是效率不高,那现在硬件成本已经很低了。这些比较小的效率差距是否可以忽略,就算不可以忽略,是否也可以通过负载均衡等实现更高的性能。

      希望有大牛看到文章能给我解惑。


    展开全文
  • 最近做一个项目,涉及到芯片级的通信方面的知识(IIC和SPI方面的通信)。...软件I2C一般用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限

    最近做一个项目,涉及到芯片级的通信方面的知识(IIC和SPI方面的通信)。但是方案选择的时候,发现自身对模拟IO口通信还是固件驱动通信一直没有一个很全面的认识,所以就在此记录一下。

    所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。

    硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。

    模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件I2C的端口是固定的,所以会有所区别。

    至于如何区分它们

    1. 可以看底层配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC,否则就是模拟
    2. 可以看IIC写函数,看里面有木有调用现成的函数或者给某个寄存器赋值,如果有,则肯定是固件IIC功能,没有的话肯定是数据一个bit一个bit模拟发生送的,肯定用到了循环,则为模拟。
    3. 根据代码量判断,模拟的代码量肯定比固件的要大。
    展开全文
  • 即便在资源稀缺的情况下,安装合适固件的硬件安全模块(HSM)也一种永不过时的技术,它可以用来验证您的系统密码。 多年来,不论ECU之间的连接,还是ECU与外部的连接,汽车电子控制单元(ECU)的连接程度在...

    随着软件日益复杂,并且车载系统和传感器数量稳步增加,车内系统的通讯成几何增长,必须加强密码保护。这种保护可以通过经典的实时汽车开放系统架构(AUTOSAR)来实现。即便在资源稀缺的情况下,安装合适固件的硬件安全模块(HSM)也是一种永不过时的技术,它可以用来验证您的系统密码。

    多年来,不论是ECU之间的连接,还是ECU与外部的连接,汽车电子控制单元(ECU)的连接程度是在不断加深的。然而,随着软件日益复杂,新的需求也随之而生,对通信的要求也越来越高。从安全角度来看,这意味着从单个孤立系统到高度连接节点的变化。因此,抵御外部威胁的安全防护变得越来越重要。除此之外,这种保护可以通过加强密码使用来实现。乍看之下,在经典的实时系统中实现密码保护并非易事。密码学曾经只在特殊操作模式下才需要,例如修配车间的ECU软件更新。

    现在,必须确保加密在常规运行时同样有效:例如,对通信伙伴和通信内容进行身份验证并防止拦截。想要适当的实施,必须允许实时需求。这与密码方法的计算时间要求看似相矛盾。硬件安全模块(HSM)可以解决这个问题。它们允许在单独的处理器上计算密码,如果可行,可用硬件加速。然而,我们需要一个优化的实现来发挥其全部的潜力。

    • 汽车实时性

    对车辆实时性的要求通常是由所谓的连锁效应造成的。在处理从传感器到相关执行器期望输出脉冲的输入脉冲时,分析涉及到的硬件或软件组件,以及排列顺序。从传感器和执行器的物理状态中得出整个链的最长可接受运行时间。然后,将其分解成单个组件的最长允许运行时间。根据用例不同,从10微秒到100毫秒不等。如果超出了最长允许运行时间,可能会降低便利性,导致噪音。对于需要实时性的安全相关功能来说,这甚至可能伤害生命和肢体。

    为了满足对软件的实时需求,并实现需求,AUTOSAR操作系统将相关的软件功能划分为子步骤,即所谓的任务。通过外部事件触发任务,比如加注可运行标记,然后基于优先级进行处理。大多数应用程序会使用具有循环触发表的定时器来触发任务,因为相关的控制功能会连续处理新的生成信号。这样会产生一个默认的时间响应,几十毫秒一次循环。为确保满足实时要求,必须实施下列步骤。一方面,在处理信号时,必须采取适当措施,确保能够提供所需的时间响应。另一方面,必须确保ECU中与时间相关的触发任务能够满足时间要求。为此,必须分析所有任务在运行时期的行为,找到适当的优先级及触发命令时序,确保时效性。

    • AUTOSAR基础软件
      ECU功能涉及的不仅是信号处理。处理通信和管理的基本软件也是ECU的重要组成部分。同样,基础软件必须分成不同任务,根据运行需求进行分析,并将其放进整个系统中加以考虑。简而言之,有两种不同的功能集:例如,基本软件中用于通信信号值的一部分,对于处理实时信号十分必要,必须高度重视。而另一部分的实时需求明显较低:必须在后台定期运行;然而,它可能被具有较强实时要求的功能短暂抢占。因此,常见模式是将这些非关键功能转移到低优先级后台任务中。此文的问题在于如何划分功能的优先级:通常,存在多个后台活动,所以在较长时期不必确定哪个不合格。解决优先级排序的方法是循环调度,对每个低优先级功能计时小段时间,后面紧接着下个功能。AUTOSAR术语中,涉及的每个模块都提供了一个运行时间有限的所谓的“主功能”。在后台任务中,这些功能将按顺序调用。

    • 信息安全
      “后台功能”中一个典型的例子是密码算法。4.0发布之后,AUTOSAR包含加密基础软件的规范——版本修改和微调的规范。在这种情况下,所谓的密码服务管理器(CSM)为应用程序提供加密服务:

    在这里插入图片描述

    图1 AutoSar 4.3系统中的安全模块

    例如,安全车载通信系统(SecOC)使用CSM对传输数据包中信号值进行加密验证。顾名思义,CSM管理密码服务。通过制造商专用密码库实现。为了集成到具有实时需求的AUTOSAR系统中,CSM异步处理请求:最初,CSM 主功能调用只保存请求,然后逐个处理请求。为此,CSM主功能就其本身而言,调用所有底层加密原语的主功能,然后每个对加密原语进行几步计算。

    典型的加密计算时间超过了信号处理函数计算时间的数量级。调用主函数时,就出现了一个两难问题:允许的计算能力是多少?计算步骤过多,密码系统会失效,整个系统的实时性会成为问题。而步骤太少,加密操作的计算则会延迟,导致受益有限。

    此外,还必须考虑另一个影响:特定的主函数用于管理内部计算状态,允许逐步执行计算。这种状态管理在某种程度上意味着开销。实际计算调用越少,开销越大。

    应由软件供应商找到一个标准的解决方案。在典型场景中,例如,运行时的加密常用对称加密方法来验证较小的数据块。其中一种解决方案是为每个主函数调用计算一个对称块。然而,如果使用更为复杂的方法,很难找到明智的折衷方案。

    示例包括对大量数据进行认证/加密或生成非对称签名。例如,假设每1毫秒计算100微妙可接受——这个假设十分乐观,因为在多数实时场景中保持这个状态并非易事。

    与纯计算时间相比,这种划分意味着在结果可用之前时间增加了10倍。对于纯计算时间已经造成困难的密码函数而言,这种划分严重限制了实际应用。

    • 硬件安全模块
      显然,实时性能和加密方法开销的要求相互冲突,仅仅通过软件无法解决。因此,一个显而易见的解决方案是使用专门的硬件,这些硬件可以与主处理器并行计算适当算法或者其中大部分。然后,AUTOSAR CSM及相关的密码库仅负责将请求传递给该硬件,并在主功能中循环检查结果是否可用。过去十年里,在制造商的软件计划(HIS)里,这些硬件协处理器中的第一批被指定为“安全硬件扩展”。而在密码算法中规范仍限于在不同模式下实现AES-128。最近的发展显示,由于存在大量的可能情况,纯硬件协处理器常常是有限的,因此并不理想。

    结果出现了所谓的硬件安全模块(HSM)趋势。HSMs是由一种防火墙连接到主机系统总线的独立微控制器。HSM通常有其受保护的内存(RAM),程序代码和数据的专用闪存区,及其外围设备,例如定时器、用于某些密码算法的硬件加速器或用于真随机数的发生器。它能够访问主机的所有硬件。在运行时实现系统的安全、认证启动或主机监测。专用数据闪存可以用来存储秘钥,主机系统无法随意访问。这意味着主机可以请求HSM执行加密操作,而密钥无需离开HMS。然而,在这方面,HSM的特殊优点是它是可自由编程的。作为一个独立的微控制器,HSM能够运行为当前用例优化的任何程序代码。这使得其安全性要求比简单的协处理器更高。

    • HSM固件实现
      仅在HSM上建立良好的AUTOSAR标准软件,使用标准AUTOSAR方法将其与环境连接,似乎很不错。这样可以重用熟悉的AUTOSAR实现模式。然而,事实并非如此:具有实时信号处理功能的典型AUTOSAR系统,和关注安全性的HSM的用例大有不同。这清楚表明,如果HSM固件可以更自由地优化其目的,则可以实现更高的效率。此外,当前HSM硬件可用资源有限——另一个因素使得在HSM上使用AUTOSAR软件变得困难。

    HSM用例通常是典型的客户机-服务器模型:主机将一个或多个请求发送到HSM,在HSM中处理这些请求,并在结果可用时立即发出通知。与传统的AUTOSAR系统不同,HSM上管理和后台任务的数量非常有限。因此,可以假定HSM大部分计算时间将专用于处理主机请求。

    当在HSM上使用允许中断的操作系统时,可以相应优化任务映射和优先次序。这样的话,可以在低优先级任务中处理长时间运行的操作,中断较短的操作。如有需要,高优先级中循环任务允许处理管理任务。通过这种类型的映射,可以实现加密例程,在一个会话中执行特定任务。不再需要适当的例程允许中断。然而,操作系统使得日常操作透明化。不再需要相关的管理开销,这大大减少了代码规模和运行时间。此外,中断只有在实际需要时才会发生——如果只需处理单个操作,那么计算将不会中断。

    在这里插入图片描述

    图2是HSM固件的体系结构。

    HSM固件的架构

    • 算法布局的影响

    事实上,与ECU硬件性能相比,HSM硬件性能有限,这可能是HSM软件优化的障碍之一。因此,理论上纯软件实现在HSM上需要的时间比主机更长。然而,在实践中,优化节省了时间。图3是tc397 ECDSA英飞凌测量(secp-256r1)上的主机系统,明显比HSM慢。虽然主机核心运行300MHz,HSM核心运行100MHz,主机上的软件算法比HSM的执行时间快了三倍。不幸的是,在一个真正的ECU中,主机CPU时间无法专门用于执行算法计算。事实上,使用AUTOSAR时间片和并发应用的用例可能只占主机CPU时间的10%,可用于算法计算。因此,100% CPU时间场景中的xyz ms,在结果可用之前,其操作将围绕实际ECU项目中的xyz * 10 ms。

    有趣的是硬件加速器可以用来加速算法,所以软件部分只需设置输入数据并读出结果。计算是由硬件来完成,不需要任何CPU周期。图3显示了惊人的加速速度。具有8k输入数据的测量ECDSA secp-256r1仅需要9.6ms验证签名,而相应的HSM软件需要大约750ms,才能给出结果。这是一个78倍的加速。如果我们将硬件解决方案与具有10%CPU时间的主机CPU解决方案进行比较,结果在2.5秒之后是可用的,这意味着在硬件支持下,我们可以实现260倍的加速。

    在这里插入图片描述

    图3 ECDSA (secp-256r1)在主系统和HSM的运行时间

    • 加密时间
      因此,使用具有优化固件的HSM,也使实时ECUs成为永不过时的技术来验证密码。非对称加密方法也不再局限于特定的操作模式,而是可以在运行时以可接受的性能计算和使用。这开创了以前无法实现的密码用例。HSM的自由可编程性使得在选择所需方法及其实现方面能够进行特定于应用程序的优化。
    展开全文
  • 工程师已经在实验室里工作了两个多星期,可是你的板子还是不工作,看看硬件,再修改一下软件, 配置器看起来完全没问题,到底哪里出了问题呢?当然这一次的项目比上一次的更加艰难,不仅软件程序加大,FPGA更加...
  • 设备无关的图形引擎,所以很多人认为游戏开发也可以使用GDI,这种观点看起来没有错,实际上GDI也确实可以用来开发游戏,但是它必须依赖于HAL(硬件抽象层)中的视频端口驱动程序以及视频设备(显卡)驱动程序通信...

    发现不少人用GDI开发一些图形程序,它位于Windows图形子系统中,是设备无关的图形引擎,所以很多人认为游戏开发也可以使用GDI,这种观点看起来没有错,实际上GDI也确实可以用来开发游戏,但是它必须依赖于HAL(硬件抽象层)中的视频端口驱动程序以及视频设备(显卡)驱动程序通信才能通知具体设备渲染出画面,效能上比较差,如果一个大型程序用GDI做运行起来就比较吃力(我的观点),所以微软还提供了DirectX包,它可以直接操作硬件(所以起名叫做Direct),效率比较高(它可以越过HAL和驱动程序,直接和设备驱动通信),所以现在的2D/3D图形引擎基本是使用DirectX作为底层来开发,所以基本上GDI可以作为桌面应用窗口的重绘和一些特殊效果的绘制,

    另一方面要是开发视频播放软件和游戏,最好使用DirectX或者OpenGL.

     

    另外这里有一个推论,因为DirectX是基于COM的组件,如果用C#之类的托管代码来调用的,Pinvoke也是需要损失效率的,因为不仅仅需要参数的封送,还需要很多的处理过程,那么直接操作DirectX就很好了,不要使用托管代码来写游戏之类的软件,虽然可以,但是效能较低,还是使用C/C++这样的非托管代码好一些.在VS IDE中唯一能兼顾非托管代码和托管代码的就是VC++了,不要使用C#干这些事情了哦

    展开全文
  • 进程通信

    2018-04-11 14:07:47
    Linux 进程间通信的8种方式:1 管道2 命名管道3 内存...不论是硬件临界资源还是软件临界资源,多个进程必须互斥地对它进行访问。它可以作为线程间通信方式而不能作为进程间通信方式,因为进程间内存相互隔离的。...
  • 串口通信协议

    2021-01-29 21:19:56
    不管是软件还是硬件,都有一个模块化的编程思想。 比如,树莓派和语言模块,树莓派的T接到语音模块的R,语音模块的T接到树莓派的R。 全双工:语音模块发数据给树莓派的同时,树莓派也可以给语音模块发数据。 半双工...
  • Easy 虚拟专用网使用证书的认证,一个字:难 ,这个难体现在部署起来比较困难,因为Easy 虚拟专用网相对给远程用户提供连接的、或者分支站点,通常与CA Server不能正常通信的可能性比较大,所以只能通过离线...
  • 通信协议解析整个系统的核心灵魂,绝大部分人做软硬件通信开发,第一步估计就是写demo将协议解析好,然后再慢慢写整个界面和操作流程等,在工业控制领域,modbus协议应用还是非常广泛的,这个系统用的也modbus...
  • 嵌入式Linux上大部分都有C/C++来做开发的,主要的原因还是为了效率,但本人最近几年用Java比较多所以决定用Java比较多所以决定还是用Java来开发,再者个人认为现在硬件的发展,对于实时性没有苛刻要求的环境Java足...
  • 各种通信协议整理

    千次阅读 多人点赞 2020-07-02 10:19:35
    一个做嵌入式的工程师,无论硬件还是软件,每天都在接触一些通信相关的名词,若不认真整理这些概念,就很可能会混淆或忘记具体的含义与区别,因为最近正好在做项目用到了SPI协议传输数据,接下来我打算整理一下...
  • 串口常用的通讯接口,不管是硬件连接还是软件编程,相较其它的接口通信都容易,许多调试工具都采用USB转串口通信方式,就串口硬件话题,收集了部分资料,欢迎下载参阅。
  • 树莓派的串口通信

    2021-05-04 18:27:26
    不管是软件还是硬件,都有模块化思想 多机通讯(全双工) 数据格式:数据位、停止位、奇偶校验位——语言 波特率——语速 全双工:一个男的和一个女人吵架,两个人可以互骂。 半双工:男骂女的时候女的不能...
  • 网络通信设备

    2013-10-25 00:09:36
    IT实际上有三个层次:第一层是硬件,主要指数据存储、处理和传输的主机和网络通信设备;第二层软件,包括可用来搜集、存储、检索、分析、应用、评估信息的各种软件,它包括我们通常所指的ERP(企业资源计划)、CRM...
  • 虽说串口是硬件,但Linux的特性还是让串口以文件形式存储再Linux中。我们可以通过 cd /dev 来查看,一般ttyAMA0. wringPi库相关文档: https://www.cnblogs.com/lulipro/p/5992172.html softPwm,软件实现的PWM ...
  • esp32蓝牙通信

    2021-03-04 00:24:17
    最近想做一个发热垫,可以用手机控制。 一开始思考过用wifi接入米家进行控制,这样还能使用语音助手。...初步设想硬件的mac地址生成二维码,手机软件扫描二维码获取mac地址,进行连接及发送温度设置等指令。 后来发
  • 波特率等配置都一样的,但是CORTEX-A开发板和STM32进行串口通信就出现乱码了。 是硬件问题?还是软件配置问题?求高手解惑
  • C#学习--项目实战之Socket通信写在前面了解Socket通信原理创建...其实上位机软件还是方便的,主要硬件调试这个太磨人了,各种问题各种bug。总感觉达不到预期的效果。现在完成度有个80%了,所以节奏放慢了,也有...
  • 计算机通信理论——问题问答

    千次阅读 2015-06-23 11:47:08
     (1)面向终端的计算机通信网:其特点计算机网络的中心和控制者,终端围绕中心计算机分布在各处,呈分层星型结构,各终端通过通信线路共享主机的硬件软件资源,计算机的主要任务还是进行批处理,在20世纪60...
  • Android程序与单片机通信的坑

    千次阅读 2016-07-04 12:01:58
    前段时间一直在加班,单身狗的周末也搭进去了…只是为了解决一个莫名其妙的bug,不过最终bug还是拜倒在了朕的强大气场下,哈哈哈,现在就在这里好好吐槽下软件遇上硬件的坑; 先简单说说情景:软件需要给硬件设备的...
  • modbus通信协议

    热门讨论 2010-08-06 15:26:22
    当从设备回应时,它使用功能代码域来指示正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仅回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最重要的位置为逻辑1。 ...
  •  先说说小菜鸟蛋疼调试模块的经历吧~有可能某些人觉得没有必要写这篇文章,因为Arduino作为开源硬件,本身容易上手例程也很多,直接跑就可以判断是软件问题还是硬件问题了。如果真的这样简单就没有下文了,因为在我...
  • 操作站差别比较大,主要差别选用PC机还是选用小型机、采用UNIX还是采用Windows操作系统、采用专用的还是通用的监视软件,操作系统和监视软件配合比较好时可以减少死机现象;差别的是通信网络,差的轮询方式,的...
  •  (1)面向终端的计算机通信网:其特点计算机网络的中心和控制者,终端围绕中心计算机分布在各处,呈分层星型结构,各终端通过通信线路共享主机的硬件软件资源,计算机的主要任务还是进行批处理,在20世纪60...
  • 摘要:针对工业无线通信和工业以太网发展情况,提出一种ZigBee/工业以太网网关。... 实际上,无论场总线还是工业以太网,都已经形成了多标准并存的局面,在协议转换、异 构网络接入过程中,网关起
  • 部分引用 ...我们通过了解这些IC可以知道一台电脑怎么样进行软件编程和硬件结合。其中有个Intel的8250异步串口 。其中的管脚。我就不说了。但是我们可以像编写汇编一样控制他。例如 : BI
  • PlusWell热备软件

    2006-09-11 16:59:43
    然而,如果你有冗余路径, PlusWell Cluster容错软件能够通过第二条路径确定系统故障还是只是通信路径有问题。如果PlusWell Cluster 容错软件开启优先级第二的通信路径并收到了心跳信号,它就不开始failover恢复,...
  • 摘要:设计的网络型机动车停车场控制管理系统以单片机为执行,以计算机软件为管理,提出一种监控自动化、信息管理自动化网络解决方案。通过计算机网络技术和RS 485工业总线的应用,车场规模可以无限制扩展。在门禁...
  • 操作站差别比较大,主要差别选用PC机还是选用小型机、采用UNIX还是采用Windows操作系统、采用专用的还是通用的监视软件,操作系统和监视软件配合比较好时可以减少死机现象;差别最大的是通信网络,最差的轮询...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 359
精华内容 143
关键字:

通信是软件还是硬件