u-boot-2012.04.01移植到TQ2440(八):支持烧写yaffs文件系统

一、    支持yaffs烧写文件系统

先直接烧写试一下

TQ2440 # nand write.yaffs32000000 rootfs $filesize

NAND write: device 0 offset0x360000, size 0x614ac0

Unknown nandcommand suffix '.yaffs'.

不认识的后缀‘.yaffs’

搜索.yaffs

Cmd_nand.c(u-boot-2012.04.01\common):        } elseif (!strcmp(s, ".yaffs")) {

#ifdefCONFIG_CMD_NAND_YAFFS

         } else if (!strcmp(s, ".yaffs")){

                if (read) {

                       printf("Unknown nand command suffix'%s'.\n", s);

                       return 1;

                }

                ret = nand_write_skip_bad(nand, off, &rwsize,

                                     (u_char *)addr, WITH_YAFFS_OOB);

#endif

因为没有定义上面那个宏,修改配置文件include\configs\tq2440.h添加该宏

#defineCONFIG_CMD_NAND_YAFFS

重新编译,烧到开发板并重启,再次烧写yaffs文件系统

TQ2440 # nand erase 040000;tftp 32000000 u-boot.bin;nand write 32000000 0 40000

重启

TQ2440 # tftp 32000000rootfs.yaffs;nand erase.part rootfs;nand write.yaffs 32000000 rootfs $filesize

dm9000 i/o: 0x20000000, id:0x90000a46

DM9000: running in 16 bitmode

MAC: 00:0c:29:4d:e4:f4

Using dm9000 device

TFTP from server172.28.12.60; our IP address is 172.28.12.10

Filename 'rootfs.yaffs'.

Load address: 0x32000000

Loading: T#################################################################

        #################################################################

         #################################################################

done

Bytes transferred = 6376128(614ac0 hex)

NAND erase.part: device 0offset 0x360000, size 0xfca0000

Skipping bad block at  0x08260000                                          

Erasing at 0xffe0000 -- 100%complete.

OK

NAND write: device 0 offset0x360000, size 0x614ac0

 6376128 bytes written: OK

TQ2440 # set bootargs root=/dev/mtdblock3 rootfstype=yaffs2init=/linuxrc console=ttySAC0,115200

TQ2440 # res     重启

resetting ...

 

 

U-Boot 2012.04.01 (Dec 312012 - 18:46:42)

 

CPUID: 32440001

FCLK:      400 MHz

HCLK:      100 MHz

PCLK:       50 MHz

DRAM:  64 MiB

WARNING: Caches not enabled

Flash: *** failed ***

NAND:  256 MiB

In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stopautoboot:  0

 

NAND read: device 0 offset0x60000, size 0x300000

 3145728 bytes read: OK

## Booting kernel from LegacyImage at 32000000 ...

   Image Name:  Linux-2.6.36.4

   Created:     2012-12-31  10:56:09 UTC

   Image Type:  ARM Linux Kernel Image (uncompressed)

   Data Size:   2186324 Bytes = 2.1 MiB

   Load Address: 30008000

   Entry Point: 30008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

 

Starting kernel ...

 

Uncompressing Linux... done,booting the kernel.

Linux version 2.6.36.4(root@zjh) (gcc version 4.4.3 (ctng-1.6.1) ) #5 Mon Dec 31 18:55:35 CST 2012

CPU: ARM920T [41129200]revision 0 (ARMv4T), cr=c0007177

CPU: VIVT data cache, VIVTinstruction cache

Machine: SMDK2440

Memory policy: ECC disabled,Data cache writeback

CPU S3C2440A (id 0x32440001)

S3C24XX Clocks, Copyright2004 Simtec Electronics

S3C244X: core 400.000 MHz,memory 100.000 MHz, peripheral 50.000 MHz

CLOCK: Slow mode (1.500MHz), fast, MPLL on, UPLL on

Built 1 zonelists in Zoneorder, mobility grouping on.  Totalpages: 16256

Kernel command line:root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

PID hash table entries: 256(order: -2, 1024 bytes)

Dentry cache hash tableentries: 8192 (order: 3, 32768 bytes)

Inode-cache hash tableentries: 4096 (order: 2, 16384 bytes)

Memory: 64MB = 64MB total

Memory: 60532k/60532kavailable, 5004k reserved, 0K highmem

Virtual kernel memorylayout:

    vector : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap : 0xfff00000 - 0xfffe0000   ( 896kB)

    DMA    : 0xffc00000 - 0xffe00000   (   2 MB)

    vmalloc : 0xc4800000 - 0xe0000000   ( 440 MB)

    lowmem : 0xc0000000 - 0xc4000000   (  64 MB)

    modules : 0xbf000000 - 0xc0000000   (  16MB)

      .init : 0xc0008000 - 0xc0028000   ( 128 kB)

      .text : 0xc0028000 - 0xc03e8000   (3840 kB)

      .data : 0xc0400000 - 0xc0422b80   ( 139 kB)

Hierarchical RCUimplementation.

        RCU-based detection of stalled CPUs isdisabled.

        Verbose stalled-CPUs detection isdisabled.

NR_IRQS:85

irq: clearing subpendingstatus 00000002

Console: colour dummy device80x30

console [ttySAC0] enabled

Calibrating delay loop...199.47 BogoMIPS (lpj=498688)

pid_max: default: 32768minimum: 301

Mount-cache hash tableentries: 512

CPU: Testing write buffercoherency: ok

gpiochip_add: gpios 288..303(GPIOK) failed to register

gpiochip_add: gpios 320..334(GPIOL) failed to register

gpiochip_add: gpios 352..353(GPIOM) failed to register

NET: Registered protocolfamily 16

S3C Power Management,Copyright 2004 Simtec Electronics

S3C2440: Initialisingarchitecture

S3C2440: IRQ Support

S3C24XX DMA Driver,Copyright 2003-2006 Simtec Electronics

DMA channel 0 at c4808000,irq 33

DMA channel 1 at c4808040,irq 34

DMA channel 2 at c4808080,irq 35

DMA channel 3 at c48080c0,irq 36

S3C244X: Clock Support, DVSoff

bio: create slab<bio-0> at 0

SCSI subsystem initialized

usbcore: registered newinterface driver usbfs

usbcore: registered newinterface driver hub

usbcore: registered newdevice driver usb

s3c-i2c s3c2440-i2c: slaveaddress 0x10

s3c-i2c s3c2440-i2c: busfrequency set to 97 KHz

s3c-i2c s3c2440-i2c: i2c-0:S3C I2C adapter

Advanced Linux SoundArchitecture Driver Version 1.0.23.

NET: Registered protocolfamily 2

IP route cache hash tableentries: 1024 (order: 0, 4096 bytes)

TCP established hash tableentries: 2048 (order: 2, 16384 bytes)

TCP bind hash table entries:2048 (order: 1, 8192 bytes)

TCP: Hash tables configured(established 2048 bind 2048)

TCP reno registered

UDP hash table entries: 256(order: 0, 4096 bytes)

UDP-Lite hash table entries:256 (order: 0, 4096 bytes)

NET: Registered protocolfamily 1

RPC: Registered udptransport module.

RPC: Registered tcptransport module.

RPC: Registered tcp NFSv4.1backchannel transport module.

NetWinder Floating PointEmulator V0.97 (extended precision)

JFFS2 version 2.2. (NAND)(SUMMARY)  © 2001-2006 Red Hat, Inc.

ROMFS MTD (C) 2007 Red Hat,Inc.

msgmni has been set to 118

io scheduler noop registered

io scheduler deadlineregistered

io scheduler cfq registered(default)

Console: switching to colourframe buffer device 30x40

fb0: s3c2410fb frame bufferdevice

lp: driver loaded but nodevices found

ppdev: user-space parallelport driver

Serial: 8250/16550 driver, 4ports, IRQ sharing enabled

s3c2440-uart.0:s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440

s3c2440-uart.1:s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440

s3c2440-uart.2:s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440

brd: module loaded

loop: module loaded

Uniform Multi-Platform E-IDEdriver

ide-gd driver 1.18

ide-cd driver 5.00

S3C24XX NAND Driver, (c)2004 Simtec Electronics

s3c24xx-nand s3c2440-nand:Tacls=1, 10ns Twrph0=3 30ns, Twrph1=1 10ns

s3c24xx-nand s3c2440-nand:NAND soft ECC

NAND device: ManufacturerID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)

