S32Kxxx bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。
最近完成了S32Kxxx CAN bootloader, 之前需要拆开外壳通过烧写口才能更新应用程序。如果产品灌了胶,每更新一次应用程序都非常之麻烦。现在有了CAN bootloader, 可以通过Standard CAN 接口就能够更新产品的应用程序,简单又方便。就算产品已经出货到了客户端,更新程序也不繁琐,成本也可接受。接下来分两部分来介绍,第一部分介绍如何实现S32K CAN bootloader,碰到的问题,以及如何解决的。第二部分介绍如何使用S32K CAN bootloader。
S32Kxxx CAN bootloader的实现
NXP S32Kxxx 系列芯片的功能很强大, 开发环境也不错, 特别是Processor Expert。 我的S32Kxxx CAN bootloader的所有底层driver,包括CAN driver都是通过Processor Expert 配置生成。S32Kxxx CAN bootloader 的开发环境:
1. IDE: S32DS for ARM, Version: 2018.R1
2. Compiler: GCC for ARM, Version:gcc-6.3-arm32-eabi
3. SDK: S32DS/S32SDK_S32K1xx_RTM_3.0.0
S32Kxxx CAN bootloader 的上层代码是手写的,以下底层Components 代码都是通过Processor Expert配置后自动生成:
1, PIN (pin_mux)
2. Clock (clock manager)
3. Interrupt (interrupt manager)
4. CAN (can_pal)
5. Flash (flash driver)
6. SBC (external watchdog, can tranceiver uja1169)
虽然大概一年前我有完成过S32Kxxx UART bootloader, 但此次S32Kxxx CAN bootloader 实现过程比我预想的要更难,实现花费的时间也比我预想的要更长。主要原因就是碰到了以下问题,解决它们花费了我不少时间。
1。 CAN 通信始终收发都不成功。
供电,硬件,can driver, sbc driver 一个一个去排查,最后查出不是硬件的问题,也不是can driver 的问题。
供电有问题,我的板子是NXP官方出品EVA 板子,我是使用USB 口供电,但是如果需要CAN 通信成功,需要接上power adapter。
sbc driver 有问题, sbc_init时,里面的SBC_GetMode返回0,后面这个返回值0又通过SBC_SetMode()设置回去,造成sbc_init出错。修正后就OK。
2。 Flash 擦除不成功
flash driver, watchdog, interrupt 一个一个去排查,查出不是flash driver的问题。
Interrupt 管理有问题,FLASH_DRV_EraseSector调用前需要关Interrupt, 调用后再开Interrupt。否则会重启(寄存器RCM提示是Lockup的Reset source)
watchdog管理有问题, 担心擦除时间长,每擦除块后调用SBC_SetWatchdog就出现Reset造成擦除无法完成,不调用就没有问题,然后发现此时
另外sbc_init完成后g_drvConfig.isInit既然等于false, g_drvConfig.isInit等于false, 之后调用SBC_SetWatchdog出问题。sbc_init完成后g_drvConfig.isInit既然等于false。将其改为true。 问题消失。
3。 程序卡死在SBC_SetWatchdog。
排查后发现SBC_SetWatchdog前不能关Interrupt。
Processor Expert 用起来很愉快,一旦生成的代码使用起来,如果出了问题,也是让人头疼不已。
S32Kxxx CAN bootloader的使用
S32Kxxx CAN bootloader 使用很简单。需要用到一个CAN盒子,Z-Box CAN,简称ZCAN。 是我开发的一个很强大的CAN总线分析工具。还需要在电脑端运行一个上位机zFlash。zFlash是我用C# 语言开发的一个Windows 软件。 zFlash操作非常简单,能够自动查询Z-Box CAN并建立连接。点击zFlash界面上的下载按钮,下发握手指令去查找bootloader。 和bootloder 握手成功后就按照自定义的协议发送应用程序完成升级。
S32Kxxx CAN bootloader 时电脑和板子的连接如下图。 电脑上运行zFlash, 中间的USB-2-CAN是CAN 总线分析仪Z-Box CAN。用户板上烧录了S32Kxxx CAN bootloader。我的用户板上面的芯片是S32K116,是NXP的一款带有CAN controller的ARM Cortex-M4核的32-bit 单片机。这个bootloader 移植到S32K118,S32K144等都很容易。

