Renesas嵌入式开发:MATLAB/Simulink模型到芯片的PIL仿真实战指南

AI助手已提取文章相关产品:

1. 项目概述:从模型到芯片的桥梁

如果你正在用Renesas的RA、RX或者RL78系列芯片做嵌入式开发,同时又习惯了在MATLAB/Simulink里用框图搭算法、做仿真,那你肯定遇到过那个经典难题:怎么才能又快又准地知道,你精心设计的算法,在真实的单片机里跑起来到底行不行?是资源不够用,还是执行时间太长?以前的老办法,要么是手动把模型翻译成C代码——费时费力还容易出错;要么是等到硬件板子做出来再联调——发现问题时黄花菜都凉了,改起来成本巨大。

这就是模型在环(MIL)和处理器在环(PIL)仿真要解决的核心痛点。简单来说,MIL就是在你的电脑上,用Simulink模拟整个系统,验证算法逻辑对不对。而PIL就更进一步了:Simulink会把你的算法模型自动生成C代码,编译后下载到真实的单片机里运行,Simulink则作为上位机,给单片机发送测试数据,并接收单片机的运算结果。这样一来,你就能在电脑前,实时地验证算法在 真实硬件 上的功能、精度和时序性能。这相当于把硬件调试的环节,大幅提前到了软件开发阶段。

Renesas的Embedded Target工具,就是搭建这座“从模型到芯片”桥梁的关键。它本质上是一个连接器,一头连着MATLAB/Simulink的算法世界,另一头连着Renesas自家的CS+或e2 studio开发环境。你只需要在Simulink里点点鼠标,配置好目标芯片型号,它就能帮你完成从代码生成、工程创建、编译、下载到启动PIL仿真的全套流程。最近发布的V6.10.00版本,带来了几个对开发者非常实在的更新:首先是 完全免费 了,这对个人开发者和小团队是个大利好;其次,它开始支持最新的MATLAB R2025b和e2 studio 2025-12,工具链跟上了时代;特别针对RA系列的多核芯片,新增了基于软件追踪的时间测量方法,让性能分析更灵活;对于RX系列,现在用e2 studio创建项目时,还能直接调用Smart Configurator来生成底层配置,省了不少事。

接下来,我就结合官方Release Note和实际使用经验,为你拆解这个工具的核心玩法、升级要点以及那些手册里不一定会写,但能让你少踩坑的实操细节。

2. 环境搭建与核心配置解析

工欲善其事,必先利其器。Embedded Target V6.10.00虽然免费了,但环境配置上的一些“老规矩”和新要求,还是需要特别注意,否则第一步就可能卡住。

2.1 系统与软件版本匹配

首先看基础环境。官方明确支持Windows 10和Windows 11的64位系统,并且推荐使用Win11。这里有个 极易踩坑 的地方:安装路径。官方警告, 绝对不要 把MATLAB或Embedded Target安装在 C:\Program Files C:\Program Files (x86) 这类受Windows用户账户控制(UAC)保护的目录下。因为UAC会限制这些目录的写入权限,导致后续MEX文件编译失败,或者MATLAB路径设置无法保存。我的建议是,专门在非系统盘(比如D盘)创建一个独立的开发文件夹,例如 D:\Renesas_Embedded_Target ,把MATLAB和Embedded Target都装在这里,一劳永逸地避开权限问题。

其次是版本兼容性,这是生态工具链协作的基石。V6.10.00支持的MATLAB版本跨度很大,从经典的R2018b,到较新的R2022b,再到最新的R2025b都支持。但注意, R2022a及更早的版本(R2018b除外)以及R2025b之后的版本,官方不保证支持 。如果你用的是这些“边缘”版本,最好先联系确认。我个人的经验是,对于这种深度集成的工具,尽量使用官方明确列出的版本,尤其是R2022b到R2025a这个区间,稳定性最有保障。

开发环境方面,它支持CS+ V8.15.00,以及e2 studio的2025-10和2025-12版本。同时,它也明确不再支持CS+ V8.14.00和e2 studio 2025-04.1/2025-07。这意味着如果你还在用旧版IDE,升级到V6.10.00前,必须先把IDE更新到指定版本。工具链的搭配也有讲究:对于RL78和RX家族,它使用Renesas自家的编译器(CC-RL, CC-RX);而对于基于ARM Cortex-M内核的RA家族,则切换为GNU Arm Embedded Toolchain。这个分工很清晰,RA用开源GCC,RX/RL78用瑞萨优化过的编译器,各取所长。

