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
    +关注

    关注

    134

    文章

    9054

    浏览量

    366827
  • Linux
    +关注

    关注

    87

    文章

    11230

    浏览量

    208933
  • JTAG
    +关注

    关注

    6

    文章

    398

    浏览量

    71601
  • 调试器
    +关注

    关注

    1

    文章

    300

    浏览量

    23691
收藏 人收藏

    评论

    相关推荐

    利用ARMxy边缘计算机BL340与Node-Red实现LED设备的开闭控制

    搭建了一个高效的原型开发与测试平台。本文将带您走进BL340系列与Node-Red的结合应用,探索如何通过这一组合控制设备执行Linux指令,进而控制设备上的LED状态。 一、Node-Red Node-
    的头像 发表于 08-15 14:12 223次阅读
    利用ARMxy边缘计算机BL340与Node-<b class='flag-5'>Red</b>实现LED设备的开闭控制

    ESP_MESH_LITE项目在menuconfig中修改MESH_ID无效的原因?

    ESP_MESH_LITE项目在menuconfig中修改MESH_ID无效,只有执行erase_flash才能修改成功,似乎MESH_ID第一次配置之后存在了flash里面,修改sdkconfig内容无效?
    发表于 07-19 07:29

    求助,关于搭建ESP mesh lite组网遇到的问题求解

    最近想用ESP32做一个物联网项目,需要用 ESP mesh lite 进行一个组网,但是在写程序时遇到了一些问题,首先我用的是Arduino编写的程序,我遇到的第一个疑惑是,当我建立mesh组网
    发表于 06-28 06:44

    Node-RED初学者教程-三分钟学习

    通过这短短三分钟的教程,你已经掌握了Node-RED的基本操作。你可以利用Node-RED的强大功能来创建更复杂的数据流和自动化任务,无论是物联网应用、API集成还是数据处理。Node-RED简化了编程
    的头像 发表于 06-27 17:09 2423次阅读
    Node-<b class='flag-5'>RED</b>初学者教程-三分钟学习

    ENV-Windows v2.0.0版本发布

    ENV-Windows v2.0.0版本发布
    的头像 发表于 06-26 08:35 631次阅读
    <b class='flag-5'>ENV</b>-Windows v2.0.0版本发布

    Node-RED安装本地教程

    Node-RED是一个基于流的开发工具,广泛应用于物联网(IoT)、家庭自动化和其他数据驱动的应用程序。它通过图形化的编程界面,使得非专业程序员也能轻松上手。本文将介绍如何在本地环境中安装Node-RED,帮助你快速开始项目开发
    的头像 发表于 06-24 12:10 1894次阅读
    Node-<b class='flag-5'>RED</b>安装本地教程

    Node-RED实现电表数据采集并上云

    容器实现边缘采集”。前文指引:《【教程】图文详解!Docker容器实现边缘采集》首先需要搭建Node-RED运行环境,可以参考以往案例,也可以直接百度搜索,接下来
    的头像 发表于 06-07 08:21 2749次阅读
    Node-<b class='flag-5'>RED</b>实现电表数据采集并上云

    分享 | PTP、NTP时间同步服务器的部署与搭建过程

    分享 | PTP、NTP时间同步服务器的部署与搭建过程
    的头像 发表于 05-15 10:01 941次阅读
    分享 | PTP、NTP时间同步服务器的部署与<b class='flag-5'>搭建</b><b class='flag-5'>过程</b>

    SOLIDWORKS教育版使学生了解如何加快设计项目的速度

    在当今信息爆炸的时代,设计项目的速度和效率对于工程专业的学生来说至关重要。SOLIDWORKS教育版作为一款专门为学生设计的3D CAD软件,不仅提供了强大的设计工具,更致力于帮助学生了解如何加快设计项目的速度,提升他们的设计能力和效率。
    的头像 发表于 04-09 16:00 300次阅读

    硬件测试服务项目的重要性和作用

    服务项目的定义与重要性 硬件测试服务项目是对硬件设备(如结构、PCBA、关键部件等)进行差错检查的过程,旨在保证产品的质量和性能。在硬件产品开发过程中,测试是不可或缺的一环,它能够帮助
    的头像 发表于 03-28 09:54 680次阅读
    硬件测试服务<b class='flag-5'>项目的</b>重要性和作用

    OpenHarmony 移植:build lite 编译构建过程

    这些疑惑,会对 build lite 编译构建过程有个更深入的理解。 1、产品解决方案代码是如何被调用编译的 在文件 buildliteBUILD.gn 配置文件中的构建目标 //build/lite
    的头像 发表于 02-19 16:19 908次阅读

    焊接过程监控记录

    、智能诊断、智能排产以及质量控制过程的自动记录。 目前,部分企业焊接人员的能力参差不齐,导致焊工对工艺执行存在偏差,从而严重影响焊接质量。德州迪格特电子科技有限公司开发的焊接过程监测系统,基于焊机设备的智能
    的头像 发表于 02-02 16:25 554次阅读
    焊接<b class='flag-5'>过程</b>监控<b class='flag-5'>记录</b>

    MES系统项目的正确实施

    电子发烧友网站提供《MES系统项目的正确实施.docx》资料免费下载
    发表于 01-31 09:24 0次下载

    记录RocketMQ在centos7上的安装过程

    本文记录RocketMQ在centos7上的安装过程,没有技术的探讨,仅仅是安装记录,以作备忘。
    的头像 发表于 01-02 11:41 1450次阅读
    <b class='flag-5'>记录</b>RocketMQ在centos7上的安装<b class='flag-5'>过程</b>

    springcloud项目搭建及部署

    如何搭建并部署Spring Cloud项目。 一、环境准备 在开始之前,我们需要准备以下环境: Java开发环境:确保已经安装了Java SE Development Kit(JDK)。 Maven
    的头像 发表于 12-03 15:52 1167次阅读