先楫半导体

多核的微控制器(MCU)向来是设计上的一大挑战,尤其是多核异构的设计。而MCU双核作为其中的精简版本,凭借其超强的处理性能和便捷开发的特性,很快受到业界的好评。先楫半导体先后推出了几款高性能MCU双核产品,集成 2 个 RISC-V 处理器,其中HPM6700系列两个核的最高主频都可以达到816MHz。本文通过对先楫HPM6000系列双核的使用方法、工程编译与调试、双核通信方式和资源分配等内容的介绍,全方位给大家介绍双核的使用和操作,让大家轻松玩转双核,完成更多的片上系统功能开发。

1.jpg

接下来,让我们看一看HPM6000系列双核MCU是如何玩转起来的吧~

双核简介

HPM6000系列的双核配置,均集成 2 个 RISC-V 处理器,双核采用主从结构。CPU0 和 CPU1 采用相同配置,如下:

● 支持相同指令集

● 相同容量的 L1 指令和数据缓存

– 32KB L1 I-Cache,4-way,128x 64B cache line per way

– 32KB L1 D-cache,4-way,128x 64B 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

2.png

作为关联工程Core1工程会自动生成:

3.png

B. 编译工程

打开各自的工程(Core0通过GUI工具直接点击Open Project with IDE, Core1对应目录下双击打开工程)。

4.png

5.png

用SES编译各自的工程即可。

6.png

7.png

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停止运行。

如下图:

8.png

因此,调试HPM-SDK双核例程,步骤如下:

步骤1:Core0的工程调试,和正常的单核调试相同,正常SES启动debug即可。

9.png

步骤2:Core1的工程调试,由于上述限制(为了双核同时调试),必须先将Core0的工程Debug运行,然后在启动Core1的Debug仿真。

10.png

可在Core0 SES终端看到Core1 GDB connect信息:

11.png

基于Jlink 调试

基于Jlink调试,对Core0和Core1的Debug做如下修改:

1. Core0 修改Debug连接target为:J-Link

2. Core1修改Debug连接target为:J-Link

12.png

3. Core1修改Debug Device为:HPM6750xVMx_CPU1

13.png

4. 由于SES修改Device为CPU1(上一步骤修改),联动修改ISA为:rv32i,导致编译等异常。故在Code Generation下改回ISA为:rv32imac。

14.png

5. 通常初始化时钟等外设在Core0中完成,故为了双核能同时调试,需先运行Core0 Debug至完成时钟等外设初始化后,方可Core1 Debug运行。

15.png

二、双核单独调试

基于 OpenOCD 调试

如果只用来单独调试Core1(Core0的单独调试不做任何修改即可),可修改Core1的Debug配置,如下:

Auto Start GDB Server: Yes

Reset and Stop Command: reset halt

16.png

修改后, 可直接启动Core1 Debug运行。

注意:由于CPU0,CPU1主从架构,通常外设等时钟初始化会在Core0中完成。如果是单独调试Core1,为了确保程序能正常运行,需在Core1工程中初始化时钟等外设。如下:

17.png

基于 Jlink 调试

单独调试Core1 (Core0的单独调试不做任何修改即可),JLink修改同双核JLink修改一致(可参考上方介绍的内容)。

同样为了确保Core1能正常运行,需在Core1工程中初始化时钟等外设。

18.png


下一篇,我们将会给各位小伙伴们介绍双核的通信方式、资源分配和双核应用eRPC架构,敬请期待。

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 94

先楫半导体的高性能MCU芯片系列产品具高扩展性、高品质、高可靠性及寿命保障等特点,加上有软件保障、方案商生态保障以及服务经验优势,能够帮助工业领域应用的客户朋友们快速选型和方案落地。

目前,先楫高性能MCU芯片的方案能很好地服务于有工业、储能、汽车电子等应用需求的各类客户,赋能客户的创新,加速客户产品化的进程。下面一起来看看先楫半导体的产品方案在各个领域的应用案例。

01、电机控制

近年来,不管是工业自动化领域,还是汽车领域,抑或是生活家电领域,各个终端市场对电机性能都提出了更高的要求。它们不仅需要电机能够做到高效率和多功能控制,还需要电机在追求高转速的同时实现低噪音低振动的控制效果。在与日俱增的高标准性能要求下,高性能成了电机芯片竞争的关键。

