INCA_ProF脚本教程

汽车ECU开发 2022-02-19 16:00
一、首先INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本对ECU闪存编程等各种自定义操作。

本文福利: 分享技术资料《INCA教程》,公众号对话框回复【汽车ECU开发032】下载。


二、然而ProF脚本语言在ETAS的官网或其他网络上并没有专门的使用教程,通常只有ETAS技术支持人员提供的ProF Documentation文档,然而该文档仅涉及ProF语言的函数的使用说明,没有从全局的框架上介绍ProF脚本的层次结构。
三、本人编写整理了ProF脚本语言编写教程,尽自己的绵薄之力与各位共享(若有错误敬请指正)
  • ProF脚本(安装包)架构
  • ProF安装包结构
  • profe文件夹
  • prof文件夹
2、install.ini文件说明,  install文件是标准的INI文件格式,定义了ProF安装包的信息(包括ProF名称、版本、文件集内容等)
2.1 [Configuration]  ProF配置信息定义
[Configuration]Name=TC_Prof_XXXVersion=0301Description="Software download for XXX Project."
2.2 [ChangePath_XX]  需要变更路径的文件及变更内容(后面章节将说明该属性的作用)
File = layout 需要变更路径的文件定义
ConfigPath = c:\$prof\Install  变更的路径定义
[ChangePath_Install]File=layoutConfigPath=c:\$prof\Install[ChangePath_Common.PRI]File=common1.priConfigPath=c:\$prof\InstallEmptyPath=c:\$prof\SecurityPath=c:\$security
2.3  [Files] prof文件夹内的文件定义
[Files]SecurityFile=seedms6.dll
2.4 [LanguageFiles] profe文件夹内的文件定义 
[LanguageFiles]File=info.txtLayoutFile=layoutFile=config_func.cnfFile=config_phys.cnfFile=main.prmFile=common1.pri...
3、*.cnf文件 定义了ProF脚本操作对象控制器协议的基础信息,它的格式在ProF Documentation文档中有严格的定义。主要包括通信速率、控制器ID、Memory_layout,Checksum计算方式等信息
举例:
********************************************************************************** Configuration Software download for xxx access   **********************************************************************************;ECU_ADDR:,             0x7C;                         ; address of ECUPROJECT_NAME:,         Software download for xxxPROG_ST_ADDR:,         0xF1;                         ; address of tester on K-Line;PENDING_TIMEOUT:,      5000;              ; timeout value for 'pending response';;                                         ; V_Prog = (Vpp * MAX) / 4096;                      0 Volt   5 Volt   12 Volt  16 Volt  freiSSC_UPROG_VALUES:,     0x0000,  0x02bc,  0x0690,  0x08c0,  0x0000;;;                                         ; timing parameter for stimulation;                      Index  p1Max   p2Min   p2Max   p3Min   p3Max   p4Min;;KWP2000_TP:,           1,     0x0014, 0x0000, 0x0032, 0x0037, 0x1388, 0x0000;;                                          ; timing parameter for maximum speed;;;                                         ; parameter for key71 stimulation;                      baud  w1    w2    w3    w4Min w4Max w5;KWP2000_STP:,          0x14, 0x1e, 0xc8, 0xc8, 0x19, 0x32, 0x1e;;;                                         ; parameter for KWP2000 stimulation;                      Index   tiniL   wuP     reizLtg  reiztypKWP2000_SP:,            1,     0x0019, 0x0032, 0x00,    0x81;;;                      Index Baudrate     i     k      ; some baud rates for this ECU;HIGH_BDR:,             1,     500000,    0,   20;;DIAG_MODE:,            0x02;                 ; xx Flash programming;;                      index  count   dataSECURITY_ACCESS_MODE:, 1,     1,      0x05;  ; SLD security access mode;;                      Routine no.  Code for RNC Result flag;                                   ; no. of loc. routine for erasing FlashLOC_ROUTINE_ERASE:,    0xFF00,      0x21,        0x01;  ;direct result;                                   ; no. of loc. routine for checksum calculationLOC_ROUTINE_CHK:,      0xFF01,      0x23,        0x01;  ;direct result;VERIFY_METHOD:,        0x02;       ; code for CRC32;CHECKSUM_RESULT_INVERSION:,  0x01  ; activate checksum inversion;ADDRESS_AND_LENGTH_FORMAT_IDENTIFIER:, 0x44; general settingAALFI_FOR_CHECKSUM_CALCULATION:,       0x44;AALFI_FOR_WRITE_MEMORY_BY_ADDR:,       0x33;AALFI_FOR_READ_MEMORY_BY_ADDR:,        0x33;AALFI_FOR_DYNAMICALLY_DEFINE_DATA_ID:, 0x33;AALFI_FOR_REQUEST_DOWNLOAD:,           0x44;DATA_FORMAT_IDENTIFIER:,               0x00;;;MAX_LENGTH:,           0xfc;       ; Patch for maximum length of transfer;;ERASE_MEM_AREA:,       1,    0x00,       0x00,       0x100000L,     0x13FFFFL;   Data sectionERASE_MEM_AREA:,       2,    0x00,       0x00,       0x020100L,     0x0FFFFFL;   APPL;;CAN;===;ECU_TO_INCA_CAN_ID:,   0x000007xx;;TGT_INCA:,                   0xE1; EXTENDED ADDRESSINCA_TO_ECU_CAN_ID:,   0x000007xx;;TGT_ECU:,                    0xE9; EXTENDED ADDRESS;
4、layout文件   ProF界面设置文件。这里是最蛋疼的地方(ETAS完全没有说明,只能穷举的方式进行尝试,很多数字都不知道具体含义)
3 1 1 "#File name: " 1 1 1 1 1"*.HEX"
2 1 1 "#Channel: " 1 1 1 1 2"CAN_HS" "1""CAN_MS" "1"

