嵌入式开发

嵌入式开发概述 嵌入式开发概述 目录嵌入式开发概述一、什么是嵌入式开发二、嵌入式开发的优缺点三、嵌入式操作系统的组成和分类四、嵌入式开发的学习路线 一、什么是嵌入式开发 传统的开发模式(单片机开发):软件——>硬件,软硬件耦合度高; 嵌入式开发:软件 <——>操作系统<——>硬件。 操作系统是嵌入式开发的核心,也是它与传统开发的主要区别。 在嵌入式开发中,前者的软件是应用软件;操作系统本质上也是一个软件,为系统软件。 应用软件只需调用操作系统提供的函数即可,而在系统软件中,是需要去 阅读详情

总体来说,还是可以把嵌入式学习分为三个大的阶段:

首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。

其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+Linux平台为例,需要掌握从内存管理到多任务编程、文件I/O、网络编程,甚至图形化界面编程等几个大的方面。

最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节,这是成神之路。

入门知识点:

C语言、linux基础、linux系统编程、linux网络编程、数据结构与算法、C++、QT、linux平台开发、驱动开发

Android嵌入式开发 想要做Android嵌入式开发,你可以看看下面的内容 参考文档:http://blog.youkuaiyun.com/zkycdy/article/details/8296384 一:首先你必须了解ARM平台 Android 移植与驱动核心开发,当然也可以是X86和其他的平台,不过其他平台的Android智能终端开发并不是很多。         Android嵌入式智能操作系统是基于Linux内核和驱动 阅读详情

相关推荐

ARM开发之一:嵌入式开发简介

一方面去了解ARM,另一方面为了可以在做项目的时候选择一款合适的ARM版本来支持你的项目注意:选择ARM版本时并不是越高越好,版本越高性能越好,但是价格也会更高所以在做项目的时候一定是选择一款适合的ARM版本。ARM原本的含义是(Acorn RISC Machine),后来Acron公司剥离出了ARM部门,又成立了ARM公司,含义改为(Advanced RISC Machine)。ARM在英国剑桥成立的,ARM ST公司 某工厂 某公司。

anREDME的博客 2871

嵌入式开发(一):嵌入式开发新手入门

本篇文章整理下嵌入式开发中一些入门的基础技能,都是根据以往的工程经验整理,适用于之前没做过嵌入式开发的新手。 嵌入式开发流程一般如下,一般是在PC机的Windows系统下安装Ubuntu虚拟机,搭建嵌入式开发环境及交叉编译环境,开发完成后,编译得到bin文件,然后在Windows下将bin文件通过串口或网络下发到嵌入式板卡,程序在嵌入式板卡上运行。 1. RS232串口接孔图解 串...

夜风里唱的专栏 10万+

嵌入式开发Linux入门

嵌入式开发导语嵌入式基础概念交叉开发和自助开发嵌入式开发相关术语1.开发计算机(又名:主计算机)2.目标计算机(又名:目标板、目标)3.交叉编译器/汇编程序/链接器4.交叉库(又名:目标库)5.交叉调试器嵌入式开发的流程步骤1:开发引导加载程序步骤2:内核实现步骤3:创建模块(设备驱动程序)步骤4:创建应用程序步骤5(最后一步):系统调整结束语 导语 近年来,“嵌入式设备”对Linux的采用越来越多。 Linux标准拥有的许多功能都符合嵌入式产品的目的,这是最大的原因。 安装在嵌入式设备上的Linux通常被

编程老王 1504

嵌入式开发学习路线图

ARM+Linux嵌入式底层内核驱动方向学习总体路线图 基础学习Ⅰ---Linux入门 目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系 统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Lin...

嵌入式之斋 8960

嵌入式开发介绍以及项目示例

总之,嵌入式开发是一项具有挑战性和创新性的技术领域,随着科技的不断发展,嵌入式系统也将越来越智能化、网络化、低功耗化和安全化。开发人员需要不断学习和掌握新的技术和知识,以适应嵌入式开发的未来发展趋势。请注意,以上代码仅为一个示例框架,实际实现中需要根据具体的硬件平台和库函数进行调整和完善。同时,温度传感器的读取逻辑和 OLED 的驱动代码需要根据具体的设备进行实现。嵌入式开发是指在嵌入式系统中进行的软件开发和硬件设计。嵌入式系统通常是指集成在其他设备中的专用计算机系统,具有特定的功能和应用场景。

