首页 > 其他分享 >S32Kxxx bootloader之LIN bootloader

S32Kxxx bootloader之LIN bootloader

时间:2023-07-09 18:44:40浏览次数:39  
标签:LIN USB S32Kxxx 跳转 APP 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));

 

标签:LIN,USB,S32Kxxx,跳转,APP,bootloader,适配器
From: https://www.cnblogs.com/geekygeek/p/s32k_lin_bootloader.html

相关文章

  • Linux相关概念及操作
    目录linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。1./bin是Binary的缩写,这个目录存放着最经常使用的命令2./opt这是给主机额外安装软件所存放的目录。如安装ORACLE数据库就可放到该目录下。默认为空3./boot......
  • Linux 切换用户及环境变量的问题
    背景前几天用Linux的时候遇到一个问题,使用su切换用户时,用户已经切换了,但是环境变量却还是原来用户的,导致命令执行不了。现象首先,用普通用户登录Linux,运行echo$PATH:square@debian:~$whoamisquaresquare@debian:~$echo$PATH/home/square/.local/bin:/usr/local/bin:/usr/......
  • L11U3-3 Dealing with flight problems
    1ExpressionsFlightproblemsListentodiscussbadnewshereceivesabouthisflight.hasbeendelayed.mechanicalproblems.hasbeencanceledduetomaintenanceissues.It'simportantthatyouunderstandmessagesaboutflightproblemswhetheryoug......
  • 2. Q_ 行内_inline_元素 设置_margin_top_和_margin_bottom_
    Q:行内(inline)元素设置margin-top和margin-bottom是否起作用?A:不起作用。(答案是起作用,个人觉得不对。)html里的元素分为替换元素(replacedelement)和非替换元素(non-replacedelement)。替换元素是指用作为其他内容占位符的一个元素。最典型的就是img,它只是指向一个图像......
  • linux LVS+Keepalived
    keepalived服务主要用来做高可用,高可用在企业中是非常重要的技术,避免数据丢失和服务停止。目录一、keepalived概述二、keepalived实验原理三、keepalived模块四、实验演示五、总结        一、keepalived概述  1.keepalived服务重要功能......
  • Linux 使用 dup2 无法正常重定向管道 tinyhttpd
    项目地址:https://github.com/pphboy/pihttpd文件p_sys.ctinyhttpd是这样写的但是文档是,旧的在前,新在后intdup2(intoldfd,intnewfd);所以是,才能正常输出和输入dup2(1,in_pipe[1]);dup2(0,out_pipe[0]);......
  • 扫描linux系统磁盘占用,释放空间的免费工具
    如何查找linux系统的磁盘占用,扫描大文件,释放空间,可以使用免费工具ncdu。虽然有du和df命令可以查询磁盘和文件夹的大小,但毕竟不方便,不能扫描整个磁盘的情况。用ncdu命令更直观,可以按目录以树形显示每个文件夹的大小,找到占空间的文件或者文件夹,删除释放磁盘空间。并且扫描速度飞快......
  • OpenCV的CommandLineParser类
    C++带有参数的main函数我们可以使用命令行的方式给argv赋值:1#include<iostream>2#include<cstdlib>34//intmain(intargc,char*argv[])5intmain(intargc,char**argv)6{78intsum=0;9for(inti=1;i<argc;++i)10{......
  • Linux命令行/终端连接(隐藏)SSID的WiFi
    推荐看完Linux命令行/终端连接隐藏SSID的WiFi(续篇)和本文后,再按照实际情况采用network-manager或者ifupdown多数Linux系统默认自带有线网络的驱动和配置软件,但是对于WiFi则可能会缺少固件和相关软件。在此使用Debian11为例(Ubuntu也可),使用nmcli连接隐藏SSID的WiFi网络。无线网卡......
  • 解决虚拟机VM中kali linux 无法联网的问题
    今天登录KaliLinux发现浏览器无法连接网络,自己并没有改过任何配置,通过自己多方面搜寻解决教程,现将解决方法做此纪录。1.首先关闭kalilinux,点击设置,保证自己的kali网络适配器是桥接模式,且勾选复制物理网络连接状态,点击确定进行保存。  2.打开kalilinux,然后使用ctrl+alt+......