ARM Cortex-A8/A9开发板 | ARM11开发板ARM11开发套件 | ARM9开发板ARM9开发套件 | 飞思卡尔I.MX28I.MX6开发板 |
tiny210/mini210开发板 | mini6410开发板/套餐 | Tiny6410开发板无线套件 | mini2440开发板/套餐 | micro2440开发板带核心板 | 友善开发板配件 模块 | QQ2440 V3 SBC-2410X |
FL2440 OK2440-IV V4 | OK2440-III OK2440V3 | TE2440-II TE2440V2 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | 开发板配件 模块和其他 |
Xilinx开发板/fpga开发套件 | altera开发板/fpga开发套件 | 基于FMC FPGA/DSP子卡 |
BeagleBoard原厂开发板 | PandaBoard原厂开发板 |
TI DM3730 DevKit8500D | TI系列 omap3530开发板 | ATMEL系列 开发板 | Samsung系列 开发板 | 开发板配件-仿真器 模块 | NXP LPC3250 mini3250 |
Tiny210 三星S5PV210 | Mini210/Mini210s开发板 | Tiny4412开发板Cortex-A9 | Tiny6410开发板 ARM11 | mini2440开发板 ARM9 | micro2440开发板 ARM9 | mini6410开发板 ARM11 | 友善ARM开发板配件 模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
FL2440 OK2440-IV V4 | OK6410 S3C6410 ARM11 | FL6410/OK6410B ARM11 | OK210/-A Cortex-A8 | TE2440-II TE2440V2 | TE6410 S3C6410 ARM11 | TE-9263 AT91SAM9263 | ARM开发板配件 模块等 |
Real6410开发板/套餐 | Real210开发板/Real2410 | WIFI GPS GPRS模块摄像头 |
Xilinx开发板/开发套件KIT | Altera开发板/开发套件KIT | 配套模块 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | 最小系统模块类(初学者勿选) | 开发工具 仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
DM3730/AM3715/AM3359 | OMAP3530AM1808AM3517 | 飞思卡尔Cortex-A9开发板 | ATMEL系列ARM开发板 | NXP LPC3250 LPC1788 | Samsung系列ARM开发板 | STM32系列F207/F407 | ARM开发板配件-仿真器 模块 |
Realv210 S5PV210开发板 | Real6410开发板 ARM11 | WIFI GPS GPRS模块摄像头 |
NXP LPC开发板 ARM7 | Cortex-M3 STM32开发板 | ARM小系统模块(初学勿选) | 开发工具 ARM仿真器 调试器 | TFT液晶屏LCD 液晶模块 |
keil ARM仿真器/开发工具 | STM32开发板 Cortex-M3 | NXP LPC开发板Cortex-M3 | ATMEL系列 ARM开发板 | Luminary EKK8962开发板 | Freescale i.MX31开发板 | 三星s3c2440 s3c6410开发板 |
Exynos4412开发板A9四核 | UT-S5PV210 S5PC100 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 |
Xilinx开发板 FPGA开发套件 | altera开发板 FPGA开发套件 | FMC模块 配件 下载线 |
DM642开发板/DM642实验箱 | DM6446开发板/DSP实验箱 | DSP仿真器 液晶屏 摄像头等 |
s3c2410 ARM9 FS2410 | s3c2440开发板 ARM9 | s3c44B0开发板 ARM7 | s3c6410 2450 2443/13 | PXA270 PXA320 PXA255 | Atmel 9200 9261 9G20 | Philips NXP开发板YL-LPC | FS-EP9315开发板ARM9 | LCD液晶屏TFT真彩/触摸屏 | ARM仿真器/仿真调试工具 | ARM开发板配套ARM核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯开发板UP-DRAGON-I | 物联网教学科研设备 | EDA/FPGA/SOPC教学科研 |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | YC-ePC-A系列人机界面 | Mars-EDA套件CPLD FPGA | 触摸屏LCD 摄像头 WI-FI模块 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器/仿真系统 | DSP开发板/DSP试验箱 | DaVinci系列多媒体平台 | Xilinx FPGA大学计划产品 | SEED教学实验系统 | FPGA/DSP FPGA开发板 | TI原厂开发板套件/CCS软件 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
广嵌实验室项目产品 | GEC2440/GEC6410开发板 |
泰克Tektronix示波器 | 普源RIGOL示波器 | USB虚拟示波器 |
UT-S5PC100 UT-S5PV210 | UT-S3C6410开发板 ARM11 | idea 6410开发板 ARM11 | UT-S3C2450开发板 ARM9 | UT-S3C2416开发板 ARM9 | UT-S3C6410核心板 工控 | 开发板模块wifi gps等 |
EMA OMAP3530开发板 | EMA OMAP 3530核心板 |
三星s3c2410 s3c44B0 | 三星s3c6410 s3c2443 | Intel PXA270 PXA320 | UP-CUP OMAP5910平台 | FPGA Xilinx Altera平台 | 配件-仿真器 模块 液晶屏LCD | 龙芯系列 UP-DRAGON-I |
utu2440-F-V4.5 含核心板 | utu2440-S-V4.1 单板结构 | YC2440-F-V5.1开发板 豪华型 | 触摸屏LCD 摄像头 WI-FI模块 | Mars-EDA套件CPLD FPGA | ePC系列工控一体机ARM9 A8 |
ARM开发板/开发平台 | FPGA开发板/开发平台 | 编程器/烧写器下载器烧录 | ZLG 仿真器ARM FPGA DSP | ZLG周立功逻辑分析仪 |
DSP初学者开发套件(DSK) | DSP仿真器 | DSP开发板 | DSP实验箱 | Xilinx FPGA大学计划产品 |
ARM开发板 | XSCALE开发板 | ARM仿真器 | SOPC开发板 | DSP开发板 | 达芬奇系列DSP开发平台 | DSP仿真器 | DSP实验箱 | DSP专业研究平台 | ARM实验箱系列 |
ARM开发板S3C6410等 | Cortex-A8/ARM11仿真器 | ADSP Blackfin开发板 | FPGA Spartan-3E开发板 |
GEC2410开发套件ARM9 | GEC2440开发套件ARM9 |
泰克 示波器 |
引 言
在嵌入式体系中,为了使体系在非常环境下能主动规复,一样平常都市引入看门狗电路。看门狗电路着实便是一个计数器。当看门狗启动后,计数器开始主动计数,颠末肯定时间计数器溢出就会对CPU孕育产生一个复位信号使体系重启。体系正常运行时,必要在看门狗容许的时间隔断内对看门狗计数器清零也即喂狗,不让复位信号孕育产生。
当前在带Linux操纵体系的嵌入式体系中,由于Linux操纵体系加载时间较长(如lO~30 s),一样平常都高出看门狗的时间隔断(典范值为1.6 s);而要是不采取特别步伐,则体系在Linux操纵体系加载进程中复位,Linux操纵体系永久无法加载告成。为了办理这个题目,通常有两种方案:做一个看门狗的时间隔断更长的硬件电路;修改内核,在内核启动进程中将看门狗设成无效。以上方案无法办理嵌入式体系在操纵体系启动阶段的失效题目,低落了体系可靠性。
本文提出了一种嵌入式体系全程喂狗战略及实现要领,从体系上电、引导步伐(Bootloader)、操纵体系内核直至应用阶段都启用看门狗。实行表明,该要领大略可行,本钱较低,在嵌入式体系的全进程中都可以实现喂狗战略,进步了体系可靠性。
1 体系总体计划
采取IMP706芯片构成硬件看门狗电路(看门狗的时间隔断为1.6 s),在操纵体系步伐(包括Bootloader)和应用步伐中插入喂狗步伐,这些喂狗步伐运行时间隔断小于看门狗的时间隔断(本计划选为1 s)。如许做可以包管:要是体系正常事变,体系可以在小于看门狗的时间隔断内不绝举行喂狗举措,硬件看门狗的计数器不绝清零,不孕育产生复位信号;要是体系非正常事变,喂狗举措失效,硬件看门狗的计数器在1.6 s后溢出,对CPU孕育产生复位信号使体系重启。
1.1 看门狗电路计划
图1为看门狗电路原理,采取IMP706芯片构成硬件看门狗电路,通过电平转换器件74AVClT45,硬件看门狗器件的ST脚与中间处理惩罚器(CPU)的GPIO3脚相连。看门狗器件的PRST脚与IN脚接到复位开关,RST脚接到CPU的RESET脚,当复位开关被触动或看门狗器件的计数器溢出时,看门狗器件的RST脚输出复位信号给CPU的RESET脚,CPU复位重启。
1.2 喂狗战略及实现
1.2.1 Bootloader阶段
在Boot1oader阶段(本计划采取U—boot,但不限于此),喂狗战略是在Bootloader的步伐中差别位置插入喂狗步伐。详细做法是:由于Bootoader第一阶段的启动不会高出1.6 s,因此只需在Bootoader的第二阶段,如Flash读写、CRC校验、循环等待等处,插入喂狗代码。喂狗代码采取直接置位中间处理惩罚器的GPIO3状态寄存器的方法举行。
起首在特定平台的定义头文件include/conffigs/xxx.h中参加看门狗的宏定义:
在lib_generic下的CRC校验阶段代码crc32.c中参加如下代码,实现CRC校验阶段喂狗:
1.2.2 Linux内核阶段
在Linux内核加载阶段(采取MontaVista Linux操纵体系,但不限于此),喂狗战略是在Linux内核步伐的差别位置插入喂狗步伐。详细做法是:起首在Linux内核阶段1的内核解压缩步伐、RTC驱动加载步伐、GPIO驱动加载步伐得当代码处插入喂狗代码,喂狗代码以直接取反中间处理惩罚器的GPIO3状态寄存器的方法举行;在Linux内核阶段2的Watchdog驱动加载步伐得当代码处插入喂狗代码,喂狗代码调用GPIO驱动,GPIO驱动内含取反中间处理惩罚器的GPIO3状态寄存器的操纵;在Linux内核阶段3的内核加载根文件体系步伐、init步伐的得当代码处调用Linux的Watchdog驱动,Watchdog驱动内含取反中间处理惩罚器的GPIO3状态寄存器的操纵。
以上内核阶段的分别因此GPIO及Watchdog驱动的加载为标记的。GPIO驱动加载之前为内核阶段1,GPIO驱动加载之后至Watchdog驱动加载之前为内核阶段2,Watchdog驱动加载之后为内核阶段3。
下面示例阐明内核解压缩asm/arch/boot/compressed.c中喂狗的实当代码:
从以上代码可以看出,它是内核阶段l喂狗的典范要领,是直接取反GPIO3状态寄存器的。
下面示例阐明内核阶段2的喂狗要领(仅以加载RTC驱动为例):起首让RTC驱动中包括GPIO的头文件,然后在读取RTC当前值的函数中调用GPIO驱动举行喂狗。
为了可以或许在内核阶段3调用Watchdog驱动举行喂狗,必要在Watchdog驱动中导出喂狗函数以供内核阶段3利用。Watchdog驱动喂狗也是调用GPIO驱动实现的,但Watchdog驱动一旦加载完成,以后的喂狗都通过调用Watchdog驱动完成。
1.2.3 步伐运行阶段
图2为多线程应用步伐运行阶段喂狗要领。在主步伐中起首创建一个监控线程,它的优先级高于其他线程。监控线程在其他被监控的线程正常事变的环境下,肯定时间内对看门狗举行喂狗操纵,喂狗操纵通过调用Watch—dog驱动来完成。要是某个线程出现妨碍,监控线程就不实行喂狗操纵,也就到达这个线程出现妨碍时体系主动重启的目标。要是监控线程自身出现妨碍,不克不及及时实行喂狗操纵,看门狗也主动复位重启。详细做法是,主步伐起首启动监控线程,然后依次启动N个被监控的线程,每一线程内都设置一计数器。被监控的线程中起首对线程内的计数器初始化为O,在各个线程主循环中,对相应的计数器实行加1操纵。监控任务起首启动看门狗,进入循环。每隔M秒对各线程内的计数器举行查验,在M秒内每隔1 s要对看门狗喂狗,不然体系就会复位重启。查问N个计数器值是否为0,要是全都大于0,则阐明映射担当监控的线程正常运行,然后对看门狗喂狗,并将N个计数器值清零。要是有恣意一个计数器值为O,检测到映射担当监督的线程出现妨碍必要重启,这时不同错误看门狗喂狗,使得体系复位重启。
以下示例阐明在应用中怎样调用Watchdog驱动实现喂狗:
总之,在体系差别阶段,由于体系调用和封装程度差别,看门狗的喂狗实现要领也差别:在Bootloader阶段,直接取反中间处理惩罚器的GPIO3的状态寄存器;在Linux内核阶段1,采取取反中间处理惩罚器的GPIO3的状态寄存器的要领举行;在Linux内核阶段2,采取调用GPIO的驱动的要领举行;在Linux内核阶段3,采取调用Watchdog驱动的要领举行;在应用步伐运行阶段,应用步伐中的喂狗步伐采取调用Watchdog驱动的要领举行,如图3所示。
2 实行结果
我们在公司研发的智能视频阐发器项目中应用了本要领。该阐发器采取TI DaVinci系列DSP芯片(TMS320DM6446)为CPU,用Monta Vista Linux作为操纵体系。操纵体系启动时间约为20~30 s。采取本要领是为了包管体系在全进程中都能得到有效的失效规复。在振荡波抗扰度、电压颠簸与闪烁、静电放电、电快速瞬变脉冲群等EMC兼容性测试中,当各强度指标高出配置EMC兼容性计划强度时,体系失效,利用这种方法可以测试本要领在硬件失效时的结果。以静电放电为例,计划放电等级为±6 kV(我们取±7 kV的强度等级),配置上电后,分别在1~30 s内每隔5 s及在120 s处举行静电放电测试,经观察配置都可以实时规复。
对软件失效时本要领结果的测试,采取妨碍植入脚本的主动方法及体系永劫间运行的被动方法举行测试。最闭幕果表明,配置在失效后可实时规复。
综上所述,本全程喂狗的要领能确保体系在任一阶段出现软件或硬件妨碍时都能复位重启。
结 语
本文提出了一种嵌入式体系全程喂狗战略,包括硬件电路计划和软件实现要领。该要领有如下特点:看门狗电路大略,硬件只需一块看门狗芯片,不需巨大的外围逻辑电路,本钱较低;体系全进程启用看门狗,确保体系在任一阶段出现软件或硬件妨碍都能复位重启,体系可靠性得到进步。
博航网 www.broadon.net 版权所有
京ICP备10051899号-2 京公网安备110108006479号