2.2 关键配置参数详解

环境装好后,在Simulink里配置模型时,有几个参数设置至关重要,直接关系到后续代码生成和PIL仿真能否成功。

第一个是 数据类型的匹配 ,尤其是 double 类型。在Simulink里, double 默认是8字节(64位)浮点数。好消息是,在RX和RA芯片上,CS+/e2 studio同样能处理8字节的 double 。但这里有个 必须同步的开关 :在Simulink的“Configuration Parameters” -> “Hardware Implementation”里,如果你为RX芯片选择了 double 类型,那么必须在CS+/e2 studio的工程属性中,找到对应编译选项,手动指定 -dbl_size=8 (表示按8字节处理双精度)。这两个地方的设置必须一致,否则编译可能通过,但运行时数据会错乱。 而对于RL78系列,要格外小心 :RL78硬件本身不支持8字节数据。因此,在针对RL78的Simulink模型中,要确保没有使用 double 类型,全部改用 single (单精度,4字节)或定点数。如果模型里不小心用了 double ,PIL仿真很可能会因数据大小不匹配而失败。

第二个是 字节序(Endian)设置 。RX芯片支持小端(Little Endian)和大端(Big Endian)模式,默认都是小端。如果你的应用场景需要大端模式(比如与某些特定网络协议或旧系统交互),那么同样需要在两个地方同步设置:在Simulink的“Hardware Implementation” -> “Byte ordering”里选“Big Endian”;在CS+/e2 studio的工程属性里,找到对应编译选项,设置为 -endian=big 。这个不匹配不会导致编译错误,但会导致数据解读完全错误,属于非常隐蔽的bug。

第三个是 设备选择 。在Simulink配置对话框中点击“Select Device Name”或“Device List Update”按钮时,如果弹出一个错误对话框,十有八九是IDE安装路径没指对。因为Embedded Target需要读取CS+或e2 studio安装目录下的设备信息文件来生成可选的芯片列表。你需要确保在“IDE install directory”里填写的路径绝对正确,并且指向了IDE的根目录(例如 C:\Renesas\e2_studio_2025-12 )。

2.3 模型与文件命名规范

这是一个看似简单却极易引发诡异问题的环节。官方明确要求: 不要在Simulink模型文件的存储路径、模型名以及需要生成代码的子系统(Subsystem)块名中,使用双字节字符(如中文)、空格、正斜杠(/)、换行符或连字符(-)

为什么?因为自动代码生成过程会把这些名字转换成C语言中的文件名、函数名和宏定义。C语言标识符有严格的命名规则。如果块名里用了连字符或空格,生成代码时这些字符之后的部分可能会被直接截断。如果用了中文等双字节字符,MATLAB可能会用某种编码转换规则将其替换成其他字符,导致生成的代码文件找不到对应的头文件或函数定义。我遇到过最头疼的情况是,一个模型在仿真时一切正常,一到生成代码就报“找不到函数定义”的错误,排查半天才发现是因为子系统块名里用了一个中文括号。所以,养成好习惯:模型名、文件夹名、块名,全部使用英文字母、数字和下划线的组合,并且尽量简短清晰。

3. PIL仿真全流程实操与核心环节

环境配置妥当,模型也建好了,接下来就是最核心的PIL仿真环节。这个过程可以概括为“一键生成,自动联调”,但背后有几个关键环节需要你心里有数。

3.1 仿真流程与通信缓冲区

当你启动PIL仿真时,Embedded Target在后台执行了一系列操作:

  1. 代码生成 :将你的Simulink算法模型(通常是封装好的Subsystem)转换为C代码。
  2. 工程创建 :在指定的输出目录,为你的目标芯片(如RA6M5)创建一个完整的e2 studio或CS+工程,并将生成的C代码集成进去。
  3. 编译与下载 :调用IDE的编译链,将工程编译成可执行文件(Load Module),并通过调试器(如J-Link, E2/EZ Lite)下载到目标板。
  4. 建立通信 :在MATLAB/Simulink与运行在单片机上的程序之间,建立一条数据通信链路。
  5. 执行与验证 :Simulink作为测试激励源,通过这条链路向单片机发送输入数据,单片机执行算法后将结果传回,Simulink再与原始模型仿真结果进行对比,验证功能与精度。