Scanning device for badblocks

Bad eraseblock 1043 at0x000008260000

Creating 4 MTD partitions on"NAND":

0x000000000000-0x000000040000: "u-boot"

0x000000040000-0x000000060000: "params"

0x000000060000-0x000000360000: "kernel"

0x000000360000-0x000010000000: "rootfs"

dm9000 Ethernet Driver,V1.31

usbmon: debugfs is notavailable

ohci_hcd: USB 1.1 'Open'Host Controller (OHCI) Driver

s3c2410-ohci s3c2410-ohci:S3C24XX OHCI

s3c2410-ohci s3c2410-ohci:new USB bus registered, assigned bus number 1

s3c2410-ohci s3c2410-ohci:irq 42, io mem 0x49000000

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 portsdetected

usbcore: registered newinterface driver libusual

usbcore: registered newinterface driver usbserial

USB Serial supportregistered for generic

usbcore: registered newinterface driver usbserial_generic

usbserial: USB Serial Drivercore

USB Serial supportregistered for FTDI USB Serial Device

usbcore: registered newinterface driver ftdi_sio

ftdi_sio: v1.6.0:USB FTDISerial Converters Driver

USB Serial supportregistered for pl2303

usbcore: registered newinterface driver pl2303

pl2303: Prolific PL2303 USBto serial adaptor driver

