0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread qemu mps2-an385 bsp移植制作 :BSP制作篇

冬至子 来源:张世争 作者:张世争 2023-08-02 14:49 次阅读

下载 V2M-MPS2_CMx_BSP

mps2 的资料很少,所以唯一能下载的是 ARM 官方的 V2M-MPS2_CMx_BSP

提取启动文件与连接脚本

安装 Keil.V2M-MPS2_CMx_BSP.1.8.0.pack 后, 在 V2M-MPS2_CMx_BSP1.8.0DeviceCMSDK_CM3SourceGCC 路径下,有 mps2-an385 的启动文件与连接脚本

1.jpg

把 V2M-MPS2_CMx_BSP1.8.0DeviceCMSDK_CM3SourceGCCgcc_arm.ld 复制到工程 qemu-mps2-arm 目录下,可以改为 link.lds。
把 V2M-MPS2_CMx_BSP1.8.0DeviceCMSDK_CM3SourceGCCstartup_CMSDK_CM3.S 复制到工程 qemu-mps2-arm/drivers 目录下

【备注】也可把整个 V2M-MPS2_CMx_BSP1.8.0DeviceCMSDK_CM3 目录复制到工程 qemu-mps2-arm/drivers 目录下

通过简单了解到,这个启动文件与连接脚本,与 STM32F103 系列的很像。

scons 构建环境的搭建
RT-Thread BSP 使用 scons 进行构建,所以需要 SConscript SConstruct 两个文件,另外需要 rtconfig.py 文件,这几个文件可以从其他的 RT-Thread bsp 如 bspstm32stm32f103-fire-arbitrary 复制过来,修改一下构建路径即可

SConscript 文件 无需修改,内容如下,遍历 当前与子目录下的 SConscript,获取构建的目标

RT-Thread building script for bridge

import os
from building import *
cwd = GetCurrentDir()
objs = []
list = os.listdir(cwd)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, 'SConscript'))
Return('objs')
SConstruct 文件:只需要修改 RTT_ROOT 的路径
import os
import sys
import rtconfig
if os.getenv('RTT_ROOT'):
RTT_ROOT = os.getenv('RTT_ROOT')
else:
RTT_ROOT = os.path.join(os.getcwd(), '..', 'rt-thread')
print(RTT_ROOT)
sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')]
from building import *
TARGET = 'rtthread.' + rtconfig.TARGET_EXT
DefaultEnvironment(tools=[])
env = Environment(tools = ['mingw'],
AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS,
CC = rtconfig.CC, CFLAGS = rtconfig.CFLAGS,
CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS,
AR = rtconfig.AR, ARFLAGS = '-rc',
LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS)
env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
env['ASCOM'] = env['ASPPCOM']
Export('RTT_ROOT')
Export('rtconfig')

prepare building environment

objs = PrepareBuilding(env, RTT_ROOT)

make a building

DoBuilding(TARGET, objs)
rtconfig.py 文件: 基本不需要修改,注意复制一份 STM32F103 系列 Cortex-M3 的,如 bspstm32stm32f103-fire-arbitraryrtconfig.py
图形配置文件
RT-Thread 在 ubuntu 下使用 scons --menuconfig 进行图形界面配置,需要相应的 Kconfig 文件,当前需要两个 Kconfig 文件,BSP 下 Kconfig 与
bsp/drivers 下的 Kconfig,如 从 bspstm32stm32f103-fire-arbitrary 复制一份,修改一下

qemu-mps2-arm/Kconfig 内容,注意修改 RTT_DIR 路径

mainmenu "RT-Thread Project Configuration"
config BSP_DIR
string
option env="BSP_ROOT"
default "."
config RTT_DIR
string
option env="RTT_ROOT"
default "../rt-thread"
config PKGS_DIR
string
option env="PKGS_ROOT"
default "packages"
source "$RTT_DIR/Kconfig"
source "$PKGS_DIR/Kconfig"
source "$BSP_DIR/drivers/Kconfig"
qemu-mps2-arm/drivers/Kconfig

这里需要配置一下 MCU信息,如 select ARCH_ARM_CORTEX_M3,用于选择 RT-Thread 的 rt-thread/libcpu/arm/cortex-m3/

mps2-an385 的串口是 uart0 开始的,配置一个用于 MSH shell 的串口,当前验证是 uart0 可以正常工作

