基于TC397的autosar配置BSW工程MCAL工程编译通过的IDE工程。 ]工具是基于EBdavinci configuratortaskingCBD19版本或hightecCBD24版本。 实际能在开发版上跑起来。 需要的联系软件产品不包含工具不提供SIP如果需要价格另议不提供MCAL包只是配置工程读懂关键字配置工程 实现功能:6核OS跑起来最近被几个老铁追着问TC397多核启动的坑今天直接上硬菜。搞过英飞凌TC3xx的都懂这玩意儿六核启动要是没整明白分分钟让你怀疑人生。咱今天就用EBtresos高特克这套黄金组合手把手教你从零搓出能跑六个核的AUTOSAR工程。工具链选择玄学别纠结用啥IDE高特克CBD24配Hightec实测最稳。之前用Tasking编译的兄弟注意了——# 关键编译器参数必须加这个 CFLAGS -mtc162 -coreall -Wa,-mregnames-implicit特别是-mtc162这个flag少了他你的核0和核1直接罢工。之前有个哥们在论坛骂了三天三夜最后发现就是漏了这个参数惨痛教训啊BSW配置的骚操作在Davinci里配EcuM模块时核心启动顺序得玩点花的核0先唤醒核1和核2核1起来后触发核3最后核2带起核4和核5具体看这个启动状态机的代码片段void StartCoreSequence(void) { Ifx_Ssw_setCore0Ready(); // 核0自检完成 while(!Ifx_Ssw_isCore1Requested()); // 死等核1就绪 Ifx_Ssw_triggerStart(1); // 手动触发核1启动 // 后面依次类推... }这里有个大坑核间同步必须用硬件信号量HSM用软件flag绝对翻车。之前试过用全局变量做同步结果核5永远卡在while循环里后来用HSM的原子操作才搞定。基于TC397的autosar配置BSW工程MCAL工程编译通过的IDE工程。 ]工具是基于EBdavinci configuratortaskingCBD19版本或hightecCBD24版本。 实际能在开发版上跑起来。 需要的联系软件产品不包含工具不提供SIP如果需要价格另议不提供MCAL包只是配置工程读懂关键字配置工程 实现功能:6核OS跑起来内存分区要够狠六个核的代码段必须严格隔离在lsl脚本里这么玩// 核0专用闪存区 section_layout :vtc:linear { group (ordered, run_addr0x80000000) { select .text.cpu0_*; } } // 核1同理地址间隔至少0x10000实测发现地址间隔小于0x8000就会偶发代码覆盖特别是当启用优化编译时。有个项目因此随机崩溃查了三个月才发现是这里没对齐。OS实战配置在EB里配六个核的OS Application时关键在核间通信配置OsApplication CoreID0/CoreID IpcConfig MessageSlot Size128 CoreDest1/ !-- 核0发给核1的通道 -- SharedMemory StartAddr0xA0004000 Size0x2000/ !-- 共享内存池 -- /IpcConfig /OsApplication特别注意共享内存必须4K对齐否则高特克编译器直接报段错误。之前有个兄弟配置了0xA0003000的地址结果一运行就hardfault改成0xA0004000瞬间治愈。最后编译时盯着map文件看内存分布六个核的.text段绝对不能有重叠。烧录后上电如果只有核0跑起来别慌——九成是同步信号没处理好上J-Link看各个核的PC指针卡在哪基本一抓一个准。这套配置方案在工控网关项目实测通过跑满六个核还能玩CANFDETH数据转发。记住多核调试就得心狠手辣该隔离的别手软该同步的别偷懒。搞不定了私信甩你工程模板有偿但绝对比官方报价良心保你三天搞定六核全家桶。
搞TC397的AUTOSAR?来点真实力
基于TC397的autosar配置BSW工程MCAL工程编译通过的IDE工程。 ]工具是基于EBdavinci configuratortaskingCBD19版本或hightecCBD24版本。 实际能在开发版上跑起来。 需要的联系软件产品不包含工具不提供SIP如果需要价格另议不提供MCAL包只是配置工程读懂关键字配置工程 实现功能:6核OS跑起来最近被几个老铁追着问TC397多核启动的坑今天直接上硬菜。搞过英飞凌TC3xx的都懂这玩意儿六核启动要是没整明白分分钟让你怀疑人生。咱今天就用EBtresos高特克这套黄金组合手把手教你从零搓出能跑六个核的AUTOSAR工程。工具链选择玄学别纠结用啥IDE高特克CBD24配Hightec实测最稳。之前用Tasking编译的兄弟注意了——# 关键编译器参数必须加这个 CFLAGS -mtc162 -coreall -Wa,-mregnames-implicit特别是-mtc162这个flag少了他你的核0和核1直接罢工。之前有个哥们在论坛骂了三天三夜最后发现就是漏了这个参数惨痛教训啊BSW配置的骚操作在Davinci里配EcuM模块时核心启动顺序得玩点花的核0先唤醒核1和核2核1起来后触发核3最后核2带起核4和核5具体看这个启动状态机的代码片段void StartCoreSequence(void) { Ifx_Ssw_setCore0Ready(); // 核0自检完成 while(!Ifx_Ssw_isCore1Requested()); // 死等核1就绪 Ifx_Ssw_triggerStart(1); // 手动触发核1启动 // 后面依次类推... }这里有个大坑核间同步必须用硬件信号量HSM用软件flag绝对翻车。之前试过用全局变量做同步结果核5永远卡在while循环里后来用HSM的原子操作才搞定。基于TC397的autosar配置BSW工程MCAL工程编译通过的IDE工程。 ]工具是基于EBdavinci configuratortaskingCBD19版本或hightecCBD24版本。 实际能在开发版上跑起来。 需要的联系软件产品不包含工具不提供SIP如果需要价格另议不提供MCAL包只是配置工程读懂关键字配置工程 实现功能:6核OS跑起来内存分区要够狠六个核的代码段必须严格隔离在lsl脚本里这么玩// 核0专用闪存区 section_layout :vtc:linear { group (ordered, run_addr0x80000000) { select .text.cpu0_*; } } // 核1同理地址间隔至少0x10000实测发现地址间隔小于0x8000就会偶发代码覆盖特别是当启用优化编译时。有个项目因此随机崩溃查了三个月才发现是这里没对齐。OS实战配置在EB里配六个核的OS Application时关键在核间通信配置OsApplication CoreID0/CoreID IpcConfig MessageSlot Size128 CoreDest1/ !-- 核0发给核1的通道 -- SharedMemory StartAddr0xA0004000 Size0x2000/ !-- 共享内存池 -- /IpcConfig /OsApplication特别注意共享内存必须4K对齐否则高特克编译器直接报段错误。之前有个兄弟配置了0xA0003000的地址结果一运行就hardfault改成0xA0004000瞬间治愈。最后编译时盯着map文件看内存分布六个核的.text段绝对不能有重叠。烧录后上电如果只有核0跑起来别慌——九成是同步信号没处理好上J-Link看各个核的PC指针卡在哪基本一抓一个准。这套配置方案在工控网关项目实测通过跑满六个核还能玩CANFDETH数据转发。记住多核调试就得心狠手辣该隔离的别手软该同步的别偷懒。搞不定了私信甩你工程模板有偿但绝对比官方报价良心保你三天搞定六核全家桶。