新闻  |   论坛  |   博客  |   在线研讨会
汽车电子 expert 成长之路微信公众号原创技术分享文章 集合 2017~2018 年
HXW718059156 | 2019-02-25 20:37:56    阅读:6847   发布文章

时光荏苒,从2017年7月18号开始我自己的微信公众号—汽车电子expert成长之路到现在已经走过了一年半的时间,我将过去五年在FreescaleNXP做汽车电子FAE和AE的工作过程中,积累的技术问题和经验分享进行了全面的总结和升华,旨在“透析汽车电子嵌入式系统软硬件技术开发难度、痛点,分享汽车电子开发实战经验”。截止2018年12月31号,已陆陆续续发表了近70余篇原创技术分享文章。

 

内容覆盖以下10大主题:

 

1.       汽车电子ECU Bootloader开发》;

2.       浅谈嵌入式MCU软件开发》;

3.       S32K SDK使用详解》;

4.       S32Kxx系列MCU使用Tips》;

5.       汽车电子ECU参数标定》;

6.       S32DS IDE使用Tips》;

7.       CodeWarrior IDE使用Tips》;

8.       外设使用Tips》;

9.       答疑解惑》;

10.    产线批量Flash编程与ESD/EOS保护》;

 

文章发布后,受到了广大读者/粉丝的喜爱,收到了无数留言和好评,很多读者反馈说我的文章真实地帮他们解决了汽车ECU软硬件开发过程中遇到的诸多实际问题。

 

然而,微信公众号,虽然很方便在移动终端设备上阅读,但随着发表文章数量的增加和内容越来越丰富,而其不提供全局检索功能,纵然我已经在文章末尾增加了已发表文章列表并开通主页关键词自动回复功能帮助大家更快地找到自己需要的文章,但任然无法满足大家的需求。

 

因此,为了方便大家更好地利用我公众号中发表的原创技术分享文章资源,我特意将所有截止2018年12月31日之前的61篇精品原创技术分享文章整理成册,制作成高清PDF版本:

      

è  整理文章标题和文章内容格式,生成统一的目录格式,便于快速跳转浏览;

è  修订了所有读者留言指正的错误和错别字;

è  所有文章图片保留原始高清格式,去公众号水印logo,可无损放大查看;

è  可在pdf阅读器中,全局搜索关键词,快速查找感兴趣的topic和问题解决方案;

 

欢迎大家关注我的微信公众号--汽车电子expert成长之路.(直接微信扫描下方二维码即可),阅读更多关于嵌入式系统软硬件设计和汽车电子的原创性精彩文章。                                              我的微信公众号二维码.jpg

如果你觉得我的文章对你的学习/工作有所帮助,也请你帮忙转发到你的朋友圈、微信群和QQ同学/工作群等,让更多的人能够看到我的文章,从中受益!

 

由于工作时间原因,本公众号每周不定时更新个人原创文章。坚持原创,保证质量;不断总结经验才能提高。

 

*      郑重申明1:本公众号所有原创技术文章免费阅读:

ü  文中所有观点/结论均为个人观点,不代表任何公司官方观点意见;

ü  所有demo代码/程序,仅作参考学习,不保证质量,若用于商业用途,责任自负;

ü  所有本公众号文章,版权归本人所有知识产权,一切未经本人同意的转载均属违法,盗版必究~!

                                

   郑重申明2版权所有,未经作者本人授权同意,不得将文章中内容用于任何商业用途,否则一切法律后果自负!尊重原创,保护知识产权--若需引用,请务必标明出处—汽车电子expert成长之路。

 

Enwei Hu(胡恩伟)

汽车电子expert微信公众号博主

二〇一九年二月四日(农历腊月三十)


    以下为精彩内容的目录,喜欢的可以到如下百度云盘链接免费下载:

  • 链接: https://pan.baidu.com/s/13iXcLzWba-2UdAeTHuIqww 

  • 提取码: 9c39 


目 录

Contents

汽车电子expert成长之路微信公众号原创技术分享文章集合2017~2018年... 1

目 录... 3

汽车电子ECU Bootloader开发要点详解... 25

引言... 25

1. Bootloader的功能... 25

2. 如何建立可靠的总线通信?... 25

3. 解析编程文件(S19/HEX/BIN) 27

4. NVM驱动程序开发... 27

5. Bootloader开发的其他要点... 30

a. Bootloader与应用程序的关系... 30

b. Bootloader到应用程序(APP)的跳转方法... 31

c. 开发Bootloader需要掌握的知识和调试方法技巧... 32

d. 量产时Bootloader和应用程序的下载方法... 32

总结... 33

汽车电子ECU  Bootloader开发之基于CAN总线通信的MPC57xx系列MCU Bootloader开发详解(以MPC574xP为例介绍). 34

引言... 34

1. MPC5744P的Bootloader和应用程序存储器地址分配... 35

1.1 MPC574xP系列MCU的SRAM资源... 35

1.2 MPC574xP系列MCU的Flash资源... 37

1.3 MPC5744P CAN总线Bootloader和应用程序存储器地址分配... 42

2. Flash 驱动开发(下载安装和使用C55 Flash SSD) 46

3. FlexCAN驱动开发... 49

3. 1 DEVKIT-MPC5744P CAN总线硬件设计... 49

3.2 Qorivva MPC57xx系列MCU  FlexCAN 模块功能简介... 50

3.3 FlexCAN模块通信波特率配置... 51

3.4 FlexCAN模块RX ID滤波器设置,中断设置以及驱动程序API介绍... 54

4. 上位机软件及CAN总线通信协议介绍... 58

5. Bootloader程序流程介绍(解析S19文件、调用 Flash SSD编程应用程序以及跳转方法) 59

6. 使用本文介绍的Bootloader 68

6.1 基于DEVKIT-MPC5744P的测试硬件连接... 68

6.2 在DEVKIT-MPC5744P上测试本例Bootloader 69

总结... 74

浅谈嵌入式MCU软件开发之Qorivva MPC57xx和S32R系列多核MCU启动配置(以S32R274的S32DS应用工程为例) 79

引言... 79

1. S32R274的系统功能框图和多核系统介绍... 79

2. S32R274的存储器地址映射与使用Tips. 80

3. S32R274的S32DS应用工程多核启动配置详解... 83

4. Qorivva MPC57xx和S32R系列多核MCU bootloader开发要点详解... 90

4.1 只需要为boot core CPU内核开发bootloader,因为每次MCU复位后,首先运行boot  core CPU,然后再由其配置和使能非boot core内核;... 91

4.2 运行在boot core内核的bootloader工程,需要启动配置半字(RCHW),可通过其链接文件(linker  file)指定放置到MCU的Flash Boot Location区域,且必须保证在所有bootloader工程和应用工程地址空间分配中,bootloader的RCHW所在的boot location最小,推荐将bootloader的RCHW分配到MCU的boot location 0... 92

