写于2020年6月20日下午
导读:
1.引言
从2019年下半年开始,各个玩家都发布了在汽车软件化方面的战略,特别是2020年这种经济大环境不好的情况下,仔细去看看各方的动作,丝毫感受不到有什么汽车业的寒冬,有些玩家是真做,有些玩家是在跟风,还有一些还在睡觉。
最近和各种背景的人交流,技术派似乎认为这就是未来方向,传统派关注的问题很实际,花这么大代价去重构汽车的软硬件基础架构,究竟有什么意义?对这个方向还存在疑虑的,现阶段也很难有什么令人信服的证据去说服。我更加关注执行层面的事情,如果这个方向的是正确的,如何能让想法慢慢落地?思考了很久,决定从三个维度去阐述这个事情:
软件架构能力
软件开发能力
软件工程的能力
电源、外设接口、ADC、SCI、PWM、看门狗、车载网络接口(CAN、LIN、Ethernet、FlexRay)
非易失性存储NVM(一般在几十K到几兆之间,大部分应用512K以内就足够)
SRAM(一般在几十K到几兆之间,大部分应用256K以内就足够)
采用Cortex-M、Cortex-R内核居多,部分厂家有自己的内核
Lock-Step(保持多个CPU、内存精确的同步,在正确的相同时钟周期内执行相同的指令)
ECC、ECM 纠错机制
最高能够达到ASIL-D 安全等级要求
NXP S32K系列 MAC系列 LPC系列 KEA系列 i.MX RT系列 (都是Cortex-M内核)
英飞凌 XMC系列(Cortex-M内核) AURIX TC系列(TriCore内核)
瑞萨 RH850系列
TI Hercules系列(Cortex-R内核)
void task1() { status=!status;//反转某个状态,比如设备的开关 write(device_addr,status); // 向设备地址处写入设备状态 } int main(void) { init_irq(); //初始化中断向量 init_timer(); // 初始化时钟 init_devices();//初始化其他设备 while(1) //开启无限死循环 { task1();// 运行任务1 delay(1000); // 延时一段时间 task2();// 运行任务2 } }
void task1() { status=!status;//反转某个状态,比如设备的开关 write(device_addr,status); // 向设备地址处写入设备状态 } int main(void) { init_irq(); //初始化中断向量 init_timer(); // 初始化时钟 init_devices();//初始化其他设备 create_task(task1,stack_size,priority); // 创建一个任务 create_task(task2,stack_size,priority); task_schedule(); // 开始任务调度 }
写于2020年6月20日下午
已完成
数据加载中