- This topic has 6 个回复, 5 个参与人, and was last updated 5 years, 2 months 前 by 904570220.
-
作者帖子
-
五月 28, 2019 - 5:20 下午 #1244whik参与者
织女星开发板启动模式修改——从ARM M4核启动
前言
刚开始玩织女星开发板的时候,想先从熟悉的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被大核所使用,起始地址0x00000000,另外的256 KB Flash被小核所使用,起始地址0x01000000。
Flash地址示意
为了支持多核运行模式,RV32M1片上集成了多核管理系统(Multi_Core Unit),包括消息传递单元(Messaging Unit)、信号量2(SEMA42)、系统控制模块 (MSCM)、 扩展资源控制器 (XRDC)等模块,用于多核间的通信和控制。
内部整体框图
关于RV32M1多核开发的详细介绍,可以参考官方文档:DevelopMulticoreApplicationonRV32M1.pdf
启动模式的配置
通过配置RV32M1片上的FOPT寄存器(Flash Option Register),可以支持上电时从不同的核来启动,默认从RISC-V RI5CY内核启动,如果要进行ARM核开发,如M4开发,则必须切换为从ARM核启动,否则当使用调试器进行程序下载时,根本不能识别到ARM芯片,这一点要特别注意。关于FOPT寄存器各位的描述,可以查看RV32M1参考手册P450,为了便于切换启动模式,官方已经为我们写好了配置文件,直接通过openocd和telnet软件就可以完成对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固件,具体操作:织女星开发板调试器升级为jlink固件,升级完成后,连接RISC-V调试口和JLink调试口。
- 升级当前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
- 在以后需要更改启动配置时,只需要双击1openocd.bat文件,然后双击2telnet.bat文件,然后输入对应的启动命令。如
ri5cy_boot
、cm4_boot
、zero_boot
、cm0_boot
,然后重新上电,芯片就会从配置的核启动。
一些奇怪的事情
- 当配置为从ARM CM4核启动时,上电之后,执行程序会延时几秒钟。
- 配置成CM0启动时,能检测到芯片,但是程序下载不进去,不知道这是为什么。
而配置成RI5CY和ZERO_RISCY核启动时,下载调试均正常。
参考资料
八月 12, 2019 - 9:41 上午 #1870yabjy1371参与者您用的是哪个开发环境,我用的keil,编译没有问题,但是调试器连不上,也无法下载。调试器用的Jlink -edu。把板载调试器刷了jlink固件,keil报错。刷回默认固件,使用jlink-edu,keil能识别,但下载调试就报错
<audio style=”display: none;” controls=”controls”></audio>
八月 13, 2019 - 10:18 上午 #1871Howard参与者@whik 默认脚本配置从arm M4启动时,配置的是从ROM启动然后进入boot loader模式,(参考RV32M1RM文档的第749页的BOOT_SRC位),所以感觉启动比较慢。你可以修改_ri5cy.cfg,改BOOT_SRC位为从internal flash启动。
@yabjy1371 织女星开发板默认的板子调试器是CMSIS-DAP,在arm core下可以直接用来调试 arm core。如果板子做过修改板载调试器升级调试RISC-V core,则板载调试器变为JLINK,这时如果要调试arm core,要把飞线断开,同时调冒要连接上。
八月 30, 2019 - 9:14 下午 #1881qinshuang参与者您好,请问您无法从M0启动的问题解决了吗,我也遇到了这个问题
八月 30, 2019 - 9:18 下午 #1882qinshuang参与者您好,请问怎么配置从m0开始启动,我看sdk-arm的helloworld里面有个readme说要下载blhost.exe,可是www.nxp.com/kboot这个网站找不到了
-
作者帖子
- 抱歉,回复话题必需登录。