mice: PS/2 mouse devicecommon for all mice

S3C24XX RTC, (c) 2004,2006Simtec Electronics

S3C2410 Watchdog Timer, (c)2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt:watchdog inactive, reset disabled, irq enabled

No device for DAI UDA134X

No device for DAIs3c24xx-i2s

ALSA device list:

  No soundcards found.

TCP cubic registered

NET: Registered protocolfamily 17

drivers/rtc/hctosys.c:unable to open rtc device (rtc0)

yaffs: dev is32505859 name is "mtdblock3" rw

yaffs: passedflags ""

VFS: Mounted root(yaffs2 filesystem) on device 31:3.

Freeing initmemory: 128K

Failed to execute/linuxrc.  Attempting defaults...

Kernel panic - notsyncing: No init found.  Try passinginit= option to kernel. See Linux Documentation/init.txt for guidance.

[<c002e344>](unwind_backtrace+0x0/0xf0) from [<c02ff798>] (panic+0x54/0x17c)

[<c02ff798>](panic+0x54/0x17c) from [<c002856c>] (init_post+0x9c/0xbc)

[<c002856c>](init_post+0x9c/0xbc) from [<c00085e8>] (kernel_init+0x10c/0x148)

[<c00085e8>](kernel_init+0x10c/0x148) from [<c0029e50>] (kernel_thread_exit+0x0/0x8)

Yaffs文件系统挂载上了,但是没法执行/linuxrc,换回以前的u-boot烧写yaffs文件系统可以正常启动,说明是u-boot的问题。

YAFFS中,文件是以固定大小的数据块进行存储的,块的大小可以是512字节、1 024字节或者2 048字节。这种实现依赖于它能够将一个数据块头和每个数据块关联起来。每个文件(包括目录)都有一个数据块头与之相对应,数据块头中保存了ECC(ErrorCorrection Code)和文件系统的组织信息,用于错误检测和坏块处理。

