zoukankan      html  css  js  c++  java
  • 自己用C语言写NXP S32K144 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader)

    欢迎咨询或定制bootloader(在线升级程序)。

      NXP S32K144 是ARM Cortex M4F 内核的32-bit MCU. 相比较S32K116有着更大的存储空间和更多的功能以及更多的引脚。所以在有了S32K144 EVB后。我迫不及待的在“自己用C语言写NXP S32K116 serial bootloader”基础上完成了S32K144 C语言串口Bootloader. 由于S32K144与S32K116的硬件/软件兼容性很好,所以整个的改动不多。

    开发环境基本相同:IDE -- S32DS

    Compiler-- arm gcc

    SDK -- S32SDK_S32K14x_EAR_0.8.6(SDK和S32K116的不同)。

        S32K144 flash size 1024Kbytes. 但是bootloader 只用了前面16K。linker script 如下:

    MEMORY
    {
      /* Flash */
      m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400
      m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
      m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x00003BF0
    
      /* SRAM_L */
      m_data                (RW)  : ORIGIN = 0x1FFF8000, LENGTH = 0x00008000
    
      /* SRAM_U */
      m_data_2              (RW)  : ORIGIN = 0x20000000, LENGTH = 0x00007000
    }

       S32K144 底层driver都是在Expert processor 中配置好然后自动生成的,包含CLOCK,PORT,FLASH, UART。

       在S32K116 C语言bootloader的基础上,底层只有Clock配置不同,其他都一样。

       Bootloader 应用层也都是沿用S32K116的,只有FEATURE_FLS_PF_BLOCK_SECTOR_SIZE不同,S32K144的是2048。S32K116 的是1024。

       站在S32K116 bootloader基础上,就这样S32K144 bootloader Coding很快完成了. 但是也发现了问题。如果代码编译的优化等级为 -O3的话,bootloader 在擦除Flash时返回错误状态。但是如果改用-O2,-O1, -Os就没问题。

    有可能是编译器bug。 “-O0” 也试过,但是改成“-O0”后编译就报错,错误是因为程序超出了16K的空间。

  • 相关阅读:
    Xamarin Andro教程搭建Xamarin Androidid开发环境(一)
    判断密文加密类型hash-identifier
    Xamarin Android教程如何使用Xamarin开发Android应用
    分享Kali Linux 2016.2第48周虚拟机
    Xamarin Android教程Android基本知识版本介绍与系统介绍
    iOS10 UI教程视图的生命周期
    iOS10 UI教程视图的绘制与视图控制器和视图
    卡尔曼滤波的原理说明
    Bresenham算法
    Stm32 Bootloader整理
  • 原文地址:https://www.cnblogs.com/geekygeek/p/hyperbootloader_s32k144.html
Copyright © 2011-2022 走看看