在这个过程中, 通信缓冲区(Buffer Size) 是一个关键参数,默认是3000字节。这个缓冲区用于在PIL仿真时,在目标单片机内存中划出一块区域,临时存放Simulink发送过来的输入数据和需要传回的结果数据。如果你的模型很复杂,输入输出数据量很大,超过了3000字节,就会导致通信失败,Simulink会报错。反之,如果你的模型非常简单,预留3000字节又显得浪费,对于RAM紧张的RL78系列芯片尤其如此。

如何调整? 你可以在Simulink的“Embedded Target Options”配置页面里,找到“Buffer Size”选项,手动修改这个值。官方给出了一个参考公式:RL78系列所需的最小RAM约为 768字节 + 用户模型块实际使用的内存大小 。你可以先尝试PIL仿真,如果出现通信错误,就逐步调大这个值;如果是为了给其他功能节省内存,可以在确保仿真稳定的前提下,适当调小。

3.2 时间测量功能的实现与选择

PIL仿真的一个重要价值是测量算法在真实硬件上的执行时间。V6.10.00版本为RA多核设备新增了 软件追踪(Software Trace) 的测量方法。这给了我们两种选择:

  1. 硬件断点法(传统方法) :利用调试器的硬件断点功能,在函数入口和出口自动设置断点,通过计算断点之间的时间差来测量。这种方法精度高,但需要调试器支持,并且会占用有限的硬件断点资源。
  2. 软件追踪法(新方法) :通过在代码中插入特定的软件指令来打时间戳。这种方法不依赖硬件断点,更适合多核场景下的并行性能分析,但可能会引入轻微的软件开销。

需要注意的是, 时间测量功能并非在所有配置下都可用 。根据发布说明,在以下三种情况下,该功能会被禁用:

  • IDE是CS+,且调试工具是“EZ Emulator”。
  • IDE是CS+或e2 studio,但调试工具是“COM Port”(即串口调试)。
  • IDE是e2 studio,且调试工具是“Simulator”(软件模拟器)。

如果你的调试配置恰好是以上情况,那么“Measure execution time”的选项可能会灰掉。这时,要么更换调试工具(比如改用J-Link),要么就需要通过其他方式(如GPIO翻转+示波器)来测量时间。

另外,测量结果也有下限。如果算法本身的执行时间短于调试工具所能测量的最小时间单位,那么显示的结果可能是0 ns。这不是错误,只是说明你的算法太快了,超出了当前调试工具的测量分辨率。

3.3 多核与高级功能配置要点

对于使用RA8等多核设备的开发者,V6.10.00提供了专门的支持,但也有一些限制和特殊配置。

首先, RA8多核芯片目前不支持在PIL仿真时创建TrustZone®项目 。如果你的安全方案依赖于TrustZone,那么PIL仿真阶段可能需要先在非安全环境下验证算法功能,之后再手动集成到TrustZone工程中。

其次,当使用e2 studio 2025-01及以上版本对RA8多核设备进行PIL仿真时,需要手动配置一个编译选项。在项目创建成功后,你需要聚焦到 cpu1 的工程上,打开“C/C++ Project Settings”,按照发布说明中的图示,添加一个特定的宏定义或编译选项。这个步骤是为了确保多核间的通信和同步在PIL仿真环境下能正确初始化。如果跳过这一步,可能会导致仿真无法启动或运行异常。

还有一个针对RX用户的便利更新:当选择e2 studio作为目标IDE时,现在可以在创建RX项目时 自动启用Smart Configurator 。Smart Configurator是瑞萨的一个图形化引脚、时钟、外设配置工具。这意味着,Embedded Target生成的工程,会直接包含一个初步的Smart Configurator配置,帮你生成了基本的时钟树、引脚分配等底层代码,你可以在其基础上进行微调,大大节省了从零配置底层驱动的时间。

4. 常见问题排查与避坑指南

