嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统

扬创2440 uboot移植(1)--基于《嵌入式Linux之我行--u-boot-2009.08在2440上的移植详解》 原文出处 http://hbhuanggang.cublog.cn 一、移植环境 主  机:VMWare--UBUNTU 10.04开发板:UTU2440--64MB Nand(K9F1208U0C),Kernel:2.6.13编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2009.11.tar.bz2 二、 阅读详情
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。

一、移植环境

  • 主  机:VMWare--Fedora 9
  • 开发板:Mini2440--64MB Nand
  • 编译器:arm-linux-gcc-4.3.2
  • yaffs补丁:cvs-root.tar.gz 这里下载http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/
  • Busybox:busybox-1.13.0.tar.tar
  • yaffs制作工具:mkyaffs2image.tgz(友善提供)

二、移植步骤

1. 准备工作目录和进入工作目录

#mkdir my2440
#cd my2440

2. 给内核打上yaffs补丁,使内核对yaffs的支持

#tar -zxvf cvs-root.tar.gz
#cd cvs/yaffs2/
#./patch-ker.sh c /root/my2440/linux-2.6.30.4/


3. 配置内核,使其对yaffs2文件系统的支持。配置完后重新编译内核,下载到开发板上

File systems --->
    < > Second extended fs support
    < > Ext3 journalling file system support
    < > The Extended 4 (ext4) filesystem
    < > Reiserfs support
    < > JFS filesystem support
    < > XFS filesystem support
    < > OCFS2 file system support
    < > Btrfs filesystem (EXPERIMENTAL) Unstable disk format
    [*] Enable POSIX file locking API
    [*] Dnotify support
    [*] Inotify file change notification support
    [*] Inotify support for userspace
    [ ] Quota support
     Kernel automounter support
     Kernel automounter version 4 support (also supports v3)
     FUSE (Filesystem in Userspace) support
        Caches --->
        CD-ROM/DVD Filesystems --->
            <*> ISO 9660 CDROM file system support
            [ ] Microsoft Joliet CDROM extensions
            [ ] Transparent decompression extension
            < > UDF file system support
        DOS/FAT/NT Filesystems --->
            <*> MSDOS fs support
            <*> VFAT (Windows-95) fs support
            (437) Default codepage for FAT
            (iso8859-1) Default iocharset for FAT
            < > NTFS file system support
        Pseudo filesystems --->
    [*] Miscellaneous filesystems --->
        --- Miscellaneous filesystems
        < > ADFS file system support (EXPERIMENTAL)
        < > Amiga FFS file system support (EXPERIMENTAL)
        < > Apple Macintosh file system support (EXPERIMENTAL)
        < > Apple Extended HFS file system support
        < > BeOS file system (BeFS) support (read only) (EXPERIMENTAL)
        < > BFS file system support (EXPERIMENTAL)
        < > EFS file system support (read only) (EXPERIMENTAL)
        <*> YAFFS2 file system support
        -*- 512 byte / page devices
        [ ] Use older-style on-NAND data format with pageStatus byte
        [ ] Lets Yaffs do its own ECC
        -*- 2048 byte (or larger) / page devices
        [*] Autoselect yaffs2 format
        [ ] Disable lazy loading
        [ ] Turn off wide tnodes
        [ ] Force chunk erase check
        [*] Cache short names in RAM
        <*> Journalling Flash File System v2 (JFFS2) support
        (0) JFFS2 debugging verbosity (0 = quiet, 2 = noisy)
        [*] JFFS2 write-buffering support
        [ ] Verify JFFS2 write-buffer reads
        [*] JFFS2 summary support (EXPERIMENTAL)
        [ ] JFFS2 XATTR support (EXPERIMENTAL)
        [ ] Advanced compression options for JFFS2
        <*> Compressed ROM file system support (cramfs)
         SquashFS 4.0 - Squashed file system support
        [ ] Additional option for memory-constrained systems
        < > FreeVxFS file system support (VERITAS VxFS(TM) compatible)
        < > Minix file system support
        < > SonicBlue Optimized MPEG File System support
        < > OS/2 HPFS file system support
        < > QNX4 file system support (read only)
        <*> ROM file system support
        RomFS backing stores (Block device-backed ROM file system support) --
        < > System V/Xenix/V7/Coherent file system support
        < > UFS file system support (read only)
        < > NILFS2 file system support (EXPERIMENTAL)
    [*] Network File Systems --->
        Partition Types --->
    -*- Native language support --->
    < > Distributed Lock Manager (DLM) --->

