历史上的重大软件BUG启示录第8篇---不可忽视的看门狗

(图片来源于网络)   你可能不知道上面的图片是什么狗,或者连“二哈”是什么也不知道,没关系。但是作为嵌入式工程师,你不能不知道“看门狗”是什么! 1994年1月25日,弹道导弹防御组织和 美国宇航局(NASA)共同发射了一颗新型月球探测器,命名为克莱门汀号(Clementine)。克莱门汀号的目的有两个:第一阶段测试卫星携带的科学仪器和卫星组件长时间暴露在太空环境下的运行状态,并且对月球进行探测...
阅读(749) 评论(3)

详解RS-485上下拉电阻的选择

注:本文转载于致远电子。 前言:RS-485总线广泛应用于通信、工业自动化等领域,在实际应中,通常会遇到是否需要加上下拉电阻以及加多大的电阻合适的问题,下面我们将对这些问题进行详细的分析。一、为什么需要加上下拉电阻? 根据RS-485标准,当485总线差分电压大于+200mV时,485收发器输出高电平;当485总线差分电压小于-200mV时,485收发器输出低电平;当485总线上的电压在-200m...
阅读(2435) 评论(0)

LwIP BUG之TCP连接丢失

注:本文转自老衲五木的博客! LwIP所有版本包括最新的2.0版本具有以下缺陷,当用户使用raw编程并在err或poll回调函数中操作了内核全局tcp_active_pcbs链表(最典型的,比如进行了重连操作),将有可能导致链表异常,严重情况下,链表中的很多tcp_pcb会丢失,从而导致部分连接没有任何反应,出现假死的现象。    具体信息为(以1.4.1为例),在tcp.c文件的tcp_slo...
阅读(997) 评论(0)

历史上的重大软件BUG启示录第7篇---美国商务航空公司的烦恼

(图片来源于网络)         2004年12月25日,美国商务航空公司(Comair)由于计算机系统瘫痪,不得不启动“有限”飞行计划,取消圣诞节期间飞往119个城市的1100个航班,给3万名乘客带来麻烦。         虽然航空公司没有透露具体损失数额,但据专家估计,美国商务航空公司这次发生的故障至少造成几百万美元的损失:他们要赔偿乘客,为乘客提供食宿或预定其它航班,同时还要支付公司员工的...
阅读(681) 评论(0)

CAN设计与应用指南

