Other Parts Discussed in Thread: TLV320AIC3104, TPS65910, TPS65217
TLV320AIC3104与AM335x连接方式为MCASP0和I2C2,连接方式如下:
SDA -> I2C2_SDA -> UART1_CTSn [ I2C2_SDA MUX:MODE 3]
SCL -> I2C2_SCL -> UART1_RTSn [ I2C2_SCL MUX:MODE 3]
RESETn -> SPI1_CS0 -> CONNECTOR60 ->MCASP0_AHCLKR
MCLK -> GPIO3_21 -> CONNECTOR45 ->MCASP0_AHCLKX
BCLK -> SPI1_SCLK -> CONNECTOR59 ->MCASP0_ACLKX
WCLK -> SPI1_D0 -> CONNECTOR57 ->MCASP0_FSX
DOUT -> GPIO3_20 -> CONNECTOR46 ->MCASP0_AXR1
DIN -> SPI1_D1 -> CONNECTOR58 ->MCASP0_AXR0
McASP0的PIN MUX配置如下:
static struct pinmux_config mcasp0_pin_mux[] = {
{"mcasp0_aclkx.mcasp0_aclkx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_fsx.mcasp0_fsx", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_axr0.mcasp0_axr0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
{"mcasp0_axr1.mcasp0_axr1", OMAP_MUX_MODE0 |
AM33XX_PIN_INPUT_PULLDOWN},
{NULL, 0},
};
static struct snd_platform_data am335x_evm_snd_data0 = {
.tx_dma_offset = 0x46000000, /* McASP0 */
.rx_dma_offset = 0x46000000,
.op_mode = DAVINCI_MCASP_IIS_MODE,
.num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction0),
.tdm_slots = 2,
.serial_dir = am335x_iis_serializer_direction0,
.asp_chan_q = EVENTQ_2,
.version = MCASP_VERSION_3,
.txnumevt = 1,
.rxnumevt = 1,
.get_context_loss_count =
omap_pm_get_dev_context_loss_count,
};
static u8 am335x_iis_serializer_direction0[] = {
TX_MODE, INACTIVE_MODE, RX_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
}
static void mcasp0_init(int evm_id, int profile)
{
/* Configure McASP */
setup_pin_mux(mcasp0_pin_mux);
am335x_register_mcasp(&am335x_evm_snd_data0, 0);
return;
}
I2C相关配置如下:
static struct i2c_board_info am335x_i2c2_boardinfo[] = {
{
I2C_BOARD_INFO("tlv320aic3x", 0x18),
},
};
static void i2c2_init(int evm_id, int profile)
{
setup_pin_mux(i2c2_pin_mux);
omap_register_i2c_bus(3, 100, am335x_i2c2_boardinfo,
ARRAY_SIZE(am335x_i2c2_boardinfo));
return;
}
davinci-evm.c中dai配置如下:
static struct snd_soc_dai_link am335x_evm_dai = {
.name = "TLV320AIC3X",
.stream_name = "AIC3X",
//.cpu_dai_name = "davinci-mcasp.1",
.cpu_dai_name = "davinci-mcasp.0",
.codec_dai_name = "tlv320aic3x-hifi",
//.codec_name = "tlv320aic3x-codec.2-001b",
.codec_name = "tlv320aic3x-codec.3-0018",
.platform_name = "davinci-pcm-audio",
.init = evm_aic3x_init,
.ops = &evm_ops,
};
static struct snd_soc_dai_link am335x_evm_sk_dai = {
.name = "TLV320AIC3X",
.stream_name = "AIC3X",
//.cpu_dai_name = "davinci-mcasp.1"
.cpu_dai_name = "davinci-mcasp.0",
.codec_dai_name = "tlv320aic3x-hifi",
//.codec_name = "tlv320aic3x-codec.1-001b",
.codec_name = "tlv320aic3x-codec.3-0018",
.platform_name = "davinci-pcm-audio",
.init = evm_aic3x_init,
.ops = &evm_ops,
};
Xtal时钟为24mhz,因此evm_hw_params()中sysclk也设置为24000000。
启动时提示为:
[ 0.000000] Linux version 3.2.0.4-gf685fe0-dirty (root@ubuntu) (gcc version 4.4.3 (ctng-1.6.1) ) #85 Mon May 28 15:46:59 CST 2018
[ 0.000000] AM335X ES2.1 (sgx neon )
[ 0.000000] Kernel command line: console=ttyO0,115200n8 dispmode=4.3inch_LCD root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait mtdparts=physmap-flash.0:4m(u-boot),4m(kernel),-(rootfs)earlyprintk
[ 0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Memory: 512MB = 512MB total
[ 0.000000] Memory: 460660k/460660k available, 63628k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xe0800000 - 0xff000000 ( 488 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xe0000000 ( 512 MB)
[ 0.000000] modules : 0xbf000000 - 0xc0000000 ( 16 MB)
[ 0.000000] .text : 0xc0008000 - 0xc06b1000 (6820 kB)
[ 0.000000] .init : 0xc06b1000 - 0xc06eb000 ( 232 kB)
[ 0.000000] .data : 0xc06ec000 - 0xc0786258 ( 617 kB)
[ 0.000000] .bss : 0xc078627c - 0xc07b4aa4 ( 187 kB)
[ 0.000000] NR_IRQS:396
[ 0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[ 0.000000] Total of 128 interrupts on 1 active controller
[ 0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz
[ 0.000000] OMAP clocksource: GPTIMER1 at 32768 Hz
[ 0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[ 0.000000] Console: colour dummy device 80x30
[ 0.000274] Calibrating delay loop... 298.59 BogoMIPS (lpj=1492992)
[ 0.067657] pid_max: default: 32768 minimum: 301
[ 0.067932] Security Framework initialized
[ 0.068115] Mount-cache hash table entries: 512
[ 0.068786] CPU: Testing write buffer coherency: ok
[ 0.094696] omap_hwmod: pruss: failed to hardreset
[ 0.096710] print_constraints: dummy:
[ 0.097412] NET: Registered protocol family 16
[ 0.101837] OMAP GPIO hardware version 0.1
[ 0.107788] omap_mux_init: Add partition: #1: core, flags: 0
[ 0.111938] omap_i2c.1: alias fck already exists
[ 0.113800] omap2_mcspi.1: alias fck already exists
[ 0.114288] omap2_mcspi.2: alias fck already exists
[ 0.116333] edma.0: alias fck already exists
[ 0.116394] edma.0: alias fck already exists
[ 0.116424] edma.0: alias fck already exists
[ 0.179992] bio: create slab <bio-0> at 0
[ 0.184783] SCSI subsystem initialized
[ 0.188232] usbcore: registered new interface driver usbfs
[ 0.188903] usbcore: registered new interface driver hub
[ 0.189331] usbcore: registered new device driver usb
[ 0.189971] registerd cppi-dma Intr @ IRQ 17
[ 0.190002] Cppi41 Init Done Qmgr-base(e087a000) dma-base(e0878000)
[ 0.190002] Cppi41 Init Done
[ 0.190063] musb-ti81xx musb-ti81xx: musb0, board_mode=0x11, plat_mode=0x1
[ 0.190673] musb-ti81xx musb-ti81xx: musb1, board_mode=0x11, plat_mode=0x1
[ 0.207794] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz
[ 0.211364] tps65910 1-002d: could not be detected
[ 0.214111] Advanced Linux Sound Architecture Driver Version 1.0.24.
[ 0.216400] Switching to clocksource gp timer
[ 0.252807] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)__arm_ioremap_pfn_caller pfn = 0x47401.
[ 0.253112] musb-hdrc musb-hdrc.0: dma type: dma-cppi41
[ 0.253753] MUSB0 controller's USBSS revision = 4ea20800
[ 0.253814] musb0: Enabled SW babble control
[ 0.254821] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
[ 0.255004] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
[ 0.255249] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.255279] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.255310] usb usb1: Product: MUSB HDRC host driver
[ 0.255340] usb usb1: Manufacturer: Linux 3.2.0.4-gf685fe0-dirty musb-hcd
[ 0.255371] usb usb1: SerialNumber: musb-hdrc.0
[ 0.257202] hub 1-0:1.0: USB hub found
[ 0.257263] hub 1-0:1.0: 1 port detected
[ 0.258514] musb-hdrc musb-hdrc.0: USB Host mode controller at e083c000 using DMA, IRQ 18
[ 0.258850] musb-hdrc musb-hdrc.1: dma type: dma-cppi41
[ 0.259490] MUSB1 controller's USBSS revision = 4ea20800
[ 0.259552] musb1: Enabled SW babble control
[ 0.260498] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[ 0.260589] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 2
[ 0.260803] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[ 0.260833] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 0.260864] usb usb2: Product: MUSB HDRC host driver
[ 0.260894] usb usb2: Manufacturer: Linux 3.2.0.4-gf685fe0-dirty musb-hcd
[ 0.260925] usb usb2: SerialNumber: musb-hdrc.1
[ 0.262512] hub 2-0:1.0: USB hub found
[ 0.262573] hub 2-0:1.0: 1 port detected
[ 0.263671] musb-hdrc musb-hdrc.1: USB Host mode controller at e083e800 using DMA, IRQ 19
[ 0.264434] NET: Registered protocol family 2
[ 0.264739] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.265319] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.266021] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.266448] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.266571] TCP reno registered
[ 0.266601] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.266662] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.267059] NET: Registered protocol family 1
[ 0.267578] RPC: Registered named UNIX socket transport module.
[ 0.267608] RPC: Registered udp transport module.
[ 0.267608] RPC: Registered tcp transport module.
[ 0.267639] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.268096] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.291961] VFS: Disk quotas dquot_6.5.2
[ 0.293090] JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[ 0.293609] msgmni has been set to 899
[ 0.300170] alg: No test for stdrng (krng)
[ 0.301361] io scheduler noop registered
[ 0.301391] io scheduler deadline registered
[ 0.301513] io scheduler cfq registered (default)
[ 0.303771] Could not set LED4 to fully on
[ 0.307403] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[ 0.918945] console [ttyO0] enabled
[ 0.923797] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[ 0.932189] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
[ 0.940551] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
[ 0.948883] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
[ 0.957244] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
[ 0.966522] omap4_rng omap4_rng: OMAP4 Random Number Generator ver. 2.00
[ 0.994781] brd: module loaded
[ 1.009307] loop: module loaded
[ 1.013000] i2c-core: driver [tsl2550] using legacy suspend method
[ 1.019592] i2c-core: driver [tsl2550] using legacy resume method
[ 1.026184] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[ 1.087005] No daughter card found
[ 1.090698] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[ 1.106475] Board name: A335X_SK
[ 1.109924] Board version:
[ 1.112854] The board is a AM335x Starter Kit.
[ 1.118835] omap_hsmmc.0: alias fck already exists
[ 1.125152] da8xx_lcdc.0: alias fck already exists
[ 1.131072] da8xx_lcdc da8xx_lcdc.0: GLCD: Found LVDS panel
[ 1.160339] Console: switching to colour frame buffer device 100x37
[ 1.185760] tps65217 1-0024: TPS65217 ID 0xe version 1.2
[ 1.194885] print_constraints: DCDC1: 900 <--> 1800 mV at 1500 mV
[ 1.204956] print_constraints: DCDC2: 900 <--> 3300 mV at 1100 mV
[ 1.215026] print_constraints: DCDC3: 900 <--> 1500 mV at 1100 mV
[ 1.225006] print_constraints: LDO1: 1000 <--> 3300 mV at 1800 mV
[ 1.235046] print_constraints: LDO2: 900 <--> 3300 mV at 3300 mV
[ 1.244964] print_constraints: LDO3: 1800 <--> 3300 mV at 1800 mV
[ 1.255035] print_constraints: LDO4: 1800 <--> 3300 mV at 3300 mV
[ 1.262847] omap_i2c.3: alias fck already exists
[ 1.287139] omap_i2c omap_i2c.3: bus 3 rev2.4.0 at 100 kHz
[ 1.294403] davinci-mcasp.0: alias fck already exists
[ 1.303253] registered am33xx_sr device
[ 1.312896] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 1.320861] physmap platform flash device: 01000000 at 08000000
[ 1.328277] physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank. Manufacturer ID 0x000089 Chip ID 0x00227e
[ 1.339141] NOR chip too large to fit in mapping. Attempting to cope...
[ 1.346160] Amd/Fujitsu Extended Query Table at 0x0040
[ 1.351654] Amd/Fujitsu Extended Query version 1.3.
[ 1.357025] number of CFI chips: 1
[ 1.360626] Reducing visibility of 32768KiB chip to 16384KiB
[ 1.366638] mtd: bad character after partition (e)
[ 1.371734] 3 cmdlinepart partitions found on MTD device physmap-flash.0
[ 1.378845] Creating 3 MTD partitions on "physmap-flash.0":
[ 1.384735] 0x000000000000-0x000000400000 : "u-boot"
[ 1.393096] 0x000000400000-0x000000800000 : "kernel"
[ 1.401031] 0x000000800000-0x000001000000 : "rootfs"
[ 1.410675] CAN device driver interface
[ 1.414764] CAN bus driver for Bosch D_CAN controller 1.0
[ 1.467071] davinci_mdio davinci_mdio.0: davinci mdio revision 1.6
[ 1.473632] davinci_mdio davinci_mdio.0: detected phy mask ffffffde
[ 1.482330] davinci_mdio.0: probed
[ 1.485931] davinci_mdio davinci_mdio.0: phy[0]: device 0:00, driver unknown
[ 1.493408] davinci_mdio davinci_mdio.0: phy[5]: device 0:05, driver unknown
[ 1.501617] usbcore: registered new interface driver zd1201
[ 1.507934] usbcore: registered new interface driver cdc_ether
[ 1.514465] usbcore: registered new interface driver cdc_eem
[ 1.520843] usbcore: registered new interface driver dm9601
[ 1.526794] cdc_ncm: 04-Aug-2011
[ 1.530578] usbcore: registered new interface driver cdc_ncm
[ 1.537048] usbcore: registered new interface driver usblp
[ 1.542846] Initializing USB Mass Storage driver...
[ 1.548614] usbcore: registered new interface driver usb-storage
[ 1.554962] USB Mass Storage support registered.
[ 1.560852] mousedev: PS/2 mouse device common for all mice
[ 1.568786] input: ti-tsc as /devices/platform/omap/ti_tscadc/tsc/input/input0
[ 1.578826] rtc-rx8025 1-0032: a power voltage drop was detected, you may have to readjust the clock
[ 1.588958] rtc-rx8025 1-0032: bad conditions detected, resetting date
[ 1.598846] rtc-rx8025 1-0032: rtc core: registered rx8025 as rtc0
[ 1.605743] i2c /dev entries driver
[ 1.610900] Linux video capture interface: v2.00
[ 1.616455] usbcore: registered new interface driver uvcvideo
[ 1.622589] USB Video Class driver (1.1.1)
[ 1.633605] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 1.642700] cpuidle: using governor ladder
[ 1.648223] cpuidle: using governor menu
[ 1.655944] omap4_aes_mod_init: loading AM33X AES driver
[ 1.661865] omap4-aes omap4-aes: AM33X AES hw accel rev: 3.02
[ 1.669250] omap4_aes_probe: probe() done
[ 1.673950] omap4_sham_mod_init: loading AM33X SHA/MD5 driver
[ 1.680328] omap4-sham omap4-sham: AM33X SHA/MD5 hw accel rev: 4.03
[ 1.704559] omap4_sham_probe: probe() done
[ 1.714477] usbcore: registered new interface driver usbhid
[ 1.720428] usbhid: USB HID core driver
[ 1.725769] usbcore: registered new interface driver snd-usb-audio
[ 1.738494] mmc0: host does not support reading read-only switch. assuming write-enable.
[ 1.748657] mmc0: new SDHC card at address 0001
[ 1.755615] mmcblk0: mmc0:0001 SD8GB 7.28 GiB
[ 1.763549] mmcblk0: p1 p2
[ 1.796234] _regulator_get: 3-0018 supply IOVDD not found, using dummy regulator
[ 1.804260] _regulator_get: 3-0018 supply DVDD not found, using dummy regulator
[ 1.812103] _regulator_get: 3-0018 supply AVDD not found, using dummy regulator
[ 1.819946] _regulator_get: 3-0018 supply DRVDD not found, using dummy regulator
[ 1.833648] asoc: tlv320aic3x-hifi <-> davinci-mcasp.0 mapping ok
[ 1.843017] ALSA device list:
[ 1.846160] #0: AM335X EVM
[ 1.849273] oprofile: hardware counters not available
[ 1.854614] oprofile: using timer interrupt.
[ 1.859191] nf_conntrack version 0.5.0 (7197 buckets, 28788 max)
[ 1.866485] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 1.872406] TCP cubic registered
[ 1.875823] NET: Registered protocol family 17
[ 1.880584] can: controller area network core (rev 20090105 abi 8)
[ 1.887298] NET: Registered protocol family 29
[ 1.891998] can: raw protocol (rev 20090105)
[ 1.896514] can: broadcast manager protocol (rev 20090105 t)
[ 1.902587] Registering the dns_resolver key type
[ 1.907714] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 1.915802] ThumbEE CPU extension supported.
[ 1.920440] mux: Failed to setup hwmod io irq -22
[ 1.926788] Power Management for AM33XX family
[ 1.931854] Trying to load am335x-pm-firmware.bin (60 secs timeout)
[ 1.938629] Copied the M3 firmware to UMEM
[ 1.943054] Cortex M3 Firmware Version = 0x181
[ 1.949401] create_regulator: DCDC2: Failed to create debugfs directory
[ 1.957611] smartreflex smartreflex: am33xx_sr_probe: Driver initialized
[ 1.973876] clock: disabling unused clocks to save power
[ 2.007293] Detected MACID=90:70:65:c9:c1:68
[ 2.016143] rtc-rx8025 1-0032: setting system clock to 1970-01-01 00:00:00 UTC (0)
[ 2.065185] kjournald starting. Commit interval 5 seconds
[ 2.075897] EXT3-fs (mmcblk0p2): using internal journal
[ 2.081481] EXT3-fs (mmcblk0p2): recovery complete
[ 2.089172] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
[ 2.096527] VFS: Mounted root (ext3 filesystem) on device 179:2.
[ 2.103851] Freeing init memory: 232K
[ 2.517822] devpts: called with bogus options
错误和可能的信息如下:
# aplay -l
**** List of PLAYBACK Hardware Devices ****
aplay: device_list:281: control open (0): Invalid argument
# ls -ltha
total 8
crw-rw---- 1 root audio 116, 33 May 28 2018 timer
drwxr-xr-x 2 root root 4.0K Jan 1 00:29 .
drwxr-xr-x 7 root root 4.0K Jan 1 00:02 ..
crw-rw---- 1 root audio 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root audio 116, 24 Jan 1 00:00 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Jan 1 00:00 pcmC0D0p
# cat devices
0: [ 0] : control
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33: : timer
# aplay ./Front_Center.wav
ALSA lib confmisc.c:674:(snd_determine_driver) could not open control for card 0
ALSA lib conf.c:3328:(snd_config_hooks_call) function snd_config_hook_load_for_all_cards returned error: Invalid argument
ALSA lib confmisc.c:674:(snd_determine_driver) could not open control for card 0
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_card_driver returned error: Invalid argument
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_concat returned error: Invalid argument
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4248:(_snd_config_evaluate) function snd_func_refer returned error: Invalid argument
ALSA lib conf.c:4727:(snd_config_expand) Evaluate error: Invalid argument
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.default
aplay: main:828: audio open error: Invalid argument
# i2cdetect -r 3
i2cdetect: WARNING! This program can confuse your I2C bus
Continue? [y/N] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
非常感谢您的帮助!