4. 编译busybox生成文件系统所需要的应用程序

   1)解压busybox源码,修改Makefile使之编译成ARM平台:

#tar -jxvf busybox-1.13.0.tar.tar
#cd busybox-1.13.0
#gedit Makefile

大概164行改成CROSS_COMPILE = arm-linux- ,189行改成ARCH = arm

   2)配置busybox选项,下面只列出了要注意的地方,没有列出的默认即可

#make menuconfig

Busybox Settings --->
    General Configuration --->
            Buffer allocation policy (Allocate with Malloc) --->
        [*] Show verbose applet usage messages
        [*] Store applet usage messages in compressed form
        [*] Support --install [-s] to install applet links at runtime
        [*] Enable locale support (system needs locale for this to work)
        [*] Support for --long-options
        [*] Use the devpts filesystem for Unix98 PTYs
        [*] Support writing pidfiles
        [*] Runtime SUID/SGID configuration via /etc/busybox.conf
        [*] Suppress warning message if /etc/busybox.conf is not readable
        (/proc/self/exe) Path to BusyBox executable
    Build Options --->
        [*] Build BusyBox as a static binary (no shared libs)
        [*] Build with Large File Support (for accessing files > 2 GB)
    Installation Options --->
        [ ] Don't use /usr
            Applets links (as soft-links) --->
        (./_install) BusyBox installation prefix
    Busybox Library Tuning --->
        (6) Minimum password length
        (2) MD5: Trade Bytes for Speed
        [*] Faster /proc scanning code (+100 bytes)
        [*] Command line editing
        (1024) Maximum length of input
        [*] vi-style line editing commands
        (15) History size
        [*] History saving
        [*] Tab completion
        [*] Fancy shell prompts
        (4) Copy buffer size, in kilobytes
        [*] Use ioctl names rather than hex values in error messages
        [*] Support infiniband HW
Linux Module Utilities --->
    (/lib/modules) Default directory containing modules
    (modules.dep) Default name of modules.dep
    [*] insmod
    [*] rmmod
    [*] lsmod
    [*] modprobe
    --- Options common to multiple modutils
    [ ] Support version 2.2/2.4 Linux kernels
    [*] Support tainted module checking with new kernels
    [*] Support for module.aliases file
    [*] Support for module.symbols fileLinux System Utilities --->


   3)编译和安装busybox,安装完后会在 busybox-1.13.0/_install/目录下生成:bin、linuxrc、sbin、usr

#make
#make install

5. 开始构建文件系统

   1)新建一个目录root-2.6.30.4,把busybox-1.13.0/_install/目录下生成:bin、linuxrc、sbin、usr复制过来,并且在该目录下创建文件系统所需要的其他目录

#mkdir root-2.6.30.4
#cp -rf busybox-1.13.0/_install/* root-2.6.30.4/
#cd root-2.6.30.4/
#mkdir dev etc home lib mnt opt proc tmp var www

   2)向各目录中添加文件系统所需要的目录或文件,没有提到的就不用添加。这里要注意各种文件的权限,建议都改为777,命令:#chmod 777 文件名

"dev"目录,创建两个设备文件:

#mknod console c 5 1
#mknod null c 1 3

"etc"目录,创建各种配置文件并向里面添加内容,没有列出的就不用添加:

boa/boa.conf: boa WEB服务器配置文件,暂时为空。

group: 系统用户组配置文件,内容如下:

root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:lp
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:
500:x:500:plg
501:x:501:fa

inittab: 系统init进程配置文件,内容如下:

# /etc/inittab
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

mime.types: 暂时为空。