0.前言 这是我为公司写的一个关于CAN总线的入门文章,对全面理解CAN总线特性很有帮助,拿出来分享给大家。1. 简介 CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。另外不同于传统的网络(比如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更...
阅读(1472) 评论(0)

历史上的重大软件BUG启示录 第6篇---蠕虫“冲击波”

(图片来源于网络)         RPC(远程过程调用)是一种进程间通讯机制,最初由 Sun 公司提出,目前为 IETF 标准协议。RPC 协议允许一台计算机上的程序执行另一台远程系统上的代码。Windows的RPC服务也是以RPC为基础开发的。         2003年某个时候,LSD研究小组发现RPC中存在一个缓冲区溢出漏洞:当发送一个特定包时,会导致Windows RPC服务无提示的崩溃...
阅读(757) 评论(0)

FatFs路径名称规则、字符集和卷管理

本文基于V0.12b版本1.路径名称格式         FatFs模块路径名格式与DOS/Windos文件名规格类似,如下所示:                                     [驱动器:] [/]目录/文件         FatFs模块支持长文件名(LFN)和8.3格式文件名(SFN)。当LFN特性使能(_USE_LFN>0)后,LFN才能使用。子目录使用一个'\'或...
阅读(1113) 评论(0)

FatFs模块功能配置选项

Fatfs模块的功能可以裁剪,通过配置宏定义实现,宏定义位于文件ffconf.h中。1.功能配置1.1 _FS_READONLY 使能或禁用与写相关函数。 当设置为只读(1)时,API函数f_write、f_sync、f_unlink、f_mkdir、f_chmod、f_rename、f_truncate、f_getfree。1.2 _FS_MINIMIZE 函数功能裁剪。1.3 _USE_STR...
阅读(1531) 评论(0)

FatFs模块系统应用指南

本文使用的FatFs版本:V0.12b(2016年9月4发布)1.如何移植1.1首要考虑 FatFs模块移植基于以下假设条件:ANSI C编译器应遵循ANSI C。FatFs模块是以ANSI C(C89标准)语言编写的中间件软件,它不依赖任何硬件平台,只要相应的编译器支持ANSI C。整形类型大小FatFs模块假设char/short/long类型变量大小为8/16/32位、假设int类型变量为1...
阅读(2455) 评论(2)

控制IRQ和FIQ中断的编译器内部函数 - 基于Keil MDK

编译器内部函数__disable_irq、__enable_irq、__disable_fiq和__enable_fiq用于控制IRQ和FIQ中断。 只有当处理器处于特权模式才可以使用这些内部函数,因为这些函数要改变寄存器CPSR和SPSR(ARM7、ARM9等)或者PRIMASK和FAULTMASK寄存器(Cortex-M3、M4等),而这些寄存器只有在特权模式下才能被访问。 这些内部函数对所有...
阅读(1052) 评论(0)

串口服务器设计指南

图0:串口服务器 - 系统信息0. 前言 串口服务器是一种将串口数据转换为网口数据的设备,它在工业方面使用较多。这类设备需要非常高的稳定性,但是稳定性跟设计人员的硬件水平、软件水平以及测试等关系密切,这个范围太大,这里只是谈串口服务器软件如何设计。1. 核心数据结构设计1.1 串口数据结构串口参数:波特率、流控制、接口方式等操作模式:TCP服务器、UDP服务器等协议类型:Modbus TCP转Mo...
阅读(1377) 评论(0)

历史上的重大软件BUG启示录 第5篇---AT&T长途电话网瘫痪事件

(图片来源于网络) 时间:1990年1月15日,星期一,下午2点25分; 地点:新泽西州,贝德明斯特,AT&T电话网络运营中心。 和往常一样,长途电话运行监控室的职员们悠闲的做着手头上的工作。AT&T长途电话网络,在当时已经占据了这个国家70%的长途通讯量、路由超过11.5亿次电话呼叫!它是AT&T所有职工的骄傲,是可靠性和健壮性的典范,为AT&T赢得了很高声誉。AT&T也花费巨资宣传自家系统的可靠...
阅读(1228) 评论(0)

历史上的重大软件BUG启示录 第4篇---Google的疏忽

(图片来源于网络) 很多的软件Bug源自于输入错误,即便像Google这样的国际大公司。 在Google上搜索的时候,有些结果列表项中带有一条警告,表明Google认为它带有恶意代码。 如果你在2009年1月31日一大早使用Google搜索的话,你就会看到,在那天早晨55分钟的时间内,Google的搜索结果标明每个站点对你的PC都是有害的。这涉及到整个Internet上的所有站点,包括Google...
阅读(1059) 评论(0)

历史上的重大软件BUG启示录 第3篇---价值5亿美元的简单复用

(图片来源于网络)       1996年6月4日,Ariane 5火箭第一次航行,一个软件错误便产生了灾难性后果。发射后仅仅37秒,火箭偏离了它的飞行路径,随后解体并且爆炸。火箭上载有价值5亿美元的卫星。       Ariane5是欧洲航天局推出的新一代重型航天运载火箭,它的上一代运载火箭Ariane4设计精良,享有很高的赞誉。       第一枚5代实验火箭代号为501,预计在1996年6月...
阅读(888) 评论(0)

历史上的重大软件BUG启示录 第2篇---心脏滴血

(图片来源于网络) OpenSSL"心脏滴血"漏洞于2014年4月7号被曝光,“黑客只要对存在这一漏洞的网站发起攻击,每次读取服务器内存中64K数据,不断的迭代获取,就能获取程序源码、用户http原始请求、用户cookie甚至明文帐号密码等敏感信息”。全球三分之一的以"https"开头的网站受到影响,包括大批网银、购物网站、电子邮件等。      引起这个漏洞的原因是服务器没有对客户端发来的心跳数据做严格检测。...
阅读(1007) 评论(0)

历史上的重大软件BUG启示录 第1篇---"瞳"的陨落

(图片来源于网络)      2016年2月17日,日本成功发射了一颗卫星,他们给这颗卫星起了个好听的名字:“瞳”。“瞳”卫星的造价为2.86亿美元,约合人民币18.6亿元。卫星上携带的X射线检测仪器,有望揭开黑洞等宇宙的未解之谜,被寄予厚望,代表了“新一代X射线天文学”的未来。      然而时隔一个多月后,“瞳”却因自旋而解体。它的设计寿命为十年,却没能正式工作10天。      将它彻底推向...
阅读(1108) 评论(0)

FreeRTOS高级篇11---空闲任务分析

当RTOS调度器开始工作后,为了保证至少有一个任务在运行,空闲任务被自动创建,占用最低优先级(0优先级)。 xReturn = xTaskCreate( prvIdleTask, "IDLE",configMINIMAL_STACK_SIZE, (void * ) NULL,...
阅读(4526) 评论(6)

FreeRTOS高级篇10---系统节拍时钟分析

操作系统的运行是由系统节拍时钟驱动的。         在FreeRTOS中,我们知道系统延时和阻塞时间都是以系统节拍时钟周期为单位。在配置文件FreeRTOSConfig.h,改变宏configCPU_CLOCK_HZ的值,可以改变系统节拍时钟的中断频率,也间接的改变了系统节拍时钟周期(T=1/f)。比如设置宏configCPU_CLOCK_HZ为100,则系统节拍时钟周期为10ms,设置宏co...
阅读(4522) 评论(2)

FreeRTOS高级篇9---FreeRTOS系统延时分析

FreeRTOS提供了两个系统延时函数:相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()。相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束;绝对延时是指每隔指定的时间,执行一次调用vTaskDelayUntil()函数的任务。换句话说:任务以固定的频率执行。在《FreeRTOS系列第11篇---FreeRTOS任务控制》一文...
阅读(7346) 评论(3)

FreeRTOS高级篇8---FreeRTOS任务通知分析

在FreeRTOS版本V8.2.0中推出了全新的功能:任务通知。在大多数情况下,任务通知可以替代二进制信号量、计数信号量、事件组,可以替代数长度为1的队列(可以保存一个32位整数或指针值),并且任务通知速度更快、使用的RAM更少!我在《 FreeRTOS系列第14篇---FreeRTOS任务通知》一文中介绍了任务通知如何使用以及局限性,今天我们将分析任务通知的实现源码,看一下任务通知是如何做到效率...
阅读(5795) 评论(0)
136条 共7页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1148305次
    • 积分:11494
    • 等级:
    • 排名:第1226名
    • 原创:117篇
    • 转载:6篇
    • 译文:11篇
    • 评论:778条
    博客专栏
    最新评论
    友情链接