标签目录:摩登3登录网址

摩登3测试路线_最强干货!CAN总线看不懂是不可能的!

CAN(Controller Area Network)即控制器局域网,是一种能够实现分布式实时控制的串行通信网络。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel) CAN有很多优秀的特点,使得它能够被广泛的应用。 比如: 传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: CAN总线标准 CAN总线标准只规定了物理层和数据链路层,需要用户自定义应用层。不同的CAN标准仅物理层不同。 CAN收发器负责逻辑电平和物理信号之间的转换。 将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。 CAN标准有两个,即IOS11898和IOS11519,两者差分电平特性不同。 高低电平幅度低,对应的传输速度快; *双绞线共模消除干扰,是因为电平同时变化,电压差不变。 物理层 CAN有三种接口器件 多个节点连接,只要有一个为低电平,总线就为低电平,只有所有节点输出高电平时,才为高电平。所谓”线与”。 CAN总线有5个连续相同位后,就插入一个相反位,产生跳变沿,用于同步。从而消除累积误差。 和485、232一样,CAN的传输速度与距离成反比。 CAN总线,终端电阻的接法: 为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线 数据链路层 CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。 数据帧用来节点之间收发数据,是使用最多的帧类型;远程帧用来接收节点向发送节点接收数据;错误帧是某节点发现帧错误时用来向其他节点通知的帧;过载帧是接收节点用来向发送节点告知自身接收能力的帧;用于将数据帧、远程帧与前面帧隔离的帧。 数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B) 帧起始 帧起始由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始; 帧结束由7个隐形位(高电平)组成。 仲裁段 CAN总线是如何解决多点竞争的问题? 由仲裁段给出答案。 CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。 帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。 控制段 共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成。 数据段 为0-8字节,短帧结构,实时性好,适合汽车和工控领域; CRC段 CRC校验段由15位CRC值和CRC界定符组成。 ACK段 当接收节点接收到的帧起始到CRC段都没错误时,它将在ACK段发送一个显性电平,发送节点发送隐性电平,线与结果为显性电平。 远程帧 远程帧分为6个段,也分为标准帧和扩展帧,且RTR位为1(隐性电平) CAN是可靠性很高的总线,但是它也有五种错误。 CRC错误:发送与接收的CRC值不同发生该错误; 格式错误:帧格式不合法发生该错误; 应答错误:发送节点在ACK阶段没有收到应答信息发生该错误; 位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误; 位填充错误:通信线缆上违反通信规则时发生该错误。 当发生这五种错误之一时,发送节点或接受节点将发送错误帧 为防止某些节点自身出错而一直发送错误帧,干扰其他节点通信,CAN协议规定了节点的3种状态及行为 过载帧 当某节点没有做好接收的”准备”时,将发送过载帧,以通知发送节点。 帧间隔 用来隔离数据帧、远程帧与他们前面的帧,错误帧和过载帧前面不加帧间隔。 构建CAN节点 构建节点,实现相应控制,由底向上分为四个部分:CAN节点电路、CAN控制器驱动、CAN应用层协议、CAN节点应用程序。 虽然不同节点完成的功能不同,但是都有相同的硬件和软件结构。   CAN收发器和控制器分别对应CAN的物理层和数据链路层,完成CAN报文的收发;功能电路,完成特定的功能,如信号采集或控制外设等;主控制器与应用软件按照CAN报文格式解析报文,完成相应控制。 CAN硬件驱动是运行在主控制器(如P89V51)上的程序,它主要完成以下工作:基于寄存器的操作,初始化CAN控制器、发送CAN报文、接收CAN报文; 如果直接使用CAN硬件驱动,当更换控制器时,需要修改上层应用程序,移植性差。在应用层和硬件驱动层加入虚拟驱动层,能够屏蔽不同CAN控制器的差异。 一个CAN节点除了完成通信的功能,还包括一些特定的硬件功能电路,功能电路驱动向下直接控制功能电路,向上为应用层提供控制功能电路函数接口。特定功能包括信号采集、人机显示等。 CAN收发器是实现CAN控制器逻辑电平与CAN总线上差分电平的互换。实现CAN收发器的方案有两种,一是使用CAN收发IC(需要加电源隔离和电气隔离),另一种是使用CAN隔离收发模块。推荐使用第二种。 CAN控制器是CAN的核心元件,它实现了CAN协议中数据链路层的全部功能,能够自动完成CAN协议的解析。CAN控制器一般有两种,一种是控制器IC(SJA1000),另一种是集成CAN控制器的MCU(LPC11C00)。 MCU负责实现对功能电路和CAN控制器的控制:在节点启动时,初始化CAN控制器参数;通过CAN控制器读取和发送CAN帧;在CAN控制器发生中断时,处理CAN控制器的中断异常;根据接收到的数据输出控制信号;   接口管理逻辑:解释MCU指令,寻址CAN控制器中的各功能模块的寄存器单元,向主控制器提供中断信息和状态信息。 发送缓冲区和接收缓冲区能够存储CAN总线网络上的完整信息。 验收滤波是将存储的验证码与CAN报文识别码进行比较,跟验证码匹配的CAN帧才会存储到接收缓冲区。 CAN内核实现了数据链路的全部协议。 CAN协议应用层概述 CAN总线只提供可靠的传输服务,所以节点接收报文时,要通过应用层协议来判断是谁发来的数据、数据代表了什么含义。常见的CAN应用层协议有:CANOpen、DeviceNet、J1939、iCAN等。 CAN应用层协议驱动是运行在主控制器(如P89V51)上的程序,它按照应用层协议来对CAN报文进行定义、完成CAN报文的解析与拼装。例如,我们将帧ID用来表示节点地址,当接收到的帧ID与自身节点ID不通过时,就直接丢弃,否则交给上层处理;发送时,将帧ID设置为接收节点的地址。 CAN收发器 SJA1000的输出模式有很多,使用最多的是正常输出模式,输入模式通常不选择比较器模式,可以增大通信距离,并且减少休眠下的电流。 收发器按照通信速度分为高速CAN收发器和容错CAN收发器。 同一网络中要使用相同的CAN收发器。 CAN连接线上会有很多干扰信号,需要在硬件上添加滤波器和抗干扰电路   也可以使用CAN隔离收发器(集成滤波器和抗干扰电路)。 CAN控制器与MCU的连接方式 SJA1000可被视为外扩RAM,地址宽度8位,最多支持256个寄存器 #define REG_BASE_ADDR 0xA000 // 寄存器基址unsigned char *SJA_CS_Point = (unsigned char *) REG_BASE_ADDR ;// 写SJA1000寄存器void WriteSJAReg(unsigned char RegAddr, unsigned char Value) {*(SJA_CS_Point + RegAddr) = Value;return;}// 读SJA1000寄存器unsigned char ReadSJAReg(unsigned char RegAddr) { return (*(SJA_CS_Point + RegAddr));}…

摩登3注册网站_Linux内核信号量