2 1 1 "#Action: " 1 1 1 1 4"Read Identification" "ident noconv c:\$prof\Install\main.prm""Download - Application Code, Data" "prog_app_data convert c:\$prof\Install\main.prm""Download - Application Code" "prog_app convert c:\$prof\Install\main.prm""Download - Application Data"                "prog_data convert c:\$prof\Install\main.prm"
选项1:当取值是3时,表示此参数采用按键(button)方式选择一个参数,如File name选项所示
              当取值是2时,表示此参数采用下来选项方式选择一个参数,如Channel选项所示
选项2:当选项1等于2时,选项2的值表示下拉栏中有多少个选择项
* 当然上述界面仅在进行Action = Flash programming时有效
5、*.prm文件和*.pri文件说明: 
一个ProF脚本文件只有一个.prm文件,它类似C语言中的main函数;而一个ProF脚本文件却可以有一个或者多个.pri文件,它类似C语言中的子函数。
举例:
;%;% :     hex file conversion;%               convert  = convert;%               noconv   = do not convert;%========================================================================#include "define.pri"#include "error_mess.pri"#include "%7.pri"#include "%8.pri";----------------------------------------------------------------------------; Main programm;----------------------------------------------------------------------------[START]   DEFAULT_SCREEN_LAYOUT (FALSE)   EXTENDED_MESSAGE(FALSE)   DISPLAY_MESSAGE ("START section!!! ",FALSE)        case TRUE : INIT_CNF   default : INIT_CNF[START_END][INIT_CNF]   INIT_FLASH_PROGRAMMING(ECU_ADDRESS,1,CONFIG"phys.cnf")   case TRUE : INIT_USB   default: DSP_ERROR[INIT_CNF_END][INIT_USB]   UDSB_INIT_COMMUNICATION   case FPA_ACK : CONV1   default: DSP_ERROR[INIT_USB_END][CONV1]   CALL (convert)   case TRUE : MAIN   default: DSP_ERROR[CONV1_END][MAIN]   CALL (programECUFlash)   case TRUE :  success   case ESCAPE: DSP_break   default :    DSP_ERROR[MAIN_END][success]  EXTENDED_MESSAGE(FALSE)  default : EXIT[success_END]
5.1 上述主流程描述文件大体上逐步按照每个[Section] ...[Section_END] 之上而下执行。在每个[Section]内部会根据上一个函数的执行结果来判断下一步跳转的位置
执行INIT_FLASH_PROGRAMMING(ECU_ADDRESS,1,CONFIG"phys.cnf") 成功时TRUE,
则执行INIT_USB,否则执行DSP_ERROR
5.2  执行子流程文件(子函数) 
当prm文件中调用子流程时,CALL ( programECUFlash ) ,ProF脚本会自动跳转到对应的xxx.pri文件中执行对应的procedure ,
以下是prog_app_data.pri文件中procedure  programECUFlash 子函数/流程的定义
procedure programECUFlash{  [INFO]    SHOW_PROGRAMMING_INFO (1,"%1."EXT,1)    case TRUE : start    default : $return  [INFO_END]#include "flash.pri"       ; common routines  [erase]    DISPLAY_MESSAGE("", FALSE)    DISPLAY_MESSAGE("Erasure of Code area in the TCU Flash ", FALSE)    UDSX_ERASE_MEMORY_FORMAT(2, FMT_AALFI, FMT_START_ADDR, FMT_MEM_LEN, 50000)     case FPA_ACK : erase_success    default : $return FALSE  [erase_END]  [erase_success]    DISPLAY_MESSAGE ("Erase of Code area successfully completed. ",GREEN_FALSE)    default : prog  [erase_success_END]


6、重点/难点说明
大家都知道在进行控制器的刷新操作时,可以选择刷新的区域;或者可以选择进行读取控制器信息的操作。那样的话 我们该怎么样对不同的操作需求进行跳转流程控制呢?
6.1 返回查看layout文件,其实当选择不同的Action时,ProF会传递不同的参数进入主流程描述文件中,例如当我们选择
"Download - Application Code, Data"          "prog_app_data convert c:\$prof\Install\main.prm"时
实际上传递了多个参数到prm文件,根据空格符号进行区分。
  1.   prog_app_data(参数7)
  2.   convert (参数8)
  3.   c:\$prof\Install\main.prm(参数9)    关于[ c:\$prof\Install ]后续与变更路径一起
6.2 再次返回prm文件,在#include "%7.pri"  #include "%8.pri" 表示载入参数7名 和 参数8名对应的文件
#include "%7.pri"   ==  #include "prog_app_data.pri"
#include "%8.pri"   ==  #include "convert.pri"
在ProF文件夹中编写多个不同名字的.pri文件, 实际主流程描述文件根据用户在Action的选择,而选择了对应文件的xxx.pri子流程文件来执行。当用户选择了"Download - Application Code, Data"          "prog_app_data convert c:\$prof\Install\main.prm"时
6.3 细心的同学会发现,我展示的layout文件略有差异:差异之处在于 参数9中的地址:
ProF安装包中layout文件,地址是相对地址
ProF安装安装到本机后文件,变成了电脑中ETAS数据文件夹(ETASDATA)所在的地址

这里就是之前 2.2 章节中提及的 install.ini 安装文件[ChangePath]属性作用,实际上INCA在安装ProF脚本的过程中会自动将install.ini [Files][LanguageFiles] 里面的文件全部复制到INCA指定的目录中。

而后INCA会根据[ChangePath_XX]里面的信息,变更里面指定文件File = XX

指定配置路径的ConfigPath = XX 全部转换成安装后的实际路径



当然也可以采用类似swith语句的方式实现以上操作。

四、总结

ProF脚本还可以调用基于windows的控制台*.exe文件或.dll文件,实现更多扩展功能。各位可参照ProF Documentation文档进行开发。本文基于个人有限的经验整理而得,若有错误敬请指正。


小编整理了一些有价值的资料,放置在知识新球

推荐阅读

汽车软件开发的下一个阶段是什么样的?
舍与得——主机厂与供应商的ASPICE博弈
深度分析整车控制域现状与发展
谈谈对汽车OTA的理解
小鹏P7内部ECU技术信息梳理
CAN总线基础入门总结
深度解析CAN FD与传统CAN的差异
保时捷Taycan的电子电气架构详解
欧阳明高院士:滑板底盘将给汽车带来一场革命
对传统主机厂的一些思考
如何写一份牛X的汽车软件需求
关于对汽车ECU软件测试的理解
特斯拉最新中央计算模块(CCM)解析
2021款特斯拉Model Y ECU接口梳理
详解CANoe之CAPL编程
关于CAN时间同步的理解
dbc文件的格式以及创建详解
基于UDS的Bootloder详解
关于整车上下电流程的理解
一文详解CAN总线错误帧|附下载
DoIP协议介绍,资料分享!
详解车载网络 OTA系统的开发|文末附下载
一文了解汽车嵌入式AUTOSAR架构|附下载
特斯拉Autopilot系统安全研究|附dbc下载
分享不易,恳请点个【在看】
汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 118浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 214浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 67浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 155浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 58浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 162浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 56浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 198浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 115浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 88浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 106浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 140浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