即便按照手册操作,在实际开发中还是会遇到各种问题。下面我整理了一些典型故障和排查思路,很多都是“血泪教训”换来的经验。

4.1 编译与链接错误

问题现象 :在代码生成或IDE编译阶段报错,提示找不到文件、链接失败或语法错误。

  • 路径过长导致编译失败 :这是Windows平台的老大难问题。如果你的项目保存路径嵌套太深(例如 D:\MyProjects\Renesas\2025\MotorControl\PIL_Test\model_v1\... ),可能会超过Windows的路径长度限制,导致CS+/e2 studio无法正常编译。 解决方案 有两个:一是将整个项目移到更浅的目录,比如直接放在 D:\PIL_Test 下;二是在e2 studio中,右键点击生成的源文件,打开“Properties” -> “File Information”,将“Save with absolute path”设置为“Yes”,这样工程文件会使用绝对路径引用,避免因相对路径嵌套过深而出问题。
  • 库文件不匹配 :有时在PIL仿真代码生成阶段,MEX编译器会报错,提示找不到 rtIOStream 等内置库。这通常是因为MATLAB版本间的内部库有差异。 解决方法 是:清理并重新生成测试环境。可以尝试在MATLAB命令窗口依次执行 clear all , bdclose all ,然后删除项目文件夹下的 slprj (Simulink代码生成临时文件夹)和 work 文件夹,最后重新启动PIL仿真流程,让Embedded Target重新生成一遍所有文件。
  • 模型或块名过长 :如前所述,过长的模型名或子系统块名,在转换为C函数名时可能会被截断,导致函数名与调用它的宏名称不匹配,引发链接错误。 解决方法 :在MATLAB命令窗口中,使用 set_param(gcs, 'MaxIdLength', 63) 命令,将模型的最大标识符长度从默认的31增加到一个更大的值(如63)。但更根本的办法是,给模型和关键子系统起一个简短明了的英文名字。

4.2 PIL仿真运行时错误

问题现象 :代码成功下载到板子,但PIL仿真一开始就失败,Simulink报通信错误或目标板无响应。

  • 通信缓冲区溢出 :这是最常见的原因之一。Simulink报错提示数据大小超过通信缓冲区。请立即检查并增大“Embedded Target Options”中的“Buffer Size”值,可以尝试先翻倍设置为6000。
  • 看门狗或复位信号干扰 :在PIL仿真过程中,单片机的看门狗定时器(WDT)可能到期,或者某些未屏蔽的复位信号被触发,导致芯片复位,通信中断。 解决方法 :在e2 studio/CS+的调试工具设置中,找到“Debug Tool Settings” -> “Mask for Input Signal”,将看门狗复位或其他可能误触发的复位信号屏蔽掉。
  • 目标板内存不足 :尤其是在使用RL78这类RAM资源较小的芯片时,如果模型较复杂,生成的代码和数据可能超出了芯片的RAM容量。编译时可能通过(因为链接器可能无法精确估算运行时栈的使用),但一下载运行就死机。 解决方法 :在Simulink的“Hardware Implementation”中,换一个同系列但RAM更大的芯片型号;或者返回模型,优化算法,减少全局变量和大型数组的使用,尝试使用 single 类型代替 double
  • e2 studio项目配置问题(针对RX) :如果你使用e2 studio的模拟器(Simulator)进行RX芯片的PIL仿真,为了让仿真正常工作,需要手动注释掉一个函数。打开e2 studio工程中 Project/src/r_bsp/mcu/<你的RX系列>/mcu_clocks.c 这个文件,找到 clock_source_select() 函数并将其注释掉。因为这个函数通常会尝试配置硬件时钟源,而在纯软件模拟环境下这是不必要的,反而可能导致初始化卡住。

