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

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

3天内不再提示

记录Red Lite Env项目的基础搭建过程及碰到的问题

冬至子 来源:兆易创新GD32 MCU 作者:Red 2022-09-30 14:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Linux 下如何使用对 GD32F310G START 进行在线调试以及程序下载

需要使用的关键工具是,开源的调试器 openocd, 涉及到有两个配置文件,分别是 target 的配置文件 gd32f3x.cfg:

# script for stm32f3x family

#
# stm32 devices support both JTAG and SWD transports.
#
source [find target/swj-dp.tcl]
source [find mem_helper.tcl]

if { [info exists CHIPNAME] } {
   set _CHIPNAME $CHIPNAME
} else {
   set _CHIPNAME stm32f3x
}

set _ENDIAN little

# Work-area is a space in RAM used for flash programming
# By default use 16kB
if { [info exists WORKAREASIZE] } {
   set _WORKAREASIZE $WORKAREASIZE
} else {
   set _WORKAREASIZE 0x4000
}

# JTAG speed should be <= F_CPU/6. F_CPU after reset is 8MHz, so use F_JTAG = 1MHz
#
# Since we may be running of an RC oscilator, we crank down the speed a
# bit more to be on the safe side. Perhaps superstition, but if are
# running off a crystal, we can run closer to the limit. Note
# that there can be a pretty wide band where things are more or less stable.
adapter speed 1000

adapter srst delay 100
if {[using_jtag]} {
 jtag_ntrst_delay 100
}

#jtag scan chain
if { [info exists CPUTAPID] } {
   set _CPUTAPID $CPUTAPID
} else {
   if { [using_jtag] } {
      # See STM Document RM0316
      # Section 29.6.3 - corresponds to Cortex-M4 r0p1
      set _CPUTAPID 0x4ba00477
   } {
      set _CPUTAPID 0x2ba01477
   }
}

swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID
dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu

if {[using_jtag]} {
   jtag newtap $_CHIPNAME bs -irlen 5
}

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap

$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size $_WORKAREASIZE -work-area-backup 0

set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME stm32f1x 0 0 0 0 $_TARGETNAME

reset_config srst_nogate

if {![using_hla]} {
   # if srst is not fitted use SYSRESETREQ to
   # perform a soft reset
   cortex_m reset_config sysresetreq
}

proc stm32f3x_default_reset_start {} {
    # Reset clock is HSI (8 MHz)
    adapter speed 1000
}

proc stm32f3x_default_examine_end {} {
    # Enable debug during low power modes (uses more power)
    mmw 0xe0042004 0x00000007 0 ;# DBGMCU_CR |= DBG_STANDBY | DBG_STOP | DBG_SLEEP

    # Stop watchdog counters during halt
    mmw 0xe0042008 0x00001800 0 ;# DBGMCU_APB1_FZ |= DBG_IWDG_STOP | DBG_WWDG_STOP
}

proc stm32f3x_default_reset_init {} {
    # Configure PLL to boost clock to HSI x 8 (64 MHz)
    mww 0x40021004 0x00380400   ;# RCC_CFGR = PLLMUL[3:1] | PPRE1[2]
    mmw 0x40021000 0x01000000 0 ;# RCC_CR |= PLLON
    mww 0x40022000 0x00000012   ;# FLASH_ACR = PRFTBE | LATENCY[1]
    sleep 10                    ;# Wait for PLL to lock
    mmw 0x40021004 0x00000002 0 ;# RCC_CFGR |= SW[1]

    # Boost JTAG frequency
    adapter speed 8000
}

# Default hooks
$_TARGETNAME configure -event examine-end { stm32f3x_default_examine_end }
$_TARGETNAME configure -event reset-start { stm32f3x_default_reset_start }
$_TARGETNAME configure -event reset-init { stm32f3x_default_reset_init }

$_TARGETNAME configure -event trace-config {
    # Set TRACE_IOEN; TRACE_MODE is set to async; when using sync
    # change this value accordingly to configure trace pins
    # assignment
    mmw 0xe0042004 0x00000020 0
}

board 的配置文件 gd32f3start.cfg

