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 ...
随机推荐
- 四月二十六java基础知识
1..对文件的随机访问:前面介绍的流类实现的是磁盘文件的顺序读写,而且读和写分别创建不同的对象,java语言中还定义了一个功能强大.使用更方便的随机访问类RandomAcessFile它可以实现文件的 ...
- C++ 标准库 sort() / stable_sort() / partial_sort() 对比
C++ STL标准库中提供了多个用于排序的Sort函数,常用的包括有sort() / stable_sort() / partial_sort(),具体的函数用法如下表所示: 函数 用法 std::s ...
- CVE-2022-21454:漏洞整改mysql5.7.37升级至5.7.38 tar包升级
问题描述:对数据库服务器进行漏扫,发现一些中高位漏洞需要整改,有些数据库需要升级到最新版 漏洞修改指导链接:https://www.oracle.com/security-alerts/cpuapr2 ...
- 如何实现 Java SpringBoot 自动验证入参数据的有效性
Java SpringBoot 通过javax.validation.constraints下的注解,实现入参数据自动验证 如果碰到 @NotEmpty 否则不生效,注意看下 @RequestBody ...
- 随手记:redis 开发注意事项
Redis开发建议 1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵.建议根据业务只将高频热数据存储到Redis中 ...
- Ffmpeg分布式视频转码问题总结
本文主要聊一聊云原生时代分布式转码系统实施过程中碰到的一些问题. 聊问题之前简单介绍一下我们的分布式转码方案. 云原生分布式转码 在计算资源招之即来的云计算时代,正在重构着软件架构的方方面面. 对软件 ...
- 前端模拟“多线程”提交Http请求
首先说,javascript没有多线程这样一个说法,我说的只是类似那种效果.其次,不建议使用这种方式解决问题,多线程应该交给后台去做. 但是,如果非要这样用,有什么方法呢? 我在工作中就遇到了这样的问 ...
- VUE旅程(2)
继续我的vue踩坑之旅... 电商网站都会有搜索栏,输入内容后在搜索结果页面要带入搜索的关键字,需求就从这里来.代码如下: <v-search :keyword="this.$rout ...
- EasyExcel设置单元格边框
/** * 单元格边框 * @return {@link HorizontalCellStyleStrategy} * @date 2021/10/26 13:22 * @author <a h ...
- Crackme逆向分析365例-001
[Crackme逆向分析365例-001] 表哥是神,误落凡尘 说明:本篇练习是表哥逆向分析365系列的第1例,所使用的CrackMe本体来自于网站:https://crackmes.one/, ...