S32Kxxx bootloader之LIN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序)。
上一次发布博文到如今既然已一年有余, 开始着手写今天这篇博文, 有着一种久违的感觉。 今天要给大家介绍的是S32K116 的LIN bootloader, 这个LIN bootloader 可以很容易地移植到S32K118,S32K142, S32K146以及S32K148。
Bootloader 要一种用来更新应用程序的软件。它一般和PC端的host软件一起协同合作才能完成应用程序的更新。PC端的host软件我们常称之为上位机,Bootloader 亦常被称为下位机,今天这个LIN bootloader的上位机是使用C#语言写的,需要调用USB-2-LIN适配器的驱动程序API. 所以PC端需要安装USB-2-LIN适配器的驱动。我使用的是我自己开发的USB-2-LIN适配器,这也是我为什么一年多了才有新的bootloader 产品出现。目前所有的开发任务都已经完成,只剩给我的USB-2-LIN配置器找一个漂亮的外壳了。LIN bootloader 已经经过了完成的测试。测试连接图如下:
PC端安装了我的USB-2-LIN适配器的驱动,运行我用C#写的host程序zFlash, 通过USB口,连接我的USB-2-LIN适配器,USB-2-LIN适配器另一头通过LIN总线和用户板相连,用户板就是我的S32K116 EVB板,上面运行我的LIN bootloader软件。
zFlash 的UI界面如下:
LIN Bootloader 是在NXP ARM Cortex-M0 32-bit 微控制器上实现的。开发环境如下:
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
LIN bootloader 的上层代码是手写的,以下底层Components 代码都是通过S32DS 的Processor Expert配置后自动生成:
1, PIN (pin_mux)
2. Clock (clock manager)
3. Interrupt (interrupt manager)
4. LIN stack
5. Flash (flash driver)
6. LIN tranceiver Tja1027
LIN bootloader 实现过程比较顺利,只在两个问题上花费了一些时间去调试,第一个是timing的问题,上位机是LIN Master节点,发送擦除命令后,需要发送LIN frame header 让LIN Slave节点下位机反馈擦除的状态,由于预估的时间不准,下位机还在执行中,就把LIN frame header 发送出去,然后一直报no response的错误,后来经过调试,才解决了这个timing的问题。第二个问题是跳转的问题,擦出和烧写都顺利完成,但是跳转过去,APP死活运行不正常,我将板子里面的程序读出来和应用程序的hex文件对比,是一模一样的,烧写器单独烧APP,运行正常,LIN Bootloader跳转到APP,却不能正常工作,所以我怀疑是跳转的问题,我在跳转前增加了一小段代码,把所以用到的Peripheral都Deinit, 再试,多次试,都能成功跳转,并且APP运行正常。
INT_SYS_DisableIRQ(LPTMR0_IRQn);
INT_SYS_DisableIRQGlobal();
LPTMR_DRV_Deinit(INST_LPTMR1);
lin_lld_deinit(LI0);
Jump_To_Application(*((uint32_t*)APP_START_ADDRESS));
S32Kxxx bootloader之LIN bootloader的更多相关文章
- PIC18 bootloader之UART bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 应客户要求, 将PIC ...
- S32Kxxx bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 最近完成了S32Kxx ...
- S32Kxxx bootloader之UDS bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 两周前完成了基于UDS ...
- PIC18 bootloader之CAN bootloader
了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). PIC18 ...
- 【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 ...
- 斐讯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 ...
随机推荐
- 【Contest】Nowcoder 假日团队赛1 题解+赛后总结
比赛链接 通过顺序:\(B\rightarrow D\rightarrow I\rightarrow J\rightarrow G\rightarrow H \rightarrow A \righta ...
- Windows下搭建java环境最新版本jdk运行jar文件
1:安装JDK(Java Development Kit),链接https://www.oracle.com/java/technologies/downloads/#jdk18-windows下载最 ...
- 部署:mysql搭建多主一从源复制环境
问题描述:搭建过一主多从的环境,由于数据库数据一致性要求高,有些情景会搭建一主多从的架构,搭建多主一从的模式,相对来说适合数据整合,将多个业务的库整合到一起,方便做查询,也可以当做一个监控其他主库数据 ...
- MySQL(十三)MySQL性能分析工具:慢查询日志与PROFILE查询成本
性能分析工具SLOW QUERY LOG.PROFILE的使用 数据库调优的目标就是响应速度更快,吞吐量更大.利用宏观的监控工具和微观的日志分析可以帮助我们找到调优的思路和方式. 数据库调优的步骤 ...
- Hugging News #0414: Attention 在多模态情景中的应用、Unity API 以及 Gradio 主题构建器
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- Arch Linux配置Java学习环境
1. JDK JDK8:主流版本 $ sudo pacman -S jdk8-openjdk JDK11:将会是下一个主流版本 $ sudo pacman -S jdk11-openjdk JDK19 ...
- XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装
以前写的C++基本都是C with STL,大多是面向过程的算法题,或者比较小的项目,然后经常报各种编译错误(对编译原理不熟),经常把人搞到崩溃,搞不懂构建.链接之类的东西. 现在开始记录一下XMak ...
- 「学习笔记」tarjan求最近公共祖先
Tarjan 算法是一种 离线算法,需要使用并查集记录某个结点的祖先结点. 并没有传说中的那么快. 过程 将询问都记录下来,将它们建成正向边和反向边. 在 dfs 的过程中,给走过的节点打上标记,同时 ...
- AGC061 F Perfect String
毒瘤出题人,史诗加强 AGC 的 F-- 然而我连原题都不会,所以只学了原题做法. 翻译一下题意就是给定一张循环网格图,求经过 \((0,0)\) 的闭合回路条数. 由于网格图中每一个位置都等价,所以 ...
- Git&GitHub简介与入手(二)
四.GitHub 1.建账号,仓库 https://github.com/ 用邮箱在官网注册: 增加远程库的地址取别名为origin,push为推送,fetch为取回: 2.推送操作 将本地当前所在 ...