移植笔记——【MCU程序移植注意事项】

前言:关于MCU之间的程序移植有很多细节需要关注,以下是做一些记录,后续想到了注意点再来更。


  移植处理总体来说可以分成两类:第一类是非程序代码操作的更改,主要是针对不同的MCU设备文件和Flash算法文件更换;第二类程序代码操作的更改,主要是针对代码中不同MCU中的引脚定义更改,寄存器操作更改。

1. 设备文件更换

  1. 设备处理器型号更改
    有时候因为MCU型号不同,设备内核文件也会不一样,要选择对应的设备。
    在这里插入图片描述
  2. 启动文件更改
    不同的MCU启动文件也可能不一样,需要主要移植的MCU启动文件是否跟原文件一样。
    在这里插入图片描述
  3. Flash算法文件
    不同MCU的Flash地址可能不同,所以烧程序的Flash算法文件也可能不同,选择适合目标MCU的算法文件。
    在这里插入图片描述

2. 程序代码更改

  1. 头文件包含
    移植程序如果是完全不同系列的MCU芯片,那么包含的头文件定义的数据类型很大可能也不同。
  2. 中断处理
    不同的MCU中断处理不一样,同一系列不同芯片中断函数命名定义可能相近,有时候不需要更换。但是不同架构不同系列的芯片中断函数定义方式不同,必须要更换对应的中断函数。一个典型的例子是国产华大芯片程序移植到ST芯片上面处理,中断函数文件和头文件都得换。
  3. 引脚定义
    对于不同MCU的引脚功能不同,若做移植需要注意每个引脚的功能变更。
  4. 寄存器操作(GPIO和其他标志)
    对于寄存器标志位操作方式也需要注意,普遍需注意的小细节是GPIO电平置位翻转操作,如:51单片机有sbit,普通的单片机GPIO口可直接在该位置0或者1,又或者有些单片机GPIO端口置0操作是在该端口右移16位处置1等。
    还有经常需要注意的比如UART中断和IIC中断中的中断寄存器标志位的处理变更会不一样。
  5. 启动方式改变
    对于不同芯片上电启动后的操作略有不同,上电后的操作有设置系统时钟,复位外围模块等待时钟稳定以及清空RAM区域等操作,可能不同MCU代码操作可能会不同。
  6. 地址范围
    一个很重要的概念是Flash数据地址范围的限定。计算机体系结构中,根据是否把程序和数据二者分开存储分成了两种体系结构,一种是冯诺依曼体系结构,它将程序和数据存在一起;另外一种哈弗体系结构则是把程序和数据分开存储的。特别是程序和数据放在一起的体系结构,必须严格控制程序或者数据的存放地址空间才能够保证数据程序安全,不然可能会出现很大问题。所以移植程序时要看下相比之前的MCU,现在的MCU地址范围空间是变大还是变小了,做出相应调整。

猜你喜欢

转载自blog.csdn.net/qq_36749906/article/details/114119095