4.3 Flash分区时,bootloader与不同的多核APP工程之间不能跨Flash Block和RWW分区... 93

4.4 bootloader到APP工程跳转时,使用硬件复位(推荐SWT看门狗复位)跳转至多核APP工程的boot core内核复位函数(通过将函数指针指向boot core内核的复位向量);... 93

4.5 将多核APP工程编译生成的.S19/.HEX文件使用文本编辑器合并作为最终的下载文件... 93

总结... 94

汽车电子ECU Bootloader开发之基于CAN总线通信的S12(X) 系列MCU独立NVM驱动Bootloader开发详解... 95

引言... 95

1.  CAN总线和汽车ECU Bootloader 95

2.  S12  (X) 系列MCU片上NVM资源及其驱动程序开发... 96

2.1   S12 (X) 系列MCU存储器的分页工作机制和S12G128片上NVM资源介绍... 96

2.2   S12 (X)片上NVM驱动开发详解... 99

2.3   S19文件详解... 102

3.  基于CAN总线的Bootloader设计... 104

3.1   PC上位机软件及通信协议设计... 104

3.2   Bootloader 主机 (host) 软件设计... 106

3.3   应用程序软件设计... 107

4. 基于CodeWarrior处理器专家系统的图形化快速实现... 108

4.1   CodeWarrior 5.1 IDE及处理器专家系统及其使用简介... 108

4.2   Bootloader和应用程序内存分配及处理器专家系统配置... 111

5. 总结... 115

参考文献... 117

浅谈嵌入式MCU软件开发之Qorivva MPC56xx_57xx系列MCU的Power e200内核寄存器功能和内核调试技巧介绍... 118

引言... 118

1. Power架构BookE寄存器介绍... 118

1.1 用户级寄存器(User-level  registers) 119

1.3 在CodeWarrior 10.6/7  IDE和S32DS for Power v1.2 IDE中调试时查看e200内核寄存器... 124

2. Power架构e200内核的MSR寄存器详解及处理器模式切换... 128

2.1 Power架构e200内核的MSR寄存器详解... 128

2.2 Power架构e200内核的处理器模式切换... 133

3. 如何在C语言应用工程中操作Power e200系列CPU内核的特殊寄存器... 137

3.1 S32DS for Power v1.2 IDE C语言应用工程操作特殊寄存器的方法... 138

3.2 CodeWarrior 10.6/7 IDE C语言应用工程操作特殊寄存器的方法... 139

总结... 140

浅谈嵌入式MCU软件开发之Qorivva MPC56xx_57xx系列MCU内核异常(IVORx)与INTC管理的外设和软件设置中断(IRQ中断)处理详解... 141

引言... 141

1. Qorivva MPC56xx/57xx系列MCU使用的PowerPC e200系列CPU内核系统异常简介... 141

1.1. Power e200z3/z4/z6/z7内核的系统异常... 141

1.2. Power e200z0内核的系统异常... 146

1.3 PowerPC e200内核异常IVOR4介绍... 148

2. INTC模块功能介绍... 149

2.1 INTC控制寄存器(INTC_BCR/INTC_MCR)--配置IRQ中断为硬件向量还是软件向量模式... 150

2.2 INTC当前优先级寄存器(INTC_CPR0)--配置当其INTC模块处理的优先级... 152

2.3 INTC中断确认寄存器(INTC_IACKR0) 152

2.4 INTC中断结束寄存器(INTC_EOIR0) 153

2.5 INTC软件设置中断寄存器(INTC_SSCIRn) 153

2.6 INTC中断优先级设置寄存器(INTC_PSRn) 154

2.7 INTC监测模式寄存器(INTC_MMCR0) 155

2.8 INTC中断监测选择寄存器(INTC_HIPRInC0) 156

2.9 INTC延迟寄存器(INTC_LATnCR0)... 157

2.10 INTC定时器寄存器(INTC_TIMERnCR0)... 158

3. INTC模块管理的两类IRQ中断请求:... 158

3.1 软件设置中断... 158

3.2 外设硬件中断... 159

4. INTC模块中断初始化流程... 159

5. 软件向量模式(Software Vector  Mode) 160

5.1 软件向量模式下CPU内核系统异常和INTC模块初始化详解... 162

6. 硬件向量模式(Hardware Vector  Mode)... 171

总结... 172

浅谈嵌入式MCU软件开发之startup过程详解(从复位向量到main函数之前的准备工作) 174

引言... 174

1.嵌入式MCU的复位源... 174

2.Startup相关的几个问题:... 175

3.嵌入式MCU Startup过程详解... 176

4.S12G128 MCU的启动过程解析... 180

总结... 182

浅谈嵌入式MCU软件开发之startup过程详解(在CodeWarrior  5.1 中实现RAM自定义初始化) 183

引言... 183

RAM自定义初始化目标... 183

实现过程详解... 184

结果分析... 187

总结... 188

浅谈嵌入式MCU开发中的三个常见误区... 189

嵌入式MCU与MPU的区分... 189

误区一:MCU的程序都是存储在片上Flash上,然后拷贝到RAM中执行的... 190

误区二:工程编译生成的下载文件大小即为最终占用Flash的大小... 193

误区三:用户应用工程的编译结果建议不能超过MCU片上Flash的80%. 196

浅谈嵌入式MCU软件开发之应用工程的堆(heap)与栈(stack)... 197

概述与案例分析... 197

1.    嵌入式C语言应用工程中堆栈的定义和作用... 197

2.嵌入式C语言应用工程的栈大小确定... 200

3.嵌入式C语言应用工程的堆栈溢出定义、危害以及应对措施... 202

浅谈嵌入式MCU软件开发之代码风格与代码优化... 206

引言... 206

一、函数必须有返回值... 206

二、函数的形参建议不要超过三个,而且对形参进行类型和范围检查... 207

三、关于局部变量... 207

四、中断服务函数ISR. 207

五、关于函数名和变量名定义... 207

六、关于代码注释... 208

七、关于头文件的定义... 208

八、若MCU支持位操作,使用位定义和位域(bit-filed)操作,可以提高RAM的使用效率... 208

九、关于static、extern和volatile关键词的使用... 208

十、8位和16位MCU中分页存储器的访问... 209

十一、针对8位和16位MCU的代码优化... 210

十二、使用直接对相应位写1的方式清除中断标志... 211

十三、使用IDE的代码格式管理功能统一代码风格... 211

十四、关于MCU编译器、链接器的优化... 212

总结... 213

浅谈嵌入式MCU软件开发之中断优先级与中断嵌套... 214

引言... 214

1. 嵌入式MCU的中断工作机制... 214