# sudo openocd -f interface/cmsis-dap.cfg -c "transport select swd" -c "set CPUTAPID 0" -f target/gd32f3x.cfg
#
source [find interface/cmsis-dap.cfg]
transport select swd

set CPUTAPID 0
set WORKAREASIZE 0x2000
source [find target/gd32f3x.cfg]

proc gdd { pos } {
    if { $pos == 0 } {
        reset;
        halt;
        flash write_image erase TencentOS_tiny.bin 0x8000000;
        reset;
        echo "stm down firm 2 internal flash success"
    } else {
        echo "invalid gdd down to others"
    }
}

分别将上述配置文件放到 openocd 的安装目录,大概是这样的:

▸ tree -L  1 /usr/share/openocd/scripts/
/usr/share/openocd/scripts/
├── bitsbytes.tcl
├── board  ==> 放 gd32f3start.cfg 配置文件
├── chip
├── cpld
├── cpu
├── fpga
├── interface
├── mem_helper.tcl
├── memory.tcl
├── mmr_helpers.tcl
├── target  ==> 放 gd32f3x.cfg 配置文件
├── test
└── tools

9 directories, 4 files

连接开发板的命令是 openocd -f board/gd32f3start.cfg, 如果一切顺利你会看到这样的信息:

poYBAGM2kcqAEdC3AAFizhsdUCU126.png

接下去可以:

使用 arm-none-eabi-gdb 连接本机的 3333 端口远程调试开发板

使用 telnet 链接本机的 4444 端口进行程序下载调试

效果大概是这样的:

poYBAGM2kd-ADKuWAALBWkcGRto979.png

环境搭建好了之后,就可以开发愉快的开发了。

移植 Tencent OS 到 GD32F310G START

移植系统比较快的方法是:

参考一个架构类似的处理器的工程,然后复制修改替换,保证编译通过

阅读整个系统的代码走向,点灯调试

逐步优化代码,最后可以提交 療 到上游

此处具体的移植步骤我就不详细记录了,因为网上有丰富的系统移植的教程,都是大同小异的。我在此仅仅展示下我移植过程中的一些提交记录:

poYBAGM2kfKAY90hAADaNUhMX4Y832.png

特别地,我将 TencentOS Tiny 的 shell 组件添加进来了,所以效果是这样的:

pYYBAGM2kgSAVct9AAEVqXipy-w744.png