概念 Linux内核的信号量在概念和原理上和用户态的System V的IPC机制信号量是相同的,不过他绝不可能在内核之外使用,因此他和System V的IPC机制信号量毫不相干。 如果有一个任务想要获得已经被占用的信号量时,信号量会将其放入一个等待队列(它不是站在外面痴痴地等待而是将自己的名字写在任务队列中)然后让其睡眠。 当持有信号量的进程将信号释放后,处于等待队列中的一个任务将被唤醒(因为队列中可能不止一个任务),并让其获得信号量。这一点与自旋锁不同,处理器可以去执行其它代码。 应用场景 由于争用信号量的进程在等待锁重新变为可用时会睡眠,所以信号量适用于锁会被长时间持有的情况;相反,锁被短时间持有时,使用信号量就不太适宜了,因为睡眠、维护等待队列以及唤醒所花费的开销可能比锁占用的全部时间表还要长。 举2个生活中的例子: 我们坐火车从南京到新疆需要2天的时间,这个’任务’特别的耗时,只能坐在车上等着车到站,但是我们没有必要一直睁着眼睛等,理想的情况就是我们上车就直接睡觉,醒来就到站(看过《异形》的读者会深有体会),这样从人(用户)的角度来说,体验是最好的,对比于进程,程序在等待一个耗时事件的时候,没有必须要一直占用CPU,可以暂停当前任务使其进入休眠状态,当等待的事件发生之后再由其他任务唤醒,类似于这种场景采用信号量比较合适。 我们有时候会等待电梯、洗手间,这种场景需要等待的时间并不是很多,如果我们还要找个地方睡一觉,然后等电梯到了或者洗手间可以用了再醒来,那很显然这也没有必要,我们只需要排好队,刷一刷抖音就可以了,对比于计算机程序,比如驱动在进入中断例程,在等待某个寄存器被置位,这种场景需要等待的时间往往很短暂,系统开销甚至远小于进入休眠的开销,所以这种场景采用自旋锁比较合适。 关于信号量和自旋锁,以及死锁问题,我们后面会再详细讨论。 使用方法 一个任务要想访问共享资源,首先必须得到信号量,获取信号量的操作将把信号量的值减1,若当前信号量的值为负数,表明无法获得信号量,该任务必须挂起在 该信号量的等待队列等待该信号量可用;若当前信号量的值为非负数,表示能获得信号量,因而能即时访问被该信号量保护的共享资源。 当任务访问完被信号量保护的共享资源后,必须释放信号量,释放信号量通过把信号量的值加1实现,如果信号量的值为非正数,表明有任务等待当前信号量,因此他也唤醒所有等待该信号量的任务。 内核信号量的构成 内核信号量类似于自旋锁,因为当锁关闭着时,它不允许内核控制路径继续进行。然而,当内核控制路径试图获取内核信号量锁保护的忙资源时,相应的进程就被挂起。只有在资源被释放时,进程才再次变为可运行。 只有可以睡眠的函数才能获取内核信号量;中断处理程序和可延迟函数都不能使用内核信号量。 内核信号量是struct semaphore类型的对象,在内核源码中位于include\linux\semaphore.h文件 struct semaphore{    raw_spinlock_t        lock;    unsigned int        count;    struct list_head    wait_list;} 成员 描述 lock 在2.6.33之后的版本,内核加入了raw_spin_lock系列,使用方法和spin_lock系列一模一样,只是参数spinlock_t变为了raw_spinlock_t count 相当于信号量的值,大于0,资源空闲;等于0,资源忙,但没有进程等待这个保护的资源;小于0,资源不可用,并至少有一个进程等待资源 wait_list 内核链表,当前获得信号量的任务会与该成员一起注册到等待的链表中 信号量的API 初始化 DECLARE_MUTEX(name) 该宏声明一个信号量name并初始化他的值为1,即声明一个互斥锁。 DECLARE_MUTEX_LOCKED(name) 该宏声明一个互斥锁name,但把他的初始值设置为0,即锁在创建时就处在已锁状态。因此对于这种锁,一般是先释放后获得。 void sema_init (struct semaphore *sem, int val); 该函用于数初始化设置信号量的初值,他设置信号量sem的值为val。 注意: val设置为1说明只有一个持有者,这种信号量叫二值信号量或者叫互斥信号量。 我们还允许信号量可以有多个持有者,这种信号量叫计数信号量,在初始化时要说明最多允许有多少个持有者也可以把信号量中的val初始化为任意的正数值n,在这种情况下,最多有n个进程可以并发地访问这个资源。 void init_MUTEX (struct semaphore *sem); 该函数用于初始化一个互斥锁,即他把信号量sem的值设置为1。 void init_MUTEX_LOCKED (struct semaphore *sem); 该函数也用于初始化一个互斥锁,但他把信号量sem的值设置为0,即一开始就处在已锁状态。 PV操作 获取信号量(P) void down(struct semaphore * sem); 该函数用于获得信号量sem,他会导致调用该函数的进程睡眠,因此不能在中断上下文(包括IRQ上下文和softirq上下文)使用该函数。该函数将把sem的值减1,如果信号量sem的值非负,就直接返回,否则调用者将被挂起,直到别的任务释放该信号量才能继续运行。 int down_interruptible(struct semaphore * sem); 该函数功能和down类似,不同之处为,down不会被信号(signal)打断,但down_interruptible能被信号打断,因此该函数有返回值来区分是正常返回还是被信号中断,如果返回0,表示获得信号量正常返回,如果被信号打断,返回-EINTR。 int down_trylock(struct semaphore * sem); 该函数试着获得信号量sem,如果能够即时获得,他就获得该信号量并返回0,否则,表示不能获得信号量sem,返回值为非0值。因此,他不会导致调用者睡眠,能在中断上下文使用。 int down_killable(struct semaphore *sem);int down_timeout(struct semaphore *sem, long jiffies);int down_timeout_interruptible(struct semaphore *sem, long jiffies); 释放内核信号量(V) void up(struct semaphore * sem); 该函数释放信号量sem,即把sem的值加1,如果sem的值为非正数,表明有任务等待该信号量,因此唤醒这些等待者。 补充 int down_interruptible(struct semaphore *sem) 这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。 下面是该函数的注释: /*** down_interruptible - acquire the semaphore unless interrupted* @sem: the semaphore to be acquired** Attempts to acquire the semaphore. If no more tasks are allowed to* acquire the semaphore, calling this function will put the task to sleep.* If the sleep is interrupted by a signal, this function will return -EINTR.* If the semaphore is successfully acquired, this function returns 0.*/ 一个进程在调用down_interruptible()之后,如果sem<0,那么就进入到可中断的睡眠状态并调度其它进程运行, 但是一旦该进程收到信号,那么就会从down_interruptible函数中返回。并标记错误号为:-EINTR。 一个形象的比喻:传入的信号量为1好比天亮,如果当前信号量为0,进程睡眠,直到(信号量为1)天亮才醒,但是可能中途有个闹铃(信号)把你闹醒。 又如:小强下午放学回家,回家了就要开始吃饭嘛,这时就会有两种情况:情况一:饭做好了,可以开始吃;情况二:当他到厨房去的时候发现妈妈还在做, 妈妈就对他说:“你先去睡会,待会做好了叫你。” 小强就答应去睡会,不过又说了一句:“睡的这段时间要是小红来找我玩,你可以叫醒我。” 小强就是down_interruptible,想吃饭就是获取信号量,睡觉对应这里的休眠,而小红来找我玩就是中断休眠。 使用可被中断的信号量版本的意思是,万一出现了semaphore的死锁,还有机会用ctrl+c发出软中断,让等待这个内核驱动返回的用户态进程退出。而不是把整个系统都锁住了。在休眠时,能被中断信号终止,这个进程是可以接受中断信号的! 比如你在命令行中输入# sleep 10000,按下ctrl + c,就给上面的进程发送了进程终止信号。信号发送给用户空间,然后通过系统调用,会把这个信号传给递给驱动。信号只能发送给用户空间,无权直接发送给内核的,那1G的内核空间,我们是无法直接去操作的。 内核信号量的使用例程 场景1 在驱动程序中,当多个线程同时访问相同的资源时(驱动中的全局变量时一种典型的共享资源),可能会引发“竞态“,因此我们必须对共享资源进行并发控制。Linux内核中 解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。 在这里插入图片描述 场景2 有时候我们希望设备只能被一个进程打开,当设备被占用的时候,其他设备必须进入休眠。 信号处理示意图 在这里插入图片描述 如上图: 进程A首先通过open()打开设备文件,调用到内核的hello_open(),并调用down_interruptible(),因为此时信号量没有被占用,所以进程A可以获得信号量; 进程A获得信号量之后继续处理原有任务,此时进程B也要通过open()打开设备文件,同样调用内核函数hello_open(),但此时信号量获取不到,于是进程B被阻塞; 进程A任务执行完毕,关闭设备文件,并通过up()释放信号量,于是进程B被唤醒,并得以继续执行剩下的任务, 进程B执行完任务,释放设备文件,通过up()释放信号量 代码如下: #include  #include  #include  #include  #include  #include  #include  static int major = 250;static int minor = 0;static dev_t devno;static struct cdev cdev;static struct class *cls;static struct device *test_device;static struct semaphore sem;static int hello_open (struct inode *inode, struct file *filep){        if(down_interruptible(&sem))//p    {        return -ERESTARTSYS;    }      return 0;}static int hello_release (struct inode *inode, struct file *filep){    up(&sem);//v    return 0;}static struct file_operations hello_ops ={    .open = hello_open,    .release = hello_release,};static int hello_init(void){    int result;    int error;        printk("hello_init \n");    result = register_chrdev( major, "hello", &hello_ops);    if(result < 0)    {        printk("register_chrdev fail \n");        return result;    }    devno = MKDEV(major,minor);    cls = class_create(THIS_MODULE,"helloclass");    if(IS_ERR(cls))    {        unregister_chrdev(major,"hello");        return result;    }    test_device = device_create(cls,NULL,devno,NULL,"test");    if(IS_ERR(test_device ))    {        class_destroy(cls);        unregister_chrdev(major,"hello");        return result;    }    sem_init(&sem,1);    return 0;}static void hello_exit(void){    printk("hello_exit \n");    device_destroy(cls,devno);        class_destroy(cls);    unregister_chrdev(major,"hello");    return;}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("daniel.peng"); 测试程序 test.c #include  #include  #include  #include  main(){    int fd;        printf("before open\n ");        fd = open("/dev/test",O_RDWR);  //原子变量  0    if(fd<0)    {        perror("open fail \n");        return;    }    printf("open ok ,sleep......\n ");        sleep(20);    printf("wake up from sleep!\n ");            close(fd);   //加为1} 编译步骤 1 make 生成 hello.ko 2 gcc test.c -o a 3 gcc test.c -o b…