passwd: 系统密码文件,内容如下:

root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
sky::502:502:Linux User,,,:/home/sky:/bin/sh

rc.d/init.d/httpd: 内容如下:

#!/bin/sh

base=boa

# See how we were called.
case "$1" in
  start)
        /usr/sbin/$base
        ;;
  stop)
    pid=`/bin/pidof $base`
    if [ -n "$pid" ]; then
        kill -9 $pid
    fi
        ;;
esac

exit 0

sysconfig/HOSTNAME: 主机名称文件,内容如下:

MY2440

fstab: 系统挂载文件系统列表,内容如下:

# device  mount-point   type     options     dump   fsck order
none      /proc         proc     defaults    0      0
none      /dev/pts      devpts   mode=0622   0      0
tmpfs     /dev/shm      tmpfs    defaults    0      0

init.d/rcS: 系统启动加载项,内容如下:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
#    Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var

/bin/mkdir -p /var/log

/bin/hostname -F /etc/sysconfig/HOSTNAME

mdev.conf: mdev设备配置文件,暂时为空。

net.conf: 网络配置文件,暂时为空。

profile: 用户环境配置文件,内容如下:

# Ash profile
# vim: syntax=sh

# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH:/usr/local/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH LD_LIBRARY_PATH

resolv.conf: DNS配置文件,内容如下:

nameserver 61.144.56.100


"home"目录:创建一个sky目录,与etc目录passwd文件中的sky相对应

"lib"目录:这个里面放的都是库文件,直接从交叉编译器的库文件目录中拷贝过来:

#cp -f /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib/ -a



6. 使用yaffs制作工具编译构建好的文件系统。先解压mkyaffs2image.tgz(这个工具是友善提供的,可以在他们的网站上下载),会自动解压到开发主机的/usr/sbin/目录下。编译后生成的文件系统镜像 root-2.6.30.4.bin也在这个目录下

#tar -zxvf mkyaffs2image.tgz
#mkyaffs2image root-2.6.30.4/ root-2.6.30.4.bin

7. 下载文件系统镜像到开发板上测试,使用情况如下:

三、结束语

    现在文件系统成功移植上去了,加上上一篇章的内核移植,至此开发板可以运行起来了。但是各种外设还不能正常使用,后续的篇章将逐步移植各种设备的驱动,使之完善。


Linux-2.6.30.4在2440上的移植之MMC/SD卡驱动 嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 一、移植环境 · 主  机:VMWare--Fedora 9  · 开发板:Mini2440--64MB Nand  · 编译器:arm-linux-gcc-4.3.2 二、移植步骤 1. 添加SD卡设备到系统设备初始化 阅读详情

相关推荐

嵌入式linux把SD卡出现只读模式的文件解决办法

介绍9种命令方法 输入chmod 777 ip.sh ,然后vi ip.sh,要是不能改继续下面的步骤 输入sudo chmod +rwx ip.sh ,然后vi ip.sh,要是不能改继续下面的步骤 输入chmod 666 ip.sh,然后vi ip.sh,要是不能改继续下面的步骤 直接vi ip.sh ,输入i,修改一下,然后输入shift加冒号,输入下面命令 :w!tee% 5.mount -o rw,remount /mnt 6.mount -...

wangjie36的博客 2728

S3C2440 U盘,以及自动挂载顺序(inittab,fstab,mdev,hotplug)

平台: Ubuntu 14.04 LTS             Linux-3.0       首先配置内核参数: Make menuconfig Device Drivers --->        SCSI device support --->                SCSIdevice support               [*] legacy/pr

zq979999的专栏 1876

IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)

实现三分频电路最简单的是: 利用计数器实现。 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号 clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。 例如占空比50%: module Div_three( input clk, input rst_n, output div_three ); reg

qq_41884662的博客 1万+

/etc/fstab功能详解

最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义。供大家参考有不正确的地方敬请指正。 一、/etc/fstab文件的作用 ...

cqis22460的博客 2184

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 555

jenkins安装、打包、部署