huanghm88的专栏 2273

【生信】全基因组测序(WGS)

1、全基因组测序(WGS) 的定义 2、GWS流程 2.1准备工作——分析软件 2.2原始数据质控 2.3数据预处理 2.4变异检测

weixin_40695088的博客 4万+

嵌入式开发的学习路径

引言 嵌入式开发有着悠久的历史,随着物联网和端级AI 1的兴起,我们迎来了嵌入式开发新的风潮。相应的岗位空缺不断涌现,技术人才也变得越发珍贵。然而,嵌入式开发对工程师较为全面的要求又让很多同学望而却步。从何学起,以什么样的学习路线稳步推进就成了摆在嵌入式开发学习面前的首要问题。本文以作者的学习经验和体会,为大家阐述一种学习路径,供各位同学参考。 一、嵌入式工程师必备技能总览 在介绍学习路径之前,我们先来了解一下要成为一个优秀的嵌入式开发工程师,需要具备哪些技能。我们从硬件和软件两部分来介绍..

winniwu的博客 5237

我的AI学习 ai维护工具之langfuse

as_type: Optional[Literal[‘generation’]] = None, # 将记录定义为 Observation (LLM 调用)transform_to_string: Optional[Callable[[Iterable], str]] = None # 将输出转为 string。要用LangFuse的云服务,首先要在LangFuse官网上注册,注册完后将页面拉倒最后,点免费的SignUp,API文档:https://api.reference.langfuse.com/

liubaobin的博客 4096

什么是嵌入式开发 嵌入式开发有没有前途

 软件开发挺火的,可是什么是嵌入式开发呢?嵌入式开发 有没有前途?这写疑问都是要学嵌入式开发的同学的疑问。那现在就介绍一下什么是什么是嵌入式开发?<br /><br />什么是嵌入式开发 嵌入式开发有没有前途<br />  嵌入式开发操作系统是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能 、可靠性、成本、积体、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用vcd机或手机,甚至组成普通pc终端设 备的键盘、鼠标、硬盘、modem等均是由嵌入

四月的专栏 2497

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

ArcMap新手必看:Shape属性中的点ZM值到底是什么?如何快速处理

本文深入解析ArcMap中Shape属性中的点ZM值,揭示其在GIS数据中的隐藏维度作用,包括Z值(高程值)和M值(测量值)。针对ZM值可能引发的服务发布问题,提供三种高效处理方案,帮助新手快速掌握数据导入时的ZM值管控策略及精准去除方法。

weixin_42561476的博客 432

Python 在嵌入式开发的失败案例:为什么嵌入式开发仍然依赖 C?

虽然 Python 在某些特定场景下展示了强大的开发能力,但在嵌入式开发领域,它尚未能够撼动 C 的主导地位。通过分析上述失败案例可以看出,Python 的性能瓶颈、资源限制以及不完善的生态系统是阻碍其广泛应用的主要原因。对于嵌入式开发而言,C 语言凭借其高效、稳定和灵活的特点,仍然是最可靠的选择。当然,这并不意味着 Python 完全没有机会在未来嵌入式开发中发挥作用。随着硬件性能的提升和 Python 技术的进步,或许有一天我们可以看到 Python 在更高端的嵌入式平台上大放异彩。

2501_91228683的博客 794

FFDNet-pytorch版本代码训练教程

该文章为FFDNet-pytorch版本代码训练教程,抓紧订阅学习!尽早入门发论文哦!

假技术Po主 1508

嵌入式开发概括

学习笔记一: 嵌入式系统课程学习储备知识:C语言+单片机(硬件的工作原理) 1、嵌入式技术是什么? 嵌入式软件与非嵌入式软件的区别? 嵌入式开发与单片机开发的区别? 嵌入式开发的优缺点? 嵌入式技术是以应用为中心,以计算机技术为基础的系统技术,把软件直接烧录在硬件里,而不是安装在外部储存介质上。即在已有的硬件上移植操作系统,让操作系统去管理软硬件资源,使软硬件耦合度降低,在操作系统之上做上层应用开...

Dfish_的博客 2175