具体来看,当前工业应用多轴伺服运动控制系统对响应时间、响应速度和稳定性等指标要求越来越高,传统四轴伺服运动控制系统多采用模块化方式集成,HMI+Ether CAT/NVUC等控制器+伺服驱动器(多个组成)的拓扑结构,所挂载的伺服驱动器越多,数据传输和处理越复杂,控制精度、实时性、同步性能也相应受限。

而通过使用超高性能的HPM6750芯片可实现HMI与四轴伺服运动控制,无需总线通信反馈与交互控制,片内完成所有数据采集、处理和显示,对伺服控制和四电机的同步控制效率大大提高,如下演示视频为通过UI交互下的四轴伺服电机运动。

02、高性能 RFID 控制板

该方案为基于HPM6450高性能MCU设计的核心板,以BTB的形式和底板连接。主板功能主要用到了串口、以太网和大量的GPIO。主要用于公司内部的智能柜,上面集成了RFID识别、高频IC卡识别、指静脉识别、串口屏、温湿度传感器、灯带、电子锁、状态指示灯等功能。原来这些模块全部是接在工控机上面,客户开发都得对接不同的模块每个模块协议不统一,客户开发工作量大本设计主要就是实现底层的串口通信,并在底层做一些基础工作,比如温湿度轮询,然后通过以太网和PC实现数据交互。

1.jpg

03、 汽车仪表

汽车液晶仪表是一种网络化、智能化的仪表,液晶屏幕取代了指针、数字等现有仪表盘上最具代表性的部分,能显示车辆的基本信息,此外,能显示导航地图、多媒体等功能,涡轮压力、油门开度、刹车力度等信息,可同网络、外设及其他应用相连接,汽车液晶仪表是目前最先进的汽车仪表,也是未来的发展方向与趋势。汽车液晶仪表具备应用优势,符合汽车智能化、电动化的发展趋势。

以下视频为大家呈现了先楫半导体基于HPM6750高性能RISC-V MCU开发的汽车仪表方案。这款10.1英寸的仪表显示屏的分辨率达1280x480,超过了60万像素。借助HPM6750的高性能CPU,以及独立自主知识产权的显示系统,包括8图层混合显示控制器,以及2D图形加速单元,成功实现了动态流畅的显示车辆行驶的各种关键信息,包括车辆的速度,发动机转速,油箱的状态等等,还包括了一些行驶的辅助信息,比如当前的时间,安全带的状态,转向灯信息等等。得益于HPM6750显示系统的卓越设计,显示屏局部的图层刷新可由硬件完成,限制降低CPU负荷,显示的刷新率超过了60帧每秒。本方案借助了立功科技研发的 AWTK Designer PC拖拽开发工具,快速实现复杂UI设计,在HPM微控制器多图层和PDMA的加持下,轻松实现流畅效果。

04、双千兆以太网透传应用

LED大屏显示系统利用发光二极管构成的点阵模块或像素单元组成大面积显示屏显示字符、图像等信息,具有低功耗、低成本、高亮度、长寿命、宽视角等优点,近年来随着LED显示技术的不断更新,广泛应用在各类媒体场合。

在LED大屏显示应用不断拓展的同时,大屏显示系统对刷新频率和延迟也提出了更严苛的要求:更高的刷新频率:刷新频率越高,显示的图像越稳定,眼睛感觉到疲劳可能性就越小;更低的延迟:整个数据链路的延迟进一步降低,减少闪屏或卡顿。

为确保LED大屏高刷新频率和低延迟,避免闪屏或卡顿的情况,就必须通过高速的链路来实时控制这些LED RGB灯。要实现更高刷新频率、更低延迟的LED大屏系统系统设计,主控芯片的选择非常关键。

HPM6750高性能MCU芯片可以有效满足LED大屏显示控制需求,该芯片支持2个以太网控制器ENET,支持标准以太网MAC,支持10/100/1000Mbps数据传输速率,支持RMII和RGMII模式的PHY,ENET以太网控制器自带DMA,因此在数据接收和发送上CPU负载为0。HPM6750通过以太网控制器,将两个PHY收到的以太网数据相互透传,透传速率达780Mb/s。基于高性能HPM6750的LED大屏显示方案在对实时控制要求极高的应用中丝毫不逊色于FPGA方案,不仅成本更低而且进一步降低了开发难度。