摩登3新闻554258:_还记得那个「最牛删库跑路事件」的程序员吗?他被判了….

大家应该还记得,在今年 2 月份的时候,国内一则程序员删库的消息传遍了全网。 这则消息刷屏的原因很简单——他的几行代码,直接让上市公司微盟的市值一天之内蒸发超 10 亿元,数百万用户受到直接影响。 可以说,这是国内IT界史上最牛逼的删库跑路案例了。 2月25日,“天降横祸”惨被删库的微盟官方宣称,微盟的业务系统数据库(包括主备)遭遇其公司运维人员的删除。 犯罪嫌疑人为微盟研发中心运维部核心运维人员贺某,其在2月23日晚18点56分通过个人VPN登入公司内网跳板机,对微盟线上生产环境进行了恶意破坏。 后来,当事人贺某被警方刑事拘留,而微盟在腾讯云的协作下,花了七天七夜才找回数据。 再加上客户赔付、数据恢复和加班支出,就高达数千万元。 据悉,微盟成立于 2013 年 4 月,是微信生态的第三方服务商,主要提供在线商城系统、商城小程序等等。 根据 2019 年财报数据显示,微盟的注册商户超 300 万。 删库事件发生后,微盟无数商家的生意被迫停摆,不少商家称,“如果客户数据不能找回,对我们的打击是毁灭性的。” 对于贺某做出如此举动的原因,当时网上也有未经证实的消息传出,称贺某是因为桃色事件才删库。 后来经过警方了解,贺某一直深陷网络贷,还曾经有过轻生行为。 并且春节期间贺某一直没有回家,由于疫情不能外出,只能一个人在房间里单独处了 30 多天,加上本身经济上的困难,就做出了这样的举动。 近日,微盟“删库”主角的判决书在网上公开。 判决书显示,8 月 26  日,上海市宝山区人民法院对该案作出一审宣判,贺某被判处 6 年有期徒刑。  向下滑动可查看全文 案件经过摘录如下: 2020 年 2 月 23 日 18 时 56 分许,贺某 酒后因生活不如意、无力偿还网贷 等个人原因,在其暂住地上海市宝山区逸仙路XXX弄XXX号XXX室,通过电脑连接公司 VPN、登录公司服务器后执行删除任务,将微盟服务器内数据全部删除,导致微盟自 2020 年 2 月 23 日 19 时起瘫痪,300 余万用户(其中付费用户 7 万余户)无法正常使用该公司 SaaS 产品,经抢修于 3 月 3 日 9 时恢复运营(故障时间 8 天 14 个小时)。 截至 2020 年 4 月 30 日,造成微盟公司支付恢复数据服务费、商户赔付费及员工加班报酬等 经济损失共计人民币 2260 余万元。 2020 年 2 月 24 日,贺某在暂住地被公安人员抓获,到案后如实供述了上述犯罪事实。 法院判决摘录如下: 上海市宝山区人民法院认为,贺某违反国家规定,删除计算机信息系统中存储的数据, 造成特别严重的后果 ,其行为已构成破坏计算机信息系统罪,应当依法追究刑事责任。公诉机关指控的犯罪事实清楚,证据确实充分,罪名成立。 贺某如实供述自己的罪行,认罪认罚,可依法从轻处罚。辩护人的相关意见本院予以采纳。依照《中华人民共和国刑法》第二百八十六条第二款、第六十七条第三款、第六十四条、《中华人民共和国刑事诉讼法》第十五条之规定,判决如下: 一、贺某犯破坏计算机信息系统罪, 判处有期徒刑六年 。(刑期从判决执行之日起计算。判决执行以前先行羁押的,羁押一日折抵刑期一日,即自 2020 年 2 月 24 日起至 2026 年 2 月 23 日止。) 二、作案工具笔记本电脑一台依法没收。 今年 8 月 ,微盟发布了 2020 年上半年财报。 财报显示,微盟上半年净亏损为 5.46 亿元,其中删库事件预计赔付 0.87 亿元。 当然,受损的不只是微盟,还有微盟的一众用户,这个数字更加难以计量。 这个跟“段子”一样的事件,在国内造成轰动,也给各大企业敲响了警钟。…

摩登3注册开户_拿下计网协议后,我就是公园里最靓的仔