Z-Box CAN 是一款强大的CAN 总线分析仪,其金属外壳一边是方形USB 口通过USB线连接电脑,一边是DB9口连接CAN bus。内部是进口芯片,信号有隔离。可以安全可靠地工作在复杂的工业场所,或用来分析汽车上各ECU之间的CAN 总线。见图:

Z-Box CAN最强大的地方是busmaster 支持它。busmaster(又称博世总线大师)是一种开源软件工具,用于模拟,分析和测试CAN / LIN总线系统。 它支持DBC,LDF,CAPL语言,节点模拟,自动测试, C语言脚本,log保存等等强大的功能。我在其开源代码的基础上进行添加,使其可以识别并连接我开发的Z-Box CAN。打开bumaster我的版本,找到Driver Selecion,选择Z-Box CAN,点击Connect, 既可以开始愉快的使用了。

S32Kxxx bootloader之CAN bootloader的更多相关文章
- PIC18 bootloader之UART bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 应客户要求, 将PIC ...
- S32Kxxx bootloader之UDS bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 两周前完成了基于UDS ...
- 【Bootloader】探究bootloader,分析u-boot源码
Preface 之前也发表过关于<Bootloader启动过程分析>的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程. 工 ...
- BLE CC2541 串口BootLoader 即 SBL BootLoader 资料 收集
1.[CC254X_Bootloader]SBL(串口Bootloader)使用说明 2.CC2540协议栈高速串口通信解决(UART的DMA方式) 3.[BLE]CC2541之SBL 4.[BLE] ...
- 了解BootLoader——基于MPC5744P Bootloader例程
一.BootLoader的作用:BootLoader是固化在PFlash中的一个程序,其作用可以分为两部分:boot和load. (1)boot:MCU上电时首先会运行BootLoader程序(因为它 ...
- PIC16 bootloader之UART bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). PIC16 bootl ...
- PIC18 bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). PIC18 ...
- 斐讯k1路由器刷Breed BootLoader(不死UBoot)教程
刷入Breed BootLoader: 因为这个K1路由器可以开启telnet服务,所以此处刷Breed可以不使用编程器刷Flash芯片的方法进行. 1.打开K1路由器的Telnet服务. 电脑通过有 ...
- 使用uboot的tftp下载bootloader、内核、文件系统
开发板 jz2440 下载uboot.bin tftp 0x30000000 u-boot.bin nand erase bootloader nand write bootloader 下载内核 t ...
随机推荐
- 【刷题-LeetCode】148 Sort List
Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...
- Markdown最新使用说明
Markdown基本语法说明 markdown 和 typora关系:typora是一款实时预览markdown的文本编辑器 本文推荐使用的Markdown编辑器为:Typora (用了多款编辑器,觉 ...
- Rsync安装配置
一.先准备两台CentOS服务器,假定是 1.172.18.2.225(服务端) 需要配置rsyncd.conf文件 2.172.18.2.227(客户端) 不需要配置rsyncd.conf文件 二. ...
- Iptables的命令与用法
目录 一:iptables的用法 1.iptables简介 二:Iptables链的概念 1.那四个表,有哪些作用? 2.那五条链,运行在那些地方? 3.Iptables流程图 三:iptables的 ...
- linux中yum本地私有仓库安装搭建《全面解析》
目录 一:yum本地仓库安装 1.yum简介 2.yum安装解析 二:yum安装的生命周期 三:yum私有仓库作用与必要性 四:搭建yum私有仓库 本地版本 1.下载必须的软件包 2.创建软件仓库(就 ...
- Ansible架构
- Filter+Redis解决项目之间调用的幂等性
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同 在项目远程调用中,如果接 ...
- Ubuntu更换镜像源
不同的源 当修改sources.list文件时,我们需要将下面任意一个镜像源的代码复制粘贴到该文件中. 阿里源 # 阿里镜像源 deb http://mirrors.aliyun.com/ubuntu ...
- 「ZJOI2014」星系调查
「ZJOI2014」星系调查 本题核心在于快速求XPs 的线性假设相斥度. 点\((x1,y1)\)到直线\(y=kx+b\)的距离的平方为\(\displaystyle {(kx1+b-y1)^2} ...
- AT2163 [AGC006B] Median Pyramid Easy
需要一点灵感的题目. 可以发现这样一个事情,当三个数中有两个数相同时,中为数一定是这两个相同的数. 基于这个观察,我们想让每一行都存在这样两个相同的两个数,就一定能保证第一层的值为 \(x\) 了. ...