以下视频为大家呈现了,高性能HPM6750通过双千兆以太网透传的方案加双核加持完美解决高速的链路设计参考方案。

来源:我爱方案网

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 88

2023年4月19日,开放原子开源基金会OpenHarmony开发者大会在北京石景山景园假日酒店成功举办。上海先楫半导体科技有限公司作为OpenHarmony生态体系内重要的芯片合作伙伴,受邀参与该次大会,并在大会论坛上分享了先楫高性能MCU搭载OpenHarmony系统在工业终端的应用。

1.jpg

OpenHarmony开源两年多,吸引了130多家伙伴、超过5100名开发者参与共建和贡献。而先楫半导体HPM6700系列高性能MCU通用开发板在2022年就率先合入OpenHarmony社区主干,助力该开源系统在工业控制、新能源等应用领域实现突破。

先楫半导体市场总监徐琦先生,在开发者大会上跟大家分享《先楫搭载OpenHarmony的高性能MCU在工业终端的应用》。

除了向到场的各位开发者详细介绍先楫高性能MCU产品的特性和适用领域之外,还重点介绍先楫高性能MCU搭载OpenHarmony系统在工业带屏显的网关、工业串口服务器、工业控制器、通信中继站设备以及车载多屏协同等领域的应用实例。

2.jpg

徐琦先生表示,“先楫半导体致力于高性能MCU芯片的开发,凭借自身的技术实力将国产MCU性能提高了一个台阶,在大量工业及汽车的应用领域打破了国外MCU垄断。

先楫一直秉承开放包容、合作共赢的理念,与OpenHarmony的结合既顺应了客户端的需求又以开源的方式让广大开发者更容易体验到国产高性能MCU产品,是个多方共赢的好事。

砥砺深耕,履践致远。未来先楫半导体将延续开放的理念,与OpenHarmony的适配也会更加丰富,让更多的应用落地。”

论坛结束后,大会主办方授予先楫半导体 “OpenHarmony生态芯片贡献单位” 的荣誉称号。

1681975042531167.jpg

先楫半导体是一家致力于高性能嵌入式解决方案的半导体公司,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。OpenHarmony是面向全场景、全连接、全智能时代、基于开源的方式,是搭建一个智能终端设备操作系统的框架和平台。先楫高性能MCU搭载OpenHarmony系统,强强联手,为行业客户打造系列创新解决方案,赋能合作伙伴,为构建万物智联的生态系统贡献力量。

4.png

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 20

概 述

2023年3月底,先楫半导体官方发布了新的hpm_sdk版本,相比上一次发布的版本,串口外设多了一个uart_hardware_rx_idle的sample。目前,这个硬件的空闲中断仅适用于HPM6200系列产品,而HPM6750/6400/6300系列的MCU只能使用 uart_software_rx_idle 通过软件利用额外的定时器实现空闲中断机制。

1.png

首先,我们简单介绍一下以上4个串口相关的sample:

(1) uart_dma:此demo 的串口均使用DMA掌管进行收发,判断收发完成只需要一次DMA传输完成中断,但只能定长收发,适用于固定长度的收发场景。此demo适用于先楫半导体所有MCU系列产品。

(2) uart_hardware_rx_idle:此demo 使用硬件空闲机制和DMA接收进行接收不定长。适合接收不定长数据的场景,但此demo仅适用先楫半导体HPM6200系列MCU产品。

(3)uart_irq:此demo 的串口均使用中断来进行收发,可适用于任何应用场景。中断进行接收带来的一个问题就是每接收一个字节就会进入一次中断,在数据量稍大的场景下会比较耗费中断次数。此demo适用于先楫半导体所有MCU系列产品。

(4)uart_software_rx_idle:此demo需要定时器的两个通道,并且互联到一个IO,这个IO需要接到串口的RX引脚。一个通道作为捕获RX引脚下降沿以此判断开始接收,另一个通道作为同步输入SYNC(触发会重置计数器)以此来判断接收完成。利用定时器来实现空闲机制实现接收不定长数据。在资源利用不紧张的情况下可以选择使用此demo,因为每个串口都需要定时器的两个通道作为辅助外设。此demo适用于先楫半导体所有MCU系列产品。