2. 中断响应--中断ISR与中断实时性... 214

3.    中断优先级与中断嵌套... 216

总结... 219

浅谈嵌入式MCU软件开发之S12(X)系列MCU的far和near函数指针调用详解(S12G128 based CodeWarrior 5.x Project)... 220

引言... 220

1. S12(X) CPU内核的跳转和函数调用和返回指令... 221

2. S12(X) 系列MCU的CodeWarrior 5.x应用工程中的near和far类型指针的定义与区别... 222

2.1. near类型指针定义... 222

2.2 far类型指针定义... 222

2.3 反汇编分析near和far对函数/函数指针的影响... 225

3. S12(X) 系列MCU的CodeWarrior 5.x应用工程中使用函数指针调用函数的方法步骤和注意事项... 229

①使用near类型函数指针调用... 232

②使用far类型函数指针调用... 233

总结... 234

浅谈嵌入式MCU软件开发之MagniV S12Z系列MCU内核Machine  Exception异常原理与恢复... 236

引言(MagniV S12Z系列12V汽车ECU专用单芯片集成解决方案介绍) 236

1. S12Z CPU内核简介... 238

1.1 S12Z内核寄存器详解... 238

1.2 S12Z CPU内核的存储器地址映射... 240

1.3 S12Z CPU内核的异常/中断定义和分类以及优先级... 241

1.4 S12Z CPU内核的异常/中断处理流程详解... 242

2. S12Z CPU内核Machine  Exception异常详解... 246

2.1 S12Z CPU内核Machine  Exception异常的处理进入流程和退出方式... 246

2.2 MagniV S12Z系列MCU的存储器映射与控制(MMC)模块和Machine Exception异常产生原因详解... 247

3. 嵌入式MCU的存储器ECC工作原理... 250

3.1 奇偶校验技术简介... 250

3.2 ECC纠错与检错算法简介... 250

3.3 嵌入式MCU存储器ECC的实现原理与特点... 251

3.4 MagniV S12Z系列MCU的存储器ECC. 252

4. MagniV S12Z系列MCU内核MMC模块Machine Exception异常相关寄存器介绍... 252

4.1 MMC错误编码寄存器(MMCEC) 253

4.2 捕捉内核CCR寄存器(MMCCCRH, MMCCCRL) 254

4.3 捕捉内核程序计数器寄存器(MMCPCH,  MMCPCM, MMCPCL) 255

5 MagniV S12Z系列MCU CPU内核Machine Exception异常的处理与恢复详解... 256

5.1 非法存储器访问(illegal  memory access)的处理... 257

5.2 NVM Double-bit 不可纠正ECC错误的处理... 257

5.3 Machine Exception异常的恢复... 259

5.4 Machine Exception异常处理与恢复demo测试工程介绍... 260

总结... 264

浅谈嵌入式MCU软件开发之S32DS for Power V1.2 链接文件 (linker file) 和启动文件详解... 266

引言... 266

1.    存储器分区详解(V1.0的mem.ld文件内容):... 267

2.    编译结果链接放置段详解(V1.0的sections.ld文件内容):... 269

3.    启动文件Start.s详解与修改... 277

4.    C文件测试数据和代码... 291

总结... 292

浅谈嵌入式MCU软件开发之Qorivva MPC56xx系列MCU启动过程解析(基于CodeWarrior  IDE应用工程--结合EAB I、链接文件、启动文件和编译链接结果map文件) 294

引言... 294

1. 复位函数__startup()概述与解析... 294

2. 初始化函数__init_registers()解析--栈指针(R1)和小数据指针(SDA2-->R2/SDA-->R13)初始化... 299

3. 初始化函数__init_hardware()解析--内核(FPU和SPE)和板级硬件(看门狗、SRAM的ECC、内核系统异常IVORx以及片上外设中断控制器INTC)初始化... 302

3.1 初始化函数INIT_Derivative()--看门狗和SRAM ECC初始化... 304

3.2 初始化函数EXCEP_InitExceptionHandlers()--e200内核系统异常IVORx向量表初始化... 306

3.3 初始化函数INTC_InitINTCInterrupts()--INTC模块初始化-->外设中断向量表设置和中断向量模式(软件/硬件向量模式)配置... 308

4. 初始化函数__init_data ()解析... 311

5. 初始化函数__init_user()解析... 313

总结... 316

浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解(基于S32K144和S32DS for  ARM v2018.R1) 319

引言... 319

1. S32K1xx系列MCU启动过程详解(startup_S32K144.S) 322

①关闭CPU全局中断... 323

②清零CPU内核寄存器R1~R12. 324

③初始化SRAM的ECC. 324

④初始化堆栈... 324

⑤系统初始化... 324

⑥RAM初始化... 327

⑦打开CPU全局中断... 330

⑧跳转到应用程序main()函数... 331

2. 重映射代码/函数到RAM中运行的方法和步骤... 331

2.1分析应用工程链接文件(S32K144_64_flash.ld) 331

2.2将想要重映射的代码/函数通过__attribute__  ((section(".code_ram")))指定到.code_ram... 331

2.3在应用工程编译结果map文件中查看重映射结果... 332

总结... 336

浅谈嵌入式MCU软件开发之S12(X)系列MCU 中断ISR在CodeWarrior 5.1 IDE 中的三种写法... 338

引言... 338

1.中断ISR的特点... 338

2.S12G系列MCU的中断向量表和中断优先级... 338

3.为什么S12(X)的中断ISR必须放在未分页区(NON_BANKED) 341

4.S12G系列MCU的中断ISR在CodeWarrior 5.x 应用工程中如何实现?... 343

方法一:在C文件中,建立中断向量表,使用‘@’重定义中断向量地址,并根据中断向量表地址将相应的中断ISR地址放在表中对应外设中断位置... 343

方法二:在C文件中,采样关键词interrupt+中断向量号+ISR函数名来编写... 344

方法三:在prm文件中定义:采样关键词VECROR+中断向量号+ISR函数名或关键词VECTOR+中断向量地址+ISR函数名(可实现中断向量地址重映射),然后再C文件中编写相应的ISR函数... 344

总结... 345

浅谈嵌入式MCU软件开发之重定向标准输入输出设备使用printf()函数格式化输出调试信息(基于S32DS IDE和MPC5744P) 346

引言... 346

1. 重定向JTAG调试接口的半主机(semi-hosting)模式为标准输入输出设备... 346

1.1 创建工程时,选择I/0 Support选择为Debugger Console. 347

1.2 设置应用工程Library Support为ewl_c_Debugger  Console(-specs=ewl_c9x_hosted.specs) 347

2. 重定MCU的UART模块为标准输入输出设备... 348

2.1 DEVKIT-MPC5744P评估板的UART资源及SDK中uart_pal组件的配置... 348