下面我们就要对不同的协议层进行分类介绍了,我们还是采用自上而下的方式来介绍,这种介绍对读者来说更容易接纳,吸收程度更好。 一般情况下,用户不太在意网络应用程序实际上是按照怎样的机制运行的,但我们是程序员吖,就套用朱伟的一句话说:你觉得计算机网络程序员不了解,你指着互联网用户去了解吗?有内个味儿没? 应用层指的是 OSI 标准模型的第 5、6、7层,也就是会话层、表现层、应用层。 我们介绍的时候都会使用 OSI 标准模型来介绍,因为这样涵盖的层次比较多,这样对于 TCP/IP 模型来说,你也能加深理解。 应用层概念 应用层协议的定义 现如今,越来越多的应用程序利用网络进行通信,这些应用有 Web 浏览器、远程登录、电子邮件、文件传输、文件下载等,应用层的协议正是进行这些行为活动的规则和标准。 应用层协议(application layer protocol) 定义了在不同端系统上的应用程序进程如何相互传递报文。一般来说,会定义如下内容 交换的报文类型:是请求报文还是相应报文 报文字段的解释:对报文中各个字段的详细描述 报文字段的语义:报文各个字段的含义是什么 进程何时、以什么方式发送报文以及响应 应用层体系结构 应用层体系结构 的英文是 Application Architecture,它指的是应用层的结构,一般来说,应用层有两种主流体系结构 客户 – 服务器体系结构 ( client-server architecture ) 对等体系结构 ( P2P architecture ) 下面我们先来聊一下客户 – 服务器体系结构的概念 在客户-服务器体系结构中,有一个总是打开的主机称为 服务器(Server),它提供来自于 客户(client) 的服务。我们最常见的服务器就是 Web 服务器,Web 服务器服务于来自 浏览器 的请求。 当 Web 服务器通过浏览器接收到用户请求后,它会经过一系列的处理把信息或者页面等通过浏览器呈现给应用。这种模式就是客户 – 服务器模式。 有两点需要注意 在客户 – 服务器模式下,通常客户彼此之间是并不互相通信的。 服务器通常具有固定的、周知的 IP 地址可以提供访问。 客户 – 服务器模式通常会出现随着客户数量的急剧增加导致单台服务器无法完成大量客户请求的情况。为此,通常需要配备大量主机的 数据中心(data center) ,用来跟踪所有的用户请求。 于此相反,P2P 也就是对等体系结构对这种数据中心的依赖性很低,因为在 P2P 体系结构中,应用程序在两个主机之间直接通信,这些主机被称为对等方,与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能。常见的 P2P 体系结构的应用有 文件共享、视频会议、网络电话等。 P2P 一个最大的特点就是 扩展性(self-scalability),因为 P2P 网络的一个重要的目标就是让所有的客户端都能提供资源、获取资源,共享带宽,存储空间等。因此,当有更多节点加入且对系统请求增多,整个系统的容量也增大。这是具有一组固定服务器的客户 – 服务器结构不具备的,这也就是 P2P 的扩展性。 进程通信 我们上面说到了两种体系结构,一种是客户 – 服务器模式,一种是 P2P 对等模式。我们都知道一个计算机允许同时运行多个应用程序,在我们看起来这些应用程序好像是同时运行的,那么它们之间是如何通信的呢? 用操作系统的术语来说,进行通信实际上是 进程(process)而不是程序。一个进程可以被认为是运行在端系统中的程序。当多个进程运行在相同的端系统上时,它们使用进程间的通信机制相互通信。进程间的通信规则由操作系统来确定。 进程与计算机网络之间的接口 计算机是庞大且繁杂的,计算机网络也是,应用程序不可能只有一个进程组成,它同样是多个进程共同作用协商运行,然而,分布在多个端系统之间的进程是如何进行通信的呢?实际上,每个进程之间会有一个 套接字(socket) 的软件接口存在,套接字是应用程序的内部接口,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。 通过一个实例来简单类比一下套接字和网络进程:进程可类比一座房子,而它的套接字相当于是房子的门,当一个进程想要与其他进程进行通信时,它会把报文推出门外,然后通过运输设备把报文运输到另外一座房子,通过门进入房子内部使用。 下图是一个通过套接字进行通信的流程图 ‍ ‍ ‍ ‍ ‍ ‍ ‍ 从图可以看到,Socket 属于主机或者服务进程的内部接口,由应用程序开发人员进行控制,两台端系统之间进行通信会通过 TCP 的缓冲区经由网络传输到另一个端系统的 TCP 缓冲区,Socket 从 TCP 缓冲区读取报文供应用程序内部使用。 套接字是建立网络应用程序的可编程接口,因此套接字也被称为应用程序和网络之间的 应用程序编程接口(Application Programming…

摩登3娱乐怎么样?_高德全链路压测:语料智能化演进之路

背景 高德地图作为日活过亿的国民级出行生活服务平台,承载着海量用户服务的是后台的超大规模集群。从用户角度,如果出问题,影响会很大。3机房异地部署造成线上环境复杂,链路复杂。在这样的条件下,如何避免因故障造成用户的伤害,以及在复杂链路条件下做好容量规划,做好灾备,并在第一时间发现问题,通过流量控制和预案演练做应急响应就显得至关重要,而所有的工作都不能等到事情发生之后才做,我们需要有一种验证手段来做好提前性能摸底,这就是全链路压测,让真实的流量提前到来。 全链路压测作为线上服务稳定性保障的重要手段,对高德来说也是非常重要的。高德全链路压测平台TestPG从无到有,在经历过常态化压测后,已基本可以保障高德的所有全链路压测和日常压测,达到了平台初期快速、准确压测和全链路压测的目标。而语料生产(流量处理)作为全链路压测的重要环节,本文将对此做重点介绍。 一次全链路压测可简单总结为3步:压测前的流量处理(也就是生产语料)、压测中确定压力模型启动压测、压测后的结果分析与问题定位。每次全链路压测,压测前的流量处理是整个压测过程中最耗时的一环。过去往往由运维采集日志交给测试同学写脚本处理,耗时相当严重、成本巨大,且存在请求过期等诸多问题。基于这些问题,高德全链路压测平台TestPG前期已规范了高德压测的语料格式,统一了高德压测的流量处理流程。但随着高德全链路压测的演进,后续面临两个主要问题: 语料生产流程缺乏统一管控。虽然平台前期已规范了语料格式,但各业务只是按照语料规范处理流量,生产流程缺乏统一、标准化管控,导致语料生产成本依然很大。尤其对于全链路压测来说,语料准备是最耗时的环节。 接口级别的精准控压无法满足需求。高德作为国民级的出行应用,流量受天气、地形、节假日的影响比较大。比如拿驾车导航来说,日常大多都是短距离的驾车导航,而国庆、春节大多都是长距离的驾车导航,而长距离的驾车导航对后端算力的要求是非线性增加的,甚至是成倍增加。但长短距离的驾车导航对压测平台来说是同一个接口,而平台目前的精准控压只能做到接口级别,无法模拟接口特征级别的压测。 基于以上两大问题,高德全链路压测团队设立语料智能化专项,重点解决以上相关问题。 解题思路和路径 引流标准化 高德的全链路压测彼时已基本拉通大多业务,但还属于一个演进阶段。对于语料处理,主要由各业务自行处理后用来压测,语料处理的来源缺乏统一性,日志、ODPS、流量等处理来源司空见惯。对于语料生产流程的统一管控,我们首先想到的是统一语料处理来源,必须选择一个低成本、高效率的方式作为语料生产的输入,而流量录制的方式就很切合。经过调研,发现高德其他业务场景对流量录制也有很大的需求。但高德过去的流量录制方式并不统一,各业务线自行拷贝流量经常会引起线上机器不稳定等问题。所以首先要做的是统一高德的流量录制,标准化引流。 语料生产平台化 要统一管控语料的生产流程,上面已经统一了语料生产的输入,接下来就是如何把流量转化为符合平台规范的语料,把整个转化流程平台化。但对于高德业务来说,各个业务都有其自身的特点,如果让平台为每个业务提供定制化的处理逻辑成本巨大,再加上平台对各个业务并不是特别熟悉,也很容易出错。而整个语料处理过程也存在一些通用的处理逻辑,所以我们必须提供一种既支持各业务定制化需求,又可以满足平台通用处理逻辑的方案。我们最终选择通过Flink来完成整个流量处理逻辑。 引流已经标准化,业务方只需查看流量的格式内容,编写Flink的UDF(用户自定义函数),处理自身业务定制化的需求即可,而后续通用的语料存储等逻辑可通过Flink的sink插件来完成。这样既可以提供通用处理逻辑,又给业务的特殊需求提供了支持,扩展性良好。 语料智能化 上面已经提到高德这种国民级出行应用受各种环境影响比较大,如何达到接口特征级别的精准控压,是当时面临的又一大难题。平台已具备接口级别的精准控压,只需把接口按照特征分类,提供真实流量的特征分布即可。但流量的特征分布是实时变化的,如何提供符合流量高峰的特征分布是语料智能化的最终目标。 要实现语料智能化需要经历3个阶段。第一阶段是流量特征统计。我们需要明确影响流量变化的因素,体现到流量上就是具体的参数分布,具体有哪些参数会随着外界环境的变化而变化。当然这块高德大多业务线都有一些粗略的分析结果,前期可以直接采用,后期就需要有更细粒度的特征分析。 第二阶段是流量特征提取。有了具体的特征参数后,就需要对特征参数进行提取统计,后续可用来做智能预测。但特征参数的提取到底应该如何去做呢?经过综合分析发现放到语料生产的环节最合适。引流拷贝流量,语料生产环节用来处理流量,在这个环节提取特征参数再好不过了。而整个语料生产扩展性良好,对用户的特殊需求通过UDF完成,整个流量特征提取刚好可以在通用逻辑里面完成。 第三阶段就是智能预测与机器学习。有了特征参数的统计数据,就可以借助往年高德地图国庆或春节的流量特征,加上今年随着业务的流量变化趋势,智能预测出符合今年国庆或春节流量特征的数据,做到接口特征级别的精准压测,做到真正意义上的全链路压测,为高德地图服务的稳定性保驾护航。后续也可以借助机器学习自动发现影响流量变化的特征参数,自动采集分析,做到真正意义的语料智能化。 整体方案 整个引流工作将由开发的统一引流平台来完成,引流平台通过引流插件把流量缓存到Kfaka,最终落盘到ODPS。而整个语料生产服务直接对接引流平台,处理来自ODPS的流量即可。 语料生产服务的整体处理过程都由Flink来完成。用户只需编写Flink的UDF来完成自己业务线定制化的需求即可。而且整个Flink的UDF支持多参数传递,用户可灵活编写UDF,在执行过程中动态传递相关参数,解决请求过期等问题。 Flink sink是由平台开发的一个Flink源表解析插件,主要包括流量的特征分析与提取,以及把生产好的语料按照接口命名写入OSS供平台压测使用。目前流量的特征由各业务线自己提供,通过在平台添加完成。Flink sink在执行过程中调用平台开放API获取特征数据进行采集,最终上报给平台,平台后续再根据这些数据进行机器学习,智能预测出符合流量高峰的流量特征,供全链路压测使用。 核心功能介绍 Iflow引流平台 基于上面的问题分析,高德工程效率团队积极迎接挑战,短短几个月开发了Iflow引流平台,对高德的引流进行了统一管控,具体如下图所示: Iflow引流平台以任务的方式对高德的引流进行管理。目前采用引流插件的方式进行流量拷贝(后续将支持更多引流方式),流量通过Kafka缓存,最终写入ODPS供大家使用。用户只需要从ODPS提取需要的数据即可。而启动引流需要相关负责人审批,周知到关联业务,有效的降低了引流引起事故后排查的成本。 TestPG语料智能化 高德全链路压测平台语料智能化主要由3个模块组成:业务线管理、压测名单管理和接口比例管理。业务线管理主要用来管理高德各个链路的相关数据,包括关联引流任务、启动引流、引流记录、语料路径、压测header管理和触发语料生产等功能。一条业务线就是一条压测链路,从引流到语料生产以及语料特征分析等都是在业务线维度完成的。具体如下图所示: 功能介绍: 关联引流任务:主要完成和引流平台任务的关联以及配置相关的参数。 启动引流任务:启动引流平台任务,在引流结束后会自动触发语料生产,通过执行用户编写的Flink UDF和平台开发的Flink插件,完成语料的生产和特征参数的提取。 语料路径:在每次启动引流触发语料生产后平台会自动生成语料路径,用户可在创建语料的时候自主选择。 压测header管理:每条业务线都有自身的业务特点,在header上的体现也不同,这里主要用来管理压测http服务发送的header内容。 触发语料生产:语料生产有2条途径,一是关联好引流任务启动引流后会自动触发语料生产,包括特征参数提取等一系列的操作;二是在引流成功后,用户可能对UDF等参数有所修改,也可以通过此按钮来触发语料生产。 压测名单管理主要用来管理压测的接口。一个公司开始做压测,业务肯定是需要跟着去适配的,随之而来的就是业务改造,这是一个漫长的过程。为了方便管理,高德全链路压测平台对高德这边的接口进行统一管理。具体如下图所示: 压测名单是在引流过程中自动上报的,引流只要发现未在压测名单的接口就会自动上报压测平台,平台根据关联应用去关联对应的负责人,并推动确认。如果可压测就确认为压测名单,下次语料生产作为白名单正常引流。如果不能压测就区分为免压接口或待跟进接口。待跟进接口平台后续会以消息通知的形式推动业务线改造,最终达到真正意义的接口覆盖全、链路覆盖全的全链路压测。 接口比例管理前期主要是用来管理BI提供的、以及每次全链路压测调整的比较贴近真实情况的接口比例数据,作为后续全链路压测的一个参考。后期将通过语料生产提取流量特征的统计数据,智能分析预测出符合真实情况的流量比例,供全链路压测直接使用,具体如下图所示: 平台优势 语料平台化生产 整个语料生产对接了引流平台,并通过Flink来完成。既支持了业务方定制化的需求,也支持平台通用化的处理逻辑,扩展性良好。通用逻辑通过Flink sink来实现,并加入了流量特征提取等功能,推动了语料智能化的顺利进行。用户只需要学习Flink完成UDF的编写,然后在平台完成相关配置即可。很大程度上提高了语料生产的效率和质量,是语料从格式标准化向生产流程标准化的一大飞跃。 语料智能化 平台在整个语料生产的过程中,通过Flink插件完成了特征参数的统计汇总。目前用户只需在平台完成相关特征的配置,平台在语料生产过程中就会分析特征并统计汇总。有了特征参数的统计数据,将有助于平台后续的智能分析与预测,达到接口特征级别的精准控压,最终达到完全意义的全链路压测。 长按订阅更多精彩▼ 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登三1960_官宣!华为出售荣耀:切莫过度解读!

出品 21ic中国电子网 付斌 王丽英 网站:21ic.com 11月17日,华为官方网站发出《声明》表示,正式决定整体出售荣耀业务,长期以来的传言终于有了官方的通告。 华为方面表示,出售后华为将不再持有新荣耀公司的任何股份,此举意在为长期以来的打压进行和对荣耀产业链的一场自救。 另一方面,深圳市智信新信息技术有限公司发出《联合声明》表示已签署了收购协议。《联合声明》表示,所有权变化并不会影响荣耀发展方向,荣耀高层及团队将保持稳定,继续夯实荣耀成功的基石。 通过联合公告可以看出, 联合发出声明的企业都是市场庞大,拥有一定实力的代理商和经销商,比如天音通信、苏宁易购、顺电、英孚特等。 联合收购名单如下: 深圳市智慧城市科技发展集团有限公司 北京松联科技有限公司 北京普天太力通信科技有限公司 中国邮电器材集团有限公司 共青城酷桂投资合伙企业(有限合伙) 成都英普瑞生通讯设备有限公司 河北浩博企业管理服务中心(有限合伙) 山东怡华通信科技有限公司 安徽鑫松联智能科技合伙企业(有限合伙) 河南金吉祥通信有限公司 西藏星宇通讯科技股份有限公司 重庆泽森实业有限公司 深圳冀顺通投资有限公司 新疆春层恒天电子科技有限公司 广东松联信息科技有限公司 河南华莲通信科技有限公司 贵州华耀科创科技(集团)股份有限公司 杭州盾牌链条有限公司 福建瑞联优信科技有限公司 湖北天宏华瑞科技有限公司 内蒙古英孚特通讯技术有限公司 云南辰道投资有限公司 上海达苋企业管理服务中心(有限合伙) 哈尔滨金潭科技发展有限公司 陕西华耀瑞隆通信科技发展有限公司 昆明品端经贸有限公司 广西至信普林科技有限公司 辽宁盛悦同诚科技有限公司 澳易通(武汉)通讯集团有限公司 苏宁易购集团股份有限公司 深圳市顺电实业有限公司 深圳市鲲鹏股权投资有限公司 深圳市罗湖投资控股有限公司 深圳市资本运营集团有限公司 深国际控股(深圳)有限公司 深圳能源集团股份有限公司 深圳市鲲鹏展翼股权投资管理有限公司 此前,消息盛传的收购消息包括神州数码、深圳市星盟信息技术合伙公司均已辟谣,而通过本次声明之前各种传言也“不攻自破”。 通过近期的市场数据来看,荣耀的销售额占据华为的消费者业务的16%左右,占据华为公司总营收的9%左右, 单从数据来看, 剥离荣耀对于华为自身来说并不会产生非常大的影响。 荣耀将展翅飞翔 21ic家注意到,此次出售,华为将不再持有新荣耀公司的任何股份,也就是说 华为与荣耀再无任何关联。这一点可以说保证了荣耀供应链的恢复,原则上荣耀不应再受禁售缺芯的限制。 此外,从收购方来看,30多家代理商、经销商发起收购,保证了荣耀品牌的继续,也让荣耀供应链上的各厂商业务能持续下去,可以说, 这些厂商与荣耀休戚相关,一荣俱荣,一损俱损,保住荣耀,也就是保住了他们自己。 最后, 关键的一点是,荣耀高层及团队将保持稳定。干活儿的还是那一群人,这保证了荣耀的既定策略及产品能持续下去。 从2013年成立以来,荣耀手机实现突飞猛进的发展。2020年年初,在给员工的新年信中,荣耀总裁赵明表示2020年荣耀要打造有互联网基因的全渠道品牌,“继成为互联网手机第一品牌后,2020全面开启智能手机市场中国前二,智慧全场景和IoT第一品牌的冲锋之路。” 为此,荣耀先后推出了荣耀30系列\荣耀X10系列手机,同时推出了MagicBook Pro 2020、荣耀V6 5G平板、荣耀路由3、荣耀智慧屏等四大产品系列。 在华为鼎力培育下成长起来的荣耀,如今在羽翼渐丰之时,迎来独立飞翔机会,祝福荣耀! 切莫过度解读 同时,21ic家也注意到,有消息传出,华为消费者BG也正在与智能汽车解决方案BU进行整合,总负责人是华为消费者业务CEO余承东。 华为的自救还在进行之中,从各种方面来说,华为还是困难重重的,业务仍在继续优化之中。 从芯片上来讲,实际上,在11月5日,高通公司已在2020年Q4财报上正式确认 已收到华为一次性支付的18亿美元,并已达成新授权已解决专利许可纠纷; 并在11月14日,高通发言人证实, 已获得对华为部分产品的许可证,但可惜的是只是一些4G产品。 另外, 英特尔、AMD、Skyworks等多家芯片厂商也已获得许可供货华为。 之前也有消息传言表示,台积电也获得了恢复供货,不过仅仅是成熟制程(28nm)而非先进制程(14nm以下),台积电表示不回应无根据市场传言。 从近期的市场来看,打压的进度似乎有了放缓的“趋势”。21ic认为,事实上通过此前的一系列措施以及近期特朗普仍在继续扩大禁令的范围, 美方早已失去了国内企业的信任。 而 国内也早已意识到产业链的缺口,纯国产化仍然是当前最重要的任务之一。 另外, 即使高通、台积电、联发科等拿到了供货许可,也大概率没有5G和先进制程,更别提7nm、5nm这种拼杀市场的硬货了。 近两年来看,荣耀的发展其实一直是独立性越来越高的,本身早已具有一定的核心竞争力。美方是否会承认这种剥离,以及未来荣耀的发展, 目前来说任何分析都是过度解读的,仍需市场的进一步的确认。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3咨询:_中国芯片新锐50强榜单发布,上海20家、北京仅4家!

全球产业的持续增长仍是市场预期 2020 年是非常特殊的一年,大家都面临着很多挑战,当然,也对未来充满信心。 全球经济下行的趋势抵挡不住科技向前迈进的步伐,从全球半导体大厂英特尔、台积电、三星等大增资本支出的情形看,国际大厂引领了整体市场预期。5G、人工智能、自动驾驶、物联网芯片等仍是推动 2020 年半导体成长的主要契机。 2020 年由于新冠肺炎的影响,几乎全球每个产业都受到严重打击,唯有半导体产业还能维持成长。据估计,2020 年全球半导体市场的规模可望达到 4 千 3 百亿美元,比起 2019 年成长约 4.7%;此外,展望 2021 年,全球半导体市场将可能呈现双位数的成长,规模也将来到 4 千 7 百亿美元。 全球半导体产业可望受惠于 5G 应用落地,人工智能、自动驾驶、物联网芯片等高速运算的芯片需求,延续 2020 年的成长态势。只不过,当半导体制程的技术门坎愈来愈高、以及硬件趋向多元运算架构发展时,三、五年后的半导体产业面貌,很可能跟今天会大不相同。 5G、自动驾驶、物联网是最被关注的应用领域 5G:可能是由于近期出现的频率太高,5G 获得的关注也最多。现如今,5G的落地多种多样,各运营商的战略、许可组合及产品各不相同,频段方面从低频到超高频都有。 虽然 5G 已经出现,但要真正实现快速成长,运营商很大程度上需从用于规范市场的基础标准中受益。通过了解使设备符合使用 5G 频谱要求所需的工艺特点,运营商可以对其 5G 业务作出更多的战略决策。随着 5G 市场的成熟和发展,半导体行业将受益于不断增加的芯片制造和优化需求。 自动驾驶:安全标准也将是完全自动驾驶汽车能否实现发展和商业化的关键因素,并且这无疑是无人驾驶汽车大规模普及的首要因素。另外相关法规需要涉及更广泛层面的考虑:比如,规定哪类汽车可以在哪里行驶等。 为确保自动化生态系统的安全性和可靠性,对于智能城市基础设施和 5G 通信网络而言,必须具备有关各种车载传感器和其他先进计算产品的基础标准。在自动驾驶相关的通用“道路规则”完成制定之前,自动驾驶汽车的部署将给制造商和消费者带来较大的不确定性,半导体芯片订单的大部分潜力(自动驾驶的通用化及大规模市场化)也将取决于此。 物联网:同样,当连接设备制造商掌握更多关于生产规范的信息时,当前已经庞大的物联网市场将进一步开放。对于物联网而言,安全和隐私是监管重点所在。不安全的物联网设备可能损害消费者和企业的健康及隐私。据预测,到 2023 年,每五起网络安全事件中就有一件源于智能城市物联网设备的部署。 物联网产品的安全和隐私标准也涵待政府有关部门进行制定和完善。此外,一些制造业细分行业正在通过为连接设备安全和隐私制定最佳实践和其他指引进行自我管理。虽然对于监管的要求正在迅速变化,但制造商也更能理解“好产品”的要求:不仅要整体符合法规要求,而且需要赢得消费者信任。随着市场的不断扩大,芯片订单便会随之而来。 存储芯片迎来黄金发展期 5G 手机增加存储器用量:未来几年全球 5G 手机激活市场会从 2019 年的近 1,000 万台,爆增到 2020 年的 1.6-2.0 亿及 2021 年的 4.0-5.0亿台,而每台 5G 手机都需配备 8GB 或以上的mobile DRAM 及 128-256GB 的 NAND 闪存。 与4G手机配备64-128GB的NAND Flash相比,预计手机用 NAND Flash 于 2020-2021 年增长率超 30%。云服务器市场需求量复苏:受疫情影响,春节期间云端服务器客户量急剧上涨。在线医疗、在线娱乐、在线教育、在线买菜等云业务的普及使得服务器数量及服务器内存用量急剧增长。 近年来,云端服务器用户大幅增长,服务器用DRAM 占整体 DRAM 用量比例逐年上涨。据专家预测,2021 年服务器用 DRAM 芯片用量占整体 DRAM 用量比例将达 38%。 国产替代尚有较大的发展空间 全球内存及闪存产品在国际竞争格局上,基本均被韩国、日本、美国等国垄断。在DRAM领域,三星、海力士及美光为行业龙头,在NAND领域,三星、东芝、新帝,海力士以及美光、英特尔共同掌握全球话语权。 当前,中国已初步完成在存储芯片领域的战略布局,但由于中国起步晚,且受到技术封锁,市场份额较少,距离全面国产替代还有较大的发展空间。存储芯片良好的发展态势将为中国在这一领域的发展提供源源不断的需求保障。 美国限制对中国的科技技术出口,长期将加速半导体国产化进程。目前,中国在生产代工、设备、存储器、计算、模拟及数模转换芯片、射频前端、EDA 软件等领域缺口较大,存在进口替代机会。 随着受疫情影响激发的市场对存储芯片、5G 芯片、逻辑芯片等半导体产品的需求增长,未来中国半导体产业将在此基础上继续保持良性增长,逐渐实现国产替代。 我们从比较有代表性的半导体设计和制造公司了解到,虽然存在较大的国际差距,但是基于中国市场的活跃度,以及参与度,其对中国半导体行业持有乐观的态度。 新锐50强榜单 ▲新锐50强芯片公司 ▲50强公司分布 下面简单介绍下这50家公司情况: 1、翠展微电子:翠展微电子(上海)有限公司,简称“翠展微电子”,成立于2018年4月,公司位于中国上海张江综合性国家科学中心的张江集成电路产业区内。 作为一家中国本土的汽车级功率器件与模拟集成电路设计销售公司,公司立志打破进口垄断,实现进口替代,将翠展微电子打造成为新能源汽车半导体行业的中国品牌领军企业。 2、登临科技:登临科技成立于2017年11月,是一家专注于为新兴计算领域提供高性能、高功效计算平台的高科技企业。公司的产品是以芯片为核心的系统解决方案。总部位于中国上海,在中国成都设有全资子公司。 登临科技由知名的高科技风险投资机构“北极光”创投孵化,已经完成天使和Pre-A轮投资。核心创始团队成员来自世界知名的半导体,系统及互联网公司 (图芯,百度,AMD,思科,Acacia 等),兼具大公司高管和引领初创公司开拓新产品和市场的成功经历。团队不光有20余年的高技术行业从业经验,而且有在从28nm到7nm先进工艺上成功流片及批量生产的业绩。 团队在以GPGPU为核心的异构通用计算平台构建上卓有建树,公司的技术已有数十项核心专利正在国内外申请中。在产品上,公司致力于人工智能(推理和学习)、高性能计算、区块链等市场规模大、技术要求高、发展速度快的行业细分领域,旨在解决通用性和高效率的双重难题。 3、地平线:地平线是边缘人工智能芯片的全球领导者。得益于前瞻性的软硬结合理念,地平线自主研发兼具极致效能与开放易用性的边缘人工智能芯片及解决方案,可面向智能驾驶以及更广泛的通用 AI 应用领域提供全面开放的赋能服务。目前,地平线是国内唯一实现车规级人工智能芯片量产前装的企业。 基于创新的人工智能专用计算架构 BPU(Brain Processing Unit),地平线已成功流片量产了中国首款边缘人工智能芯片——专注于智能驾驶的征程(Journey) 和专注于 AIoT 的旭日1(Sunrise)…

摩登3注册网址_看完就会!这文章把PCB的工艺流程讲的太清楚了吧!

1.开料(CUT)开料是把原始的覆铜板切割成能在生产线上制作的板子的过程首先我们来了解几个概念: (1)UNIT:UNIT是指PCB设计工程师设计的单元图形。(2)SET:SET是指工程师为了提高生产效率、方便生产等原因,将多个UNIT拼在一起成为的一个整体的图形。也就是我们常说的拼板,它包括单元图形、工艺边等等。(3)PANEL:PANEL是指PCB厂家生产时,为了提高效率、方便生产等原因,将多个SET拼在一起并加上工具板边,组成的一块板子。 2.内层干膜(INNER DRY FILM)内层干膜是将内层线路图形转移到PCB板上的过程。在PCB制作中我们会提到图形转移这个概念,因为导电图形的制作是PCB制作的根本。所以图形转移过程对PCB制作来说,有非常重要的意义。 内层干膜包括内层贴膜、曝光显影、内层蚀刻等多道工序。内层贴膜就是在铜板表面贴上一层特殊的感光膜,就是我们所说的干膜。这种膜遇光会固化,在板子上形成一道保护膜。曝光显影是将贴好膜的板进行曝光,透光的部分被固化,没透光的部分还是干膜。然后经过显影,褪掉没固化的干膜,将贴有固化保护膜的板进行蚀刻。再经过退膜处理,这时内层的线路图形就被转移到板子上了。其整个工艺流程如下图。 对于设计人员来说,我们最主要考虑的是布线的最小线宽、间距的控制及布线的均匀性。因为间距过小会造成夹膜,膜无法褪尽造成短路。线宽太小,膜的附着力不足,造成线路开路。所以电路设计时的安全间距(包括线与线、线与焊盘、焊盘与焊盘、线与铜面等),都必须考虑生产时的安全间距。 (1)前处理:磨板磨板的主要作用:基本前处理主要是解决表面清洁度和表面粗糙度的问题。去除氧化,增加铜面粗糙度,便于菲林附着在铜面上。 (2)贴膜将经过处理的基板通过热压或涂覆的方式贴上干膜或湿膜 ,便于后续曝光生产。 (3)曝光将底片与压好干膜的基板对位,在曝光机上利用紫外光的照射,将底片图形转移到感光干膜上。 底片实物图 (4)显影利用显影液(碳酸钠)的弱碱性将未经曝光的干膜/湿膜溶解冲洗掉,已曝光的部分保留。 (5)蚀刻未经曝光的干膜/湿膜被显影液去除后会露出铜面,用酸性氯化铜将这部分露出的铜面溶解腐蚀掉,得到所需的线路。 (6)退膜将保护铜面的已曝光的干膜用氢氧化钠溶液剥掉,露出线路图形。 3.棕化目的:是使内层铜面形成微观的粗糙和有机金属层,增强层间的粘接力。 流程原理:通过化学处理产生一种均匀,有良好粘合特性的有机金属层结构,使内层粘合前铜层表面受控粗化,用于增强内层铜层与半固化片之间压板后粘合强度。 4.层压层压是借助于pp片的粘合性把各层线路粘结成整体的过程。这种粘结是通过界面上大分子之间的相互扩散,渗透,进而产生相互交织而实现,将离散的多层板与pp片一起压制成所需要的层数和厚度的多层板。实际操作时将铜箔,粘结片(半固化片),内层板,不锈钢,隔离板,牛皮纸,外层钢板等材料按工艺要求叠合。 对于设计人员来说,层压首先需要考虑的是对称性。因为板子在层压的过程中会受到压力和温度的影响,在层压完成后板子内还有应力存在。因此如果层压的板子两面不均匀,那两面的应力就不一样,造成板子向一面弯曲,大大影响PCB性能。 另外,就算在同一平面,如果布铜分布不均匀时,会造成各点的树脂流动速度不一样,这样布铜少的地方厚度就会稍薄一些,而布铜多的地方厚度就会稍厚一些。为了避免这些问题,在设计时对布铜的均匀性、叠层的对称性、盲埋孔的设计布置等等各方面的因素都必须进行详细的考虑。 5.钻孔使线路板层间产生通孔,达到连通层间的目的。 传说中的钻刀 6.沉铜板镀(1).沉铜也叫化学铜,钻孔后的PCB板在沉铜缸内发生氧化还原反应,形成铜层从而对孔进行孔金属化,使原来绝缘的基材表面沉积上铜,达到层间电性相通。 (2).板镀使刚沉铜出来的PCB板进行板面、孔内铜加厚到5-8um,防止在图形电镀前孔内薄铜被氧化、微蚀掉而漏基材。 7.外层干膜和内层干膜的流程一样。 8. 外层图形电镀 、SES将孔和线路铜层加镀到一定的厚度(20-25um),以满足最终PCB板成品铜厚的要求。并将板面没有用的铜蚀刻掉,露出有用的线路图形。 9.阻焊阻焊,也叫防焊、绿油,是印制板制作中最为关键的工序之一,主要是通过丝网印刷或涂覆阻焊油墨,在板面涂上一层阻焊,通过曝光显影,露出要焊接的盘与孔,其它地方盖上阻焊层,防止焊接时短路 10.丝印字符将所需的文字,商标或零件符号,以网板印刷的方式印在板面上,再以紫外线照射的方式曝光在板面上。 11.表面处理裸铜本身的可焊性能很好,但长期暴露在空气中容易受潮氧化,倾向于以氧化物的形式存在,不大可能长期保持为原铜,因此需要对铜面进行表面处理。表面处理最基本的目的是保证良好的可焊性或电性能。 常见的表面处理:喷锡、沉金、OSP、沉锡、沉银,镍钯金,电硬金、电金手指等。 12.成型将PCB以CNC成型机切割成所需的外形尺寸。 13.电测模拟板的状态,通电进行电性能检查,是否有开、短路。 14.终检、抽测、包装对板的外观、尺寸、孔径、板厚、标记等检查,满足客户要求。将合格品包装成捆,易于存储,运送。 -END- 来源 | 崇达、PCB资讯等 | 整理文章为传播相关技术,版权归原作者所有 |  | 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

摩登3平台注册登录_FreeRTOS中相对延时和绝对延时的区别

作者 | strongerHuang 微信公众号 | 嵌入式专栏 嵌入式软件代码中延时是很常见的,只是延时种类有很多,看你用什么延时。 1 一个延时的问题 问题:周期性(固定一个时间)去处理某一件事情。你会通过什么方式去实现? 比如:间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过串口发送出去。 可能对于很多习惯裸机编程的读者,首先想到的是:利用定时器,定时10ms中断,在中断里面处理。 中断函数适合处理简单数据,不适合算法、通信等需要长时间占用CPU的处理。 对计时精度要求比较高的地方适合定时器,像本章节说的周期性采集传感器数据,要求不适合很高,那么就引入本文说的绝对延时。 在实时操作系统FreeRTOS任务中,利用vTaskDelayUntil绝对延时即可完美解决这个问题。 2 相对延时和绝对延时的含义 本文拿FreeRTOS中相对延时函数vTaskDelay,绝对延时函数vTaskDelayUntil来说明。 相对延时: 指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间(参数:滴答值)结束。 绝对延时: 指每隔指定的时间(参数:滴答值),执行一次调用vTaskDelayUntil()函数的任务。 文字描述可能不够直观理解,下面章节结合代码例子、延时值(IO高低变化波形)、任务执行图来详细讲述一下他们的区别。 3 相对延时和绝对延时区别 以实际代码为例说明:一个任务中,添加一个10ms系统延时,然后,在执行任务(耗时1ms左右,例子以延时代替)。 相对延时代码: 绝对延时代码: 说明: 1. TestDelay这个延时函数仅仅用于测试(延时1ms),用于代替采集、算法、发送等耗时时间。 2. 两个代码唯一区别在于系统延时不同,一个vTaskDelay(10);,一个vTaskDelayUntil(&xLastWakeTime, 10); 3. 系统时钟频率为1000,也就是上面系统延时10个滴答,即10ms。 看到代码,你想到了他们输出结果的差异吗? 来看下结果的差异:用PA0这个引脚输出的高低电平,得出延时时间。 相对延时结果: 绝对延时结果: 结果为: 相对延时的周期为系统延时10ms + 执行任务1ms的时间,总共11ms时间。绝对延时的周期即为10ms时间. 4 换一种方式看区别 如果上面的区别还没明白,再来讲一个更容易理解的区别,通过文字 + 任务执行图来说明。 1.相对延时 先看任务执行图,按照上面代码的方式呈现: 这里会牵涉到操作系统任务切换、高优先级任务抢占等一些原理,若不了解,请转移直到了解再回来。 上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。 TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。 从上图可以看出: 如果执行TEST任务的过程中发生中断,或者具有更高优先级的任务抢占了,那么TEST任务执行的周期就会变长,所以使用相对延时函数vTaskDelay(),不能周期性的执行TEST任务。 2.绝对延时 代码中定义的变量xLastWakeTime,其实是用来保存上一次的系统计数器值(方便检测下一个延时时间是否到来)。 和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。 提示: 图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。 如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。 免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!