对于某些应用场合,比如接收不定长数据,有硬件空闲中断的支持,可以再配合DMA,用最小的中断损耗(只需要一次中断)以及最少的外设辅助(不需要定时器查询)实现接收不定长数据。

本文将探讨一种利用串口FIFO接收超时机制而不依赖额外定时器在HPM6700/6400/6300 产品系列上实现串口不定长数据接收。

实现方案

先楫半导体 HPM6700/6400/6300 产品系列串口特性如下:

2.png

先楫半导体所有产品系列的串口 FIFO都支持阈值触发中断,也就是FIFO存储到多少个字节认为一次有效数据进而触发中断。这样可以大大减少触发中断的次数,有了FIFO阈值中断,就可以在进入中断后,一次性把FIFO的所有数据取出来。

开发者可以在SDK中找到详细描述阈值范围的内容:

  • 接收触发阈值为 0  (uart_rx_fifo_trg_not_empty):代表RX FIFO不为空就一次触发中断。

  • 接收触发阈值为 1  (uart_rx_fifo_trg_gt_one_quarter):代表RX FIFO接收到超过FIFO的四分之一就触发一次中断。

  • 接收触发阈值为 2  (uart_rx_fifo_trg_gt_half):代表RX FIFO接收到超过FIFO的一半就触发一次中断。

  • 接收触发阈值为 3  (uart_rx_fifo_trg_gt_three_quarters):代表RX FIFO接收到超过FIFO的四分之三就触发一次中断。

3.png

有了FIFO阈值设置,先楫半导体MCU产品的串口还具备了FIFO timeout 的中断。

4.png

产生中断需要同时具备以下条件:

① 需要使能FIFO;

② RXFIFO里面需要存在至少一个字符;

③ RXFIFO在四个字符的时间再也没有收到新的字符。

结合以上特点可知,当接收阈值产生中断的时候,系统能够把接收到的数据从FIFO提取出来;当FIFO timeout中断触发时,系统能够在最后把接收的数据从FIFO提取出来。通过这种方式来实现一帧不定长数据的接收。

此外,开发者可以结合以下特征以及自己的应用开发需求来决定是否采用此方案:

1、相比单个字节接收,接收中断次数能减少10倍以上。比如接收1000个字节,单个字节接收需要进入1000次中断,而使用rx fifo阈值+fifo超时机制,只需要进入77次,相比减少12倍以上中断次数。

2、接收阈值中断和超时中断是一起使能触发的。

3、使用这种方式的话,接收无法配合DMA,但是发送可以使用DMA。

4、超时条件是四个字符时间。也就是在四个字符时间没收到新数据,则判断超时。

方案验证

结合以上的论述,我们开发一个sample进行验证。接收使用RX FIFO 和 FIFO timeout方式,发送则使用DMA。使用100到1000字节随机几组进行验证接收的中断次数。

对于RX FIFO 和 FIFO  timeout方式,代码配置如下:

5.png

中断进行提取FIFO的数据:

6.png

实验现象

通过本次实验结果可见相对于中断方式接收,采用本文提到的方案可以显著减少中断次数。本法在进行不定长大数据量传输的场景下尤为有利,假设接收1000个字节,单个字节中断需要产生1000次中断,而本文提到的方案在不使用其他额外定时器的条件下,只需要77次中断就可完成传输。

7.png

以上是针对先楫半导体HPM6700/6400/6300这三个系列的MCU产品操作串口外设的一种方式的介绍。在实际操作过程中,希望能带给各位开发者一点启发。

如果大家在开发过程中还有其他的思路或建议,欢迎到官方网站的 “先楫社区”

http://www.hpmicro.com/support/forumpark.html)发贴讨论,MCU生态建设需要各位的积极参与,感谢您的信任与支持!

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 106

2023年4月7日-9日,由工信部和深圳市人民政府主办的中国电子信息博览会(CITE2023)在深圳福田会展中心举行。而作为本次展会的核心论坛活动 — “中国电子元器件创新与供应链安全发展峰会” 于4月8日上午9:30 在深圳福田会展中心5F会议室牡丹厅拉开帷幕。上海先楫半导体科技有限公司受邀参与本次论坛,并现场进行了主题为《高性能MCU发展趋势和创新型替代分析》的分享,收获了众多好评。

1.jpg