2.2 配置应用工程Library support为ewl_c no I/O(-specs_c9x_noio.specs) 351

2.3 在应用工程中添加printf.cuart_console_io.c、uart.huart.c. 353

3. 调用printf()输出格式化调试信息... 357

3.1 调用printf()输出格式化调试信息的方法和步骤... 357

3.2 使用JTAG的半主机模式作为EWL库标准输入输出设备的打印结果... 358

3.3 使用UART作为EWL库标准输入输出设备的打印结果... 362

4. 使用printf()打印调试信息的优缺点... 364

总结... 364

浅谈嵌入式MCU软件开发之调试器(Debugger)使用--PEMicro Multilink功能介绍与使用FAQ.. 367

引言... 367

1. Multilink的分类、特性与选型... 368

1.1 Multilink的分类与特性... 368

1.2 U-Multilink调试器的调试端口引脚功能定义与支持的MCU架构/系列对应关系:... 371

1.3 如何选择与购买Multilink?... 373

2. Multilink的Firmware更新... 374

2.1 Multilink Firmware更新软件下载与安装... 375

2.2. Multilink Firmware更新软件使用详解... 379

3. Multilink的使用FAQ.. 387

3.1 使用Multilink给目标MCU供电?... 387

3.2 使用Multilink调试目标MCU的推荐上电顺序... 388

3.3 Multilink与OSBDM和OSJTAG以及OpenSDA的关系... 388

3.4 如何获得Multilink的技术支持?... 391

总结... 392

浅谈嵌入式MCU硬件设计之MCU最小系统电路... 393

引言... 393

1. 电源电路... 393

2. 复位电路... 395

3. 时钟电路... 396

4. 程序下载和调试接口电路... 399

4.1. BDM接口... 399

4.2. JTAG接口... 400

4.3. SWD接口... 402

总结... 403

浅谈嵌入式MCU软件开发之Qorivva MPC56xx/57xx系列MCU的模式控制与切换... 404

引言... 404

1.MPC56xx/57xx系列MCU的应用特点和工作模式概况... 404

2.MC_ME的控制原理详解... 405

2.1 各种运行模式和低功耗模式的进入和退出条件及相互切换状态机... 405

2.2 模式使能寄存器(ME_ME) 407

2.3 模式配置寄存器(ME_<mode>_MC) 409

2.4 外设运行模式配置寄存器(ME_RUN_PC0..7) 411

2.5 外设低功耗模式配置寄存器(ME_LP_PC0..7) 413

2.6 外设控制寄存器(ME_PCTL0..143) 413

2.7 系统模式控制寄存器(ME_MCTL) 415

2.8 全局状态寄存器(ME_GS)... 416

3. 推荐的模式切换和外设门控时钟使能配置流程... 419

总结... 420

S32K SDK使用详解之S32 SDK软件编程思想详解... 423

引言... 423

1. S32 SDK的软件分层架构简介... 423

1.1 外设驱动层(PD--Periperal  Driver) 424

1.2 外设抽象层(PAL--Peripheral  Abstract Layer) 425

1.3 中间件层(Middleware) 426

1.4 实时操作系统层(RTOS) 427

1.5 S32 SDK底层驱动软件分层的优点... 427

2. S32 SDK的外设驱动组件全局状态结构体解析... 428

3. S32 SDK外设底层驱动中断处理机制详解... 433

4. S32 SDK的通信外设驱动组件API函数的阻塞与非阻塞发送与接收API函数差别与使用详解... 438

5. S32 SDK的外设驱动与RTOS之间的交互方式... 442

总结... 445

S32K SDK使用详解之S32 SDK软件架构详解... 446

引言... 446

1. SDK的MCU平台相关设备驱动解析(SDK/platform/devices目录) 446

1.1 子目录common. 447

1.2 子目录S32K1xx(为具体使用的MCU型号,可能为 S32K116/S32K118/S31K142/S32K144/S32K146/S32K148) 450

1.3 其他文件... 453

2. SDK的MCU平台相关PD外设驱动解析... 459

3. SDK的MCU平台相关PAL外设抽象层驱动解析... 462

4. SDK的中间件(Middleware)解析... 463

5. SDK的操作系统(OS)解析... 466

5.1 Source/include. 468

5.2 Source/portable. 469

5.3 其他源文件... 470

5.4 rtos/osif 471

总结... 472

S32K1xx系列MCU使用Tips之SDK软件架构和使用详解... 473

引言... 473

1. S32K1xx系列MCU的SDK版本和Roadmap. 474

1.1 S32 SDK的3个软件版本--EAR/Beta/RTM.. 474

1.2 S32K1xx SDK的版本Roadmap介绍... 475

2. S32K SDK的软件架构详解... 477

2.1 系统管理组件(xxx_manager) 478

2.2 OS相关组件... 499

2.3 各类外设组件... 501

3. S32K SDK使用Tips. 504

3. 1 使用PAL vs PD?... 504

3. 2 SDK 初始化API函数的调用顺序及与MCU外设模块初始化的关系... 504

3.3 使用FreeRTOS时必须调用INT_SYS_SetPriority()对所有使能的外设中断进行优先级设置(S32K系列MCU) 505

3.4 在S32 SDK中中断向量表在Startup的过程中已经自动拷贝到SRAM中,故用户可以在线(程序运行时)改变外设中断的ISR. 507

3.5 使用处理器专家配置SDK的好处... 507

3.6 如何打开SDK的Processor Expert GUI配置并添加SDK组件?... 508

总结... 510

S32K1xx系列MCU使用Tips--功能介绍及软件开发和硬件设计FAQ.. 512

引言... 512

1. S32K系列MCU功能介绍和特性对比... 512

1.1 具体的S32K1xx系列MCU的内核即外设资源框图:... 513

1.2 S32K11x与S32K14x系列MCU的封装、内核外设资源对比:... 513

1.3 S32K1xx与KEA系列MCU的引脚封装兼容性... 517

1.4 S32K1xx系列MCU的part number命名规则... 518

2. 软件开发工具支持及SDK使用Tips & FAQ.. 524

2.1 支持的软件开发集成环境(IDE)及FAQ.. 524

2.2 支持的软件下载和调试器... 525

2.3 SDK介绍及使用Tips. 525

3. 硬件设计注意事项FAQ.. 529

3.1 电源和复位电路设计... 529

3.2 晶振和时钟电路设计... 531

3.3 调试接口电路设计... 533

3.4其他硬件电路设计及EMC考虑... 534

4. 参考文档... 535

总结... 536

S32K14x系列MCU使用Tips之硬件FPU特性介绍和使用详解... 538

引言... 538

1. Cortex M4F CPU内核的FPU特性介绍... 539

1.1. Cortex M4F CPU内核FPU的寄存器组以及控制状态寄存器功能介绍... 539

