一个座舱系统工程师的责任田

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个座舱系统工程师的责任田相关的知识,希望对你有一定的参考价值。

作为一名系统工程师,必须要具备相应的基础能力以及系统全局感,在使用经验解决经典问题的同时,也要具备解决未知风险的攻关能力。

一, 基本的架构通用底软能力

如ARM架构基础知识;操作系统基础知识,这里主要指Linux,RTOS等;编译和链接基础知识;

二,基本的硬件平台底软能力

如QCOM,MTK等平台特定的soc基础,包括soc启动和reset时序,电压分布,时钟分布,soc提供的基本硬件设施。以Qcom为例,Qcom soc的架构基础中包括rpm,tz,sbl,adsp,wcnss,venus等。

三,基本的OS或ROM的软件能力

这里的OS或ROM主要是面向用户体验和交互的,如androidios,HarmonyOS,AliOS等。以应用生态最广泛的Android为例,需要了解Android的启动时序,合成渲染流程;关键进程如init,zygote,system_server,surfaceflinger等的工作原理,以及关键模块如binder,bionic,art虚拟机,security boot,ota/recovery,fastboot,modem,selinux等;关键应用程序如Launcher,SystemUI,Settings等的工作原理,关键服务如AMS,WMS,PMS;还有四大组件等。

四,基本的调试优化能力

需要了解重要日志的分布和抓取;需要了解如何添加日志和进行有效的埋点;还有就是在极端情况下的日志落盘(包括加解密失败,变砖等),ramdump/coredump等转存;或着分区回读与解包。

4.1 埋点

埋点是排查问题很有效的手段,比如kernel串口log如何添加,tz的log如何添加,native库的log如何添加,java log如何添加,java核心库的log如何添加等等。

4.2 抓栈

包括dump栈,kernel栈,cpu栈,native的栈,java栈。

4.3 分析

需要理解各个变量,结构是如何存储,栈帧如何组织等。并懂得善用工具,例如Perfetto分析性能卡顿,gdb分析coredump crash,audit2allow解析selinux审核日志,dumpsys 分析系统关键信息,mat工具分析hprof内存泄漏;以及自己熟练使用脚本语言如shell,python等,可以快速开发出来效率工具来提高自己的执行力,如通过脚本交叉解析pageowner以排查内存黑洞,关键字快速过滤问题等。

五,基本的编程开发能力

以主流Linux,Android,Unreal Engine 3D框架等为例,需要至少掌握c/c++,java编程语言,以及相关编译构建的方法。

通过具备前面提到的能力,利用系统提供的基础功能和工具,结合实际场景和产品客制化需求开发极具竞争力的系统级方案,比如利用CGroup开发资源管理方案,合理的管理系统资源;又比如利用PSI对系统资源使用压力进行监控,避免高负载常用的并发,提高用户体验。利用socket,shmem或some/ip等开发更轻量级的通信框架等。

以上是关于一个座舱系统工程师的责任田的主要内容,如果未能解决你的问题,请参考以下文章

行业篇三智能座舱

智能座舱视觉感知系统如何做自动化测试

智能座舱视觉感知系统如何做自动化测试

电力系统第3章:简单电力系统的潮流分布计算

智能座舱虚拟机系统

PHP开发工程师岗位职责