审核编辑:刘清

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

    关注

    135

    文章

    9499

    浏览量

    388592
  • Linux
    +关注

    关注

    88

    文章

    11627

    浏览量

    217912
  • JTAG
    +关注

    关注

    6

    文章

    411

    浏览量

    74595
  • 调试器
    +关注

    关注

    1

    文章

    325

    浏览量

    24920
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    润和软件中标某农商行AI服务器搭建及多场景智能应用项目

    近日,江苏润和软件股份有限公司(以下简称“润和软件”)凭借在AI领域深厚积淀、卓越工程能力及对金融数智化趋势的精准把握,中标某农商行AI服务器搭建及多场景智能应用项目。此次中标不仅印证了润和软件在金融AI应用领域的技术领先性,更彰显了在助力金融机构数字化转型
    的头像 发表于 11-26 15:15 223次阅读
    润和软件中标某农商行AI服务器<b class='flag-5'>搭建</b>及多场景智能应用<b class='flag-5'>项目</b>

    欧盟CE-RED指令介绍

    欧盟CE-RED指令,全称是RadioEquipmentDirective(无线电设备指令),指令编号为2014/53/EU,是欧盟针对所有带无线发射功能设备制定的一项强制性法规。它是欧盟CE认证
    的头像 发表于 11-05 14:01 287次阅读
    欧盟CE-<b class='flag-5'>RED</b>指令介绍

    ENV-Windows v2.0.0 问题答疑 | 技术集结

    目录前言Q&A前言自从发布了ENV2.0新版本以来,受到了社区伙伴们的广泛关注。然而,评论区中出现了许多问题。本文档旨在统一回复并解决这些问题,帮助用户更好地使用ENV2.0。Q&
    的头像 发表于 10-26 10:03 187次阅读
    <b class='flag-5'>ENV</b>-Windows v2.0.0 问题答疑 | 技术集结

    【匠芯创D133CBS KunLun Pi开发板试用体验】介绍、环境搭建

    WiFi Speaker 开发板动态展示效果见顶部视频。 开机进入系统 动态演示见底部视频。 环境搭建 Luban-Lite SDK 是由ArtInChip设计的,旨在为系统级芯片(SoC
    发表于 09-17 10:35

    ubuntu下使用实体开发板搭建环境缺少env.sh怎么处理?

    在ubuntu环境下,安装好gcc,scons,等工具,执行scons --menuconfig能出现菜单, 但是在home目录的.env文件夹下,只有local_pkgs、packages、tools三个文件夹,缺失env.sh文件,没法执行pkgs --update和
    发表于 09-10 07:33

    Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用

    前言Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig提供了简单易用的配置剪裁
    的头像 发表于 08-29 12:22 942次阅读
    Windows上使用<b class='flag-5'>ENV</b>工具开发基于先楫MCU的RT-Thread应用

    如何选择适合自己项目的通信协议评估工具?

    LZ-DZ200电能质量在线监测装置 选择适合项目的通信协议评估工具,核心是 对齐项目需求与工具能力 ,避免 “过度选型”(用高端工具测简单场景)或 “功能不足”(用轻量工具测复杂协议)。以下是分步
    的头像 发表于 08-27 09:19 431次阅读
    如何选择适合自己<b class='flag-5'>项目的</b>通信协议评估工具?

    HarmonyOS实战:组件化项目搭建

    ?本文将详细讲解HarmonyOs组件化项目搭建的全过程,带领大家实现一个组件化项目项目创建 首先创建一个
    的头像 发表于 06-09 14:58 505次阅读
    HarmonyOS实战:组件化<b class='flag-5'>项目</b><b class='flag-5'>搭建</b>

    【干货】什么是Node-RED?一文带你了解!

    一什么是Node-RED?首先我们来认识一下什么是Node-RED。Node-RED是一个基于Node.js的开源可视化编程工具,于2013年由IBM公司推出。它可以通过浏览器的图形化界面进行编程
    的头像 发表于 03-13 19:32 1508次阅读
    【干货】什么是Node-<b class='flag-5'>RED</b>?一文带你了解!

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 1438次阅读
    基于HPM_SDK_<b class='flag-5'>ENV</b>开发应用程序的升级处理

    焊接过程自动记录仪的应用与优势分析

    科技的发展,焊接过程自动记录仪应运而生,它不仅能够提高焊接作业的效率和质量,还能为焊接工艺的研究提供宝贵的数据支持。本文将从焊接过程自动记录仪的应用场景出发,探讨
    的头像 发表于 01-16 14:14 602次阅读

    使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

    这篇文章是来自Automatic Addison的开源项目,已获作者授权转载自github。本项目的主要内容是使用myCobot 280机械臂结合ROS2系统搭建机械分拣站。
    的头像 发表于 01-15 09:22 1901次阅读
    使用myCobot 280机械臂结合ROS2系统<b class='flag-5'>搭建</b>机械分拣站

    EasyExcel碰到问题记录

    = workbook.createFont(); redFont.setColor(IndexedColors.RED.getIndex()); if (richStringCellValue instanceof
    的头像 发表于 01-13 13:34 766次阅读

    离子注入的目的及退火过程

    离子注入后退火是半导体器件制造中的一个关键步骤,它影响着器件的性能和可靠性。 离子注入是将掺杂剂离子加速并注入到硅晶圆中,以改变其电学性质的过程。而退火是一个热处理过程,通过加热晶圆来修复注入过程
    的头像 发表于 01-02 10:22 2297次阅读

    SSM开发环境的搭建教程 SSM与Spring Boot的区别

    SSM开发环境的搭建教程 SSM(Spring+SpringMVC+MyBatis)开发环境的搭建涉及多个步骤,以下是详细的教程: 创建Maven项目 : 使用Maven工具创建一个新的Maven
    的头像 发表于 12-16 18:13 1814次阅读