前言:关于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地址范围空间是变大还是变小了,做出相应调整。

移植笔记——【MCU程序移植注意事项】相关推荐

  1. u8g2 stm32移植笔记

    U8g2移植笔记 下载地址 移植步骤 部分源码简要分析 下载地址 U8g2下载地址U8g2项目Github. 移植步骤 我移植U8g2采用的是stm32硬件SPI,可以提供更高的通讯速率,移植时只需要 ...

  2. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

  3. 以太网芯片W3100A到W3150A+的移植笔记(一)

    最近很多用户咨询 W3100A,由于W3100A已经停产.在此希望给大家介绍一下,W3100A可移植到其他芯片的方式及途径,供大家更好的拓展您项目的沿用性,期待能对您有所帮助.今天先为大家介绍第一部分 ...

  4. LVGL8.1笔记1--显示移植(2022-0515)

    LVGL8.1笔记1--显示移植 前言 一.移植前准备 二.LVGL-8.1目录简介 主要用的的内容 examples文件夹内容介绍 src文件夹内容介绍 lv_conf_template.h文件内容 ...

  5. 基于STM32标准库的MS5837程序移植

    基于STM32标准库的MS5837程序移植 一.准备工作 1. 硬件电路 2. 新建工程 二.开始移植 1. IIC底层模拟 2. MS5837移植 3. 主函数编写 4. 代码调试结果 三.源代码下 ...

  6. 瑞芯微 | 摄像头ov13850移植笔记

    <1.瑞芯微rk356x板子快速上手> <2.Linux驱动|瑞芯微rtc-hym8563移植笔记> <3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微 ...

  7. FreeModbus 移植笔记- 1-认识FreeModbus

    FreeModbus 移植笔记 目录 1 FreeMODBUS介绍 2 FreeMODBUS官网及源码下载地址 3 移植之前的准备 3.1 FreeModbus V1.6 ​​​​​​​3.2 Mod ...

  8. 机智云代码移植_【机智云Gokit3测评】设备接入-步骤二:程序移植

    [机智云Gokit3测评]设备接入-步骤二:程序移植 [复制链接] 1.写在前面 2.下载软件包 进入机智云官网的开发者中心后,点击"下载中心"(https://download. ...

  9. boost::process移植笔记

    文章目录 process移植笔记 元函数 常规函数的基本要素 元函数使用场景举例 元函数定义 child类 child的构造过程 make_builders_from_view append_set ...

最新文章

  1. activiti 工作流_activiti工作流引擎入门
  2. 安装mq的时候,计算机用户名是中文名的解决办法
  3. 如何将自开发的SAP UI5应用以tile的方式配置到SAP Fiori Launchpad里
  4. C语言试题二十八之编写函数function功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。
  5. H.264中的一些易混淆概念
  6. 数据结构与算法-没有算法的操作VS有算法的操作,性能大提升
  7. A Style-Based Generator Architecture for Generative Adversarial Networks---阅读笔记
  8. IDEA新项目代码上传到gitlab远程仓库
  9. 连续被巨头青睐,SpaceX 部分新项目原型系 Rust 构建
  10. 车载双目相机,老兵的二次出征
  11. 按住滑块 拖拽验证html5,【原生】JavaScript 实现滑动拖动验证
  12. android设备如何挂载sdcard(有些设备是自动挂载的)
  13. W25Q128 Flash
  14. 币种对应的转换因子(处理日元台币…
  15. PTA A1007A1008
  16. LinkNet 笔记
  17. Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)切题报告(A-B题)
  18. 仿抖音点赞效果实现 ——————自定义View
  19. Android 编程_基础
  20. 华为USG防火墙做多宽带路由和核心交换机配置实战教程

热门文章

  1. ffmpeg (四):ffmpeg, ffplay, ffprobe用法
  2. Vue之webpack之vue
  3. SpringBoot之打包错误
  4. 解决OpenCV3+VS2015(VS2017)运行时出现debug error abort()has been called的问题
  5. https和http有什么区别
  6. matlab 多项式提取,matlab提取多项式系数
  7. java兵临城下_再谈java事件监听机制
  8. python ios自动化_iOS python 自动化构建打包脚本
  9. java枚举返回字符串_枚举工具类-通过给定值获取对应的枚举类
  10. oracle判断为周一_oracle sql技巧:取上周一到上周日(本周一到本周日\下周一到下周日)的时间...