前言

刚开始玩织女星开发板的时候,想先从熟悉的ARM核入手,连上Jlink,打开MDK版本的Demo程序,编译OK,却检测不到芯片,仔细看了一下文档,原来RV32M1芯片默认从RISC-V核启动,如果想要调试下载ARM核程序,需要切换为ARM核启动,然后按照文档操作步骤,完成了启动模式的修改,现在分享给大家。

RV32M1芯片内核简介

织女星开发板主控芯片RV32M1,片上集成了四个核。

两个RISC-V内核:

  • RISC-V RI5CY Core
  • RISC-V ZERO_RISCY Core

两个ARM内核:

  • ARM Cortex-M4F Core(CM4)
  • ARM Cortex-M0+ Core(CM0+)

两个ARM核共用一个JTAG调试口,两个RISC-V核共用一个JTAG调试口,每个核都可以运行在48MHz频率,但在高速模式(HSRUN)时,可达72MHz,如果要查看系统当前的运行频率,可以在主程序中使用如下函数来获取系统时钟频率:

    uint32_t SysClk;
SystemCoreClockUpdate();
SysClk = SystemCoreClock;
PRINTF("系统时钟: %d \r\n", SysClk);

4个核被分为两个子系统,大核CM4F/RI5CY和小核CM0+/ZERO-RISCY,片上集成1.25 MB Flash 、384 KB SRAM,其中1 MB的Flash被大核所使用,起始地址0x0000_0000,另外的256 KB Flash被小核所使用,起始地址0x0100_0000。

Flash地址示意

为了支持多核运行模式,RV32M1片上集成了多核管理系统(Multi_Core Unit),包括消息传递单元(Messaging Unit)、信号量2(SEMA42)、系统控制模块 (MSCM)、 扩展资源控制器 (XRDC)等模块,用于多核间的通信和控制。

内部整体框图

关于RV32M1多核开发的详细介绍,可以参考官方文档:Develop_Multicore_Application_on_RV32M1.pdf

启动模式的配置

通过配置RV32M1片上的FOPT寄存器(Flash Option Register),可以支持上电时从不同的核来启动,默认从RISC-V RI5CY内核启动,如果要进行ARM核开发,如M4开发,则必须切换为从ARM核启动,否则当使用调试器进行程序下载时,根本不能识别到ARM芯片,这一点要特别注意。关于FOPT寄存器各位的描述,可以查看RV32M1参考手册P450,为了便于切换启动模式,官方已经为我们写好了配置文件,直接通过openocdtelnet软件就可以完成对FOPT寄存器的配置。

安装openocd调试软件

  • 解压Toolchain_Windows.zip中的openocd.zip,解压路径可任意,建议解压到Eclipse安装目录下的[DISK:]\eclipse\GNU MCU Eclipse\openocd\bin

  • 为了能在cmd命令端直接使用openocd命令,我们需要在环境变量PATH中添加一条,值为openocd下bin文件夹的路径,我的是在:F:\VEGA_Board\IDE\eclipse\GNU MCU Eclipse\openocd\bin

  • 测试是否安装成功。在cmd命令窗口输入openocd回车,弹出如下命令,说明安装成功。

      C:\Users\LAPTOP>openocd
    Open On-Chip Debugger 0.10.0+dev-00433-g849f49ca (2019-01-04-07:48)
    Licensed under GNU GPL v2
    For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html

安装 telnet 客户端应用

Windows系统可以通过如下命令安装使用:

  • cmd命令窗口输入如下命令来安装telnet:

      pkgmgr /iu:"TelnetClient"
  • 测试是否安装成功。cmd命令窗口输入telnet命令,弹出如下窗口,说明安装成功。

      欢迎使用 Microsoft Telnet Client
    Escape 字符为 'CTRL+]'
    Microsoft Telnet>
  • 输入help查看帮助信息:

      Microsoft Telnet> help
    
      命令可能是缩写。支持的命令为:
    
      c    - close                    关闭当前连接
    d - display 显示操作参数
    o - open hostname [port] 连接到主机(默认端口 23)。
    q - quit 退出 telnet
    set - set 设置选项(键入 'set ?' 获得列表)
    sen - send 将字符串发送到服务器
    st - status 打印状态信息
    u - unset 解除设置选项(键入 'set ?' 获得列表)
    ?/h - help 打印帮助信息

