tag 标签: ipc

相关帖子
相关博文
  • 热度 4
    2022-11-14 14:48
    947 次阅读|
    0 个评论
    你知道IPC二级和IPC三级有什么区别吗?两者对PCB产品的影响又是什么呢?本文中,小编将告诉你有哪些不同,以及各自包含哪些验收标准。 IPC二级产品,即专用服务类电子产品,包括通讯设备、复杂的工商业设备和高性能、长寿命测量仪器等 。IPC二级的标准明确了,这类产品在一般使用环境下,都不应发生故障。 而 IPC三级产品,即高性能电子产品,包括能持续运行的高可靠、长寿命军用、民用设备 。这类产品在使用过程中绝对不允许发生中断故障,同时在恶劣的环境下,也要确保设备的可靠的启动和运行。例如医疗救生设备和所有的军事装备系统。 结语: 当您收到IPC二级板子,不清楚验收及判定标准的时候,就可以根据上表中的参数进行一一比对,快速判定电路板是否真正做到了IPC二级标准。建议收藏上表,以后能用到哦! 【华秋电路】专业1-32层板制造商,为您提供PCB/SMT/BOM配单一站式服务,同时还为华秋用户提供四层板免费打样、6层板特价服务,欢迎咨询!
  • 热度 8
    2021-10-27 10:14
    3214 次阅读|
    0 个评论
    IPC-J-STD-001GA/A-610GA: J-STD-001G(电气与电子组件的焊接要求)与IPC-A-610G(电子组件的可接受性)的汽车补充标准
    IPC-J-STD-001GA/A-610GA: J-STD-001G(电气与电子组件的焊接要求)与IPC-A-610G(电子组件的可接受性)的汽车补充标准 链接:https://pan.baidu.com/s/1SPH__1ZjlJA7XK1oR4eeFw 密码:qc1k https://share.weiyun.com/VBMb5MU0 本补充标准提供了在J-STD-001G和IPC-A-610G中发布的标准之外使用的要求,和在某些情况下的替代要求。考虑到大批量自动化生产,确保汽车电气和电子组件的焊接在恶劣环境下的可靠性。全文共148页。 2020年2月发布。2020年6月翻译。
  • 热度 21
    2016-5-31 13:00
    1369 次阅读|
    3 个评论
    进程是程序运行的实例;每个进程可以并发运行多个线程。进程内(线程间)的数据可以共享,但是进程之间并不能互相访问,因为每个进程都维护着自己的text、stack、heap等等,它们的地址对其他进程不可见。 除了使用文件,还有其他几种方法可以实现进程间的数据共享。它们各自有各自的特点,适用于不同的应用场景。 (* 这里不涉及到网络套接字。) Pipes ================================ 管道通信,是Unix系统里非常古老的通信形式。它有两个限制:  * 半双工(某些系统提供全双工);  * 通信的进程必须有共同的ancester。 管道的应用非常常见,比如当我们在终端输入管道命令时,shell会为每个命令建立一个进程,并且在前一个命令的输出和后一个命令的输入之间建立管道通信。 每个进程有两个管道口,一个用作输入,一个用作输出。如果这个进程fork子进程,那么子进程同样具有两个管道口。父进程关掉自己的输入口,子进程关掉自己的输出口,父进程的输出就可以到达子进程的输入。当然,进程内部也可以使用管道通信(虽然它没什么作用^_^)。 pile函数的原型如下: #include int pipe(int fd ); 其中,fd 为管道输入,fd 为管道输出。 假设在一个种植月季的智能温室里,控制中心的电脑上运行着这样一个应用程序,名为RoseGarden,它启动多个进程,分别执行不同的任务,比如温度调节、光线调节、水分调节、肥料施用…… 程序如下: #include iostream #include unistd.h #include memory.h #include stdio.h #include stdlib.h #include sys/stat.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h using namespace std; int main() {     cout "****************************" endl;     cout "******** RoseGarden ********" endl;     cout "****************************" endl;     int fd ;     if (pipe(fd) 0) {         cerr "Error: pipe." endl;         return -1;     }     pid_t pid;     if ((pid = fork()) 0) {         cerr "Error: fork." endl;         return -1;     } else if (pid == 0) {         close(fd );         cout " Start." endl;         char data ;         string str;         while (1) {             memset(data, 0, sizeof(data));             read(fd , data, sizeof(data));             str = " R: " + string(data);             cout str endl;         }     } else {         close(fd );         int n = 0;         string str;         while (1) {             str = "RoseGarden " + to_string(n++) + " piping.";             write(fd , str.data(), str.size());             sleep(1);         }     }     return 0; } 执行结果: $ ./RoseGarden **************************** ******** RoseGarden ******** **************************** Start. R: RoseGarden 0 piping. R: RoseGarden 1 piping. R: RoseGarden 2 piping. R: RoseGarden 3 piping. R: RoseGarden 4 piping. R: RoseGarden 5 piping. 这说明父进程RoseGarden的数据通过管道,到达了子进程Water中。 如果将pipe的文件描述符duplicate到标准输入/输出上,会发生非常有趣的事情。在文件IO中,dup函数用来复制文件描述符,函数原型如下: #include int dup(int fd); int dup2(int fd, int fd2); 使用dup函数,那么其返回值和fd会指向内核中的同一个文件table,因此不论是操作其返回值还是fd,修改的是同一个文件。使用dup2函数,那么fd2会关闭自己(如果它已打开),然后指向fd的文件table。 将代码修改如下: if ((pid = fork()) 0) {     cerr "Error: fork." endl;     return -1; } else if (pid == 0) {     close(fd );     cout " Start." endl;     if (fd != STDIN_FILENO) {         if (dup2(fd , STDIN_FILENO) != STDIN_FILENO) {             cerr " Error: dup2." endl;             exit(1);         }         close(fd );     }     if (execlp("more", "more", (char *)0) 0) {         cerr " Error: execlp." endl;         exit(1);     } } else {     close(fd );     int n = 0;     string str;     while (1) {         str = "RoseGarden " + to_string(n++) + " piping.\r\n";         for (int i = 0; i 10; i++)             str += to_string(i) + " ++++++++++++\r\n";         write(fd , str.data(), str.size());         sleep(1);     } } 程序执行的结果: $ ./RoseGarden **************************** ******** RoseGarden ******** **************************** Start. RoseGarden 0 piping. 0 ++++++++++++ 1 ++++++++++++ 2 ++++++++++++ 3 ++++++++++++ 4 ++++++++++++ 5 ++++++++++++ 6 ++++++++++++ 7 ++++++++++++ 8 ++++++++++++ 9 ++++++++++++ RoseGarden 1 piping. 0 ++++++++++++ 1 ++++++++++++ 2 ++++++++++++ 3 ++++++++++++ 4 ++++++++++++ 5 ++++++++++++ 6 ++++++++++++ --More-- 这说明,父进程往pipe里面写的数据,由pipe的read端接收。此时more命令读取的STDIN_FILENO的数据,实际上就是读取管道的数据。此时more的命令,比如s、d、q……有效。 另外,虽然管道是单向的,我们可以建立两条管道,实现双向通信功能。 其实,大部分我们要实现的功能是类似的,比如创建一条管道、fork一个子进程、关闭不用的管道ends、exec一个命令、等待命令结束……我们可以使用popen函数,处理这些类似的功能。它的函数原型为: #include FILE *popen(const char *cmdstring, const char *type); int pclose(FILE *fp); 因此之前的程序可以大大的被简化,如下所示: #include iostream #include unistd.h #include memory.h #include stdio.h #include stdlib.h #include sys/stat.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h using namespace std; int main() {     cout "****************************" endl;     cout "******** RoseGarden ********" endl;     cout "****************************" endl;     FILE *fp;     if ((fp = popen("more", "w")) == NULL) {         cerr "Error: popen." endl;         exit(1);     }     int n = 0;     string str;     cout "Start writing pipe: " endl;     while (1) {         str = "RoseGarden " + to_string(n++) + " piping.\r\n";         for (int i = 0; i 10; i++)             str += to_string(i) + " ++++++++++++\r\n";         fprintf(fp, str.data());         fflush(fp);         sleep(1);     }     return 0; } ps,这里的fp是文件stream,因此别忘了fflush。 FIFOs ================================ FIFOs也被称为named pipes。 Unnamed pipes只能用在有相同ancestor的进程之间,就是说创建这个pipe的进程必须是同一个。 FIFOs也是文件。 FIFO的实验在终端下进行,首先在终端1号上执行: $ mkfifo fifo1 $ cat fifo1 然后在终端2号上执行: $ echo "hello world" fifo1 就会发现终端1号上打印: $ cat fifo1 hello world 这说明终端2号往fifo1里面写入的数据,被终端1号读取到了。 FIFOs在终端里的作用非常大,它和之前的pipe一起,可以实现各种命令的组合。 XSI IPC: Message Queues ================================ 消息队列是消息组成的链表,它存储在内核中,由一个identifier引用。  * 《Unix环境高级编程》的作者,是有多不喜欢消息队列?以至于隔一会儿就把它批一顿,而且完全没有给出它的应用example,另外在最末尾还建议“we come to the conclusion that we shouldn't use them for new applications”。  * 既然这样,就不做练习了!直接进入下一节吧。 XSI IPC: Semaphores ================================ 信号量其实不是用于进程间通信的,它是一个counter,用来保护进程间的共享数据。  * 同上。需要使用信号量的时候,再考虑考虑mutex和record locking。  * 不做练习!直接进入下一节。 XSI IPC: Shared Memory ================================ 共享内存是最快速的IPC方法。 假设有这样一个应用场景:RoseGarden每隔一小时拍摄一张照片,放置在共享内存中,供另外一个进程PictureDraw使用。由于照片的体积很大,因此拷贝照片耗费的时间太太,共享内存是非常合适的解决方法。 代码如下: #include iostream #include unistd.h #include memory.h #include stdio.h #include stdlib.h #include sys/stat.h #include sys/types.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h using namespace std; #define SHM_SIZE    4000000 int main() {     cout "****************************" endl;     cout "******** RoseGarden ********" endl;     cout "****************************" endl;     pid_t pid;     if ((pid = fork()) 0) {         cerr "Error: fork." endl;         exit(1);     } else if (pid == 0) {         cout " Start." endl;         int shmid;         void *shmptr;         if ((shmid = shmget(IPC_PRIVATE, SHM_SIZE, 0600)) 0) {             cerr "Error: shgmget." endl;             exit(1);         }         if ((shmptr = shmat(shmid, 0, 0)) == (void *)-1) {             cerr "Error: shmptr." endl;             exit(2);         }         cout " Shared-Memory start at " shmptr endl;         cout " shmid = " shmid endl;         if (shmctl(shmid, IPC_RMID, 0) 0) {             cerr "Error: shmctl." endl;             exit(1);         }     } else {     }     return 0; } 执行结果: $ ./RoseGarden **************************** ******** RoseGarden ******** **************************** Start. Shared-Memory start at 0x7fd5d7bb3000 shmid = 11075601
  • 热度 13
    2013-1-5 22:26
    6079 次阅读|
    9 个评论
    文件见附件。    
  • 热度 18
    2010-11-27 12:30
    2456 次阅读|
    3 个评论
    ● IPC /EIA J-STD-002A组件引线、端子、焊片、接线柱及导线可焊性试验 ● IPC /EIA J-STD-026倒装 芯片 用 半导体 设计标准 ● IPC /EIA J-STD-028倒装芯版面及 芯片 凸块结构的性能标准 ● IPC /JEDEC J-STD-020A非密封固态 表面贴装 器件湿度/再流焊敏感度分类 ● IPC /JEDEC J-STD-033对湿度、再流焊敏感表贴装器件的处置、包装、发运 和使用 ● IPC /JEDEC J-STD-035非气密 封装 电子组件用声波显微镜 ● IPC /JPCA-2315高密度互连与微导通孔设计导则 ● IPC /JPCA-4104高密度互连(HDI)及微导通孔材料规范 ● IPC /JPCA-6202单双面挠性印制板性能手册 ● IPC /JPCA-6801积层/高密度互连的术语和定义、试验方法与设计例 ● IPC -1131印制板印制造商用信息技术导则 ● IPC -1902/IEC 60097印制电路网格体系 ● IPC -2221印制板设计 通用 标准(代替 IPC -D-275)(包括修改1) ● IPC -2222刚性有机印制板设计分标准(代替 IPC -D-275) ● IPC -2223挠性印制板设计分标准(代替 IPC -D-249) ● IPC -2224 PC卡用印制电路板分设计分标准 ● IPC -2225有机多 芯片 模块(MCM-L)及其组装件设计分标准 ● IPC -2511A产品制造资料及其传输方法学的 通用 要求 ● IPC -2524印制板制造数据质量定级体系 ● IPC -2615印制板尺寸和公差 ● IPC -3406 表面贴装 导电胶使用指南 ● IPC -3408各向异性导电胶膜的一般要求 ● IPC -4101刚性及多层印制板用基材规范 ● IPC -4110印制板用纤维纸规范及性能确定方法 ● IPC -4121多层印制板用芯板结构选择导则(代替 IPC -CC-110A) ● IPC -4130E玻璃非织布规范及性能确定方法 ● IPC -4411聚芳基酰胺非织布规范及性能确定方法 ● IPC -4562印制线路用金属箔(代替 IPC -MF-150F) ● IPC -6011印制板 通用 性能规范(代替 IPC -RB-276) ● IPC -6012A刚性印制板的鉴定与性能规范(包括修改1) ● IPC -6013挠性印制板的鉴定与性能规范(包括修改1) ● IPC -6015有机多 芯片 模块(MCM-L)安装及互连结构的鉴定与性能规范 ● IPC -6016高密度互连(HDI)层或印制板的鉴定与性能规范 ● IPC -6018微波成品印制板的检验和测试(代替 IPC -HF-318A) ● IPC -7095球栅数组的设计与组装过程的实施 ● IPC -7525网版设计导则 ● IPC -7711电子组装件的返工 ● IPC -7721印制板和电子组装的修复与修正 ● IPC -7912印制板和电子组装件的DPMO(每百万件缺陷数)和制造指数的计 算 ● IPC -9191实施统计程控(SPC)的 通用 导则 ● IPC -9201表面绝缘电阻手册 ● IPC -9501电子组件的印制板组装过程模拟评价( 集成电路 预处理) ● IPC -9502电子组件的印制板组装焊接过程导则 ● IPC -9503非 集成电路 组件的湿度敏感度分级 ● IPC -9504非 集成电路 组件的组装过程模拟评价(非 集成电路 组件预处理) ● IPC -A-142印制板用经处理聚芳酰胺纤维编织物规范 ● IPC -A-311照相版制作和使用的程控 ● IPC -A-600F印制板验收条件 ● IPC -A-610C印制板组装件验收条件 ● IPC -AC-62A锡焊后水溶液清洗手册 ● IPC -AI-641A焊点自动检验系统 用户 指南 ● IPC -BP-421带压接触点的刚性印制板母板 通用 规范 ● IPC -C-406表面安装连接器设计及应用导则 ● IPC -CA-821导热胶粘剂 通用 要求 ● IPC -CA-821导热粘接剂 通用 要求 ● IPC -CC-830A印制板组装件用电绝缘复合材料的鉴定与性能(包括修改1) ● IPC -CF-148A印制板用涂树脂金属箔 ● IPC -CF-152B印制线路板复合金属材料规范 ● IPC -CH-65A印制板及组装件清洗导则 ● IPC -CI-408使用无焊接表面安装连接器设计及应用导则 ● IPC -CM-770D印制板组件安装导则 ● IPC -D-279高可靠表面安装印制板组装件技术设计导则 ● IPC -D-316高频设计导则 ● IPC -D-317A采用高速技术电子 封装 设计导则 ● IPC -D-322使用标准在制板尺寸的印制板尺寸选择指南 ● IPC -D-325A印制板、印制板组装件及其附图的文件要求 ● IPC -D-326制造印制板组装件的资料要求 ● IPC -D-356A裸 基板 电检测的资料格式 ● IPC -D-859厚膜多层混合电路设计标准 ● IPC -DD-135多 芯片 组件内层有机绝缘材料的鉴定试验 ● IPC -DR-570A钻柄直径1/8英寸的印制板用硬质合金钻头 通用 规范 ● IPC -DW-424封入式分立布线互连板 通用 规范 ● IPC -DW-425A印制板分立线路的设计及成品要求(包括修改1) ● IPC -DW-426分立线路组装规范 ● IPC -EG-140印制板用经处理E玻璃纤维编织物规范(包括修改1及修改2) ● IPC -ET-652未组装印制板电测试要求和指南 ● IPC -FA-251单面和双面挠性电路组装导则 ● IPC -FC-231C挠性印制线路用挠性绝缘基底材料(包括规格单修改) ● IPC -FC-232C挠性印制线路和挠性粘结片用涂粘接剂绝缘薄膜(包括规格单 修改) ● IPC -FC-234单面和双面印制电路压敏胶粘剂组装导则 ● IPC -FC-241C制造挠性印制线路板用挠性覆箔绝缘材料(包括规格单修改) ● IPC -HDBK-001已焊接电子组装件的要求手册与导则 ● IPC -HM-860多层混合电路规范 ● IPC -L-125A高速高频互连用覆箔或未覆箔塑料基材规范 ● IPC -MC-324金属芯印制板性能规范 ● IPC -MC-790多 芯片 组件技术应用导则 ● IPC -ML-960多层印制板用预制内层在制板的鉴定与性能规范 ● IPC -NC-349钻床和铣床用计算机数字元控制格式
相关资源