TQ2440开发板用的NAND FLASH每页2k

用UltraEdit打开刚才烧写的rootfs.yaffs文件和烧到NAND FLASH里的数据对比

在u-boot中执行

TQ2440 # nand dump 360000

Page 00360000 dump:

        03 00 00 00 01 00 00 00  ff ff 00 00 00 00 00 00

     ………………………………………………

        ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff

OOB:

        ff ff ff ff ff ff ff ff

        ff ff ff ff ff ff ff ff

        ff ff ff ff ff ff ff ff

        ff ff ff ff ff ff ff ff

        ff ff ff ff ff ff ff ff

        aa 9a a7 ff f3 03 ff ff

        ff ff ff ff ff ff ff ff

        ff ff ff ff ff ff ff ff

TQ2440 #

通过对比发现烧到NAND FLASH里的数据和原文件不一致

跟踪u-boot源码common\cmd_nand.c

ret =nand_write_skip_bad(nand, off, &rwsize,

                                     (u_char *)addr, WITH_YAFFS_OOB);

这里传入了一个参数WITH_YAFFS_OOB

drivers\mtd\nand\nand_util.c:nand_write_skip_bad()函数

if (!need_skip &&!(flags & WITH_DROP_FFS)) {

         rval = nand_write (nand, offset, length, buffer);

这里如果没有坏块而且没有指定WITH_DROP_FFS标志就执行nand_write (nand, offset,length, buffer);

而我们需要执行write_oob(nand, offset, &ops);所以应该加上之前传入的参数

if (!need_skip &&!(flags & WITH_DROP_FFS) && !(flags &WITH_YAFFS_OOB))

ops.mode = MTD_OOB_RAW; /* 原来为AUTO,应该为原始 */

rval =nand->write_oob(nand, offset, &ops);

                       if (rval)       /* 返回0成功,非0失败,之前那样就只写了第一页 */

                              break;

重新编译重新烧写yaffs文件系统

TQ2440 # tftp 32000000rootfs.yaffs;nand erase.part rootfs;nand write.yaffs 32000000 rootfs $filesize

dm9000 i/o: 0x20000000, id:0x90000a46

DM9000: running in 16 bitmode

MAC: 00:0c:29:4d:e4:f4

Using dm9000 device

TFTP from server172.28.12.60; our IP address is 172.28.12.10

Filename 'rootfs.yaffs'.

Load address: 0x32000000

Loading: T#################################################################

        #################################################################

        #################################################################

        #################################################################

         #################################################################

        #################################################################

        #############################################

done

Bytes transferred = 6376128(614ac0 hex)

NAND erase.part: device 0offset 0x360000, size 0xfca0000

Skipping bad block at  0x08260000                                         

Erasing at 0xffe0000 -- 100%complete.

OK

NAND write: device 0 offset0x360000, size 0x614ac0

 6376128 bytes written: OK

TQ2440 # res

resetting ...

U-Boot 2012.04.01 (Dec 312012 - 19:45:23)

CPUID: 32440001

FCLK:      400 MHz

HCLK:      100 MHz

PCLK:       50 MHz

DRAM:  64 MiB

WARNING: Caches not enabled

Flash: *** failed ***

NAND:  256 MiB

In:    serial

Out:   serial

Err:   serial

Net:   dm9000

Hit any key to stopautoboot:  0

NAND read: device 0 offset0x60000, size 0x300000

 3145728 bytes read: OK

## Booting kernel fromLegacy Image at 32000000 ...

   Image Name:  Linux-2.6.36.4

   Created:     2012-12-31  10:56:09 UTC

   Image Type:  ARM Linux Kernel Image (uncompressed)

   Data Size:   2186324 Bytes = 2.1 MiB

   Load Address: 30008000

   Entry Point: 30008000

   Verifying Checksum ... OK

   Loading Kernel Image ... OK

OK

Starting kernel ...

Uncompressing Linux... done,booting the kernel.

Linux version 2.6.36.4(root@zjh) (gcc version 4.4.3 (ctng-1.6.1) ) #5 Mon Dec 31 18:55:35 CST 2012

CPU: ARM920T [41129200]revision 0 (ARMv4T), cr=c0007177

CPU: VIVT data cache, VIVTinstruction cache

Machine: SMDK2440

Memory policy: ECC disabled,Data cache writeback

CPU S3C2440A (id 0x32440001)

S3C24XX Clocks, Copyright2004 Simtec Electronics

S3C244X: core 400.000 MHz,memory 100.000 MHz, peripheral 50.000 MHz

CLOCK: Slow mode (1.500MHz), fast, MPLL on, UPLL on

Built 1 zonelists in Zoneorder, mobility grouping on.  Totalpages: 16256

Kernel command line:root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0,115200

PID hash table entries: 256(order: -2, 1024 bytes)

Dentry cache hash table entries:8192 (order: 3, 32768 bytes)

Inode-cache hash tableentries: 4096 (order: 2, 16384 bytes)

Memory: 64MB = 64MB total

Memory: 60532k/60532kavailable, 5004k reserved, 0K highmem

Virtual kernel memorylayout:

    vector : 0xffff0000 - 0xffff1000   (   4 kB)

    fixmap : 0xfff00000 - 0xfffe0000   ( 896kB)

    DMA    : 0xffc00000 - 0xffe00000   (   2 MB)

    vmalloc : 0xc4800000 - 0xe0000000   ( 440 MB)

    lowmem : 0xc0000000 - 0xc4000000   (  64 MB)

    modules : 0xbf000000 - 0xc0000000   (  16MB)

      .init : 0xc0008000 - 0xc0028000   ( 128 kB)

      .text : 0xc0028000 - 0xc03e8000   (3840 kB)

      .data : 0xc0400000 - 0xc0422b80   ( 139 kB)

Hierarchical RCUimplementation.

        RCU-based detection of stalled CPUs isdisabled.

        Verbose stalled-CPUs detection isdisabled.

NR_IRQS:85

irq: clearing subpendingstatus 00000002

Console: colour dummy device80x30

console [ttySAC0] enabled

Calibrating delay loop...199.47 BogoMIPS (lpj=498688)

pid_max: default: 32768minimum: 301

Mount-cache hash tableentries: 512

CPU: Testing write buffercoherency: ok

gpiochip_add: gpios 288..303(GPIOK) failed to register

gpiochip_add: gpios 320..334(GPIOL) failed to register

gpiochip_add: gpios 352..353(GPIOM) failed to register

NET: Registered protocolfamily 16

S3C Power Management,Copyright 2004 Simtec Electronics

S3C2440: Initialisingarchitecture

S3C2440: IRQ Support

S3C24XX DMA Driver,Copyright 2003-2006 Simtec Electronics

DMA channel 0 at c4808000, irq33

DMA channel 1 at c4808040,irq 34

DMA channel 2 at c4808080,irq 35

DMA channel 3 at c48080c0,irq 36

S3C244X: Clock Support, DVSoff

bio: create slab<bio-0> at 0

SCSI subsystem initialized

usbcore: registered newinterface driver usbfs

usbcore: registered newinterface driver hub

usbcore: registered newdevice driver usb

s3c-i2c s3c2440-i2c: slaveaddress 0x10

s3c-i2c s3c2440-i2c: busfrequency set to 97 KHz

s3c-i2c s3c2440-i2c: i2c-0:S3C I2C adapter

Advanced Linux SoundArchitecture Driver Version 1.0.23.

NET: Registered protocolfamily 2

IP route cache hash tableentries: 1024 (order: 0, 4096 bytes)

TCP established hash tableentries: 2048 (order: 2, 16384 bytes)

TCP bind hash table entries:2048 (order: 1, 8192 bytes)

TCP: Hash tables configured(established 2048 bind 2048)

TCP reno registered

UDP hash table entries: 256(order: 0, 4096 bytes)

UDP-Lite hash table entries:256 (order: 0, 4096 bytes)

NET: Registered protocolfamily 1

RPC: Registered udptransport module.

RPC: Registered tcptransport module.

RPC: Registered tcp NFSv4.1backchannel transport module.

NetWinder Floating PointEmulator V0.97 (extended precision)

JFFS2 version 2.2. (NAND)(SUMMARY)  © 2001-2006 Red Hat, Inc.

ROMFS MTD (C) 2007 Red Hat,Inc.

msgmni has been set to 118

io scheduler noop registered

io scheduler deadlineregistered

io scheduler cfq registered(default)

Console: switching to colourframe buffer device 30x40

fb0: s3c2410fb frame bufferdevice

lp: driver loaded but nodevices found

ppdev: user-space parallelport driver

Serial: 8250/16550 driver, 4ports, IRQ sharing enabled

s3c2440-uart.0:s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440

s3c2440-uart.1:s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440

s3c2440-uart.2:s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440

brd: module loaded

loop: module loaded

Uniform Multi-Platform E-IDEdriver

ide-gd driver 1.18

ide-cd driver 5.00

S3C24XX NAND Driver, (c)2004 Simtec Electronics

s3c24xx-nand s3c2440-nand:Tacls=1, 10ns Twrph0=3 30ns, Twrph1=1 10ns

s3c24xx-nand s3c2440-nand:NAND soft ECC

NAND device: ManufacturerID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)

