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 ...
随机推荐
- 51nod 1153 选择子序列
51nod 选择子序列 这道题是\(Bunny\)学长在给我们的模拟赛中的一道题. 食用单调栈,处理每个数\(a_i\)左右第一个比自己大的数的下标\(left_i\),\(right_i\),并且建 ...
- LeeCode链表问题(二)
LeeCode 19: 删除链表的倒数第n个节点 题目描述: 给你一个链表,删除链表的倒数第 n 个节点,并返回链表的头节点. 标签:链表,双指针 时间复杂度:O(N) 建立模型: 定义虚拟头节点,使 ...
- Yii2批量插入数据
方法一 yii2一次插入多行数据 /** * @inheritdoc 批量添加 * @params $add array 添加数据 */ public function add_all($add) ...
- [MAUI]模仿微信“按住-说话”的交互实现
@ 目录 创建页面布局 创建手势控件 创建TalkBox 创建动画 拖拽物动画 按钮激活动画 TalkBox动画 Layout动画 项目地址 .NET MAUI跨平台框架包含了识别平移手势的功能,在之 ...
- 如果你项目使用了MyBatis-Plus你一定要用它
还是先举个例子,魂斗罗小游戏应该很多90后都玩过,那个时代没有Iphone,没有各种电子产品(小学初中时代),这种小游戏应该就是很多90后的青春,反正那个时候只要放假就白天黑夜得玩.它就是那种2个好基 ...
- 如何将 Spire.Doc for C++ 集成到 C++ 程序中
Spire.Doc for C++是一个专业的 Word 库,供开发人员在任何类型的 C++ 应用程序中阅读.创建.编辑.比较和转换 Word 文档. 本文演示了如何以两种不同的方式将 Spire.D ...
- 玩一玩 Ubuntu 下的 VSCode 编程
一:背景 1. 讲故事 今天是五一的最后一天,想着长期都在 Windows 平台上做开发,准备今天换到 Ubuntu 系统上体验下,主要是想学习下 AT&T 风格的汇编,这里 Visual S ...
- abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之上(六十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- 学习Golang时遇到的似懂非懂的概念
背景 这是我学习golang的第三天,大致已经掌握了golang的语法,但是着手开发的时候,却遇到了许多问题,例如golang导包机制.golang的项目管理规范.go mod生成project怎么管 ...
- [SWPUCTF 2021 新生赛]简简单单的逻辑
得到一个.py文件,一般是没壳的,不过还是要养成习惯,查个壳: 意料之中,啥也没有,打开文件: 给了我们一个加密逻辑,然后最后一行给了一个结果:那么就是根据上述的逻辑,反解密出flag就好了 分析一下 ...