商铺名称:厦门奇钜泰自动化有限公司
联系人:黄先生()
联系手机:
固定电话:
企业邮箱:1145187711@qq.com
联系地址:厦门市湖里区长乐路350号闽南古镇A部4119室
邮编:362006
联系我时,请说是在新型建材网上看到的,谢谢!
黑龙江1756-PB75 1756-PB75---140CPU67160供应
1756-PB75 1756-PB75
140CPU67160
尽管许多嵌入式工程师充满了希望和梦想,但高可靠性的代码不是一蹴而就的。它是一个艰苦的过程,需要开发人员维护和管理系统的每个比特和字节。当一个应用程序被确认为“成功”的那一刻,通常会有一种如释重负的感觉,但仅仅因为软件在受控条件下的那一刻运行正常并不意味着明天或一年后还会运行正常。 从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。给大家介绍7个比较好操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助 技巧1——用已知值填充ROM 软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。微控制器跳出应用程序空间并在非预想的代码空间中执行这种情况似乎是相当少有的。然而,这种情况发生的机会并不比缓存溢出或错误指针失去引用少。它确实会发生!发生这种情况后的系统行为将是不确定的,因为默认情况下内存空间都是0xFF,或者由于内存区通常没有写过,其中的值可能只有上帝才知道。 不过有相当完备的linker或IDE技巧可以用来帮助识别这样的事件并从中恢复系统。技巧就是使用FILL命令对未用ROM填充已知的位模式。要填充未使用的内存,有很多不同的可能组合可以使用,但如果是想建立更加可靠的系统,最明显的选择是在这些位置放置ISR fault handler。如果系统出了某些差错,处理器开始执行程序空间以外的代码,就会触发ISR,并在决定校正行动之前提供储存处理器、寄存器和系统状态的机会。 技巧2——检查应用程序的CRC 对嵌入式工程师来说一个很大的好处是,我们的IDE和工具链可以自动产生应用程序或内存空间校验和(Checksum),从而根据这个校验和验证应用程序是否完好。有趣的是,在许多这些案例中,只有在将程序代码加载到设备时,才会用到校验和。 然而,如果CRC或校验和保持在内存中,那么验证应用程序在启动时(或甚至对长时间运行的系统定期验证)是否仍然完好是确保意外之事不会发生的极好途径。现在一个编程过的应用程序发生改变的概率是很小的,但考虑每年交付的数十亿个微控制器以及可能恶劣的工作环境,应用程序崩溃的机会并不是零。更有可能的是,系统中的一个缺陷可能导致某一扇区发生闪存写入或闪存擦除,从而破坏应用程序的完整性。 技巧3——在启动时执行RAM检查 为了建立一个更加可靠和扎实的系统,确保系统硬件正常工作非常重要。毕竟硬件会发生故障。(幸运的是软件永远不会发生故障,软件只会做代码要它做的事,不管是正确的还是错误的)。在启动时验证RAM的内部或外部没有问题,是确保硬件可以如预期般运作的一个好方法。 有许多不同的方法可用于执行RAM检查,但常用的方法是写入一个已知的模式,然后等上一小段时间再回读。结果应该是所读就是所写。真相是,在大多数情况下 RAM检查是通过的,这也是我们想要的结果。但也有极小的可能性检查不通过,这时就为系统标示出硬件问题提供了极好的机会。 技巧4——使用堆栈监视器 对许多的嵌入式开发者而言,堆栈似乎是一股相当神秘的力量。当奇怪的事情开始发生,工程师终于被难倒了,他们开始思考,也许堆栈中发生了什么事。结果是盲目地调整堆栈的大小和位置等等。但该错误往往是与堆栈无关的,但怎能如此确定?毕竟,有多少工程师真的实际执行过最坏情况下的堆栈大小分析? 堆栈大小是在编译时就静态分配好的,但堆栈是以动态的方式使用的。随着代码的执行,应用程序需要的变量、返回的地址和其它信息被不断存储在堆栈中。这种机制导致堆栈在其分配的内存中不断增长。然而,这种增长有时会超出编译时确定的容量极限,导致堆栈破坏相邻内存区域的数据。 绝对确保堆栈正常工作的一种方法是实现堆栈监视器,将它作为系统“保健”代码的一部分(有多少工程师会这样做?)。堆栈监视器会在堆栈和“其它”内存区域之间创建一个缓冲区域,并填充已知的位模式。然后监视器会不断的监视图案是否有任何变化。如果该位模式发生了改变,那就意味着堆栈增长得太大了,即将要把系统推向黑暗地狱!此时监视器可以记录事件的发生、系统状态以及任何其它有用的数据,供日后用于问题的诊断。 大多数实时操作系统(RTOS)或实现了内存保护单元(MPU)的微控制器系统中都提供有堆栈监视器。可怕的是,这些功能默认都是关闭状态,或者经常被开发人员有意关闭。在网络上快速搜寻一下可以发现,很多人建议关闭实时操作系统中的堆栈监视器以节省56字节的闪存空间。等等,这可是得不偿失的做法! 技巧5 - 使用MPU 在过去,是很难在一个小而廉价的微控制器中找到内存保护单元(MPU)的,但这种情况已经开始改变。现在从高端到低端的微控制器都已经有MPU,而这些 MPU为嵌入式软件开发人员提供了一个可以大幅提高其固件(firmware)鲁棒性(robustness)的机会。 MPU 已逐渐与操作系统耦合,以便建立内存空间,其中的处理都分开,或任务可执行其代码,而不用担心被stomped on。倘若真有事情发生,不受控制的处理会被取消,也会执行其他的保护措施。请留意带有这种组件的微控制器,如果有,请多加利用它的这种特性。 技巧6 - 建立一个强大的看门狗系统 你经常会发现的一种总是最受喜爱的看门狗(watchdog)实现是,在看门狗被启用之处(这是一个很好的开始),但也是可以用周期性定时器将该看门狗清零之处;定时器的启用是完全与程序中出现的任何情况隔离的。使用看门狗的目的是协助确保如果出现错误,看门狗不会被清零,即当工作暂停,系统会被迫去执行硬件重设定(hardware reset),以便恢复。使用与系统活动独立的定时器可以让看门狗保持清零,即使系统已失效。 对应用任务如何整合到看门狗系统中,嵌入式开发人员需要仔细考虑和设计。例如,有种技术可能可以让每个在一定时期内运行的任务标示它们可以成功地完成其任 务。在此事件中,看门狗不被清零,强制被复位。还有一些比较先进的技术,像是使用外部看门狗处理器,它可用来监视主处理器如何表现,反之亦然。 对一个可靠的系统而言,建立一个强大的看门狗系统是很重要的。由于有太多的技术,难以在这几个段落中完全涵盖,但针对此一议题,笔者未来还会发表相关的文章。 技巧7 - 避免易失存储器分配 不习惯在资源有限环境下工作的工程师,可能会试图使用其编程语言的特性,这种语言让他们可以使用易失存储器分配。毕竟,这是一种常在计算器系统中使用的技术,在计算器系统中,只有在有必要时,内存才会被分配。例如,以C开发时,工程师可能倾向于使用malloc来分配在堆(heap)上的空间。有一个操 作会执行,一旦完成,可以使用free将被分配的内存返回,以便堆的使用。 在资源受限的系统,这可 能是一场灾难!使用易失存储器分配的其中一个问题是,错误或不当的技术可能会导致内存泄漏或内存碎片。如果出现这些问题时,大多数的嵌入式系统并没有 资源或知识来监视堆或妥善地处理它。而当它们发生时,如果应用程序提出对空间的要求,但却没有所请求的空间可以使用,会发生什么事呢? 使用易失存储器分配所产生的问题是很复杂的,要妥善处理这些问题,可以说是一个噩梦!一种替代的方法是,直接以静态的方式,简化内存的分配。例如,只要在 程序中简单地建立一个大小为256字节长的缓冲区,而不是经由malloc请求这样大小的内存缓冲区。此一分配的内存可在整个应用程序的生命周期期 间保持,且不会有堆或内存碎片问题方面的顾虑。 结论 这些都只是一些可以让开发人员开始建立更可靠嵌入式系统的方法。另外还有很多其他技术,例如利用良好的编码标准、位翻转的监测、执行数组和指针边界检查,及使用断言等。所有这些技术都是让设计者可以开发出可靠性更高嵌入式系统的秘诀。
2364FA-LNN POWER MODULE ASSY:380VAC L CURRENT CODE
MPM-B2152F-2J74AA MP-Series MPM 480V AC Rotary Servo Motor 20G1ALF330AN2NNNNN PowerFlex 755 AC Packaged Drive
MPAR-B3200E-M2B MP-Series Electric Cylinder@泉州市科道电子科技有限公司提供优质产品与服务,为您节省询价时间和不必要的浪费,欢迎来电咨询,竭诚为您服务!!!
A06B-6104-H211#H520 20G11ND040AA0NNNNN PowerFlex 755 AC Packaged Drive
513-AABD-A2F-3-39-901 NEMA Size 0 COMB Starter Circuit Breaker
2715-T19CA-B PanelView 5500 19 in. Graphic Terminal IC694ALG232
A06B-6115-H001 A20B-8002-0331 A06B-6110-H026{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
20BC072A0AYNACC0 PowerFlex 700 AC Drive 72 A 37 kW 20B 513-BCB-6P-41 NEMA Size 1 COMB Starter Circuit Breaker
20G11LD1K5AN0NNNNN PowerFlex 755 AC Packaged Drive
A06B-6240-H104 A20B-3300-0150 A06B-6141-H011#H580 A06B-6124-H202 A16B-2000-0062 A860-0309-T352
A06B-6079-H209
A20B-3300-0395 A06B-6111-H006#H550 A860-0370-V511 A06B-6114-H303 A06B-6140-H055 A20B-0006-0910
A16B-2200-0080 A16B-2203-0672 A06B-6117-H109
8720MC-RPS065BM-HV2 8720 Drive Regenerative Power Supply MPL-B880C-MJ74AA MP-Series MPL 480V AC Rotary Servo Motor
20F1ANF142JA0NNNNN PowerFlex 753 AC Packaged Drive
20F14NC205JA0NNNNN PowerFlex 753 AC Packaged Drive A06B-6142-H026#H580{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
黑龙江1756-PB75 1756-PB75---140CPU67160供应
A20B-3900-0140
3HAC031580-002 3HAC028357-001
A860-2109-T302
A20B-3300-0448 A16B-2201-0470
A860-0214-T301@泉州市科道电子科技有限公司提供优质产品与服务,为您节省询价时间和不必要的浪费,欢迎来电咨询,竭诚为您服务!!!
A03B-0819-C105 A860-0347-T021
A06B-6112-H002#H550
3HAC024518-003 3HAC024935-001
3HAC8009-1
3HNA015474-001 1756-OB16IS 直流数字量输出模块{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
3HAC14363-1 DSQC 541
A06B-6078-H230#H500 A860-2150-T051
IC695ALG312
IC695STK006 A03B-0801-C012
3HNA010107-002
IC695STK001 3HAC021799-003
————————————泉州市科道电子科技有限公司———————————— 为什么选择我们? 1.用诚信做生意,用心经营; 2.专业的服务态度,专业的服务团队; 3.物超所值的货物品质,原厂家直接供货省去中间环节; 4.大量的备货库存与管理,发货及时! 泉州科道电子科技有限公司 —— 是一家专做工业控制自动化备件的公司 致力于各大自动化品牌产品控制备件销售,广泛用于制造、钢铁、化工、火电、水处理、制药、汽车等行业。 主营:气缸/气爪 电缸 方向控制阀 电磁阀 比例阀 调压阀 三联件 温控器 伺服放大器 伺服驱动器 伺服电机 PLC 触摸屏 输出模块 输入模块 控制模块 模拟量模块 数字量模块 通讯模块 电源模块 数据线等,欢迎来电咨询!
黑龙江1756-PB75 1756-PB75---140CPU67160供应
FANUC 发那科 A860-0356-T101@泉州市科道电子科技有限公司提供优质产品与服务,为您节省询价时间和不必要的浪费,欢迎来电咨询,竭诚为您服务!!!
LS 产电 K7M-DR30U LS 产电 XOL-EIMT
ABB Asea Brown Boveri 3HAC14279-1 DSQC 540{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
LS 产电 K4P-15AS Rexroth 力士乐 PPC-R02.2N-N-NN-P2-NN-FW
ABB Asea Brown Boveri 3HAC025917-001 DSQC 652
SIEMENS 西门子 6SN1118-0DG12-0AA0 Rexroth 力士乐 MC2000-05-018-05-038
A16B-1213-0070
Schneider 施耐德 140DII33000 GE General Electric IC694TBB032
3HAC5105-1
ABB Asea Brown Boveri 3HNM02487-1 A06B-6110-H037
YASKAWA 安川 SGDL-A5BS
ALLEN BRADLEY 罗克韦尔 1394-SJT22-T-RL Schneider 施耐德 140HLI34000
22B-D017N104{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
ABB Asea Brown Boveri 3HAC021975-001 DSQC 604 3HAB6182-1 Robot computer
Rexroth 力士乐 FCS01.1E-W0005-A-04-NNBV
FANUC 发那科 A02B-0299-B802 SIEMENS 西门子 6SE6420-2AB13-7AA1
Eurotherm 欧陆 2500T/AI4/TC/NONE/XXXXX/XXXXXX@泉州市科道电子科技有限公司提供优质产品与服务,为您节省询价时间和不必要的浪费,欢迎来电咨询,竭诚为您服务!!!
3HAB8101-8/12B驱动器 Eurotherm 欧陆 590P/0270/500/0011/UK/AN/0/230/0
Eurotherm 欧陆 2208E/CC/VH/LH/XX/FH/FL/2XX/ENG
GE General Electric IC694ACC310 Mitsubishi 三菱 MDS-B-V2-3520
IC200ALG264E
6XV1821-0AH10 SIEMENS 西门子 6RA2775-6DV57-0AA0
黑龙江1756-PB75 1756-PB75---140CPU67160供应
20G1G3D617LNDNNNNN Air Cooled 755 AC Packaged Drive{现货+质保+短货期+原装+全新+无忧服务}如有询价请随时联系我
07PS61R1 GJV3074331R1 ABB Procontic 150-SD1NUR SMC-50 SOLID STATE MOTOR CONTROLLER 361A
A06B-6114-H205 A06B-6124-H207 A16B-2202-0720
513-FAB-52 NEMA Size 5 COMB Starter Circuit Breaker 2005AP21110A ABB MOD 300ML/MODCELL
A06B-6102-H122#H520 A20B-3900-0180 A20B-2100-0390
MPM-B2153F-2J72AA MP-Series MPM 480V AC Rotary Servo Motor TB840A 3BSE0237760R1@泉州市科道电子科技有限公司提供优质产品与服务,为您节省询价时间和不必要的浪费,欢迎来电咨询,竭诚为您服务!!!
81002-082-78-R 6 DEVICE POWER CAGE ASSEMBLY
XM06B5 1SBP260103R1001 ABB Advant OCS 20BC085A0AYNACC0 PowerFlex 700 AC Drive 85 A 45 kW 20B
MPAI-A3300RM34B MP-Series Heavy Duty Electric Cylinder
20DC022A0EYNANCNK PowerFlex 700S AC Drive 20D 20G1ABC567AN0NNNNN PowerFlex 755 AC Packaged Drive