4.3 操作流程与版本兼容性

  • 不要覆盖原始模型文件 :当你的PIL仿真对象是一个子系统(Subsystem)时,Embedded Target在生成测试环境时, 会覆盖当前的模型文件 。这是一个高危操作。 务必 在生成测试环境前,先将你的主模型“另存为”一个新文件再操作。或者,更安全的方法是,在MATLAB命令窗口使用 ecpils_build 命令来生成测试环境,这个命令会先复制模型再操作,不会改动原文件。
  • 及时清理旧文件 :如果你在同一个文件夹内,对同一个模型进行了多次PIL测试环境生成,或者混合了其他操作,可能会导致一些残留文件干扰新一次的仿真。最稳妥的做法是,在开始一次新的PIL仿真流程前,删除项目文件夹下的 slprj work 目录,以及之前生成的e2 studio/CS+工程文件夹,确保从一个干净的状态开始。
  • 切勿复用旧工程 :绝对不要将之前为某个模型生成的e2 studio工程,直接拿来给另一个不同配置的模型使用。每个模型的代码生成配置、数据接口都可能不同,复用旧工程几乎必然导致编译或运行错误。每次都应该重新生成全新的项目。
  • 注意FSP和GCC版本 :对于RA项目,e2 studio会捆绑特定版本的FSP(Flexible Software Package)和GCC编译器。如果你系统里安装了多个版本,Embedded Target可能选错。如果项目创建失败,可以到“Embedded Target Options”中,手动指定正确的“FSP Version”和“GCC ARM Embedded Version”。
  • 旧版本模型升级警告 :如果你打开一个用旧版Embedded Target创建的模型,MATLAB命令窗口可能会弹出一些关于参数冲突的警告。这通常是新旧版本工具在配置参数定义上有了细微调整。通常的做法是,直接保存(覆盖)当前模型,警告就会消失。但为了安全起见,建议先另存一份,再覆盖原文件。

5. 从模型到产品的思维转变

最后,我想分享几点超越工具操作本身的体会。Embedded Target这类MBD(基于模型的设计)工具,绝不仅仅是一个“自动写代码”的机器。它带来的是一种开发流程的变革。

首先,它迫使你 前期设计更规范 。为了让模型能顺利通过PIL验证,你必须在建模阶段就考虑硬件约束:数据类型用 single 还是定点?全局变量会不会太多?循环会不会太深?这种“硬件意识”的前置,能提前发现很多架构上的问题。

其次,它建立了 可追溯的验证闭环 。仿真的结果、PIL测试的数据,都可以作为验证证据留存下来。这对于需要符合功能安全标准(如ISO 26262)的项目来说,价值巨大。你的算法不仅仅是在Simulink里跑通了,而是在目标芯片上,在真实的时钟和内存约束下被验证过了。

然而,工具也不是万能的。PIL仿真验证的是算法内核在芯片上的运行情况,它不包含板级的外设驱动、中断响应、多任务调度等系统级行为。因此,一个成功的PIL仿真,是产品化道路上非常坚实的一步,但绝不是最后一步。之后,你还需要将生成的算法代码,与手写的或配置生成的底层驱动、RTOS等进行集成,进行系统级的测试。

我的建议是,将Embedded Target集成到你的持续集成(CI)流程中。可以编写脚本,自动执行从模型检查、代码生成、PIL仿真到结果比对的全过程。这样,每次算法迭代,都能快速得到在硬件上的性能反馈,真正实现敏捷的嵌入式软件开发。V6.10.00的免费化,无疑降低了团队尝试和普及这一工作流的门槛,对于提升嵌入式项目的开发质量和效率,是一个实实在在的利器。

您可能感兴趣的与本文相关内容

