Android Framework软件开发工程师(驱动MCAL工程师、BSW通讯工程师各一位)上海

本文讲述了在Android环境下设计和开发汽车信息娱乐产品所需的技能,包括解决复杂架构问题、与跨职能团队协作、使用C/C++和Java编程,以及对Android启动时序、JNI、HAL和系统服务如ActivityManagerService等的深入理解。职位强调3年以上相关经验、调试能力及特定的开发背景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在Android操作系统环境下,设计开发汽车信息娱乐产品的嵌入式软件和Android框架

2、解决复杂的Android架构问题,追求工程卓越,并与跨职能团队合作

3、设计和维护Android框架、Android系统服务或连接(BT、Wifi、调制解调器)的平台/软件开发

4、开发和执行Android系统模块单元测试和集成测试,在试验台架和车辆上验证软件。

5、作为系统/应用工程师接口,开发Android软件需求,并将其文档化

6、使用ASPICE/CMMI参考模型进行软件开发,遵循软件过程和工具使用

岗位要求:

1.计算机科学或电气/电子工程学士或以上学历,3年以上嵌入式软件开发经验,重点为Android框架和Native层的软件开发

2.熟练使用C/C++和Java编程语言

3.了解Android启动时序和Android框架模块架构

4.掌握Android系统框架、JNI、Native层软件开发、HAL和API开发知识

5.熟悉Android调试方法,熟练调试Android设备

6.应具备与Android系统服务如Activity Manager Service、Window Manager Service、Multi-display Service、Input Manager Service等相关工作经验

7.应具备Android框架相关的知识,如Audio、Telephony、Connectivity(BT、Wifi、Modem)等
8.有应用软件开发经验优先,如:SystemUI, Launcher, Settings, tuner等方

9.具备信息娱乐、嵌入式系统或消费电子产品开发经验