作为国际半导体行业的资深人士,先楫半导体执行副总裁陈丹Danny Chen分析了制造业、新能源、汽车等行业的发展趋势、技术创新、未来方向等,并对作为核心器件的MCU做了深刻的思考和分享,结合动荡的国际形势和不确定的供应链风险,Danny 分享了先楫半导体在国产高性能 MCU 领域的发展方向:

1. 超强计算能力。随着边缘计算、人工智能、机器人控制等技术的快速进步,行业应用要求MCU拥有更高的算力,能完成更加智能、复杂的运算。MCU的主频快速提升,从一两百兆提升到800MHz及以上,甚至跨入GHz领域。先楫的半导体的HPM6000 系列在40纳米工艺上实现了GHz的突破,并在多核、FPU、DSP等领域开发了增强算力的硬件加速,从而使先楫的MCU在整体性能和Coremark的跑分上都处于业界中的领先地位。

2. 精准控制能力。MCU作为集运算、控制于一体的微控制器,除了高性能的CPU,必须具备精准、实时的控制能力。先楫HPM6000 系列中的16bit 分辨率的ADC、 12bit DAC, 高速模拟比较器,双精度FPU和皮秒级的高精度PWM等模块能极大帮助客户实现精准的信号采集、运算和控制。同时,MCU上集成可编程逻辑单元可以提高系统的鲁棒性和稳定性。

2.jpg

3. 卓越通讯能力。 不管是“黑灯”工厂还是“瓦特流+比特流”,工业领域中的通讯具有高速,实时和多样的特性,因此支持强大和丰富的通讯协议的能力是高性能MCU的必备。HPM6000包括了常见的UART、SPI、I2C等外设资源,还增加了像千兆以太网、高速USB、CAN-FD,甚至Ether CAT、TSN等更高带宽,更好的抗干扰能力的功能模块。

4. 出色多媒体能力。更友好的人机交互能力、智能和简洁的人机交互方式是未来的发展方向,这也对MCU提出了更强的多媒体处理能力的要求。先楫的HPM6000集成了支持 OPEN-VG 的2.5D GPU,和低功耗的自主研发的图形加速模块,还配有RGB,MIPI,LVDS等显示接口,及双目摄像头、数字麦克风等多媒体输入,多媒体能力完全媲美传统的AP方案。

先楫半导体将在以上领域中持续地迭代、完善和创新,向中国和全球的MCU市场推出有特色的高性能MCU产品。

3.jpg

Danny 认为,“我们正处在产业升级的关键时期,技术和产品的升级对作为核心器件的MCU提出了更为严格的要求,基于这样的背景下,国外各原厂大力投入高性能MCU开发。打造国产自主可控、国际领先的高性能MCU是先楫半导体的使命和价值体现!先楫半导体正是聚焦于填补这一市场空白。”

4.jpg

“先楫半导体致力于高性能嵌入式控制器芯片及解决方案开发,产品覆盖微控制器、微处理器和周边芯片,以及配套的开发工具和生态系统。先楫半导体先后发布高性能MCU产品 HPM67/64/6300 及HPM6200系列并已成功实现量产,今年还将有多款产品推出。产品以质量为本,所有产品均通过严格的可靠性测试,性能达世界领先水平。”

5.jpg

最后,Danny 还分享了两个基于先楫高性能 MCU 产品在行业内的实际应用案例。

一个是在运动控制领域的伺服驱动器,先楫的HPM6400系列产品帮助客户实现了单芯片控制4个伺服电机+LCD显示屏驱动,伺服控制上实现电流、速度、位置三环控制。片上集成的16Bit ADC取代传统的12bit ADC,可以进一步提高电流、电压的采集精度,提高伺服的定位精度。同时,片上也有丰富的外设,帮助客户提高连通性、可靠性等。

另一个是在新能源领域的光伏逆变器,得益于HPM6200的双核600MHz、支持DSP运算的高算力,100皮秒的高精度PWM,HPM6200非常适合应用在光伏逆变器上,能完成DSP的国产创新型替代。HPM6200在PWM资源上非常丰富,有32路PWM输出,能满足单片芯片控制前级DCDC和后级DCAC的挑战,给客户带来更高性价比的解决方案。

远大创新作为先楫半导体的合作伙伴,也在展馆现场同步展示出先楫半导体的产品及演示方案。

