问答

汇集网友智慧,解决技术难题

21ic问答首页 - 关于STM32固件和代码移植的问题……

…… STM32 代码移植 固件 使用 pi

关于STM32固件和代码移植的问题……

airbunny2024-11-20
对于基本pin2pin的STM32芯片,比如F765到H753,或H743,是否可以不需要重新编译,就可以将过去的代码烧录并运行在新的处理器上?尤其是对于使用了OS的固件?如果不行的话,需要对代码的哪些部分进行修改?
其实我觉得应该是不能直接烧进去使用的。但是听到有人说固件可以不经修改直接使用,但是手头没有能验证的硬件……

多谢啦!
回答 +关注 1
2098人浏览 12人回答问题 分享 举报
12 个回答
  • 理论上说,由于这些芯片在引脚布局和功能上保持高度一致,因此许多情况下可以预期代码具有一定的可移植性
  • 在将代码部署到新硬件之前,进行全面的测试和验证是非常重要的。这包括单元测试、集成测试和系统测试,以确保代码在新芯片上按预期工作。
  • 如果使用了操作系统,请确保操作系统的配置与新芯片的硬件特性相匹配。
  • 如果新芯片具有不同的外设或外设功能,请更新相应的驱动程序。
  • 如果使用了HAL库或LL库,请确保它们是为新芯片设计的版本。
  • 如果映射有所更改,则需要更新相关的配置代码。
  • 代码修改建议根据新芯片的时钟系统重新配置时钟。
  • 如果无法获得硬件验证,先通过STM32CubeMX或硬件模拟器进行预验证,以减少后续调试工作。
  • 需要修改的部分
    如果想将代码迁移到新的芯片上,以下是常见需要调整的地方:

    启动代码(startup file)
    检查并替换为目标芯片的启动文件(如startup_stm32h753xx.s)。可以从STM32CubeMX或目标芯片的HAL库中获取。

    系统时钟配置
    在SystemClock_Config()函数中,重新配置时钟源(HSE、HSI、PLL等)和外设时钟分频。可以借助STM32CubeMX生成新的时钟配置代码。

    外设初始化代码
    对比源芯片和目标芯片的外设差异,检查GPIO复用功能、DMA配置、UART/SPI/I2C等外设初始化代码。

    链接脚本(linker script)
    修改Flash和RAM的起始地址及大小,使其与目标芯片匹配。

    中断向量表
    如果中断向量表的布局不同,需要确保新芯片的中断向量表与代码匹配。

    优化设置
    STM32 H7系列可能需要开启数据缓存(DCache)和指令缓存(ICache),这在F7系列中可能未启用。

    操作系统移植层
    检查RTOS的移植代码是否支持新芯片,尤其是与系统定时器(SysTick)相关的部分。
12下一页

您需要登录后才可以回复 登录 | 注册