1.2 Cortex M4F CPU内核FPU的汇编指令集介绍... 549

1.3 CM4F内核的FPU异常... 553

2. S32K14X系列MCU的FPU使用(基于S32K144的S32DS应用工程) 554

2.1 创建使能硬件FPU的S32DS应用工程... 554

2.2 配置S32K14x的S32DS应用工程使能内核硬件FPU.. 555

2.3 关于S32DS应用工程FPU Support选项配置的说明... 555

3. 编译结果分析与使用Tips. 558

3.1 EWL库with FP  instructions(hard) 559

3.2 EWL库with Libary with  FP(softfp) 560

3.3 EWL库with Libary(soft) 560

3.4 EWL库with Toolchain  default 561

3.5 使用单精度浮点数进行数学函数运算... 562

3.6 S32K14x系列MCU硬件FPU使用注意事项(Tips) 564

总结... 567

浅谈嵌入式MCU系统软件开发之S32K1xx系列MCU的MPU配置与使用详解... 569

引言... 569

1. s32K1xx系列MCU的MPU模块功能介绍... 569

1.1 S32K1xx系列MCU的MPU模块管理的逻辑总线Master  ID和Slave分配... 571

1.2 S32K1xx系列MCU的MPU功能特性... 572

2. MPU模块寄存器介绍... 573

2.1 控制与错误状态寄存器(CESR) 574

2.2 错误地址寄存器(EAR0 - EAR4) 575

2.3 错误详细寄存器(EDR0 - EDR4) 576

2.4 区域描述符配置字寄存器(RGD0_WORDx  - RGD15_WORDx) 577

2.5 区域描述符配置字寄存器的复位值与MPU的默认配置... 580

3. S32K1xx系列MCU MPU模块的功能详解... 580

3.1 命中认定(Hit  determination) 581

3.2 权限违规认定(Privilege  violation determination) 582

4.S32K1xx系列MCU的MPU的SDK使用和配置注意事项... 582

4.1 S32K SDK中的MPU配置组件介绍... 582

4.2 S32K SDK中的MPU配置组件使用Tips和MPU配置注意事项... 586

总结... 592

S32K1xx系列MCU使用Tips--Flash加密后不断复位无法连接调试器的问题解决... 593

问题现象(issue discription)... 593

原因分析(root cause analyze)... 596

解密方法(problem resolve  solution) 599

1. 使用PEMicro的Debugger,配置使能Emergency Kinetis Device Recovery by Full Chip Erase. 599

2. 使用Segger的J-Link Commander的unlock Kinetis命令进行解密/解锁。... 601

总结(summary)... 604

S12(X)系列MCU的片上存储器资源与分页访问机制详解(一) 605

引言... 605

1.S12(X)系列MCU的片上存储器资源... 605

2.如何确定一个MCU的存储器寻址能力... 606

3.存储器分页访问机制详解... 606

总结... 611

S12(X)系列MCU的片上存储器资源与分页访问机制详解(二) 612

引言... 612

1. 存储器资源的使用... 612

2. 分页区的访问... 618

3. 调试debug时查看分页存储器地址空间... 622

4. 总结... 624

S12(X)系列MCU的加密(Secure)原理和解密(Unsecure)方法... 626

引言... 626

1. S12(X)系列MCU的加密(Secure)原理... 626

2. S12(X)系列MCU的加密方法... 629

2.1 在用户工程中配置Flash配置字节... 629

2.2 通过量产工具--Cyclone  Pro/Universal编程器... 632

3. S12(X)系列MCU的解密(Unsecure)方法... 633

3.1 在SS模式下通过BDM命令擦除所有片上NVM解密... 633

3.2 使用后门访问秘钥(backdoor  access key ) 638

总结... 644

汽车ECU参数标定之配置e200系列CPU内核MMU实现Qorivva MPC56xx_57xx系列MCU的参数在线实时标定... 648

引言... 648

1. PowerPC e200z4内核MMU工作原理介绍... 648

2. MMU配置寄存器与辅助寄存器MAS介绍... 652

2.1 MMU配置寄存器--MMUCFG/SPR-1015  与 TLBCFG/SPR-689. 652

2.2 MAS0寄存器--SPR-624. 653

2.3 MAS1寄存器--SPR-625. 654

2.4 MAS2寄存器--SPR-626. 656

2.5 MAS3寄存器--SPR-627. 657

2.6 MAS4寄存器--SPR-628. 657

2.7 MAS6寄存器--SPR-630. 658

3. MMU配置相关汇编指令介绍... 660

4. MMU TBL操作详解... 663

4.1 TLB传输重加载(Translation  Reload) 663

4.2 读取TBL. 664

4.3 写入TBL. 664

4.4 搜索TLB. 664

5. 复位后TBL的加载(默认配置)和MMU调试Tips. 664

6. MMU配置标定地址映射具体实现步骤和结果... 668

6.1 按照标定需求编程MMU配置API函数... 668

6.2 配置工程链接文件... 669

6.3 在线标定实测代码和结果分析... 672

总结... 675

汽车ECU参数标定之配置Overlay RAM实现Qorivva MPC57xx系列MCU参数在线标定和代码重映射运行原理和方法详解... 677

引言... 677

1. MPC5744P的Overlay RAM工作原理介绍... 677

2 MPC5744P的Flash Overlay配置详解... 684

2.1 平台Flash标定区域描述字寄存器配置字0--PFLASH_PFCRDn_Word0. 685

2.2 平台Flash标定区域描述字寄存器配置字1--PFLASH_PFCRDn_Word1. 685

2.3 平台Flash标定区域描述符寄存器配置字2--PFLASH_PFCRDn_Word2. 686

2.4 平台Flash重映射描述符使能寄存器--PFLASH_PFCRDE. 688

2.5 平台Flash重映射控制寄存器--PFLASH_PFCRCR. 688

3. MPC5744P Flash 重映射标定数据到Overlay  RAM在S32DS for Power V2017.R1中的应用工程实现... 690

3.1 配置应用工程链接文件,划分标定数据的存储地址Flash空间和运行时重映射Overlay RAM空间... 690

3.2 将标定数据从Flash拷贝到Overlay RAM中... 692

3.3 具体的Overlay RAM重映射配置API代码... 693

3.4      在线标定测试结果分析... 694

总结... 698

S32DS IDE使用Tips--SDK使用常见问题(FAQ)答疑... 699

引言... 699

FAQ NO.1 如何创建在MCU应用工程中添加SDK?... 700

方法1. 在新建应用工程向导中选择使能相应的SDK. 700

方法2. 选中应用工程,右键-->SDKs添加(适用于创建工程时未使能SDK的应用工程) 704

FAQ NO.2 如何添加/切换使用SDK时Processor Expert的MCU引脚封装?... 711