基于MATLAB实现语音信号MFCC特征提取(附完整代码)

你有没有想过你的智能手机是如何理解语音指令的?或者 Alexa 和 Siri 等语音助手如何处理您的命令?这种卓越能力背后的机制在很大程度上归功于一种称为 Mel 频率倒谱系数 (MFCC) 的方法。语音识别技术允许机器解释人类语音,将口语转换为计算机可以操纵的格式。这项技术对于开发交互式和响应式 AI 至关重要,例如声控助手、自动化客户服务系统和实时翻译服务。MFCC 代表 Mel 频率倒谱系数。这是用于自动语音和说话人识别的功能。

baidu_34971492的博客 1314

【AI智能体】Codex 生成高质量电商套图实战操作详解

Codex 生成高质量电商套图实战操作详解

congge 4540

嵌入式开发全解析

嵌入式开发(Embedded Development)是计算机科学中的一个重要领域,它关注的是开发嵌入式系统,也就是将计算能力嵌入到日常设备中。随着技术的飞速发展,嵌入式系统被应用于各行各业,从智能手机到智能家居设备,再到汽车和工业设备,嵌入式开发无处不在。本文将详细解析嵌入式开发的基础知识、关键技术及其在不同领域的应用。??

ljt745417535的博客 986

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5809

【000】欢迎来到嵌入式开发教程

欢迎来到嵌入式学习的世界  欢迎来到嵌入式学习的世界。作为一名七年(在校五年,工作两年)经验的嵌入式开发工程师,一路上走过许多弯路,也曾遇见不少惊喜。嵌入式开发涉及知识跨度范围大,在学习与开发过程中经常让人感觉无从下手,此外嵌入式开发成本与PC开发相比成本较高,不少人因此放弃或进度缓慢。这是笔者一次小的尝试,从零开始一些小的嵌入式工程,以尽可能低的成本,与你一起实现目标。  无论你学习嵌入式开发是...

二哈的博客 3158

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

嵌入式开发学习路线规划

嵌入式硬件基本知识:了解常见的嵌入式硬件平台(如Arduino、树莓派、STM32等)。嵌入式系统概述:了解嵌入式系统在日常生活中的应用(如家电、汽车、手机等)。嵌入式硬件接口:学习GPIO、UART、SPI、I2C等常见接口的使用。:书籍:《嵌入式系统设计与开发》 —— 简单介绍嵌入式系统的工作原理。:理解嵌入式系统的定义,硬件与软件的结合,嵌入式开发的应用场景。电路基础:学习常见的电子元件(如电阻、电容、三极管、运放等)。C语言基础:变量、控制结构、指针、内存管理等。

weixin_43969367的博客 857

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

嵌入式开发入门寄语

    做嵌入式开发已经好几年,也算对这行有了点粗略的认识。最近经常有朋友问,到底要如何学习才能比较快地熟练掌握嵌入式软件开发呢?我在这里说一下我自己的看法,权当抛砖引玉,如果大家有自己的看法,欢迎指出!由于本人的职业所限,本文所指的开发,主要是针对嵌入式领域中的软件开发。    某位高人曾经说过,成为高手的路径只有一条,那就是:多做,多思考。用到嵌入式开发,可以理解为:多实践,多总结经验。我自己

编码人的专栏 3705

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

嵌入式开发小白入门指南:一文吃透基础知识

在嵌入式开发的世界里,开发板是我们不可或缺的好帮手,就像建筑师手中的建筑模型,帮助我们快速搭建和验证自己的想法。下面就为大家介绍几款常见的开发板。STM32 开发板:由意法半导体推出,基于 ARM Cortex-M 内核,拥有丰富的产品线,从低功耗到高性能,满足不同应用需求。它就像一个全能选手,在工业自动化、消费电子、物联网等领域都表现出色。

Android 4223

嵌入式开发前景怎么样?

嵌入式开发前景非常广阔,这主要得益于物联网、人工智能、大数据等技术的快速发展,以及嵌入式系统在各个领域的广泛应用。

hfc1688的博客 1252
上一篇: 快速幂并取模
下一篇: 输出出现频率最高的前n个数以及出现次数
Cpp味的麻辣香锅
博客等级 码龄5年 43粉丝 143原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值