6.jpg( 展位号:9B116 – 9号馆 )

高性能MCU产品,国产创新型替代势不可挡。先楫半导体紧随这一大势所趋,立足创新、自主可控,推出HPM6000高性能RISC-V MCU产品系列,助力推动国产创新型替代进程。

国潮崛起,先楫半导体邀您一起共同迈向高性能 “芯” 时代。

7.jpg

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 21


1679535093704746.jpg

概 述

作为高性能、低功耗的嵌入式MCU产品,先楫半导体的HPM6000 系列产品广泛应用于多个领域。在嵌入式系统的开发中,Bootloader 常常是开发者可能会遇到的第一个技术难点。应用程序运行环境能否正确构建,内核能否启动成功,都取决于Bootloader 能否正确工作。一个功能完善的嵌入式系统,还需要Bootloader 能够实现系统OTA更新升级的能力,即除了usb烧录、串口烧录等方式外,还预留给客户通过以太网等方式实现快捷固件升级的窗口。

本文以HPM6450为例,基于HPM6000 系列产品嵌入式系统的硬件平台和RT—thread 软件平台,描述系统引导程序Bootloader 的设计思路,阐述了设计时需要考量的因素和遇到的技术难点及操作,希望能给大家一些启发。

二级boot方案思路分析

2.png

(图1:整体思路分析)

如上图所示,整个方案涉及3个部分:

  1. FLASH空间的分区

  2. 二级boot

  3. APP固件

因本次我们讨论的重点是“二级boot”,所以下文内容仅涉及前两部分。

1、FLASH空间的分区

HPM6700/6400系列的单片机和我们常用的stm32、at32这类的单片机最大的不同是该系列MCU 是通过 xpi 总线外挂外部FLASH,即代码存储在外部FLASH。

查阅芯片用户手册可知,该系列MCU支持通过 XPI0 或XPI1外挂FLASH(FLASH外挂方式,如图2所示)。

其中xpi0映射的地址空间是0x80000000,xpi1映射的地址空间是 0x90000000, CPU可对这两块地址空间直接寻址并运行代码(如图3所示)。

3.png

(图2:外部FLASH挂载于xpi0原理图)

4.png

(图3:地址空间映射关系)

为实现固件升级,FLASH空间需要进行合理的划分,如Bootloader分区、用户程序分区、OTA升级分区、用户数据分区等。在RT-Thread上,FAL组件提供了方便的分区划分机制。 

本文分享的两种方案均以W25Q256为例,该FLASH大小为32MB,挂载于XPI0外设上,首地址为0x80000000,通过FAL组件对FLASH的分区详情如下图所示:

5.png

(图4:Flash 分区表)

注意,其中:

  • boot分区表示二级boot,该分区预留了1MB的存储空间,为未来的功能升级留足了空间。

  • app 分区可根据实际需要来分配大小,本方案中预留了1MB的空间。

  • download分区用于下载固件,在APP执行过程中,新固件通过OTA下载于该分区,并在重启后由boot分区的bootloader完成合法性检验和新固件升级操作。

  • Filesystem 分区用于实现文件系统,在此分区上面可以挂载littelfs格式文件系统,可以避免因频繁掉电导致数据丢失的问题。

  • Easyflash 分区可用于存储一些简单的参数等。

2、二级boot

二级boot由芯片BootROM引导,从芯片的用户手册可知:HPM6700系列支持多种启动方式,可到先楫半导体官网上查看“HPM6700/6400用户手册”的19.1内容部分,如下:

6.jpg

(图5:官方代码启动描述)

由上可知当从串行nor flash启动的时候,可支持“原地代码执行”和“拷贝到内部RAM”执行。“启动方式一” 表示代码存储在外部flash,并由CPU直接在flash上执行代码;“启动方式二” 表示代码存在flash里面,然后通过BootROM复制代码到内存后再执行。

受BootROM支持的两类启动方式的启发,笔者经过分析以及与官方的技术支持讨论得出如下结论:

  • 采用FLASH原地执行的方式,系统可支持更大尺寸的应用程序,如支持GUI的应用。在cache的加持下,该方式可实现成本和执行速度的平衡。(需要注意的是:由于FLASH固有属性的限制(多数FLASH不支持RWW),在需要支持FLASH擦写的应用中,用户代码需要做一些防止产生RWW场景的保护。)

  • 采用拷贝到RAM中执行的方式,可实现如下优势:

✔ 用户代码以更高的性能执行(RAM的随机访问性能优于FLASH)

✔ 规避了FLASH不支持RWW的限制,由于代码执行于RAM,在需要FLASH擦写的应用中逻辑会更简单。

考虑到HPM6700/HPM6400系列有高达2MB连续空间的RAM,若用户代码及代码所需要的RAM所占用的空间总和小于或等于2MB,“启动方式二” 是一种值得考虑的选择。

由于二级boot 同时支持以上两种启动方案,接下来,我们将针对每种方案分别进行讨论。

方案一:FLASH原地执行

在该方案下,app 在FLASH里执行。如上所述,app 存储于FLASH 1MB偏移处,需要将链接脚本中的FLASH首地址改为0x80100000。

需要注意的是,由于app是被二级 Bootloader 引导,因此应用程序中不应再携带用于 BootROM 引导识别的启动头(boot header)。

Boot 的 FLASH 脚本不改,最终跳转逻辑为:

Boot启动

  • 检查download分区是否有新固件,如果有则拷贝到APP

  • 关闭中断

  • 跳转到0x80100000地址,就启动了APP。

这样就完成了二级boot的设计。

这里最关键的就是如何修改连接脚本。

7.png

(图6:启动地址修改)

修改好app的链接脚本后,需要在boot里面进行跳转,跳转代码参考如下:

8.png

(图7:Boot 里跳转)

其中app_addr 为跳转偏移地址,如下:

9.png

(图8:偏移地址计算)

二级boot完成App跳转后,App在FLASH中原地执行。该方案的优势是与复制到RAM相比,应用的尺寸可以大至数十MB。考虑到FLASH的固有限制(随机访问性能稍弱,不支持RWW等),当应用程序执行于FLASH上, 开发者需要注意以下几点: 

对于需要高频执行的、对性能有要求的代码,用户程序需要将其复制到RAM中执行,否则会影响程序的效率(若cache未命中)。

若需要执行FLASH擦写操作,需要保证在FLASH擦写期间,没有程序或者其他外设访问FLASH(具体的实现方式有:关全局中断、关调度器等)。

完成FLASH擦写操作后,用户代码需要保证cache 一致性,否则可能会导致未预期的后果(如读到错误代码/数据)。

方案二:内存执行

若用户代码加代码所需的RAM总和小于2M,基于HPM6700/HPM6400有高达2MB的连续RAM,为规避FLASH固有限制带来的不便,产品可采用方案二,即:App本身在RAM中执行。启动过程中,二级boot将App复制到RAM中并中转到APP的目标地址执行。

10.png

(图9:内存系统描述)

采用该方案时,需要注意以下三点:

  1. 二级boot所使用的RAM不应和用户App所在RAM区域重叠,否则在拷贝中会产生错误。

  2. 二级boot在跳转到用户App前需要恢复中断到默认状态(关闭中断)。

  3. boot采用flash link的编译方式,APP要采用ram link的编译方式,即APP是通过内存方式的链接脚本,因此APP编译后无法通过下载到flash的方式调试,必须使用USB或者其他的方式下载固件到0x80100000处。

11.png

(图10:工作示意图)

以下为boot里面的链接修改,供大家参考:

12.png

13.png

(图11:Boot链接脚本参考)

14.png


(图12:App ram link方式链接文件参考)

在方案二中,二级boot需要做的操作比flash boot的方式多了一个步骤,需要先将APP分区的代码拷贝至内存,然后再跳转至内存执行。

15.png

(图13:代码拷贝至内存)

16.png

(图14:代码跳转至内存执行)

注意跳转前,需要关闭各种中断。

17.png

(图15:运行效果示意图)

3、注意事项

选择链接脚本时,要注意看左侧的链接脚本是否正确,如下图所示:

18.png

(图16:链接脚本示意图)

如果链接脚本不能执行,请检查下图的设置。

19.png

(图17:勾选newlib-nano)

编译的时候,需要把nerlib-nano勾选上,否则当使用memcpy的时候,有可能会出现 “非法指令” 的错误。

4、资料分享

先楫半导体HPM6750系列技术资料分享

百度云网盘链接:

https://pan.baidu.com/s/1QSr7nkGgKCKeeTpED7I_RQ 