menu "Hardware Drivers Config"
config SOC_MPS2_CORTEX_M3
bool
select ARCH_ARM_CORTEX_M3
select RT_USING_COMPONENTS_INIT
select RT_USING_USER_MAIN
default y
menu "Onboard Peripheral Drivers"
config BSP_USING_UART0
bool "Enable UART0"
default y
config BSP_USING_UART1
bool "Enable UART1"
default n
endmenu
endmenu
默认需要有一个 rtconfig.h,这个文件可以手动创建,内容为空即可,然后通过 scons --menuconfig,即可刷新 rtconfig.h 的内容,同时生成 .config 默认配置文件
mps2-an385 相关的文件
当前 把 KeilV2M-MPS2_CMx_BSP1.8.0DeviceCMSDK_CM3 复制到 工程 qemu-mps2-arm/drivers/ 目录下,
创建并修改 qemu-mps2-arm/drivers/SConscript,用于编译 qemu-mps2-arm/drivers 驱动相关的文件
import rtconfig
from building import *
cwd = GetCurrentDir()

src = Glob('*.c')

src = Split('''
CMSDK_CM3/Source/system_CMSDK_CM3.c
board.c
drv_common.c
drv_uart.c
''')
list = os.listdir(cwd)
CPPPATH = [cwd]
CPPPATH += [cwd + '/CMSDK_CM3/Include']
CPPPATH += [cwd + '/cmsis/core/include']
objs = []
if rtconfig.PLATFORM in ['gcc']:
src += ['CMSDK_CM3/Source/GCC/startup_CMSDK_CM3.S']
group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH)
for d in list:
path = os.path.join(cwd, d)
if os.path.isfile(os.path.join(path, 'SConscript')):
objs = objs + SConscript(os.path.join(d, 'SConscript'))
objs = objs + group
Return('objs')
从其他 bsp,复制一份 board.c board.h 文件 到 qemu-mps2-arm/drivers,board 初始化

从其他 bsp,复制一份 drv_uart.c drv_uart.h 文件 到 qemu-mps2-arm/drivers,串口驱动

从其他 bsp,复制一份 drv_common.c 到 qemu-mps2-arm/drivers,当前主要是 定时器初始化

编译并解决编译错误

scons 构建 drivers/system_CMSDK_CM3.c354: error: #error device not specified!,可以在
qemu-mps2-arm/drivers/CMSDK_CM3/Source/system_CMSDK_CM3.c 文件上面定义 MCU 的型号 #define CMSDK_CM3

scons 构建 缺少 core_cm3.h 文件: 这部分可以复制 Keil MDK5 pack 路径下的 ARMCMSIS5.8.0CMSISCoreIncludecore_cm3.h 下

工程里面创建 qemu-mps2-arm/drivers/cmsis/core/include 目录,把以下文件复制过来

ARMCMSIS5.8.0CMSISCoreIncludecmsis_compiler.h

ARMCMSIS5.8.0CMSISCoreIncludecmsis_gcc.h
ARMCMSIS5.8.0CMSISCoreIncludecmsis_version.h
ARMCMSIS5.8.0CMSISCoreIncludecore_cm3.h
ARMCMSIS5.8.0CMSISCoreIncludempu_armv7.h

1.jpg

待进一步完善驱动、配置、修改并启动 RT-Thread

小结

本篇主要是 RT-Thread qemu mps2-an385 bsp 相关文件的准备工作,了解构建过程,并为进一步 适配启动 RT-Thread 做准备

本篇的 qemu board mps2-an385 资料比较少,主要是通过 ARM 官方 Keil.V2M-MPS2_CMx_BSP.1.8.0.pack 获取到,并且文档也比较少,
不过 RT-Thread 移植主要是 定时器与 串口的移植, CPU 架构部分,RT-Thread libcpu 已经支持 ARM Cortex-M3,所以移植起来主要是 BSP 相关的适配与修改