FAQ NO.3 如何打开SDK的demo工程以及如何使用demo工程?... 717

FAQ NO.4 如何获取并安装最新版本的SDK?... 719

方法1. 通过S32DS IDE的软件更新推送,给S32DS IDE打补丁安装... 719

方法2. Check S32DS IDE官网,下载升级包安装,然后本地安装... 722

FAQ NO.5 如何查看SDK外设组件(Component)的帮助文档?... 726

总结... 728

S32DS IDE使用Tips--应用工程调试常见问题(FAQ)答疑... 729

引言... 729

1. 如何启动多核调试?... 729

2. 如何下载和调试非S32DS IDE工程的S19/HEX/BIN/elf编译结果?... 731

3. 如何查看Qorivva MPC57xx和S32R系列MCU的e200Zx系列CPU内核的特殊寄存器(SPR)?... 732

4. 如何查看反汇编代码和执行汇编指令调试?... 734

5. 如何在程序下载时保护特定NVM(Flash/EEE)地址内容不被擦除?... 735

6. 如何加载不同的Flash算法文件编程Data-Flash和外部QSPI Flash?... 738

7. 如何attach调试定位bug?... 740

8. 如何导出储存器中的编程结果到S19/HEX/BIN文件?... 740

9. 如何高效地设置和管理应用程序调试断点?... 741

10. 如何查看全局变量?... 744

11. 如何在调试时动态监测变量变化?... 746

12. 如何找到S32DS IDE的帮助文档?... 747

总结... 748

S32DS for Power community 社区链接:... 749

S32DS for ARM community 社区链接:... 749

S32DS for Vision community 社区链接:... 750

S32DS IDE使用tips--工程属性配置(编译选项和C编译器、汇编器及链接器设置) 752

引言... 752

1. 如何打开S32DS应用工程的属性设置... 752

2. 设置Cross Settings. 753

2.1 配置Create flash image. 753

2.2 配置print size输出编译结果大小... 754

3. 配置Target Processor 757

4. 配置Standard S32DS C  Compiler(C编译器) 758

4.1预处理器设置(Preprocessor) 758

4.2 包含路径(Includes) 759

4.3设置优化等级(Optimization) 759

4.4 配置调试信息(debugging) 760

5. 配置Standard S32DS C  Linker(C链接器) 760

5.1 添加/设置链接文件... 760

5.2 添加用户库... 761

6. 配置Standard S32DS  Assembler (汇编器) 762

总结... 763

S32DS IDE使用Tips--利用Attach功能定位bug和调试bootloader 764

引言... 764

1. PEMicro系列调试器与Segger  J-Link调试器介绍... 764

1.1 PEMicro系列调试器:... 764

1.2 Segger J-Link调试器... 765

2. 基于PEMicro调试器的S32DS Attach调试方法与步骤... 767

2.1 新建应用工程用于测试 PEMicro调试器工具链... 767

2.2 在工程的调试配置选项中配置使能Attach调试功能... 772

3. 基于J-Link调试器的S32DS Attach调试方法与步骤... 775

总结... 779

S32DS IDE使用Tips--如何通过创建新的编译目标(Build Target)在同一个S32DS工程中同时编译静态库和应用程序... 781

引言... 781

1. 什么是S32DS工程的编译目标(Build Target) 781

1.1 编译目标的作用... 781

1.2 新建S32DS工程默认编译目标配置和用途介绍... 781

2. 通过创建新的编译目标(Build  Target)在同一个S32DS工程中同时编译静态库和应用程序的具体方法和步骤... 782

2.1 新建静态库和应用工程... 782

2.2 在应用工程中创建新的编译目标并复制静态库工程的编译目标配置用于编译静态库... 784

总结(如何创建和配置CodeWarrior IDE的编译目标) 789

S32DS IDE使用Tips--如何编译生成和调用静态库... 791

引言... 791

1. S32DS for ARM v1.3中编译生成和调用静态库的方法和步骤... 791

1.1 编译生成静态库的方法和步骤... 791

1.2 调用静态库的方法和步骤... 795

2. S32DS for ARM v2.0编译生成和调用静态库的方法和步骤... 797

2.1 编译生成静态库的方法和步骤... 797

2.2 调用静态库的方法和步骤... 799

3. S32DS for Power v1.1和S32DS  for Power v1.2编译生成和调用静态库的方法和步骤... 800

3.1 编译生成静态库的方法和步骤... 800

3.2 调用静态库的方法和步骤... 802

总结... 804

S32DS for ARM v2018.R1安装IAR  Eclipse Plugin插件调用IAR工具链开发S32K系列MCU应用程序详解... 805

引言... 805

1. S32DS for ARM v2018.R1安装IAR  Eclipse Plugin插件... 807

2. S32DS for ARM v2018.R1 安装IAR Eclipse Plugin后配置输出IAR链接器输出转换器(Output  Converter)生成S19/HEX/BIN文件,编译报错问题的解决... 808

3. S32DS for ARM v2018.R1 安装IAR Eclipse Plugin后,添加S32K SDK的PAL层组件编译报错文件解决... 809

4. 将IAR和GCC(S32DS)工具链集成在一个S32DS应用工程中,共用一个SDK处理器专家配置(样例工程下载与使用介绍) 811

5. 为样例工程创建PEMicro调试器的调试目标... 814

总结... 817

S32DS IDE使用Tips之S32DS for Power不同版本之间的GNU工具链差异与外设寄存器位域访问问题总结... 820

引言... 820

1. S32 DS for Power IDE不同版本使用的GNU工具链介绍... 820

1.1 S32 DS for Power V1.1的GNU工具链... 821

1.2 S32 DS for Power V1.2的GNU工具链... 823

1.3 S32 DS for Power v2017.R1的GNU工具链... 824

2. 不同S32 DS for Power代码编译结果的差异... 825

2.1 S32 DS for Power V1.1新建应用工程默认使用其安装目录下的GNU  gcc 4.5.2工具链... 826

2.2 S32 DS for Power V1.2新建应用工程默认使用其安装目录下的GNU  gcc 4.5.4工具链:... 826

3. 问题分析(the root cause  analyze) 827

4. 解决方案(solutions) 832

4. 1 方法一:在S32DS for Power  v1.2中调用S32DS for Power v1.1的GNU工具链... 832

4.2 方法二、不使用位域操作外设寄存器(推荐) 833

总结... 836

S32DS IDE使用Tips之S32DS for Power v1.1应用工程升级到v1.2重新编译运行程序跑飞问题解决... 839

引言... 839

1. 问题解决方案(issue  solutions) 839

Step 3、替换section.ld文件中的.text 段放置内容... 843

Step 4、清除编译结果,重新编译工程... 845