提取码:13kr

阿里云网盘链接:

https://www.aliyundrive.com/s/aXgJujYknB5

提取码:90ok

20.png

5、文章参考

21.png

(源文链接——https://gitee.com/spunky_973/rt-fota

大家注意上文提到的这几点操作,相信会减少在添加Bootloader过程当中遇到的不少问题。

如果大家在开发过程中还有其他的思路或建议,欢迎到官方网站的 “先楫社区”

http://www.hpmicro.com/support/forumpark.html)发贴讨论,MCU生态建设需要各位的积极参与,感谢您的信任与支持!

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 157

本期开发笔记详细为大家介绍基于HPM6750微控制器的硬件电路设计,可以有效提高硬件设计成功率和成熟度,想了解的 “攻城狮“们赶紧上车~

01、简介

本文档的目的是帮助硬件工程师设计和测试基于HPM6750微控制器的硬件电路设计。它提供了关于电路板布局建议和设计清单。

本硬件指南适用于HPM6700/6400系列芯片。同时,可参考对应芯片的数据表、参考手册、以及应用手册。

02、电源配置

2.1电源系统

该系列芯片供电是通过对DCDC_IN 和VPMC 脚输入3.0-3.6V单一电源, 并通过内置的电压调节器提供系统所需的VDD_SOC, VDD_PMCCAP, VDD_OTPCAP, V_BATCAP 电源。

当电源DCDC_IN 和VPMC 掉电后,通过VBAT 脚为实时时钟(RTC) 和备份寄存器提供电源。每个I/O 电源VIO_Bxx 根据相应负载接3.3V 或1.8V电源。电源控制图如图1,适用于HPM6700/6400芯片。若无另行说明,所有电压都以VSS 为基准,VSS接地。

1.png

图1电源控制图

电源域信号电平和去耦电容的建议,请分别参见表 1和表 2 。

2.png

表1  电源域

3.png

表2 去耦电容推荐值

2.2 提升A/D 转换器性能以及参考电压的特别要求

为了提高转换精度, ADC 电路配有独立电源入口,可以由外围电路做电源滤波以减小 PCB 上的噪声,对于需要高精度采样的场合,可以配合高精度的参考电压源实现高精度的AD采样。

•一个独立的 VANA 引脚给 ADC 供电。建议使用低噪音LDO供电。

•VSS引脚提供了独立的电源接地连接。

•VREFH/VREFL为芯片提供高精度低温飘的外部参考电压,例如REF431, 可以提升ADC的采样精度。VREFH上的电压范围为2.4 V 到 3.6V。VREFH/VREFL需要在Pin 附近增加去耦电容,通常采用10nF。

2.3上电时序

上电时序要求:要求VBAT 不晚于其他电源上电。如果VBAT 和其他3.3V 电源引脚使用相同的供电,则系统对上电时序没有要求。掉电时序要求:VBAT 电源不能早于其他电源掉电。

4.png

图2电源时序

03、时钟

3.1晶振/陶振

谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振时间。

负载电容值必须根据所选振荡器的不同做适当调整。对于 C1 和 C2,建议使用专为高频应用设计、可满足晶振或谐振器的要求且大小介于5pF 到 25 pF(典型值)之间的高质量陶瓷电容。

5.png

图3外部晶振/陶瓷谐振

C1和C2 的大小通常相同。晶振制造商指定的负载电容通常是 C1 和 C2 的串联组合。确定 CL1 和 CL2 的规格时,必须将 PCB和 MCU 引脚的电容考虑在内 (引脚与电路板的电容可粗略地估算为 10 pF)。

04、调试

HPM6700/6400系列产品的调试系统符合The RISC-V Debug Specification, Version 0.13 规范。 调试系统包括JTAG 接口转换模块(DTM)和调试模块(DM)2 部分。DTM 通过标准JTAG 接口对接外部调试器,可以把JTAG 上收到的调试指令转换成对DM 模块的读写访问。调试模块DM 集成了调试功能,可以暂停或者恢复CPU 的运行,产生复位,以及访问片上资源。

6.png

表3 JTAG接口

以上为本期分享内容,请继续关注,下期会推出下一篇续集,敬请留意!

来源:先楫芯上人

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 121

页面

订阅 RSS - 先楫半导体