STM32F746开发板移植指南

举报
Lionlace 发表于 2022/01/12 10:30:19 2022/01/12
【摘要】 本期小编为大家带来开发板系列的移植指南,欢迎大家一起学习交流!


开发板介绍


NUCLEO-F746ZG是基于Arm® Cortex®-M7架构的开发板,主频216M,FLASH 1M,RAM320K,且内置ST-LINK调试器/编程器,具有高性能且方便使用的特点。


移植介绍

最新版Liteos和5.0版本的差异点:

  • 串口和定时器硬件实现当前在对应的开发板目录下,外部通过统一的回调函数调用。
  • 当前target目录下的Kconfig文件对厂家进行了分类,需要在对应厂家的Kconfig中配置对应的参数。


用户需要做以下准备:

  1. 移植的大概步骤是生成裸机代码、使用裸机代码和将裸机代码移入LiteOS。
  2. 硬件环境:ST STM32F746-Nucleo开发板。
  3. 软件环境:LiteOS Studio、STM32CubeMX和JLink烧录工具。


移植过程

生成裸机代码

  • 使用STM32CubeMX软件选择STM32F746ZG芯片
  • 配置时钟为216Mhz
  • 配置串口(串口3)LED
  • 配置定时器
  • 配置烧录调试方式为SWD接口
  • 生成裸机代码

生成代码格式如下:

目录/文件

说明

Build

该目录用于存放编译生成的文件(编译成功后生成)

Core    

用户代码和开发板的基本配置文件

Drivers

STM32 官方HAL 库

Makefile

裸机工程的Makefile

startup_stm32f746xx.s

芯片启动文件,主要包含堆栈定义等

STM32F746ZGTx_FLASH.ld

裸机工程的链接脚本文件

注:详细操作请参考《移植指南》用户可以按照《移植指南》事先测试一下裸机代码运行。


开始移植

步骤如下:

  • 增加新移植开发板的目录
  • 适配新开发板的外设驱动和HAL库配置文件
  • 配置系统时钟
  • 适配串口初始化文件
  • 适配定时器初始化文件
  • 修改链接脚本
  • 适配编译配置


增加新移植开发板的目录

参考target/ STM32F407_ATK_Explorer工程代码,新增STM32F746_Nucleo板载文件。

新增开发板的目录结构如下:

目录/文件

说明

Inc

芯片外设配置的头文件

Include

LiteOS系统相关配置头文件

os_adapt

LiteOS适配的接口文件

Src

芯片外设配置的源文件

liteos.ld

当前开发板工程的链接脚本文件

los_startup_gcc.S

芯片启动文件

Makefile    

当前开发板工程的Makefile


适配新开发板的外设驱动和HAL库配置文件

将芯片外设驱动文件替换为对应芯片的文件。(system_stm32f7xx.c和stm32f746xx.h

替换HAL库配置文件。(stm32f7xx_hal_conf.h


配置系统时钟

targets\STM32F746_Nucleo\Src\sys_init.c中参考裸机代码修改系统时钟配置函数SystemClock_Config()


适配串口初始化文件

  • 拷贝STM32F407_ATK_Explorer中的usart.cusart.hSTM32F746_Nucleo/Src中。
  • 参考裸机的usart.c替换MX_USART3_UART_Init、HAL_UART_MspInitHAL_UART_MspDeInit函数。
  • 修改usart.c中回调函数接口实现,修改为串口3
UsartInit中修改接口为MX_USART3_UART_Init
UsartWrite,UsartRead,UsartHwi中串口改为huart3并在include\asm\interrupt_config.h
中修改NUM_HAL_INTERRUPT_UART定义中串口中断号


适配定时器文件

  • 拷贝STM32F407_ATK_Explorer中的tim.ctim.hSTM32F746_Nucleo/Src中。
  • 参考裸机的tim.c替换MX_TIM3_Init、HAL_TIM_Base_MspInit、HAL_TIM_Base_MspDeInit、TIM3_IRQHandler 函数。
  • 修改tim.c中回调函数接口实现,修改为定时器3
TimInit中修改接口为MX_TIM3_Init
TimerHwiCreate和GetTimerCycles中定时器改为htim3并
在include\asm\interrupt_config.h中修改TIM_IRQ定义中定时器中断号


修改链接脚本

参考裸机工程链接脚本STM32F746ZGTx_FLASH.ld修改stack、flash、ram的值,并计算出_estack的值填入liteoe.ld文件中。


适配编译配置

  • 修改开发板Makefile文件,将407开发板相关文件替换为746相关文件。
  • 添加新开发板到系统配置中,参考407开发板在targets\bsp.mk、targets\ Kconfig.stm32、targets\bsp\Makefile中添加746相关内容,在tools\build\config中添加STM32F746_Nucleo.config配置文件。


至此已完成移植,烧录使用请参考《移植指南》。

移植指南:https://gitee.com/LiteOS/LiteOS/blob/master/doc/LiteOS_Porting_Guide.md 。


结语

未来我们还会持续新增更多组件、开发板、架构、特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues

为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如下图。


- end –



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。