功能安全,贯穿从设计前/设计中/设计后三个阶段。
可以看到,在SIL2/ASIL B-C,最多会有一人死亡。
可以看到,设计MCU/CPU,要想加入功能安全属性,像memory,bus,clock,voltage,peripherals这些地方,需要很多工作要做的,如memory中的ECC/Parity校验,均是功能安全要求的。
可以看到,从设计目标,设计实现,到结果验证,呈现出一个V形架构。
缩写词 | 全称 |
---|---|
DFA | Dependent Failure Analysis(依赖失效分析) |
DIA | Development Interface Agreement(开发接口协议) |
DIR | Development Interface Report(开发接口报告) |
ECC | Error Correction Code(错误校正编码) |
FMEA | Failure Mode and Effects Analysis(失效模式与效果分析) |
FMEDA | Failure Modes Effects and Diagnostics Analysis(失效模式效果与诊断分析) |
FSA | Functional Safety Assessment Report(功能安全评估报告) |
FTTI | Fault Tolerant Time Interval(容错间隔) |
FTA | Fault Tree Analysis(错误树分析) |
HE | Hard Error(硬件错误) |
LFM | Latent Fault Metric(潜在故障矩阵) |
MPF,D | Multiple-Point Fault detected(多点故障) |
MPF,L | Multiple-Point Fault latent(潜伏多点故障) |
MPF,P | Multiple-Point Fault perceived(可感知的多点故障) |
NSR | Non Safety Related(非安全相关) |
PMHF | Probabilistic Metric For Random Hardware Faults(随机硬件故障的概率度量) |
RF | Residual Fault(残余故障) |
SAN | Safety Application Note(安全应用说明) |
SC | Safety Case Summary(安全案例摘要) |
SE | Soft Error(软件错误) |
SEooC | Safety Element out of Context(脱离上下文的安全元素) |
SPF | Single-Point Fault(单点故障) |
SPFM | Single Point Fault Metric(单点故障矩阵) |
SRS | Safety Requirement Specification(安全要求规范) |
在行首用符号“#”。
有多种方法,比较喜欢以下这种方法:
:<<!
......
!
例:
...
# Tarballs provided with the PoC
### comment for debug
:<<!
# CR7 loade
tar xf ${PKG_RELEASE}/src/cr7-loader/cr7-loader*.tar.gz -C ./
mv cr7-loader* cr7-loader
# CR7 vlib
tar xf ${PKG_RELEASE}/src/cr7-vlib/cr7-vlib*.tar.gz -C ./
mv cr7-vlib* cr7-vlib
!
# Git repos plus patches
...
定义函数:int readlink(const char *path, char *buf, size_t bufsiz); 函数说明:readlink()会将参数path的符号连接内容到参数buf所指的内存空间。若参数bufsiz小于符号连接的内容长度,过长的内容会被截断
返回值:执行成功则传符号连接所指的文件路径字符串,失败返回-1, 错误代码存于errno。
例二:
#include <stdio.h>
#include <unistd.h>
char * get_exe_path( char * buf, int count)
{
int i;
int rslt = readlink("/proc/self/exe", buf, count - 1);
if (rslt < 0 || (rslt >= count - 1))
{
return NULL;
}
buf[rslt] = '\0';
for (i = rslt; i >= 0; i--)
{
printf("buf[%d] %c\n", i, buf[i]);
if (buf[i] == '/')
{
buf[i + 1] = '\0';
break;
}
}
return buf;
}
int main(int argc, char ** argv)
{
char path[1024];
printf("%s\n", get_exe_path(path, 1024));
return 0;
}
U = Q/C
MOS管G/S极之间电容很小,当静电少量电荷接触上时,就会产生高压,从而击穿MOS管
在输入端添加保护二极管,其通时电流容限一般为1mA,在可能出现过大瞬态输入电流(超过10mA)时,应串接输入保护电阻。
在G极接电阻到地,阻值10~20K。作用:泄漏电荷,提供偏置电压。
参考链接
murata的部分贴片电感是有极性标志的:
这里的极性标志,表示的是安装方向/位置。
存在于murata的以下系列中:
-(薄膜)LQP_T series
-(叠层)multilayer-type LQG series
-(绕线)LQH inductors
由于电感的结构不是完美对称,所以,相应不同的安装方式,其属性也会改变。
极性点的目的是,保证使用其真正的值,下图示例,不同安装方向,电感值得变化。
有同事问了我一个问题,他选择了1206的电阻100欧姆,1206封装的电阻,额定功率是1/4W。
经过实际测量发现,当前电阻压降12.5V。
可以计算得到实际功率是:P = 12.5*12.5/100 = 1.5625(W)
已经远远超过1/4W,为什么没有烧坏电阻呢?
这里,需要澄清一个概念:
“电阻器的额定功率:
指电阻在正常气候条件下(如大气压、环境温度等),长时间连续安全工作可耗散或可承受的最大功率。
一般我们取70℃静止自由空气中为额定功率的最大工作温度点,电阻额定功率记为P70。
电阻实际使用时,需要留有一定的功率余量,建议为额定功率的一半。”
下图摘自国巨贴片电阻规格书:
从这里可以看出,原因所在:
额定功率是在70℃测量得到的。
而同事的测量环境温度也就20℃左右,距离70℃还很远。
那么,当前20℃时,应该能承受多大功率呢?
我认为可以简单估算,下图,沿着斜坡延长,交于20℃的点对应的纵坐标大概就是可以承受的功率。
当然,还有很多因素影响:PCB线路铺铜,PCB散热,是否有风冷,等等。
综上,选择电阻时,一定要仔细,尤其是功率参数,一定要留出余量来,我经常采用的余量是50%~100%。