Scanning device for badblocks

Bad eraseblock 1043 at0x000008260000

Creating 4 MTD partitions on"NAND":

0x000000000000-0x000000040000: "u-boot"

0x000000040000-0x000000060000: "params"

0x000000060000-0x000000360000: "kernel"

0x000000360000-0x000010000000: "rootfs"

dm9000 Ethernet Driver,V1.31

usbmon: debugfs is notavailable

ohci_hcd: USB 1.1 'Open'Host Controller (OHCI) Driver

s3c2410-ohci s3c2410-ohci:S3C24XX OHCI

s3c2410-ohci s3c2410-ohci:new USB bus registered, assigned bus number 1

s3c2410-ohci s3c2410-ohci:irq 42, io mem 0x49000000

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 portsdetected

usbcore: registered newinterface driver libusual

usbcore: registered newinterface driver usbserial

USB Serial supportregistered for generic

usbcore: registered newinterface driver usbserial_generic

usbserial: USB Serial Drivercore

USB Serial supportregistered for FTDI USB Serial Device

usbcore: registered newinterface driver ftdi_sio

ftdi_sio: v1.6.0:USB FTDISerial Converters Driver

USB Serial supportregistered for pl2303

usbcore: registered newinterface driver pl2303

pl2303: Prolific PL2303 USBto serial adaptor driver

mice: PS/2 mouse devicecommon for all mice

S3C24XX RTC, (c) 2004,2006Simtec Electronics

S3C2410 Watchdog Timer, (c)2004 Simtec Electronics

s3c2410-wdt s3c2410-wdt:watchdog inactive, reset disabled, irq enabled

No device for DAI UDA134X

No device for DAIs3c24xx-i2s

ALSA device list:

  No soundcards found.

TCP cubic registered

NET: Registered protocolfamily 17

drivers/rtc/hctosys.c:unable to open rtc device (rtc0)

yaffs: dev is 32505859 nameis "mtdblock3" rw

yaffs: passed flags""

VFS: Mounted root(yaffs2 filesystem) on device 31:3.

Freeing init memory: 128K

Please press Enter toactivate this console.

Processing /etc/profile...

Done

[root@tq2440 /]#

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗-永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值