接下来开始 适配与修改BSP,让 mps2-an385 RT-Thread 跑起来.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM处理器
    +关注

    关注

    6

    文章

    360

    浏览量

    41720
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114719
  • Cortex-M3
    +关注

    关注

    9

    文章

    269

    浏览量

    59463
  • STM32F103
    +关注

    关注

    33

    文章

    477

    浏览量

    63600
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40082
收藏 人收藏

    评论

    相关推荐

    如何在windows和linux平台使用RT-Thread QEMU BSP,并运行RT-ThreadGUI示例

    开发板的情况下体验RT-ThreadRT-Thread使用QEMU模拟了ARM vexpress A9开发板,并提供了相关的板级支持包(BSP)。本文主要介绍在windows平台和l
    的头像 发表于 02-08 08:50 1.4w次阅读
    如何在windows和linux平台使用<b class='flag-5'>RT-Thread</b> <b class='flag-5'>QEMU</b> <b class='flag-5'>BSP</b>,并运行<b class='flag-5'>RT</b>-ThreadGUI示例

    GD32 RISC-V系列 BSP框架制作移植

      手把手教你使用RT-Thread制作GD32 RISC-V系列BSP 熟悉RT-Thread的朋友都知道,RT-Thread提供了许多
    的头像 发表于 06-22 19:44 5979次阅读
    GD32 RISC-V系列 <b class='flag-5'>BSP</b>框架<b class='flag-5'>制作</b>与<b class='flag-5'>移植</b>

    RT-Thread qemu mps2-an385 bsp移植制作 :系统运行

    前面已经让 RT-Thread 进入了 entry 入口函数,并且 调整 链接脚本,自动初始化与 MSH shell 的符号已经预留, 进入了 RT-Thread 的初始化流
    的头像 发表于 11-14 12:27 827次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>qemu</b> <b class='flag-5'>mps2-an385</b> <b class='flag-5'>bsp</b><b class='flag-5'>移植</b><b class='flag-5'>制作</b> :系统运行<b class='flag-5'>篇</b>

    RT-Thread的STM32BSP制作教程

    一、概念BSP是板级支持包(Board Support Package)的意思,概念详见BSP百科。二、参考资料1、官方版本文字制作教程:RT-Thread的STM32
    发表于 08-03 08:04

    STM32系列BSP制作教程简介

    STM32 系列 BSP 制作教程简介为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的
    发表于 08-24 06:53

    Cortex-M内核MCU的RT-Thread BSP框架和制作教程分享

    RT-Thread BSP 框架和制作教程发布,这意味着使用RAMCU(RA2系列、RA4系列、RA6系列)的开发者可以根据教程快速制作
    发表于 06-14 17:30

    【御芯微WIoTa®自组网协议开发套件试用体验】rt-thread bsp软件包制作

    rt-thread主线没有ucchip的bsp基于以上痛点,决定将ucchip的三款模组制作成为rt-thread的标准bsp
    发表于 07-15 21:59

    如何在Window及Ubuntu平台使用QEMU运行 RT-Thread qemu-vexpress-a9 BSP工程

    摘要本应用笔记描述了如何在 Window 及 Ubuntu 平台使用 QEMU 运行 RT-Thread qemu-vexpress-a9 BSP 工程。本文的目的和结构本文的目的和背
    发表于 10-26 15:19

    RT-Thread BSP qemu-virt64-aarch64文件系统

    \\qemu-virt64-aarch64 -》 复制 qemu-virt64-aarch64   (2rt-thread 把 .git 目录
    发表于 05-16 10:29

    STM32系列RT-Thread系统BSP制作教程免费下载

    为了让广大开发者更好、更方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的 BSP,推出了新的 BSP 框架。新的
    发表于 02-25 08:00 47次下载
    STM32系列<b class='flag-5'>RT-Thread</b>系统<b class='flag-5'>BSP</b><b class='flag-5'>制作</b>教程免费下载

    如何进行GD32F103系列的BSP制作

    熟悉RT-Thread的朋友都知道,RT-Thread提供了许多BSP,但不是所有的板子都能找到相应的BSP,这时就需要移植新的
    的头像 发表于 05-12 11:00 3055次阅读

    RT-Thread文档_Nordic BSP 上手指南

    RT-Thread文档_Nordic BSP 上手指南
    发表于 02-22 18:26 7次下载
    <b class='flag-5'>RT-Thread</b>文档_Nordic <b class='flag-5'>BSP</b> 上手指南

    RT-Thread qemu mps2-an385 bsp移植制作 :环境搭建

    最近打算系统地研究一下 RT-Thread,包括 RT-Thread BSP移植,由于一直在使用 QEMU 进行一些软件功能的验证,
    的头像 发表于 08-02 14:45 619次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>qemu</b> <b class='flag-5'>mps2-an385</b> <b class='flag-5'>bsp</b><b class='flag-5'>移植</b><b class='flag-5'>制作</b> :环境搭建<b class='flag-5'>篇</b>

    瑞萨Cortex-M内核RA MCU的RT-Thread BSP制作教程发布

    瑞萨Cortex-M内核RA MCU的RT-Thread BSP制作教程发布
    的头像 发表于 09-18 10:58 708次阅读
    瑞萨Cortex-M内核RA MCU的<b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b><b class='flag-5'>制作</b>教程发布

    RT-Thread BSP qemu-virt64-aarch64文件系统

    前面大体上搭建了 RT-Thread BSP qemu-virt64-aarch64 的交叉编译环境,运行后发现,文件系统没有挂载上,感觉是没有 mkfs。
    的头像 发表于 10-08 16:34 942次阅读
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>BSP</b> <b class='flag-5'>qemu</b>-virt64-aarch64文件系统