升级Jlink固件

修改启动模式,只能通过RISC-V内核来修改启动模式,即通过RISC-V JTAG调试口,

  • 升级当前Jlink驱动程序为支持RISC-V调试的驱动程序,即设备管理器里为

  • 确保openocd已经添加到环境变量
  • 打开SDK目录下的\rv32m1_sdk_riscv\boards\rv32m1_vega目录

  • 在当前窗口打开cmd命令窗口,在路径栏输入cmd即可在当前路径下打开cmd命令窗口

  • 在打开的命令窗口输入openocd -f rv32m1_ri5cy.cfg,弹出如下窗口说明连接成功。

  • 按Win+R快捷键,输入cmd,再打开一个cmd命令窗口,输入telnet localhost 4444命令

      C:\Users\LAPTOP>telnet localhost 4444
    正在连接localhost....

弹出telnet窗口,输入cm4_boot,选择从CM4核启动

	Open On-Chip Debugger
>cm4_boot

先按住板子上的复位按键SW1,然后按回车执行命令。

	>cm4_boot
>

稍等1秒钟,成功执行。然后重新上电,此时就是从ARM CM4核启动的。

如果想直接使用板载调试器来调试ARM核,Jlink驱动程序需要恢复为原来的J-link driver,操作步骤可以参考:织女星开发板调试器升级为Jlink固件,打开ARM SDK目录下的点灯程序,目录为:rv32m1_sdk_arm\boards\rv32m1_vega\driver_examples\gpio\led_output\cm4\mdk,编译,下载,调试,均正常。

使用批处理文件来简化操作

为了更方便的来修改启动模式,可以把上述的两条命令写成批处理文件:

  • 在rv32m1_ri5cy.cfg所在的路径,新建一个1_openocd.txt文件,以记事本方式打开,输入命令openocd -f rv32m1_ri5cy.cfg,文件扩展名修改为bat,即成为批处理文件。
  • 在rv32m1_ri5cy.cfg所在的路径,新建一个2_telnet.txt文件,输入命令telnet localhost 4444,修改扩展名为abt
  • 在以后需要更改启动配置时,只需要双击1_openocd.bat文件,然后双击2_telnet.bat文件,然后输入对应的启动命令。如ri5cy_bootcm4_bootzero_bootcm0_boot,然后重新上电,芯片就会从配置的核启动。

一些奇怪的事情

  • 当配置为从ARM CM4核启动时,上电之后,执行程序会延时几秒钟。
  • 配置成CM0启动时,能检测到芯片,但是程序下载不进去,不知道这是为什么。

而配置成RI5CY和ZERO_RISCY核启动时,下载调试均正常。

参考资料

历史精选


欢迎关注我的个人博客www.wangchaochao.top

或微信扫码关注我的公众号