内容概要:本文是一份锂电池基础知识的学习课件,系统介绍了锂电池的种类、方形电池的结构与制造工艺流程,以及出货不良的常见类型与分析。文章首先按形状和材料体系对方形、圆柱、软包等锂电池进行分类,并重点对比了钴酸锂、锰酸锂、三元材料和磷酸铁锂在电压、能量密度、循环寿命、成本和安全性等方面的差异。随后详细阐述了方形电池的内部结构,包括正负极柱、盖板组件、防爆阀、极组和隔膜等关键部件的功能与设计原理。在工艺部分,全面讲解了从匀浆、涂布、辊压、模切到装配、焊接、注液、化成等全流程的关键步骤、技术参数与质量控制要点,尤其对叠片与卷绕工艺进行了深入对比。最后,针对生产中常见的出货不良问题,如厚度、电压、容量、外观等方面异常,进行了归因分析与改进方向说明。; 适合人群:从事锂电池研发、生产、品质管理等相关工作的技术人员,以及对电池制造工艺感兴趣的工程类学生或初学者。; 使用场景及目标:①用于锂电池生产工艺培训与知识普及;②作为现场工艺优化与不良问题分析的参考依据;③帮助理解电池结构设计与性能之间的关系,提升工艺控制能力。; 阅读建议:建议结合实际生产流程图与设备操作规范对照学习,重点关注各工艺环节的技术参数设定与失效模式,便于在实际工作中快速定位和解决质量问题。
下载代码方式:https://pan.quark.cn/s/5bafd19a7805 创维E900 4K智能机顶盒是一款专门为高清电视节目设计的设备,其特点是配置过程迅速便捷,非常适合那些喜欢自行安装软件以及具备较强实践操作能力的用户群体。在开始配置之前,用户必须确认所有硬件设备均已正确连接,这包括使用HDMI或MiniCVBS线缆将机顶盒与电视机相连接,同时核实电视信号源已设定无误,此外还需连接电源适配器,并确保网线已正确接入机顶盒与光猫或家庭网络设备,且网络状态良好。尤其需要注意,采用有线网络连接通常比无线连接方式更为稳定,能够有效避免因网络波动或卡顿所引发的异常情况,进而保障机顶盒的正常运行。配置向导包含若干步骤,首要环节是平台的选择。在机顶盒启动后,于视频播放结束界面进入“平台选择”功能,用户需依据自身所在地域挑选适当的平台,例如华为平台或中兴平台等。完成平台选定后,接下来的步骤是设定IPTV业务的用户名和密码,这是接入IPTV服务的必要前提。随后是接入方式的选择环节,用户应依据实际的网络环境决定采用有线还是无线接入。鉴于有线网络通常更为可靠,因此推荐采用有线接入方式。在网络配置环节,智能机顶盒通过DHCP协议与家庭网关建立连接。配置流程结束后,用户将进入launcher桌面,该界面是机顶盒的主要用户交互界面,负责展示各类应用及服务。若在初次配置完成后进入launcher桌面时遭遇加载时间过长或因网络连接问题无法显示桌面的情况,用户应当检查网络配置是否准确,并核实机顶盒已成功接入互联网。在整个配置过程中,用户或许会碰到各类错误提示信息,如IPTV业务账号或密码设置错误、网络未成功连接、接入平台未能实现以及特定的错误编号等。这些错误提示通常意味着需要重新...
代码下载链接: https://pan.quark.cn/s/129d2f33dfde 《小米平板5 Pro 5G版基带QCN文件解析》 小米平板5 Pro 5G版是一款配备了前沿5G通信技术的智能设备,其内部的基带芯片是构建高速无线网络连接的核心构成部分。基带,英文全称为Baseband,是手机或平板电脑中的核心单元,承担着处理无线通信所有基础信号处理任务的责任,包括数据的解码与编码,使其能够顺利在移动网络中传输。在本讨论中,我们将详尽研究“小米平板5 Pro 5G版【代码ENUMA】完整设备备份基带qcn”这一核心知识点。 基带QCN文件是专属于小米平板5 Pro 5G版的一种固件文件,其中存储了设备的无线通信参数及配置详情。QCN全称为Qualcomm Communication Network,是由高通公司(Qualcomm)为其基带芯片定制的一种文件格式,用于储存网络设置和密钥数据。该QCN文件是设备在制造时预置的,一般与设备的IMEI(国际移动设备识别码)相联结,旨在保证设备在网络中的独特性和安全性。 在所述内容中提及的“完整设备备份的基带qcn”,指的是从状态良好的小米平板5 Pro 5G版设备上提取并保存下来的基带文件。备份基带QCN文件的主要意图是为了在设备遭遇故障,例如系统崩溃、升级失误或基带损坏等情况时,能够迅速恢复至正常运作的状态。此外,备份的基带QCN文件同样适用于固件刷新爱好者,使其在安装新的固件或定制ROM时维持网络功能的完整性。 然而,需要留意的是,“推荐修改原始串码在使用”的提示显示,如果打算使用这个备份的基带QCN文件,可能需要将文件内的IMEI信息调整为与目标设备相吻合的IMEI。这是由于IMEI作为设备的身份象征,每个设备...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值