2. 问题分析(the root cause  analyze) 846

2.1 使能汇编指令单步调试模式,跟踪汇编指令执行情况... 846

2.2 修复链接文件前的异常的系统库函数_init和程序跑飞原因... 847

2.3 修复链接文件后的正常的系统库函数_init及其调用运行情况... 849

总结... 852

S32DS IDE使用 tips--使用Flash from file下载S19或elf文件... 853

引言... 853

1. 配置S32DS 工程生成S19/elf文件... 854

2. 使用Flash from file下载S19/elf文件... 857

3. 总结... 860

CodeWarrior IDE使用Tips之Qorivva MPC56xx新建应用工程选项、调试高级选项及下载过程控脚本详解(CW 10.x) 862

引言... 862

1. CodeWarrior 10.6新建Qorivva  MPC56xx MCU应用工程步骤和配置选项详解... 862

2. CodeWarrior 10.6新建Qorivva  MPC56xx MCU应用工程文件详解... 866

3. 编译目标FLASH和RAM的区别... 873

4. CodeWarrior 10.6 Qorivva MPC56xx系列MCU应用工程调试配置高级选项详解... 876

4.1 设置高级编程选项--查看编程过程细节、指定Flash算法实现对D-Flash和外部QSPI  Flash的编程以及保护Flash地址空间... 878

4.2 设置MCU连接目标属性... 881

4.3 设置调试启动后自动设置的默认程序断点... 884

5. debugger下载过程控制脚本文件(MCP5604B_VLE.tcl)详解... 884

5.1 关键词set 定义全局变量... 885

5.2 关键词proc  <functon_name> { parameter} { function script}定义脚本功能函数... 885

5.3 脚本功能函数调用流程... 892

总结... 892

① 在debug启动过程中调用MCP5604B_VLE.tcl 893

② 在调试界面中复位调试目标时调用MCP5604B_VLE.tcl 893

CodeWarrior IDE使用Tips之burner工具使用详解(实现不同类型存储器地址间的转换和NVM编程格式文件的输出) 896

引言... 896

1. CodeWarrior 5.x IDE应用工程生成S19文件的过程... 896

2. CodeWarrior 5.x IDE的burner工具介绍... 898

3. CodeWarrior 5.x IDE的burner控制命令文件burner.bbl解析... 900

4. burner控制命令脚本(bbl文件)详解... 902

4.1 通过Burner工具对话框窗口配置和生成bbl文件... 902

4.2 bbl文件命令控制脚本编辑... 904

5. 控制CodeWarrior 5.x IDE应用工程burner.bbl文件生成包含RAM和D-Flash地址空间的数据/代码S19文件... 907

5.1 首先在prm链接文件中单独分出一个RAM区(属性设置为READ_ONLY),并将用户定义代码段放置到其中... 908

5.2 然后在源代码中使用#pragma  CODE_SEG <code section name>标识用户代码... 909

5.3 编译链接应用工程,在工程map文件中确认结果... 910

5.4 修改工程的burner.bbl文件,生成RAM地址的S19文件... 910

总结... 913

CodeWarrior IDE使用Tips-Qorivva  MPC56xx应用工程map文件全解析(CodeWarrior 2.10和10.x IDE)... 914

引言... 914

1. 应用工程的函数调用层级关系... 914

2. 段分布(section layout) 915

2.1 .__bam_bootarea 段分布... 916

2.2 .init 段分布... 919

2.3 .init_vle段分布... 920

2.4 .ivor_branch_table段分布... 920

2.5 .intc_hw_branch_table段分布... 921

2.6 .__exception_handlers段分布... 921

2.7 .text段分布... 921

2.8 .text_vle段分布... 921

2.9 .rodata段分布... 922

2.10 .ctors段分布... 922

2.11 .dtors段分布... 922

2.12 extab段分布... 922

2.13 extabindex段分布... 922

2.14 .__uninitialized_intc_handlertable段分布... 923

2.15 .data段分布... 923

2.16 .sdata段分布... 924

2.17 .sbss段分布... 924

2.18 .sdata2段分布... 924

2.19 .sbss2段分布... 924

2.20 .bss段分布... 924

3. 内存映射--Memory map. 926

3. 1 通过工程内存映射信息,计算工程的RAM和Flash占用... 927

4. 链接器生成符号表--Linker  generated symbols. 929

总结... 930

CodeWarrior IDE使用Tips之map文件详解(CodeWarrior 5.x/6.x 应用工程) 931

引言... 931

TARGET SECTION(编译目标属性设置) 931

FILE SECTION(工程文件列表) 932

STARTUP SECTION(启动结构体信息)... 932

SECTION-ALLOCATION SECTION(区分配) 932

VECTOR-ALLOCATION SECTION(中断向量分配) 933

OBJECT-ALLOCATION SECTION(目标文件段分配) 933

MODULE STATISTIC(目标文件编译结果统计) 934

SECTION USE IN OBJECT-ALLOCATION SECTION(目标使用区列表) 934

OBJECT LIST SORTED BY ADDRESS(寄存器/全局变量/函数储存地址清单) 935

UNUSED-OBJECTS SECTION(未使用函数清单)... 936

COPYDOWN SECTION(内存初始化copy down地址及大小) 936

OBJECT-DEPENDENCIES SECTION (函数调用描述)... 936

DEPENDENCY TREE(函数调用和依赖关系树) 937

STATISTIC SECTION(统计段)... 937

总结... 937

CodeWarrior IDE使用Tips-如何编译生成和调用静态库... 938

引言... 938

1. 嵌入式MCU应用程序开发中的库使用和使用静态库的好处... 938

2. 在CodeWarrior 5.x和CodeWarrior 6.x IDE中利用Libmaker for S12/S08编译生成和调用静态库... 940

Step 1: 创建一个库工程... 940

Step 2: 设置工程的链接器(Linker)为 Libmaker  for HC12. 941

Step3: 编译生成静态库文件... 942

Step4:  使用静态库... 943

3. 在CodeWarrior 2.10 IDE中编译生成和调用静态库... 945

4. 在CodeWarrior 10.6/7  IDE中编译生成和调用静态库... 946

总结... 949

CodeWarrior与S32DS IDE使用 Tips之如何在应用工程中保留定义但未使用的全局常量、变量(用于参数标定) 950

引言... 950

1. CodeWarrior 5.x/6.x/10.x(适用于S08/S12(X)和MagniV  S12Z系列MCU). 950

2. CodeWarrior 2.10/10.x(适用于Qorivva  MPC56xx系列MCU) 953

3. S32DS for ARM/Power(适用于Qorivva  MPC57xx和KEA/S32K1xx系列MCU)... 957

总结... 959

CodeWarrior IDE使用Tips之如何通过prm文件指定汇编代码函数、全局变量和常量的储存地址... 960