织女星开发板启动模式修改——从ARM M4核启动的更多相关文章

  1. 织女星开发板使用RISC-V核驱动GPIO

    前言 织女星开发板是OPEN-ISA社区为中国大陆地区定制的一款体积小.功耗超低和功能丰富的 RISC-V评估开发板,基于NXP半导体四核异构RV32M1主控芯片. 两个RISC-V核:RI5CY + ...

  2. 织女星开发板RISC-V内核实现微秒级精确延时

    前言 收到VEGA织女星开发板也有一段时间了,好久没玩了,想驱动个OLED屏,但是首先要实现IIC协议,而实现IIC协议,最基本的就是需要一个精确的延时函数,所以研究了一下如何来写一个精确的延时函数. ...

  3. 真正的RISC-V开发板——VEGA织女星开发板开箱评测

    前言 由于最近ARM公司要求员工"停止所有与华为及其子公司正在生效的合约.支持及未决约定",即暂停与华为的相关合作,大家纷纷把注意力投向了另一个的处理器架构RISC-V,它是基于精 ...

  4. 手把手教你搭建织女星开发板RISC-V开发环境

    前言 Windows环境下搭建基于Eclipse + RISC-V gcc编译器的RISC-V开发环境,配合openocd调试软件,可以实现RISC-V内核程序的编译.下载和调试. 准备工作 工欲善其 ...

  5. 织女星开发板调试器升级为Jlink固件

    前言 为了能使用板载的FreeLink调试器来调试RISC-V内核,我们需要把默认的CMSIC-DAP固件,升级为JLink固件,固件升级之后,通过选择使用不同的驱动程序,来支持ARM内核还是RISC ...

  6. NXP恩智浦VEGA织女星开发板免费申请!

    前言 大概两周前申请了一块NXP恩智浦的开发板,今天终于收到了!在这里推荐给大家,官方网站刚上线一个月左右,目前申请的人还不算多,感兴趣的朋友可以申请一个,体验一下这个四核性能怪兽.大厂就是大气,包装 ...

  7. IMX6开发板qt creator直接编译ARM架构程序

    除了通过 11.2.2 小节通过命令行的操作来编译在 iTOP-imx6 开发板上运行的程序,还可以直接在 qtcreator 上设置,然后每次编译的程序都可以在开发板上运行.如下图所示,打开 qtc ...

  8. Android基础相关面试问题-activity面试问题(生命周期,任务栈,启动模式,跳转协议,启动流程)

    关于Android的一些面试题在15年就已经开了这个专栏了,但是一直木有坚持收集,而每次面对想要跳槽时大脑一片空白,也有些恐惧,因为毕境面试都是纯技术的沟通,要想让公司对你的技术能有所认可会全方位的进 ...

  9. centos7命令行与图形界面启动模式修改

    1.命令启动 systemctl set-default multi-user.target 2.图形界面模式 systemctl set-default graphical.target

随机推荐

  1. VMware中Bridged、NAT、host-only三种网络连接模式的原理及其区别

    VMnet0:这是VMware用于虚拟桥接网络下的虚拟交换机: VMnet1:这是VMware用于虚拟Host-Only网络下的虚拟交换机: VMnet8:这是VMware用于虚拟NAT网络下的虚拟交 ...

  2. Cesium案例解析(二)——ImageryLayers影像图层

    目录 1. 概述 2. 实例 2.1. ImageryLayers.html 2.2. ImageryLayers.js 2.2.1. 代码 2.2.2. 解析 3. 结果 1. 概述 Cesium支 ...

  3. Vue ES6箭头函数使用总结

    Vue ES6箭头函数使用总结   by:授客 QQ:1033553122   箭头函数 ES6允许使用“箭头”(=>)定义函数: 函数不带参数 定义方法:函数名称 = () => 函数体 ...

  4. 3.Android-ADT之helloworld项目结构介绍

    1.helloworld项目结构如下图所示: src 放项目的源代码的.而MainActivity.java文件则对应helloworld界面代码,代码如下所示: gen BuildConfig.ja ...

  5. Bash脚本编程之脚本基础和bash配置文件

    脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...

  6. JavaScript-作用域与作用域链

    一.JavaScript作用域:    1.就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性更重要是减少命名冲突. 2.js的作用域(es6)之前,分为全局作用域.局部作用域 ...

  7. React劲爆新特性Hooks 重构去哪儿网火车票PWA

    React劲爆新特性Hooks 重构去哪儿网火车票PWA 获取课程资料链接:点击这里获取 本课程先带你细数最近一年来React的新特性,如Hooks.Redux API,让你从头理解Hooks对传统R ...

  8. IT兄弟连 HTML5教程 CSS3属性特效 盒模型阴影

    除了为文字添加阴影,我们还可以为盒模型添加阴影.盒模型阴影的属性名称为box-shadow,此属性与text-shadow一样有4个值,前两个值分别表示水平方向位移距离和垂直方向的位移距离,第三个值表 ...

  9. (2018版)webstorm的安装和破解

    前言 相信使用HBuildX的各位都用过,所以这个webstorm就是用来代替的. 因为使用方式跟idea等软件差不多,如果习惯了idea的操作方式的可以试一试 安装webstorm 这是2018版的 ...

  10. xms新版发布

    基于.net core 3.0.101 github地址: https://github.com/migomiddle/xms 码云地址: https://gitee.com/migomiddle/x ...