一、复习进线程进程间通信无名管道、有名管道、共享内存、信号信号量/消息队列、套接字。共享内存不自带同步互斥机制多个进程同时读写会造成数据混乱必须配合信号量 / 互斥锁来控制访问顺序线程互斥锁、读写锁、自旋锁忙 等待、信号量同步读写锁 // 共享数据 int shared_data 0; // 读写锁 pthread_rwlock_t rwlock; // 写线程函数写者互斥与读者也互斥 void* writer(void* arg) { int id *(int*)arg; // 加写锁 pthread_rwlock_wrlock(rwlock); printf(写线程 %d 获取写锁开始修改数据...\n, id); shared_data; sleep(1); // 模拟写操作耗时 printf(写线程 %d 修改完成shared_data %d释放写锁\n, id, shared_data); // 释放写锁 pthread_rwlock_unlock(rwlock); return NULL; } // 读线程函数读者之间共享与写者互斥 void* reader(void* arg) { int id *(int*)arg; // 加读锁 pthread_rwlock_rdlock(rwlock); printf(读线程 %d 获取读锁读取数据shared_data %d\n, id, shared_data); sleep(1); // 模拟读操作耗时 printf(读线程 %d 读取完成释放读锁\n, id); // 释放读锁 pthread_rwlock_unlock(rwlock); return NULL; }自旋锁轻量级锁比互斥锁更快适合锁内操作极短的场景也是共享内存同步常用的高性能锁。pthread_spinlock_t spin_lock;网络编程ISO七层模型应用、表示、会话、传输、网络、链路、物理四层模型应用、传输、网络、链路接口MAC地址(网卡硬件地址) IP地址区分主机 端口区分进程TTL 数据包最多跳多少个路由器到 0 就死。DHCP动态主机配置协议IP 地址子网掩码默认网关DNS 服务器地址Static静态 IP 配置。网段A、B、C、D、E子网掩码255.255.255.0把IP 地址切成两段网络位→ 标识这个网段主机位→ 标识这个网段里的某台设备然后判断两台设备的网络位是否相同 → 相同 同一局域网不同 跨网段。划分网段为1的位必须一致才属于同一局域网。网络号(子网掩码中为1的位)主机号(子网掩码中为0的位)。同一网段指的是网络号相同的IP(相互连通。二、ARM中断1、设置异常向量表地址为0(为0则可以重映射) //start.S中断初始化1.重映射异常向量表基地址2.初始化GIC中断源key_init()引脚相关配置引脚功能及方向 GPIODIR设置中断触发方式、使能中断 GPIO_ICR GPIO_IMRGIC中断使能 GIC_EnableIRQ(IRQn_Type IRQn)GIC中断优先级设置 GIC_SetPriority(IRQn Type IRQn, uint32_t priority)清中断标志GPIO_ISRGPIO_IMR | (1pin);get GIC--IAR // 读取 GIC 的 IAR 寄存器获取当前中断号 deal irq // 根据中断号调用对应的 C 语言处理函数 set GIC--EOIR // 向 GIC 的 EOIR 寄存器写入告知中断处理完成数组名用途对应中断类型irq_handler_array通用中断处理函数表普通外设中断UART、Timer、I2C、IOMUXC 等独立中断号irq_gpio_handler_arrayGPIO 专用中断处理函数表GPIO 分组中断如GPIO1_IO18_IRQ这类引脚级中断号