<think>好的,我现在需要帮助一位刚入门的Autosar底层软件工程师配置CAN驱动模块,特别是在收到主机厂提供的DBC文件后的步骤。首先,我得理清整个流程,确保不遗漏任何关键步骤。 首先,用户提到了DBC文件,这是CAN网络数据库文件,里面包含了所有CAN信号和报文的信息。作为MCAL开发工程师,配置CAN驱动模块需要将这些信息整合到AUTOSAR的配置中。我应该从解析DBC文件开始,可能需要使用工具如CANdb++或Vector的工具来查看DBC内容,确认信号、报文、波特率等是否正确。 接下来,用户需要将这些信息映射到AUTOSAR的模块中。这里可能需要使用配置工具,比如ETAS的ISOLAR或Vector的DaVinci。可能需要先配置CAN控制器(CAN Controller),设置波特率、采样点等参数。然后配置CAN硬件单元(CAN Hardware Object),可能涉及收发器类型、引脚分配等。 然后,配置CAN节点(CAN Node),这里需要根据DBC中的ECU名称来设置节点参数,比如节点ID和与其他节点的通信关系。接下来是配置报文(CAN Frame),需要将DBC中的每个报文转换为AUTOSAR的CAN Frame,设置标识符、长度、周期等属性。同时,信号(CAN Signal)部分需要将每个信号映射到报文的特定位置,注意字节顺序、偏移量和缩放系数的正确性。 之后,配置接收和发送的PDU到Signal的映射,确保PDU和Signal的关联正确。中断和事件配置可能涉及接收中断、发送完成中断等的处理,这里需要根据需求设置回调函数。生成代码后,需要集成到MCAL中,可能还需要手动调整某些部分,比如中断服务例程。 验证阶段也很重要,使用CANoe等工具测试通信是否正常,检查信号值是否正确,错误处理机制是否有效。最后,生成配置报告,记录所有参数和映射关系,以便后续维护。 需要注意的细节包括DBC和AUTOSAR的命名一致性,信号属性的正确转换,以及硬件相关的配置如引脚和波特率是否匹配。可能遇到的困难是信号映射错误导致的通信问题,需要仔细检查每个信号的属性和位置。此外,工具链的熟练使用也是关键,可能需要查阅工具的文档或寻求同事的帮助。 总结下来,步骤大致是解析DBC、配置CAN控制器和硬件单元、设置节点、报文和信号、映射PDU、处理中断、生成代码并验证。确保每一步都准确无误,才能保证CAN驱动模块正常工作。</think>作为刚入门的AUTOSAR底层软件工程师,在收到主机厂提供的DBC文件后,配置CAN驱动模块的步骤如下: --- ### 一、DBC文件解析与预处理 1. **验证DBC完整性** - 使用CANdb++或Vector工具检查DBC文件是否包含完整的ECU节点、报文、信号定义 - 确认波特率、采样点等网络参数已明确标注(例如:$baudrate = 500kbps$) 2. **提取关键参数** - 报文ID(标准帧/扩展帧) - 信号布局(起始位、长度、字节序) - 信号物理值转换公式(例如:$物理值 = 原始值 \times 0.1 + 50$) --- ### 二、MCAL配置工具操作 1. **创建CAN控制器配置** ```xml <CanController> <BaudRate>500000</BaudRate> <SamplePoint>80%</SamplePoint> <SyncJumpWidth>2</SyncJumpWidth> </CanController> ``` - 需与DBC中的网络参数完全一致 2. **配置硬件对象(Hardware Objects)** - 设置CAN收发器类型(如:TJA1042) - 分配MCU引脚(例如:CAN0_TX → PTA12, CAN0_RX → PTA13) 3. **映射报文与信号** - 将DBC中的`Message_XXX`转换为AUTOSAR的`CanFrame` - 示例信号配置: ```c CanSignal { Name = "EngineSpeed"; StartBit = 16; // 起始位 Length = 16; // 信号长度 ByteOrder = Intel; // 字节序 ScalingFactor = 0.125; Offset = 0; } ``` --- ### 三、通信栈集成 1. **配置PDU Router** - 将CAN Frame映射到PDU(Protocol Data Unit) - 设置信号组打包方式(如:Motorola或Intel格式) 2. **配置中断机制** - 接收中断:配置Rx FIFO或DMA通道 - 错误中断:使能BusOff/ErrorPassive检测 --- ### 四、代码生成与验证 1. **生成MCAL代码** - 使用EB tresos/ETAS ISOLAR生成`Can_Cfg.c`和`Can_PBcfg.c` - 检查生成的HOH(Hardware Object Handle)编号是否连续 2. **静态验证** ```c /* 检查配置表一致性 */ const Can_ConfigType CanConfig = { .CanControllerCfg = &CanControllerCfg_0, .CanHwFilterCfg = CanHwFilterCfg_0 }; ``` 3. **动态测试** - 使用CANoe发送测试报文,验证信号接收 - 测试错误注入场景(如:ACK缺失、CRC错误) --- ### 五、常见问题处理 1. **信号对齐问题** - 若DBC使用Motorola格式而ECU配置为Intel,需反转字节序 - 示例转换公式:$$物理地址 = \lfloor \frac{startbit}{8} \rfloor \times 8 + (7 - (startbit \% 8))$$ 2. **波特率容差** - 确保MCU时钟分频满足误差要求(通常要求<1%) - 计算公式:$$实际波特率 = \frac{f_{CANCLK}}{Prescaler \times (1 + Tseg1 + Tseg2)}$$ --- ### 六、文档记录 1. 维护`CAN_SignalMapping.xlsx`记录DBC与AUTOSAR信号对应关系 2. 标注特殊处理逻辑(如:信号多路复用) 通过以上步骤的系统化实施,可以确保CAN驱动模块的正确配置。建议结合AUTOSAR_SWS_CANDriver文档(第4.3章)进行细节核对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值