【经验】先楫HPM6000系列双核MCU的使用和操作方法
多核的微控制器(MCU)向来是设计上的一大挑战,尤其是多核异构的设计。而MCU双核作为其中的精简版本,凭借其超强的处理性能和便捷开发的特性,很快受到业界的好评。先楫半导体先后推出了几款高性能MCU双核产品,集成2个RISC-V处理器,其中HPM6700系列两个核的最高主频都可以达到816MHz。本文通过对先楫HPM6000系列双核的使用方法、工程编译与调试、双核通信方式和资源分配等内容的介绍,全方位给大家介绍双核的使用和操作,让大家轻松玩转双核,完成更多的片上系统功能开发。
接下来,让我们看一看HPM6000系列双核MCU是如何玩转起来的吧。
双核简介
HPM6000系列的双核配置,均集成2个RISC-V处理器,双核采用主从结构。CPU0和CPU1采用相同配置,如下:
●支持相同指令集
●相同容量的L1指令和数据缓存
32KB L1 I-Cache,4-way,128x64B cache line per way
32KB L1 D-cache,4-way,128x64B cache line per way
●相同容量的指令和数据本地存储器:256 KB ILM和256 KB DLM
CPU0和CPU1采用相同的存储器映射,以下为例外:
●CPU自身的指令/数据本地存储器ILM/DLM为私有;
●FGPIO为私有
●平台中断控制器PLIC为私有
●软件中断控制器PLICSW为私有
●机器定时器MCHTMR为私有
双核的三种使用方法推荐
不论是在RAM中运行,还是片上Flash运行,双核固件均是存储在Flash上。客户根据应用场景,选择在上电后将双核各自的镜像从Flash中装载到RAM中执行或者基于Flash片上执行。
根据应用场景,选择合适的运行方式,推荐以下几种:
方案一:Core0加载到RAM运行,Core1加载到RAM运行
RAM区域可以是各自的ILM,也可以片上的SRAM,或者是SDRAM。当然,装载CODE的RAM区域各自都是独立的。此方案应用与双核固件均占用小,可完全装载到RAM中运行。
固件存储位置:Core0和Core1的固件均存放在Flash指定区域(Flash分区规划)。上电后,BootRom从指定Flash区域装载Core0镜像到指定RAM运行(type:debug/release),Core0运行后从指定Flash 区域装载Core1镜像到指定RAM,然后运行Core1。
方案二:Core0基于flash xip(flash片上执行)运行,Core1加载到RAM运行
此方案应用与Core0核固件占用大, Core1核固件占用小。通常将Core0用来做应用复杂交互,Core1用来做高实时性,高性能的触发逻辑。
固件存储位置:
1. Core0和Core1的固件各自存放在Flash的指定区域(Flash分区规划)。
●优点:Core0和Core1可单独OTA。
●缺点:需要维护两个固件BIN文件,并存放到各自的区域中。
2. Core1的固件以数组(只读区)镜像的方式存储在Core0的固件中,Core0固件存放在Flash指定区域;官方例程中使用此方案。
●优点: 只维护一个固件。
●缺点:Core0和Core1不可单独OTA。
方案三:Core0基于flash xip0(flash片上执行)运行,Core1基于flash xip1(flash片上执行)运行
此方案应用与Core0核和Core1核固件均很大,双核均无法满足放到RAM中运行。
注意:由于双核均基于flash片上执行,如果使用同一个flash
XPI,会出现并发访问Flash的情况导致未知异常发生;如果强制顺序访问,访问效率极低,严重拖垮CPU运行速率;故不建议两个核使用同一个flash
XPI片上执行。建议使用XPI0和XPI1各自外挂一个FLASH,分别用于Core0 Flash xip0和Core1 Flash xip1。
固件存储位置:Core0和Core1的固件存储在各自外挂的Flash的指定区域中。
双核工程编译与调试
HPM双核是集成了两个RISC-V 处理器,是两个完全独立的CPU,故HPM双核工程是Core0工程和Core1工程两个独立的工程。因此HPM双核工程编译,其实是两个独立的单核工程的编译。用户只需要建立core0和core1的各自工程编译调试即可。
由于HPM-SDK例程中使用的是方案二,且Core1的固件以数组(只读区)镜像的方式存储在Core0的固件中,导致Core1工程为Core0工程的关联工程。因此在构建工程时,必须先构建生成Core0工程,作为关联工程Core1工程会自动生成。由于Core1的固件是Core0工程中的只读数组,故必须先编译Core1工程生成只读数组镜像后,再编译Core0工程。
如下构建编译调试双核hello world工程:
A. 构建工程
先构建生成Core0工程:
由于Core0是flash片上执行,故type选择:flash_sdram_xip或flash_xip
作为关联工程Core1工程会自动生成:
B. 编译工程
打开各自的工程(Core0通过GUI工具直接点击Open Project with IDE, Core1对应目录下双击打开工程)。
用SES编译各自的工程即可。
C. 工程调试
一、双核同时调试
基于OpenOCD调试(FT2232/DAP-LINK等)。
为了达到Core0和Core1同时调试,基于OpenOCD调试在HPM-SDK例程中,对Core1的Debug做了如下限制:
1)Core1不启动GDB Server,连接Core0启动的GDB Server。当然使用不同的port来区分是Core0(Port:3333)还是Core1(Port:3334)。
2)Reset和Stop时,直接hart停止运行。
如下图:
因此,调试HPM-SDK双核例程,步骤如下:
步骤1:Core0的工程调试,和正常的单核调试相同,正常SES启动debug即可。
步骤2:Core1的工程调试,由于上述限制(为了双核同时调试),必须先将Core0的工程Debug运行,然后在启动Core1的Debug仿真。
可在Core0 SES终端看到Core1 GDB connect信息:
基于Jlink调试
基于Jlink调试,对Core0和Core1的Debug做如下修改:
1. Core0修改Debug连接target为:J-Link
2. Core1修改Debug连接target为:J-Link
3. Core1修改Debug Device为:HPM6750xVMx_CPU1
4. 由于SES修改Device为CPU1(上一步骤修改),联动修改ISA为:rv32i,导致编译等异常。故在Code Generation下改回ISA为:rv32imac。
5. 通常初始化时钟等外设在Core0中完成,故为了双核能同时调试,需先运行Core0 Debug至完成时钟等外设初始化后,方可Core1 Debug运行。
二、双核单独调试
基于OpenOCD调试
如果只用来单独调试Core1(Core0的单独调试不做任何修改即可),可修改Core1的Debug配置,如下:
Auto Start GDB Server: Yes
Reset and Stop Command: reset halt
修改后, 可直接启动Core1 Debug运行。
注意:由于CPU0,CPU1主从架构,通常外设等时钟初始化会在Core0中完成。如果是单独调试Core1,为了确保程序能正常运行,需在Core1工程中初始化时钟等外设。如下:
基于 Jlink 调试
单独调试Core1(Core0的单独调试不做任何修改即可),JLink修改同双核JLink修改一致(可参考上方介绍的内容)。
同样为了确保Core1能正常运行,需在Core1工程中初始化时钟等外设。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由玉鹤甘茗转载自先楫半导体HPMicro公众号,原文标题为:玩转MCU双核(上) 先楫HPM6000系列双核怎么玩?答案超乎你想象!,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】MCU HPM6750使用ISP烧录程序步骤及注意事项
先楫半导体推出的HPM6750是一款高性能MCU,采用双RISC-V内核,主频可达816MHz,使用自主的创新总线架构、高效的L1缓存和本地存储器,高达9220CoreMark和高达4651 DMIPS的MCU性能纪录;同时整个MCU还整合了一系列高性能外设。
先楫半导体HPM 16 位ADC+ENET开发案例:以2MSPS进行采样,通过ENET LWIP TCP方式发送到上位机
本文以先楫半导体 HPM6300 开发板为例介绍以 2MSPS 采样率进行 16 位 ADC 采样并将采样数据通过 ENET LWIP TCP 的方式发送到上位机的应用,ADC 采样使用抢占转换模式、PWM 触发的方式,ENET LWIP TCP 每次发送 1024 个 16 位采样数据。在HPM6300EVK 上进行测试验证,验证结果表明该方案是可行的。
【经验】先楫半导体HPM6700/6400/6300 MCU产品系列串口接收不定长数据的方式
先楫半导体官方发布新的hpm_sdk版本,这个硬件的空闲中断仅适用于HPM6200系列产品,而HPM6750/6400/6300系列的MCU只能使用uart_software_rx_idle 通过软件利用额外的定时器实现空闲中断机制。
国产高性能MCU又一力作,集成授权EtherCAT,助力工业伺服走向海内外
最近,先楫半导体发布中国首款拥有德国倍福公司正式授权EterhCAT从站控制器的高性能MCU产品HPM6E00系列,将国产高性能MCU在工业领域的应用推向新高度。
HPMicro HPM 6700/6400系列开创了高性能MCU的新纪元
型号- HPM6450,HPM6750EVK,HPM6750EVKMINI,HPM 6400,HPM 6700,HPM 6700 SERIES,HPM 6400 SERIES,HPM6454,HPM6730,HPM6430,HPM6750,HPM6750EVK2,HPM6754
【IC】先楫半导体最新款高性能MCU HPM5301,搭载单核32位RISC-V处理器,主频高达360MHz
先楫半导体于2023年11月24日宣布推出高性能HPM5300系列MCU最新款——HPM5301芯片。这款MCU搭载单核32位RISC-V处理器,采用QFN48封装,是迄今为止先楫推出的最简单易用的产品。该芯片的开发板HPM5301EVKLite也同步上市。
媒体视角 | 先楫半导体HPM6E00系列MCU填补国内空白,EtherCAT中国首授权
2023年12月先楫半导体正式推出中国首款拥有德国倍福公司正式授权EtherCAT从站控制器的高性能MCU产品HPM6E00系列。先楫半导体HPM6E00系列产品采用国际流行的RISC-V架构,主频高达600MHz,有单双核选项,集成了德国倍福公司授权的EtherCAT从站控制器,具备高性能运动控制、高实时工业以太网互联的特性。
HPM6200系列MCU双核高性能,专为精确控制而打造
型号- HPM6260,HPM6280,HPM6200 SERIES,HPM6264,HPM6220,HPM6240,HPM6284,HPM6200EVK,HPM6200
【应用】基于RISC-V的高主频MCU HPM6750用于LED大屏,双千兆以太网透传实现实时控制
基于RISC-V的高主频MCU能让LED大屏显示系统实现更高的驱动频率及更高的实时性。HPM6750是先楫半导体开发的采用RISC-V 内核、具有高主频及创新总线架构的双核高性能MCU,能通过双千兆以太网透传的方案加双核加持完美解决高速的链路设计。
先楫半导体(HPMicro)HPM6000家族MCU选型指南
目录- HPM6000家族MCU
型号- HPM6320IEP,HPM6454IAN,HPM6754IAN,HPM6450,HPM6750IAN,HPM6350,HPM6754IVM,HPM6300系列,HPM6450IAN,HPM6454IVM,HPM6320IPA,HPM6750IVM,HPM6000家族,HPM6360IPA,HPM6360IEP,HPM6364IPA,HPM6430IVM,HPM6300,HPM6400,HPM6320,HPM6364,HPM6364IEP,HPM6700,HPM6430IAN,HPM6350IPA,HPM6340,HPM6000,HPM6340IEP,HPM6360,HPM6730IAN,HPM6730IVM,HPM6350IEP,HPM6340IPA,HPM6700系列,HPM6450IVM,HPM6454,HPM6730,HPM6400系列,HPM6430,HPM6750,HPM6754
HPM6000 系列 MCU Flash 使用指南(一)------如何使用片内 Flash
描述- 本文档为HPM6000系列微控制器中支持4MB片内闪存的型号提供了使用指南,包括硬件和软件开发注意事项。指南详细介绍了如何使用片内Flash,以及与其他型号产品的异同,并提供了开发时需要注意的具体步骤,如创建新板目录、修改openocd脚本文件、调整board.c文件和yaml配置文件等。此外,还强调了使用片内闪存的优势,如节省开发调试成本和缩小PCB面积。
型号- HPM6400 系列,HPM6000,HPM6264,HPM6360,HPM6284,HPM6200 系列,HPM6700 系列,HPM6000 系列,HPM6300,HPM6454,HPM6400,HPM6364,HPM6200,HPM6700,HPM6300 系列,HPM6754
【IC】有动静!先楫出了颗适用机器人的国内首款内嵌ESC高性能MCU——HPM6E00
先楫半导体(HPMicro)推出的新款MCU——HPM6E00,引发了外界的广泛关注。这家成立仅四年的公司,凭借“国内首款内嵌ESC的高性能MCU”,再次证明了其在MCU领域的创新实力。
HPM6800 系列高性能微控制器数据手册
描述- HPM6800系列微控制器是一款基于RISC-V内核的32位高性能微控制器,具备丰富的功能和强大的性能。该系列微控制器具有32位RISC-V处理器,支持多种指令集,包括RV32-IMAFDCP指令集,并配备DSP单元和数字音频输出。此外,它还具备丰富的模拟外设和通信接口,支持多种存储器和图形系统,适用于多种应用场景。
型号- HPM68D4IBD1,HPM6880,HPM6850IBD1,HPM6880IBD1,HPM6850,HPM6800 系列,HPM68D3,HPM6800,HPM68D3IBD1,HPM68D4,HPM6830,HPM6830IBD1
先楫HPM6000系列高性能MCU在Linux环境下自动生成SDK本地化工程
本文介绍先楫半导体HPM6000系列高性能MCU在Linux环境下自动生成SDK本地化工程,SDK下载地址可通过世强FAE获取并提供技术支持。工程支持世强整合的SekormStudio(eclipse+GCC)以及第三方Segger Studio集成开发环境。
电子商城
现货市场
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
提供稳态、瞬态、热传导、对流散热、热辐射、热接触、和液冷等热仿真分析,通过FloTHERM软件帮助工程师在产品设计初期创建虚拟模型,对多种系统设计方案进行评估,识别潜在散热风险。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论