引言... 960

第一步、在汇编应用工程prm链接文件中的段放置PLCAEMENT..END中定义一个用户段名,并将其指定到想要放置的地址分区中:... 961

第二步、在汇编源代码函数定义前定义用户段名,以指示代码段开始:... 962

第三步、重新编译工程,即可在工程map文件中查看结果... 962

总结... 963

CodeWarrior IDE 版本选择与 License功能(feature)和价格,授权形式差异、激活方法与安装使用... 964

引言... 964

1. 根据MCU选择CodeWarrior版本... 964

2. CodeWarrior IDE的license类型和功能(feature)/价格差异... 966

3. CodeWarrior IDE License的授权形式/方法... 971

4. CodeWarrior IDE License的激活方法和安装... 971

总结... 979

外设使用Tips之MCU内部集成IRC时钟工作原理、特性和trim原理及方法详解(以KEA系列MCU的ICS为例) 982

引言... 982

1. 嵌入式MCU内部集成IRC的工作原理详解... 982

2. 关于IRC的精度以及trim工作原理和方法... 984

2.1 使用Cyclone编程器Trim IRC. 987

3.2 使用CodeWarrior IDE的Debug Configurations高级选项配置Trim IRC. 990

3. 嵌入式MCU内部集成IRC的典型使用... 993

4.使用IRC时钟的优缺点总结以及与外部晶振的对比... 993

5. 一些Freescale/NXP汽车级MCU内部集成IRC时钟相关的应用笔记和文档list 993

总结... 994

外设使用Tips之S12G系列MCU Startup之前的复位过程详解(COP看门狗复位和时钟监测复位中断识别与处理)... 995

引言... 995

1. 判断是否为外部时钟监测复位的方法... 995

2. S12G系列MCU的复位类型和复位中断向量... 997

3. S12G系列MCU的复位过程详解... 998

4. S12G系列MCU的RESET管脚参数与电路设计详解... 999

5. S12G系列MCU复位中断ISR处理... 1002

5.1 常规S12G系列MCU应用工程的复位中断ISR处理... 1002

5.2. 推荐的S12G系列MCU复位中断ISR处理... 1003

总结... 1008

外设使用Tips之MPC574xP SWT看门狗... 1009

引言... 1009

1. SWT的功能概述... 1009

2. SWT的工作模式和初始化... 1013

3. SWT喂狗... 1016

总结... 1016

外设使用Tips之TIM定时器使用FAQ和使用经验... 1018

引言... 1018

1. TIM的时钟源和时基计数器... 1018

2. 如何使用TIM实现定时中断... 1019

3. 不同的part对应TIM模块的通道数可能是6个或者8个,只有具有8个通道的part其通道7才能正常输入脉冲累加... 1021

4. 正确的TIM通道中断标志清除方法—写1清0(w1c) 1022

5. 配置做定时中断的TIM输出比较通道引脚为GPIO使用... 1023

6. 配置BDM调试时,TIM定时器时基计数器停止计数,从而避免反复进入TIM输出比较或者时基计数器溢出中断... 1024

总结... 1026

《疑难答疑》之S32DS IDE调试启动过程详解与调试目标复位方法和步骤详解... 1027

引言... 1027

1. S32DS IDE启动调试的过程都做了哪些准备工作?... 1027

2. 什么是调试目标复位以及使用调试目标复位的好处... 1028

3. 在S32DS for ARM v2018 中如何实现调试目标复位... 1030

3.1 将MCU复位并自动运行至main()函数第一行指令... 1031

3.2 将MCU复位到复位函数... 1032

4. 在S32DS for Power  v2017.R1中如何实现调试目标复位... 1034

总结... 1039

《疑难答疑》之S12G系列MCU使用Hiwave和BDM调试器debug时无法使用逻辑地址查看和保存P-flash问题的解决... 1040

问题描述(Issue Discription)... 1040

根本原因分析(Root Cause) 1041

解决方案与总结(Solution and  Summary) 1044

《答疑解惑》之S12(X)系列MCU的CodeWarrior 5.x应用工程下载调试过程详解以及保护NVM存储器不被擦除... 1051

引言... 1051

1. S12(X)系列MCU的CodeWarrior 5.x应用工程下载调试过程详解... 1051

2. 保护NVM存储器不被擦除的方法和步骤... 1055

第一步、找到目标MCU的下载控制脚本文件... 1055

第二步、修改下载控制脚本文件... 1056

3. 测试与验证... 1057

总结... 1060

《答疑解惑》之Win 10 64-bit OS中CodeWarrior IDE USB dongle license安装问题解决方法详解... 1061

引言... 1061

问题描述... 1061

第一步、下载安装USB Dongle驱动补丁,解决Windows下USB Dongle硬件驱动的问题... 1062

第二步、使用管理员权限运行Windows10 命令行cmd.exe, 然后再运行lmtools工具,解决lmtools运行的问题;... 1063

总结... 1065

配置S12系列MCU的离线Cyclone Pro Flash编程文件SAP. 1066

1.    安装Cyclone Pro上位机软件和驱动... 1066

2.    生成编程脚本SAP文件... 1067

2.1.     S19文件格式介绍... 1067

2.2.     根据S19文件格式判断是否存在地址0x400到0x1400之间的EEPROM数据... 1069

2.3.     将S19文件中的EEPROM数据和P-Flash数据分离为两个独立的S19文件... 1070

2.4.     使用P&E公司的log2Phy 12软件将只含P-Flash数据的S19文件转换为连续物理地址的PHY文件... 1071

2.5.     使用Cyclone Pro Image Creation Utility配置SAP镜像文件... 1073

2.6.     保存编程脚本(Image,SAP文件)到Cyclone Pro. 1080

2.7.     使用Cyclone Pro Image Manager加载SAP文件到离线编程器Cyclone  Pro:... 1081

3.    对目标MCU进行离线编程... 1083

在Cyclone Pro的硬件上,可以通过右侧的按键进行离线编程操作:... 1084

在Cyclone Pro的右边有8个与编程过程一一对应的状态指示灯:... 1084

4.    与Cyclone Universal [FX] 的差异(SAP文件兼容性、目标MCU供电管理) 1085

4.1 4.3寸液晶触屏,取消了编程指示LED灯;... 1088

4.2 Cyclone Pro与U-Cyclone的SAP文件转换工具和方法介绍... 1089

4.3      目标MCU供电管理的选择与配置... 1090

5.参考文献... 1092




*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
欢迎大家关注我的微信公众号--汽车电子expert成长之路,阅读更多原创性精彩文章。如果你觉得我的文章对你的学习/工作有所帮助,也请你帮忙转发到你的朋友圈,让更多的人能够看到我的文章,大家一起学习,一起进步!
推荐文章
最近访客