一个可以让小白部署发布项目的软件;git 配置 一定要配置git的命令路径jenkins启动命令,一定要加这一段 -Dhudson.util.ProcessTree.disable=true一定要配置jenkins的节点,BUILD_ID和DONTKILLME 否则会导致打包后,会将运行的java程序进程也杀死创建任务SSH中执行服务器B的命令的时候,cd /opt;一定要cd 打开那个目录,否则文件无法传输过去。

学海无涯,我用JAVA 5216

解决android system read only的问题

最近直接修改system.img,导致概率性打包的system.img刷到真机系统上是read only属性。 尝试adb remount, 虽然显示成功,但是对于system目录下任何文件操作,都会显示read only adb shell,进入之后,执行mount -o rw,remount /system,直接提示remount失败,因为system为read only。 经过我分析,

zangcf的专栏 1983

中兴问天 BE7200MAX SFP 光口用华为猫棒替代光猫完整配置教程

PPPoE 账号密码:若原光猫为 Route 模式,在宽带设置页可见用户名,密码需按 F12 打开浏览器开发者模式,点击密码输入框,查看代码中 “value=” 后的内容即为明文密码。若仍失败,核对 PON 类型是否与运营商网络匹配。PON 认证信息:LOID(逻辑 ID,部分地区含密码)、设备 SN 码(标签或设备信息页)、PON 类型(GPON/EPON,运营商网络类型)。电脑保持与路由器连接,访问路由器管理地址(默认通常为 192.168.5.1,可参考路由器说明书),登录后台。

Gulper_Eel的博客 3331

嵌入式出现read only file system问题解决

我们遇见此问题考虑到应该是当前现有的文件系统为vfat格式,对于掉电保护处理的不够好,所以改用ext4的文件系统格式。在config文件结尾加上CONFIG_EXT4_FS=y重新编译之后cat /proc/filesystems显示如下:nodev   sysfsnodev   rootfsnodev   ramfsnodev   bdevnodev   procnodev   cgroupno...

sg656720274的博客 2760

电力现货市场出清机制解析:从理论到实践(附节点电价计算实例)

本文深入解析电力现货市场的核心出清机制,重点阐述了节点边际电价的计算原理与实践方法。通过对比系统边际电价、节点边际电价和分区边际电价三种模式,揭示了市场出清价格如何反映电力供需与网络阻塞。文章结合IEEE 30节点系统,提供了基于MATLAB和最优潮流模型的计算实例,详细展示了从构建模型到求解对偶变量以获取节点电价的全过程,为理解电力市场定价机制提供了从理论到实践的完整路径。

whisky的博客 756

VEML7700环境光传感器原理图设计,已量产(光线传感器)

最近做便携显示设备的自动亮度调节模块,最终敲定了 VEML7700 这款数字光传感器 —— 一是它 0~120klx 的宽量程刚好覆盖 “暗室→户外强光” 的全场景,二是 Filtron™技术让它的光谱响应和人眼高度贴合,测出来的 “亮度” 更符合实际视觉感受,加上 O-Trim™技术把输出公差压到 10% 以内,省了不少后期校准的功夫。搭好电路后串口直接读 lx 数值,稳定性和精度都够,这篇聊聊这个模块的硬件设计细节。

不脱发的程序猿 600

ina3221嵌入式linux,嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之文件系统

嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。一、移植环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand编译器:arm-linux-gcc-4.3.2yaffs补丁:cvs-root.tar.gz 这里下载Busybox:busybox-...

weixin_33731135的博客 330

发那科 Fanuc PLC 报文通讯,报文解析。附源程序

发那科 Fanuc PLC 报文通讯,最详细的发那科 PLC报文解析,不再局限在官方提供的库,也不用再局限在windows平台。

ITOfDragon的博客 1747

S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

启动内核 有8个分区,而我们的uboot只有4个分区。 0x00000000-0x00040000 : "bootloader" //存放uboot 0x00040000-0x00060000 : "params" //存放环境变量 0x00060000-0x00260000 : "kernel" //存放内核 0...

嵌入式与Linux那些事的博客 3066

5-EP4CE10F17C8-引脚配置

EP4CE10F17C8-引脚配置

weixin_44479192的博客 719

ssm框架搭建

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

S3C2440移植linux3.4.2内核之支持YAFFS文件系统

1.首先获取yaffs2源码(参考git命令使用详解) cd /work/nfs_root git clone git@github.com:lifeyx/yaffs2.git //若下载出现error:403,可以试试vi /etc/resolv.conf,将nameserver地址改为: 114.114.114.114 2.将yaffs2源码来配置到内核里(使内核支持yaffs2) vi ...

嵌入式与Linux那些事的博客 2831

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

嵌入式开发七:实验二:本人实践:嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之内核

本人实践: · 主  机:VMWare—ubuntu10.04 · 开发板:Mini2440--128MBNand · 编译器:arm-linux-gcc-4.3.2 Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 ...done zImage magic = 0x016f2818 Setup lin

朱本福 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

S3C2440移植linux3.4.2内核之内核裁剪

内核裁剪 为什么要裁剪内核? 因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值) 5.1首先裁剪内核里无关的CPU/单板文件 1)通过vi .config,然后搜索2440,如下图所示: 2)然后参考上图,make menuconfig 进入System Type —> SAMSUNG S3C24XX SoCs Support:...

嵌入式与Linux那些事的博客 2975

JZ2440(V3)移植QT5.6--图文教程

开发环境 环境说明 详细信息 操作系统 Ubuntu 18.04.1 LTS 操作系统内核版本 4.15.0-36-generic 编译器 arm-linux-gcc-4.4.3 编译器路径 /usr/local/arm/gcc-4.4.3/bin u-boot版本 u-boot-2014.04.01 kernel版本 linux-3.4.2 busybox...

multimicro的博客 6133

TQ2440(S3C2440)移植Linux-4.0.1内核全过程

TQ2440(S3C2440)移植Linux-4.0.1内核全过程 文件系统yaffs2下载地址:https://yaffs.net/get-yaffs linux内核下载地址: BusyBox下载地址:https://busybox.net/ 开发环境: ubuntu1404 天嵌光盘里的交叉编译器(版本4.4.3) busybox-1.13.0 (一)制作根文件系统 1、创建根文件系...

^_^ 2820

嵌入式Linux之我行——嵌入式数据库sqlite在2440上的移植(转)

嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:http://hbhuanggang.cublog.cn一、移植环境主 机:Fedora 9 编译器:arm-linux-gcc-3.4.1 开发板:Mini2440 数据库

mangol的专栏 1109

移植 linux-2.6.32.2 到 mini2440

作为一个嵌入式专业的学生,想想自己都大四了,还在搞这些基础东西,真丢人………… 先介绍一下此次移植的主要目标对象: 平台:window 7 旗舰版 and Fedora 9 目标板:mini2440 目标系统: linux-2.6.32.2 交叉编译链: arm-liu

AK_winson08的专栏 2330

Linux-2.6.30.4在2440上的移植之RTC时钟驱动

Linux-2.6.30.4在2440上的移植之RTC时钟驱动 一、移植环境 · 主 机:VMWare--Fedora 9 · 开发板:Mini2440--64MB Nand · 编译器:arm-linux-gcc-4.3.2 二、移植步骤 1. 查看没有添加对RTC时钟支持的系统。从系统启动信息可以看出RTC设备不能正常打开,系统启动后运行#date命令显示的

fgq1990的专栏 762

嵌入式linux之我行,嵌入式linu之我行-linux移植.doc

嵌入式linu之我行-linux移植Linux-在2440上的移植之内核嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。共享资源,欢迎转载:一、移植环境主 ?机:VMWare--Fedora 9开发板:Mini2440--64MB Nand编译器:arm-linux-gcc-4.3...

weixin_39962758的博客 127
上一篇: 嵌入式Linux之我行——u-boot-2009.08在2440上的移植详解(六)
下一篇: 嵌入式Linux之我行——Linux-2.6.30.4在2440上的移植之内核
hwmt2012
博客等级 码龄14年 14粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值