您尚未登录。

#1 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-12 11:56:04

哇酷小二 说:
MagicKind 说:
哇酷小二 说:

你用的是荔枝派nano开发板?还是自己做的板子?

大佬,可以帮我把这个帖子删了吗

请问是什么原因呢?整个帖子删掉吗?

对呀,整个帖子删掉

#2 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-11 22:17:56

哇酷小二 说:
MagicKind 说:
哇酷小二 说:

那先把你的usb搞好吧,至少得有id

大佬,公司项目急,求帮忙,有偿

你用的是荔枝派nano开发板?还是自己做的板子?

大佬,可以帮我把这个帖子删了吗

#3 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 17:44:33

哇酷小二 说:

那先把你的usb搞好吧,至少得有id

大佬,方便教一下怎么样配置usb吗,我这边搞了三四天,感觉该配置的都配置了

#4 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 17:32:42

哇酷小二 说:
MagicKind 说:
MagicKind 说:

这个些功能我去掉了,我现在加上试试

大佬,还是一样的结果

没有VID PID?

没有

#5 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 17:25:40

修改之后,系统启动有一部分提示,我感到很奇怪但是又不知道是什么问题

[    0.499927] 0x000000cc0000-0x000001000000 : "UDISK"
[    0.507841] usbcore: registered new interface driver asix
[    0.514085] usbcore: registered new interface driver new_asix
[    0.520731] usbcore: registered new interface driver ax88179_178a
[    0.527554] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.535312] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.542832] usbcore: registered new interface driver usbtest
[    0.549851] /soc/usbc0@0: could not find phandle
[    0.554993] get regulator_io is no nocare
[    0.559681] sunxi_hcd_host0 1c13000.otghci0-controller: sunxi_hcd host driver
[    0.567624] sunxi_hcd_host0 1c13000.otghci0-controller: new USB bus registered, assigned bus number 1
[    0.579477] hub 1-0:1.0: USB hub found
[    0.583702] hub 1-0:1.0: 1 port detected
[    0.588629] wrn: hcd is not enable, need not stop hcd
[    0.595246] mousedev: PS/2 mouse device common for all mice
[    0.601889] usbip_core: USB/IP Core v1.0.0
[    0.606692] usbcore: registered new interface driver usbip-host
[    0.613379] usbip_host: USB/IP Host Driver v1.0.0
[    0.620403] failed to get gpio-spk and gpio_num
[    0.627335] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin HPOUTR
[    0.635401] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin HPOUTL
[    0.643379] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin SPKL
[    0.651139] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin SPKR
[    0.658897] sunxi-codec-machine sound.2: ASoC: DAPM unknown pin External Speaker
[    0.667326] sunxi-internal-cpudai 1c23c00.cpudai0-controller: ASoC: pcm constructor failed: -12
[    0.677060] sunxi-codec-machine sound.2: ASoC: can't create pcm SUNXI-CODEC :-12
[    0.685341] sunxi-codec-machine sound.2: ASoC: failed to instantiate card -12
[    0.693795] snd_soc_register_card failed -12
[    0.698681] sunxi-codec-machine: probe of sound.2 failed with error -12
[    0.706739] ipip: IPv4 over IPv4 tunneling driver
[    0.713233] gre: GRE over IPv4 demultiplexor driver
[    0.718767] ip_gre: GRE over IPv4 tunneling driver
[    0.726410] TCP: cubic registered
[    0.730217] Initializing XFRM netlink socket
[    0.735009] NET: Registered protocol family 17
[    0.740077] NET: Registered protocol family 15
[    0.745444] VFP support v0.3: not present
[    0.751563] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    0.758792] ALSA device list:
[    0.762097]   No soundcards found.
[    0.779764] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    0.796324] devtmpfs: mounted
[    0.800432] Freeing unused kernel memory: 112K (c038b000 - c03a7000)
mount: mounting none on /dev failed: Resource busy
mount: mounting pstore on /sys/fs/pstore failed: No such file or directory


-- run rc.preboot --
-- set volume --

Failed to open mixer
-- play music --
-- end --
failed to open for pcm 0,0
[    2.790119] usbcore: registered new interface driver cdc_eem
[    2.821395] usbcore: registered new interface driver cdc_ether
[    2.837981] vhci_hcd: module is from the staging directory, the quality is unknown, you have been warned.
[    2.869587] vhci_hcd vhci_hcd: USB/IP Virtual Host Controller
[    2.876009] vhci_hcd vhci_hcd: new USB bus registered, assigned bus number 2
[    2.909730] hub 2-0:1.0: USB hub found
[    2.913976] hub 2-0:1.0: 8 ports detected
[    2.930052] vhci_hcd: USB/IP 'Virtual' Host Controller (VHCI) Driver v1.0.0
-- run rc.final --
insmod F1C200s-board
-- wifi connect --
insmod wifi kernel module --------------------
insmod: can't insert '/lib/modules/3.10.65/xradio_wlan.ko': No such file or directory
start wpa_supplicant ------------------------
Successfully initialized wpa_supplicant
Line 6: Invalid passphrase length 6 (expected: 8..63) '******"'.
Line 6: failed to parse psk '"******"'.
Line 7: failed to parse network block.
Failed to read or parse configuration '/etc/wpa_supplicant.conf'.
start udhcpc ----------------
-- end --

就是下面的提示

[    2.790119] usbcore: registered new interface driver cdc_eem
[    2.821395] usbcore: registered new interface driver cdc_ether
[    2.837981] vhci_hcd: module is from the staging directory, the quality is unknown, you have been warned.
[    2.869587] vhci_hcd vhci_hcd: USB/IP Virtual Host Controller
[    2.876009] vhci_hcd vhci_hcd: new USB bus registered, assigned bus number 2
[    2.909730] hub 2-0:1.0: USB hub found
[    2.913976] hub 2-0:1.0: 8 ports detected
[    2.930052] vhci_hcd: USB/IP 'Virtual' Host Controller (VHCI) Driver v1.0.0

#6 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 17:22:09

MagicKind 说:
哇酷小二 说:

插其他usb设备,比如键盘鼠标,lsusb有没有找到 VID PID?

这个些功能我去掉了,我现在加上试试

大佬,还是一样的结果

#7 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 17:03:57

哇酷小二 说:

插其他usb设备,比如键盘鼠标,lsusb有没有找到 VID PID?

这个些功能我去掉了,我现在加上试试

#8 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 16:58:42

哇酷小二 说:
MagicKind 说:
哇酷小二 说:

usb插电脑,是不是出现了adb设备?

没有,我把这个功能关了

你的usb模式是什么 otg?host?device?

host模式

;--------------------------------
;[usbc0]:控制器0的配置。
;usb_used:USB使能标志。置1,表示系统中USB模块可用,置0,则表示系统USB禁用。
;usb_port_type:USB端口的使用情况。 0:device only;1:host only;2:OTG
;usb_detect_type:USB端口的检查方式。0:不做检测;1:vbus/id检查;2:id/dpdm检查
;usb_id_gpio:USB ID pin脚配置。具体请参考gpio配置说明。
;usb_det_vbus_gpio:USB DET_VBUS pin脚配置。具体请参考gpio配置说明。
;usb_drv_vbus_gpio:USB DRY_VBUS pin脚配置。具体请参考gpio配置说明。
;usb_det_vbus_gpio: "axp_ctrl",表示axp 提供
;--------------------------------
;--------------------------------
;---       USB0控制标志
;--------------------------------
;[usbc0]
;usbc0_used          = 0
;usb_port_type       = 2
;usb_detect_type     = 1
;usb_id_gpio         = port:PH09<0><1><default><default>
;usb_det_vbus_gpio   = "axp_ctrl"
;usb_drv_vbus_gpio   = port:PB07<1><0><default><0>
;usb_host_init_state = 0
;usb_regulator_io    = "nocare"
;usb_regulator_vol   = 0
;usb_wakeup_suspend  = 0
;---       USB Device
;usb_luns            = 3
;usb_serial_unique   = 0
;usb_serial_number   = "20080411"

[usbc0]
usbc0_used          = 1
usb_port_type       = 1
usb_detect_type     = 1
usb_id_gpio         =
usb_det_vbus_gpio   =
usb_board_sel       = 1
usb_drv_vbus_gpio   = 2047
usb_host_init_state = 0
usb_regulator_io    = "nocare"
usb_regulator_vol   = 0
usb_wakeup_suspend  = 0
; USB Device
usb_luns            = 3
usb_serial_unique   = 0
usb_serial_number   = "20080411"

内核配置

<*>   Support for Host-side USB                                                                  │ │  
  │ │                           [ ]     USB verbose debug messages                                                               │ │  
  │ │                           [ ]     USB announce new devices                                                                 │ │  
  │ │                                   *** Miscellaneous USB options ***                                                        │ │  
  │ │                           【*】     Enable USB persist by default                                                            │ │  
  │ │                           [ ]     Dynamic USB minor allocation                                                             │ │  
  │ │                           [ ]     Rely on OTG Targeted Peripherals List                                                    │ │  
  │ │                           [ ]     Disable external hubs                                                                    │ │  
  │ │                           < >     USB Monitor                                                                              │ │  
  │ │                           < >     Support WUSB Cable Based Association (CBA)                                               │ │  
  │ │                                   *** USB Host Controller Drivers ***                                                      │ │  
  │ │                           < >     Cypress C67x00 HCD support                                                               │ │  
  │ │                           < >     xHCI HCD (USB 3.0) support                                                               │ │  
  │ │                           <*>     EHCI HCD (USB 2.0) support                                                               │ │  
  │ │                           [ ]       Root Hub Transaction Translators                                                       │ │  
  │ │                           【*】       Improved Transaction Translator scheduling                                             │ │  
  │ │                           < >     Support for Synopsys Host-AHB USB 2.0 controller                                         │ │  
  │ │                           < >     Generic EHCI driver for a platform device                                                │ │  
  │ │                           < >     OXU210HP HCD support                                                                     │ │  
  │ │                           < >     ISP116X HCD support                                                                      │ │  
  │ │                           < >     ISP 1760 HCD support

#9 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 16:50:59

哇酷小二 说:

usb插电脑,是不是出现了adb设备?

没有,我把这个功能关了

  │ │                               eyesee-mpp  --->                                                                             │ │  
  │ │                               smartlinkd  --->                                                                             │ │  
  │ │                               tina_multimedia_demo  --->                                                                   │ │  
  │ │                           < > MtpDaemon................................................ Tina MTP Daemon                    │ │  
  │ │                           < > adb................................................... adb for Tina Linux                    │ │  
  │ │                           < > adbd_auth_service........................ adb auth service for Tina Linux                    │ │  
  │ │                           < > aec-xt-demo...................... Nuvoton Acoustic Echo Cancellation Demo                    │ │  

#10 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 16:45:18

哇酷小二 说:

神奇 你还是先看下lsusb的结果吧

lsusb命令可以了,但是我无论是插上usb网口还是拔了,也同样有下面的数据,是不是usb这个网口识别不到

root@TinaLinux:/# lsusb 
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002

#11 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 16:14:05

哇酷小二 说:

tina 的 .config

CONFIG_BUSYBOX_DEFAULT_LSUSB

把这个编译开关打开。

大佬,我发现一个奇怪的问题,lsmod没asix这个模块,然后我insmod的时候又报了失败

root@TinaLinux:~# insmod asix.ko 
[   75.103094] asix: module is already loaded
failed to insert asix.ko

#12 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 15:51:59

哇酷小二 说:

lsusb 有网卡的 vid : pid 吗?

好尴尬,大佬,我这没有lsusb这个命令,是我没有编译进内核吗

root@TinaLinux:/# lsusb
-/bin/sh: lsusb: not found

#13 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-09 15:40:47

哇酷小二 说:

lsmod看下加载了什么驱动?然后你在tina linux有没有勾选对应的驱动?

大佬,我试过了,在内核那部分有加载的信息,可是lsmod的时候查不到这个模块asix这个模块,这该怎么办,,,

[    0.508581] usbcore: registered new interface driver asix
[    0.514828] usbcore: registered new interface driver new_asix
[    0.521478] usbcore: registered new interface driver ax88179_178a
[    0.528308] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.536070] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.543580] usbcore: registered new interface driver usbtest
[    0.550631] /soc/usbc0@0: could not find phandle
root@TinaLinux:/# lsmod
cdc_eem                 2247  0
cdc_ether               3199  0
snd_mixer_oss          11988  1 snd_pcm_oss
snd_pcm_oss            30646  0
snd_seq_device          4506  0
vhci_hcd               11699  0
root@TinaLinux:/#

#14 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 14:29:43

raspberryman 说:

先插到电脑Ubuntu看下是什么情况

大佬,我这有个疑惑点,在nano这块板子的/etc,我找不到关于网络配置的文件夹的,

root@TinaLinux:/# ls
bin          lib          proc         rom          sys          var
dev          mnt          pseudo_init  root         tmp          www
etc          overlay      rdinit       sbin         usr
root@TinaLinux:/# ls /etc/
banner               mdev.conf            rc.common
banner.failsafe      modules-boot.d       rc.d
cedarx.conf          modules.d            recorder.cfg
crontabs             mtab                 shadow
device_info          openwrt_release      shells
fstab                openwrt_version      sunxi-keyboard.kl
group                opkg                 ts.conf
hotplug.d            passwd               tslib-env.sh
init.d               pointercal           uci-defaults
inittab              profile              wpa_supplicant.conf
kaiji.wav            rc.button            xr_wifi.conf
root@TinaLinux:/#

#15 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 14:25:17

raspberryman 说:

先插到电脑Ubuntu看下是什么情况

在电脑上面可以识别到那usb转网口模块,就是enx00001000dac1这个网卡

cc@cc:~$ ifconfig
ens33     Link encap:Ethernet  HWaddr 00:0c:29:7b:5c:a1  
          inet addr:192.168.3.114  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::9ee5:415:cec8:5163/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:619023 errors:0 dropped:8 overruns:0 frame:0
          TX packets:26818 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:120983865 (120.9 MB)  TX bytes:2973641 (2.9 MB)

enx00001000dac1 Link encap:Ethernet  HWaddr 00:00:10:00:da:c1  
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::b2cd:a9d0:c7e2:3064/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:719 (719.0 B)  TX bytes:6307 (6.3 KB)

#16 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 14:13:09

raspberryman 说:
MagicKind 说:
raspberryman 说:

usb0网卡是啥呢?

不清楚,而且我还有个问题这usb0网卡每次启动mac都会改变的,enmm,还有如果成功识别到网卡的话不是以ethxx开头的吗,而且我给这usb0配了IP之后和本地的电脑也ping不通,在同一个局域网

这个是不是 rndis网卡?

大佬,求指导啊,我这弄了好久都没弄出来

#17 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 12:04:25

raspberryman 说:
MagicKind 说:
raspberryman 说:

usb0网卡是啥呢?

不清楚,而且我还有个问题这usb0网卡每次启动mac都会改变的,enmm,还有如果成功识别到网卡的话不是以ethxx开头的吗,而且我给这usb0配了IP之后和本地的电脑也ping不通,在同一个局域网

这个是不是 rndis网卡?

不是噢,大佬,我就是想用荔枝派Nano连外网

#18 Re: 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 11:35:50

raspberryman 说:

usb0网卡是啥呢?

不清楚,而且我还有个问题这usb0网卡每次启动mac都会改变的,enmm,还有如果成功识别到网卡的话不是以ethxx开头的吗,而且我给这usb0配了IP之后和本地的电脑也ping不通,在同一个局域网

#19 全志 SOC » 在荔枝派nano环境下,全志tina移植ax88772c的问题求助 » 2021-04-07 11:10:54

MagicKind
回复: 33

我看了全志的tina的linux内核上有关于ax的驱动,然后果断选中,但是编译烧录到荔枝派nano之后,还是无法识别到网口驱动。然后又去找了官方的驱动移植到内核中,发现还是驱动不起来,,,所以来着,请问一下有没有大佬弄过这方面的经验,特地来请指教,小弟在此先谢过了。
系统的启动日子如下:

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.65 (cotodo@cotodo) (gcc version 6.4.1 (OpenWrt/Linaro GCC 6.4-2017.11 2017-11) ) #32 Wed Apr 7 02:56:07 UTC 2021
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Allwinner A1X (Device Tree), model: sun3iw1p1
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] cma: CMA: failed to reserve 32 MiB
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 8192
[    0.000000] free_area_init_node: node 0, pgdat c03c9d84, node_mem_map c03f4000
[    0.000000]   Normal zone: 64 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 8192 pages, LIFO batch:0
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: enforcing=1 earlyprintk=sunxi-uart,0x01c25000 initcall_debug=0 console=ttyS0,115200 loglevel=8 root=/dev/mtdblock4 init=/pseudo_init rdinit=/rdinit partitions=bootlogo@mtdblock1:env@mtdblock2:boot@mtdblock3:rootfs@mtdblock4:rootfs_data@mtdblock5:misc@mtdblock6:private@mtdblock7:UDISK@mtdblock8 cma=32M fb_base=0x81f00000 androidboot.serialno=<NULL> boot_type=3
[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Memory: 32MB = 32MB total
[    0.000000] Memory: 28284k/28284k available, 4484k 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 : 0xc2800000 - 0xff000000   ( 968 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0382f44   (3564 kB)
[    0.000000]       .init : 0xc0383000 - 0xc039e9b0   ( 111 kB)
[    0.000000]       .data : 0xc03a0000 - 0xc03ca708   ( 170 kB)
[    0.000000]        .bss : 0xc03ca708 - 0xc03f33c0   ( 164 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:256
[    0.000000] of_sunxi_clocks_init : sunxi_clk_base[0xf1c20000]
[    0.000000] pll_cpu-set_default_rate=552000000 success!
[    0.000000] pll_video-set_default_rate=297000000 success!
[    0.000000] pll_ddr-set_default_rate=312000000 success!
[    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[    0.000000] Console: colour dummy device 80x30
[    0.005325] Calibrating delay loop... 275.25 BogoMIPS (lpj=1376256)
[    0.075251] pid_max: default: 32768 minimum: 301
[    0.080441] Mount-cache hash table entries: 512
[    0.086441] CPU: Testing write buffer coherency: ok
[    0.092236] Setting up static identity map for 0xc02b0910 - 0xc02b0968
[    0.101515] devtmpfs: initialized
[    0.106934] pinctrl core: initialized pinctrl subsystem
[    0.112793] NET: Registered protocol family 16
[    0.117916] DMA: failed to allocate 256 KiB pool for atomic coherent allocation
[    0.125948] dump_class_init,844, success
[    0.134531] sun3iw1p1-pinctrl pio: initialized sunXi PIO driver
[    0.157355] bio: create slab <bio-0> at 0
[    0.163330] usbcore: registered new interface driver usbfs
[    0.169114] usbcore: registered new interface driver hub
[    0.174995] usbcore: registered new device driver usb
[    0.182144] Switching to clocksource sun3i high-res couter
[    0.206790] get det_vbus is fail, 84
[    0.212265] NET: Registered protocol family 2
[    0.219229] TCP established hash table entries: 512 (order: 0, 4096 bytes)
[    0.226341] TCP bind hash table entries: 512 (order: -1, 2048 bytes)
[    0.233009] TCP: Hash tables configured (established 512 bind 512)
[    0.239566] TCP: reno registered
[    0.242965] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.249081] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.256141] NET: Registered protocol family 1
[    0.273951] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.280625] jffs2: version 2.2. © 2001-2006 Red Hat, Inc.
[    0.287036] msgmni has been set to 55
[    0.294354] io scheduler noop registered
[    0.298651] io scheduler cfq registered (default)
[    0.303525] [pm]aw_pm_init!
[    0.306802] [pm]valid
[    0.309292] [pm]valid
[    0.325993] uart0: ttyS0 at MMIO 0x1c25000 (irq = 104) is a SUNXI
[    0.332439] sw_console_setup()1324 - console setup baud 115200 parity n bits 8, flow n
[    0.340661] console [ttyS0] enabled, bootconsole disabled
[    0.340661] console [ttyS0] enabled, bootconsole disabled
[    0.353208] misc dump reg init
[    0.357596] lradc_battery_probe:lradc_battery_probe ++++++
[    0.363823] lradc_battery_dts_parse:lradc_battery_dts_parse ++++++
[    0.370780] key base: f1c23400
[    0.374351] irq num: 113 !
[    0.377357] battery_data_hw_init:battery_data_hw_init ++++++
[    0.383764] lradc_battery_probe:lradc_battery_probe ------
[    0.392073] spi spi0: master is unqueued, this is deprecated
[    0.399732] m25p80 spi0.0: mx25l12805d (16384 Kbytes) - fast mode
[    0.410363] 9 sunxipart partitions found on MTD device (null)
[    0.416755] Creating 9 MTD partitions on "(null)":
[    0.422166] 0x000000000000-0x000000080000 : "uboot"
[    0.429737] 0x000000080000-0x000000100000 : "bootlogo"
[    0.437368] 0x000000100000-0x000000120000 : "env"
[    0.444638] 0x000000120000-0x0000003e0000 : "boot"
[    0.452060] 0x0000003e0000-0x000000c20000 : "rootfs"
[    0.459722] 0x000000c20000-0x000000ca0000 : "rootfs_data"
[    0.467646] 0x000000ca0000-0x000000cb0000 : "misc"
[    0.474899] 0x000000cb0000-0x000000cc0000 : "private"
[    0.482487] 0x000000cc0000-0x000001000000 : "UDISK"
[    0.490377] usbcore: registered new interface driver asix
[    0.496493] usbcore: registered new interface driver ax88179_178a
[    0.503578] usbcore: registered new interface driver cdc_ether
[    0.510256] usbcore: registered new interface driver cdc_eem
[    0.516750] usbcore: registered new interface driver cdc_ncm
[    0.523250] usbcore: registered new interface driver my_asix
[    0.529593] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.537233] ehci-platform: EHCI generic platform driver
[    0.543365] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.550958] g_ether gadget: using random self ethernet address
[    0.557471] g_ether gadget: using random host ethernet address
[    0.565117] usb0: MAC 9e:97:ac:13:70:f3
[    0.569496] usb0: HOST MAC 0a:5d:06:2a:0b:d7
[    0.574374] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[    0.581793] g_ether gadget: g_ether ready
[    0.587169] /soc/usbc0@0: could not find phandle
[    0.592426] get regulator_io is no nocare
[    0.597026] sunxi_hcd_host0 1c13000.otghci0-controller: sunxi_hcd host driver
[    0.605042] sunxi_hcd_host0 1c13000.otghci0-controller: new USB bus registered, assigned bus number 1
[    0.616819] hub 1-0:1.0: USB hub found
[    0.621163] hub 1-0:1.0: 1 port detected
[    0.626013] wrn: hcd is not enable, need not stop hcd
[    0.633491] usbip_core: USB/IP Core v1.0.0
[    0.638415] usbcore: registered new interface driver usbip-host
[    0.645004] usbip_host: USB/IP Host Driver v1.0.0
[    0.652306] ipip: IPv4 over IPv4 tunneling driver
[    0.658874] gre: GRE over IPv4 demultiplexor driver
[    0.664307] ip_gre: GRE over IPv4 tunneling driver
[    0.672072] TCP: cubic registered
[    0.675769] Initializing XFRM netlink socket
[    0.680690] NET: Registered protocol family 17
[    0.685700] NET: Registered protocol family 15
[    0.691142] VFP support v0.3: not present
[    0.697088] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    0.717378] VFS: Mounted root (squashfs filesystem) readonly on device 31:4.
[    0.738434] devtmpfs: mounted
[    0.742413] Freeing unused kernel memory: 108K (c0383000 - c039e000)
mount: mounting none on /dev failed: Resource busy
mount: mounting pstore on /sys/fs/pstore failed: No such file or directory
-- run rc.preboot --
-- set volume --
Failed to open mixer
-- play music --
-- end --
failed to open for pcm 0,0
-- run rc.final --
insmod F1C200s-board
app start...
-- wifi connect --
insmod wifi kernel module --------------------
insmod: can't insert '/lib/modules/3.10.65/xradio_wlan.ko': No such file or directory
start wpa_supplicant ------------------------
Successfully initialized wpa_supplicant
Line 6: Invalid passphrase length 6 (expected: 8..63) '******"'.
Line 6: failed to parse psk '"******"'.
Line 7: failed to parse network block.
Failed to read or parse configuration '/etc/wpa_supplicant.conf'.
start udhcpc ----------------
-- end --


BusyBox v1.27.2 () built-in shell (ash)

udhcpc: SIOCGIFINDEX: No such device
 _____  _              __     _
|_   _||_| ___  _ _   |  |   |_| ___  _ _  _ _
  | |   _ |   ||   |  |  |__ | ||   || | ||_'_|
  | |  | || | || _ |  |_____||_||_|_||___||_,_|
  |_|  |_||_|_||_|_|  Tina is Based on OpenWrt!
 ----------------------------------------------
 Tina Linux (Neptune, 5C1C9C53)
 ----------------------------------------------
root@TinaLinux:/# ifconfig -a
gre0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-C4-6D-00-00-00-00-00-00-00-00
          NOARP  MTU:1476  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

gretap0   Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          BROADCAST MULTICAST  MTU:1476  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

tunl0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-4C-34-00-00-00-00-00-00-00-00
          NOARP  MTU:0  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

usb0      Link encap:Ethernet  HWaddr 9E:97:AC:13:70:F3
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

root@TinaLinux:/#

#20 Re: 全志 SOC » tina编译错误 » 2021-04-06 09:08:53

cube 说:
cat: checkout: No such file or directory
/*
 * f_rndis.c -- RNDIS link function driver
 *
 * Copyright (C) 2003-2005,2008 David Brownell
 * Copyright (C) 2003-2004 Robert Schwebel, Benedikt Spranger
 * Copyright (C) 2008 Nokia Corporation
 * Copyright (C) 2009 Samsung Electronics
 *                    Author: Michal Nazarewicz (mina86@mina86.com)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

/* #define VERBOSE_DEBUG */

#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/etherdevice.h>

#include <linux/atomic.h>

#include "u_ether.h"
#include "rndis.h"


/*
 * This function is an RNDIS Ethernet port -- a Microsoft protocol that's
 * been promoted instead of the standard CDC Ethernet.  The published RNDIS
 * spec is ambiguous, incomplete, and needlessly complex.  Variants such as
 * ActiveSync have even worse status in terms of specification.
 *
 * In short:  it's a protocol controlled by (and for) Microsoft, not for an
 * Open ecosystem or markets.  Linux supports it *only* because Microsoft
 * doesn't support the CDC Ethernet standard.
 *
 * The RNDIS data transfer model is complex, with multiple Ethernet packets
 * per USB message, and out of band data.  The control model is built around
 * what's essentially an "RNDIS RPC" protocol.  It's all wrapped in a CDC ACM
 * (modem, not Ethernet) veneer, with those ACM descriptors being entirely
 * useless (they're ignored).  RNDIS expects to be the only function in its
 * configuration, so it's no real help if you need composite devices; and
 * it expects to be the first configuration too.
 *
 * There is a single technical advantage of RNDIS over CDC Ethernet, if you
 * discount the fluff that its RPC can be made to deliver: it doesn't need
 * a NOP altsetting for the data interface.  That lets it work on some of the
 * "so smart it's stupid" hardware which takes over configuration changes
 * from the software, and adds restrictions like "no altsettings".
 *
 * Unfortunately MSFT's RNDIS drivers are buggy.  They hang or oops, and
 * have all sorts of contrary-to-specification oddities that can prevent
 * them from working sanely.  Since bugfixes (or accurate specs, letting
 * Linux work around those bugs) are unlikely to ever come from MSFT, you
 * may want to avoid using RNDIS on purely operational grounds.
 *
 * Omissions from the RNDIS 1.0 specification include:
 *
 *   - Power management ... references data that's scattered around lots
 *     of other documentation, which is incorrect/incomplete there too.
 *
 *   - There are various undocumented protocol requirements, like the need
 *     to send garbage in some control-OUT messages.
 *
 *   - MS-Windows drivers sometimes emit undocumented requests.
 */

struct f_rndis {
        struct gether                   port;
        u8                              ctrl_id, data_id;
        u8                              ethaddr[ETH_ALEN];
        u32                             vendorID;
        const char                      *manufacturer;
        int                             config;

        struct usb_ep                   *notify;
        struct usb_request              *notify_req;
        atomic_t                        notify_count;
};

static inline struct f_rndis *func_to_rndis(struct usb_function *f)
{
        return container_of(f, struct f_rndis, port.func);
}

/* peak (theoretical) bulk transfer rate in bits-per-second */
static unsigned int bitrate(struct usb_gadget *g)
{
        if (gadget_is_superspeed(g) && g->speed == USB_SPEED_SUPER)
                return 13 * 1024 * 8 * 1000 * 8;
        else if (gadget_is_dualspeed(g) && g->speed == USB_SPEED_HIGH)
                return 13 * 512 * 8 * 1000 * 8;
        else
                return 19 * 64 * 1 * 1000 * 8;
}

/*-------------------------------------------------------------------------*/

/*
 */

#define RNDIS_STATUS_INTERVAL_MS        32
#define STATUS_BYTECOUNT                8       /* 8 bytes data */


/* interface descriptor: */

static struct usb_interface_descriptor rndis_control_intf = {
        .bLength =              sizeof rndis_control_intf,
        .bDescriptorType =      USB_DT_INTERFACE,

        /* .bInterfaceNumber = DYNAMIC */
        /* status endpoint is optional; this could be patched later */
        .bNumEndpoints =        1,
        .bInterfaceClass =      USB_CLASS_COMM,
        .bInterfaceSubClass =   USB_CDC_SUBCLASS_ACM,
        .bInterfaceProtocol =   USB_CDC_ACM_PROTO_VENDOR,
        /* .iInterface = DYNAMIC */
};

static struct usb_cdc_header_desc header_desc = {
        .bLength =              sizeof header_desc,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
        .bDescriptorSubType =   USB_CDC_HEADER_TYPE,

        .bcdCDC =               cpu_to_le16(0x0110),
};

static struct usb_cdc_call_mgmt_descriptor call_mgmt_descriptor = {
        .bLength =              sizeof call_mgmt_descriptor,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
        .bDescriptorSubType =   USB_CDC_CALL_MANAGEMENT_TYPE,

        .bmCapabilities =       0x00,
        .bDataInterface =       0x01,
};

static struct usb_cdc_acm_descriptor rndis_acm_descriptor = {
        .bLength =              sizeof rndis_acm_descriptor,
        .bDescriptorType =      USB_DT_CS_INTERFACE,
        .bDescriptorSubType =   USB_CDC_ACM_TYPE,

        .bmCapabilities =       0x00,
};

static struct usb_cdc_union_desc rndis_union_desc = {
        .bLength =              sizeof(rndis_union_desc),
        .bDescriptorType =      USB_DT_CS_INTERFACE,
        .bDescriptorSubType =   USB_CDC_UNION_TYPE,
        /* .bMasterInterface0 = DYNAMIC */
        /* .bSlaveInterface0 =  DYNAMIC */
};

/* the data interface has two bulk endpoints */

static struct usb_interface_descriptor rndis_data_intf = {
        .bLength =              sizeof rndis_data_intf,
        .bDescriptorType =      USB_DT_INTERFACE,

        /* .bInterfaceNumber = DYNAMIC */
        .bNumEndpoints =        2,
        .bInterfaceClass =      USB_CLASS_CDC_DATA,
        .bInterfaceSubClass =   0,
        .bInterfaceProtocol =   0,
        /* .iInterface = DYNAMIC */
};


static struct usb_interface_assoc_descriptor
rndis_iad_descriptor = {
        .bLength =              sizeof rndis_iad_descriptor,
        .bDescriptorType =      USB_DT_INTERFACE_ASSOCIATION,

        .bFirstInterface =      0, /* XXX, hardcoded */
        .bInterfaceCount =      2,      // control + data
        .bFunctionClass =       USB_CLASS_COMM,
        .bFunctionSubClass =    USB_CDC_SUBCLASS_ETHERNET,
        .bFunctionProtocol =    USB_CDC_PROTO_NONE,
        /* .iFunction = DYNAMIC */
};

/* full speed support: */

static struct usb_endpoint_descriptor fs_notify_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_INT,
        .wMaxPacketSize =       cpu_to_le16(STATUS_BYTECOUNT),
        .bInterval =            RNDIS_STATUS_INTERVAL_MS,
};

static struct usb_endpoint_descriptor fs_in_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
};

static struct usb_endpoint_descriptor fs_out_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_OUT,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
};

static struct usb_descriptor_header *eth_fs_function[] = {
        (struct usb_descriptor_header *) &rndis_iad_descriptor,

        /* control interface matches ACM, not Ethernet */
        (struct usb_descriptor_header *) &rndis_control_intf,
        (struct usb_descriptor_header *) &header_desc,
        (struct usb_descriptor_header *) &call_mgmt_descriptor,
        (struct usb_descriptor_header *) &rndis_acm_descriptor,
        (struct usb_descriptor_header *) &rndis_union_desc,
        (struct usb_descriptor_header *) &fs_notify_desc,

        /* data interface has no altsetting */
        (struct usb_descriptor_header *) &rndis_data_intf,
        (struct usb_descriptor_header *) &fs_in_desc,
        (struct usb_descriptor_header *) &fs_out_desc,
        NULL,
};

/* high speed support: */

static struct usb_endpoint_descriptor hs_notify_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_INT,
        .wMaxPacketSize =       cpu_to_le16(STATUS_BYTECOUNT),
        .bInterval =            USB_MS_TO_HS_INTERVAL(RNDIS_STATUS_INTERVAL_MS)
};

static struct usb_endpoint_descriptor hs_in_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
        .wMaxPacketSize =       cpu_to_le16(512),
};

static struct usb_endpoint_descriptor hs_out_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_OUT,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
        .wMaxPacketSize =       cpu_to_le16(512),
};

static struct usb_descriptor_header *eth_hs_function[] = {
        (struct usb_descriptor_header *) &rndis_iad_descriptor,

        /* control interface matches ACM, not Ethernet */
        (struct usb_descriptor_header *) &rndis_control_intf,
        (struct usb_descriptor_header *) &header_desc,
        (struct usb_descriptor_header *) &call_mgmt_descriptor,
        (struct usb_descriptor_header *) &rndis_acm_descriptor,
        (struct usb_descriptor_header *) &rndis_union_desc,
        (struct usb_descriptor_header *) &hs_notify_desc,

        /* data interface has no altsetting */
        (struct usb_descriptor_header *) &rndis_data_intf,
        (struct usb_descriptor_header *) &hs_in_desc,
        (struct usb_descriptor_header *) &hs_out_desc,
        NULL,
};

/* super speed support: */

static struct usb_endpoint_descriptor ss_notify_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_INT,
        .wMaxPacketSize =       cpu_to_le16(STATUS_BYTECOUNT),
        .bInterval =            USB_MS_TO_HS_INTERVAL(RNDIS_STATUS_INTERVAL_MS)
};

static struct usb_ss_ep_comp_descriptor ss_intr_comp_desc = {
        .bLength =              sizeof ss_intr_comp_desc,
        .bDescriptorType =      USB_DT_SS_ENDPOINT_COMP,

        /* the following 3 values can be tweaked if necessary */
        /* .bMaxBurst =         0, */
        /* .bmAttributes =      0, */
        .wBytesPerInterval =    cpu_to_le16(STATUS_BYTECOUNT),
};

static struct usb_endpoint_descriptor ss_in_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_IN,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
        .wMaxPacketSize =       cpu_to_le16(1024),
};

static struct usb_endpoint_descriptor ss_out_desc = {
        .bLength =              USB_DT_ENDPOINT_SIZE,
        .bDescriptorType =      USB_DT_ENDPOINT,

        .bEndpointAddress =     USB_DIR_OUT,
        .bmAttributes =         USB_ENDPOINT_XFER_BULK,
        .wMaxPacketSize =       cpu_to_le16(1024),
};

static struct usb_ss_ep_comp_descriptor ss_bulk_comp_desc = {
        .bLength =              sizeof ss_bulk_comp_desc,
        .bDescriptorType =      USB_DT_SS_ENDPOINT_COMP,

        /* the following 2 values can be tweaked if necessary */
        /* .bMaxBurst =         0, */
        /* .bmAttributes =      0, */
};

static struct usb_descriptor_header *eth_ss_function[] = {
        (struct usb_descriptor_header *) &rndis_iad_descriptor,

        /* control interface matches ACM, not Ethernet */
        (struct usb_descriptor_header *) &rndis_control_intf,
        (struct usb_descriptor_header *) &header_desc,
        (struct usb_descriptor_header *) &call_mgmt_descriptor,
        (struct usb_descriptor_header *) &rndis_acm_descriptor,
        (struct usb_descriptor_header *) &rndis_union_desc,
        (struct usb_descriptor_header *) &ss_notify_desc,
        (struct usb_descriptor_header *) &ss_intr_comp_desc,

        /* data interface has no altsetting */
        (struct usb_descriptor_header *) &rndis_data_intf,
        (struct usb_descriptor_header *) &ss_in_desc,
        (struct usb_descriptor_header *) &ss_bulk_comp_desc,
        (struct usb_descriptor_header *) &ss_out_desc,
        (struct usb_descriptor_header *) &ss_bulk_comp_desc,
        NULL,
};

/* string descriptors: */

static struct usb_string rndis_string_defs[] = {
        [0].s = "RNDIS Communications Control",
        [1].s = "RNDIS Ethernet Data",
        [2].s = "RNDIS",
        {  } /* end of list */
};

static struct usb_gadget_strings rndis_string_table = {
        .language =             0x0409, /* en-us */
        .strings =              rndis_string_defs,
};

static struct usb_gadget_strings *rndis_strings[] = {
        &rndis_string_table,
        NULL,
};

/*-------------------------------------------------------------------------*/

static struct sk_buff *rndis_add_header(struct gether *port,
                                        struct sk_buff *skb)
{
        struct sk_buff *skb2;

        skb2 = skb_realloc_headroom(skb, sizeof(struct rndis_packet_msg_type));
        if (skb2)
                rndis_add_hdr(skb2);

        dev_kfree_skb_any(skb);
        return skb2;
}

static void rndis_response_available(void *_rndis)
{
        struct f_rndis                  *rndis = _rndis;
        struct usb_request              *req = rndis->notify_req;
        struct usb_composite_dev        *cdev = rndis->port.func.config->cdev;
        __le32                          *data = req->buf;
        int                             status;

        if (atomic_inc_return(&rndis->notify_count) != 1)
                return;

        /* Send RNDIS RESPONSE_AVAILABLE notification; a
         * USB_CDC_NOTIFY_RESPONSE_AVAILABLE "should" work too
         *
         * This is the only notification defined by RNDIS.
         */
        data[0] = cpu_to_le32(1);
        data[1] = cpu_to_le32(0);

        status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
        if (status) {
                atomic_dec(&rndis->notify_count);
                DBG(cdev, "notify/0 --> %d\n", status);
        }
}

static void rndis_response_complete(struct usb_ep *ep, struct usb_request *req)
{
        struct f_rndis                  *rndis = req->context;
        struct usb_composite_dev        *cdev = rndis->port.func.config->cdev;
        int                             status = req->status;

        /* after TX:
         *  - USB_CDC_GET_ENCAPSULATED_RESPONSE (ep0/control)
         *  - RNDIS_RESPONSE_AVAILABLE (status/irq)
         */
        switch (status) {
        case -ECONNRESET:
        case -ESHUTDOWN:
                /* connection gone */
                atomic_set(&rndis->notify_count, 0);
                break;
        default:
                DBG(cdev, "RNDIS %s response error %d, %d/%d\n",
                        ep->name, status,
                        req->actual, req->length);
                /* FALLTHROUGH */
        case 0:
                if (ep != rndis->notify)
                        break;

                /* handle multiple pending RNDIS_RESPONSE_AVAILABLE
                 * notifications by resending until we're done
                 */
                if (atomic_dec_and_test(&rndis->notify_count))
                        break;
                status = usb_ep_queue(rndis->notify, req, GFP_ATOMIC);
                if (status) {
                        atomic_dec(&rndis->notify_count);
                        DBG(cdev, "notify/1 --> %d\n", status);
                }
                break;
        }
}

static void rndis_command_complete(struct usb_ep *ep, struct usb_request *req)
{
        struct f_rndis                  *rndis = req->context;
        int                             status;

        /* received RNDIS command from USB_CDC_SEND_ENCAPSULATED_COMMAND */
//      spin_lock(&dev->lock);
        status = rndis_msg_parser(rndis->config, (u8 *) req->buf);
        if (status < 0)
                pr_err("RNDIS command error %d, %d/%d\n",
                        status, req->actual, req->length);
//      spin_unlock(&dev->lock);
}

static int
rndis_setup(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
{
        struct f_rndis          *rndis = func_to_rndis(f);
        struct usb_composite_dev *cdev = f->config->cdev;
        struct usb_request      *req = cdev->req;
        int                     value = -EOPNOTSUPP;
        u16                     w_index = le16_to_cpu(ctrl->wIndex);
        u16                     w_value = le16_to_cpu(ctrl->wValue);
        u16                     w_length = le16_to_cpu(ctrl->wLength);

        /* composite driver infrastructure handles everything except
         * CDC class messages; interface activation uses set_alt().
         */
        switch ((ctrl->bRequestType << 8) | ctrl->bRequest) {

        /* RNDIS uses the CDC command encapsulation mechanism to implement
         * an RPC scheme, with much getting/setting of attributes by OID.
         */
        case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8)
                        | USB_CDC_SEND_ENCAPSULATED_COMMAND:
                if (w_value || w_index != rndis->ctrl_id)
                        goto invalid;
                /* read the request; process it later */
                value = w_length;
                req->complete = rndis_command_complete;
                req->context = rndis;
                /* later, rndis_response_available() sends a notification */
                break;

        case ((USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8)
                        | USB_CDC_GET_ENCAPSULATED_RESPONSE:
                if (w_value || w_index != rndis->ctrl_id)
                        goto invalid;
                else {
                        u8 *buf;
                        u32 n;

                        /* return the result */
                        buf = rndis_get_next_response(rndis->config, &n);
                        if (buf) {
                                memcpy(req->buf, buf, n);
                                req->complete = rndis_response_complete;
                                req->context = rndis;
                                rndis_free_response(rndis->config, buf);
                                value = n;
                        }
                        /* else stalls ... spec says to avoid that */
                }
                break;

        default:
invalid:
                VDBG(cdev, "invalid control req%02x.%02x v%04x i%04x l%d\n",
                        ctrl->bRequestType, ctrl->bRequest,
                        w_value, w_index, w_length);
        }

        /* respond with data transfer or status phase? */
        if (value >= 0) {
                DBG(cdev, "rndis req%02x.%02x v%04x i%04x l%d\n",
                        ctrl->bRequestType, ctrl->bRequest,
                        w_value, w_index, w_length);
                req->zero = (value < w_length);
                req->length = value;
                value = usb_ep_queue(cdev->gadget->ep0, req, GFP_ATOMIC);
                if (value < 0)
                        ERROR(cdev, "rndis response on err %d\n", value);
        }

        /* device either stalls (value < 0) or reports success */
        return value;
}


static int rndis_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
{
        struct f_rndis          *rndis = func_to_rndis(f);
        struct usb_composite_dev *cdev = f->config->cdev;

        /* we know alt == 0 */

        if (intf == rndis->ctrl_id) {
                if (rndis->notify->driver_data) {
                        VDBG(cdev, "reset rndis control %d\n", intf);
                        usb_ep_disable(rndis->notify);
                }
                if (!rndis->notify->desc) {
                        VDBG(cdev, "init rndis ctrl %d\n", intf);
                        if (config_ep_by_speed(cdev->gadget, f, rndis->notify))
                                goto fail;
                }
                usb_ep_enable(rndis->notify);
                rndis->notify->driver_data = rndis;

        } else if (intf == rndis->data_id) {
                struct net_device       *net;

                if (rndis->port.in_ep->driver_data) {
                        DBG(cdev, "reset rndis\n");
                        gether_disconnect(&rndis->port);
                }

                if (!rndis->port.in_ep->desc || !rndis->port.out_ep->desc) {
                        DBG(cdev, "init rndis\n");
                        if (config_ep_by_speed(cdev->gadget, f,
                                               rndis->port.in_ep) ||
                            config_ep_by_speed(cdev->gadget, f,
                                               rndis->port.out_ep)) {
                                rndis->port.in_ep->desc = NULL;
                                rndis->port.out_ep->desc = NULL;
                                goto fail;
                        }
                }

                /* Avoid ZLPs; they can be troublesome. */
                rndis->port.is_zlp_ok = false;

                /* RNDIS should be in the "RNDIS uninitialized" state,
                 * either never activated or after rndis_uninit().
                 *
                 * We don't want data to flow here until a nonzero packet
                 * filter is set, at which point it enters "RNDIS data
                 * initialized" state ... but we do want the endpoints
                 * to be activated.  It's a strange little state.
                 *
                 * REVISIT the RNDIS gadget code has done this wrong for a
                 * very long time.  We need another call to the link layer
                 * code -- gether_updown(...bool) maybe -- to do it right.
                 */
                rndis->port.cdc_filter = 0;

                DBG(cdev, "RNDIS RX/TX early activation ... \n");
                net = gether_connect(&rndis->port);
                if (IS_ERR(net))
                        return PTR_ERR(net);

                rndis_set_param_dev(rndis->config, net,
                                &rndis->port.cdc_filter);
        } else
                goto fail;

        return 0;
fail:
        return -EINVAL;
}

static void rndis_disable(struct usb_function *f)
{
        struct f_rndis          *rndis = func_to_rndis(f);
        struct usb_composite_dev *cdev = f->config->cdev;

        if (!rndis->notify->driver_data)
                return;

        DBG(cdev, "rndis deactivated\n");

        rndis_uninit(rndis->config);
        gether_disconnect(&rndis->port);

        usb_ep_disable(rndis->notify);
        rndis->notify->driver_data = NULL;
}

/*-------------------------------------------------------------------------*/

/*
 * This isn't quite the same mechanism as CDC Ethernet, since the
 * notification scheme passes less data, but the same set of link
 * states must be tested.  A key difference is that altsettings are
 * not used to tell whether the link should send packets or not.
 */

static void rndis_open(struct gether *geth)
{
        struct f_rndis          *rndis = func_to_rndis(&geth->func);
        struct usb_composite_dev *cdev = geth->func.config->cdev;

        DBG(cdev, "%s\n", __func__);

        rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3,
                                bitrate(cdev->gadget) / 100);
        rndis_signal_connect(rndis->config);
}

static void rndis_close(struct gether *geth)
{
        struct f_rndis          *rndis = func_to_rndis(&geth->func);

        DBG(geth->func.config->cdev, "%s\n", __func__);

        rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
        rndis_signal_disconnect(rndis->config);
}

/*-------------------------------------------------------------------------*/

/* ethernet function driver setup/binding */

static int
rndis_bind(struct usb_configuration *c, struct usb_function *f)
{
        struct usb_composite_dev *cdev = c->cdev;
        struct f_rndis          *rndis = func_to_rndis(f);
        int                     status;
        struct usb_ep           *ep;

        /* allocate instance-specific interface IDs */
        status = usb_interface_id(c, f);
        if (status < 0)
                goto fail;
        rndis->ctrl_id = status;
        rndis_iad_descriptor.bFirstInterface = status;

        rndis_control_intf.bInterfaceNumber = status;
        rndis_union_desc.bMasterInterface0 = status;

        status = usb_interface_id(c, f);
        if (status < 0)
                goto fail;
        rndis->data_id = status;

        rndis_data_intf.bInterfaceNumber = status;
        rndis_union_desc.bSlaveInterface0 = status;

        status = -ENODEV;

        /* allocate instance-specific endpoints */
        ep = usb_ep_autoconfig(cdev->gadget, &fs_in_desc);
        if (!ep)
                goto fail;
        rndis->port.in_ep = ep;
        ep->driver_data = cdev; /* claim */

        ep = usb_ep_autoconfig(cdev->gadget, &fs_out_desc);
        if (!ep)
                goto fail;
        rndis->port.out_ep = ep;
        ep->driver_data = cdev; /* claim */

        /* NOTE:  a status/notification endpoint is, strictly speaking,
         * optional.  We don't treat it that way though!  It's simpler,
         * and some newer profiles don't treat it as optional.
         */
        ep = usb_ep_autoconfig(cdev->gadget, &fs_notify_desc);
        if (!ep)
                goto fail;
        rndis->notify = ep;
        ep->driver_data = cdev; /* claim */

        status = -ENOMEM;

        /* allocate notification request and buffer */
        rndis->notify_req = usb_ep_alloc_request(ep, GFP_KERNEL);
        if (!rndis->notify_req)
                goto fail;
        rndis->notify_req->buf = kmalloc(STATUS_BYTECOUNT, GFP_KERNEL);
        if (!rndis->notify_req->buf)
                goto fail;
        rndis->notify_req->length = STATUS_BYTECOUNT;
        rndis->notify_req->context = rndis;
        rndis->notify_req->complete = rndis_response_complete;

        /* support all relevant hardware speeds... we expect that when
         * hardware is dual speed, all bulk-capable endpoints work at
         * both speeds
         */
        hs_in_desc.bEndpointAddress = fs_in_desc.bEndpointAddress;
        hs_out_desc.bEndpointAddress = fs_out_desc.bEndpointAddress;
        hs_notify_desc.bEndpointAddress = fs_notify_desc.bEndpointAddress;

        ss_in_desc.bEndpointAddress = fs_in_desc.bEndpointAddress;
        ss_out_desc.bEndpointAddress = fs_out_desc.bEndpointAddress;
        ss_notify_desc.bEndpointAddress = fs_notify_desc.bEndpointAddress;

        status = usb_assign_descriptors(f, eth_fs_function, eth_hs_function,
                        eth_ss_function);
        if (status)
                goto fail;

        rndis->port.open = rndis_open;
        rndis->port.close = rndis_close;

        status = rndis_register(rndis_response_available, rndis);
        if (status < 0)
                goto fail;
        rndis->config = status;

        rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
        rndis_set_host_mac(rndis->config, rndis->ethaddr);

        if (rndis->manufacturer && rndis->vendorID &&
                        rndis_set_param_vendor(rndis->config, rndis->vendorID,
                                               rndis->manufacturer))
                goto fail;

        /* NOTE:  all that is done without knowing or caring about
         * the network link ... which is unavailable to this code
         * until we're activated via set_alt().
         */

        DBG(cdev, "RNDIS: %s speed IN/%s OUT/%s NOTIFY/%s\n",
                        gadget_is_superspeed(c->cdev->gadget) ? "super" :
                        gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
                        rndis->port.in_ep->name, rndis->port.out_ep->name,
                        rndis->notify->name);
        return 0;

fail:
        usb_free_all_descriptors(f);

        if (rndis->notify_req) {
                kfree(rndis->notify_req->buf);
                usb_ep_free_request(rndis->notify, rndis->notify_req);
        }

        /* we might as well release our claims on endpoints */
        if (rndis->notify)
                rndis->notify->driver_data = NULL;
        if (rndis->port.out_ep)
                rndis->port.out_ep->driver_data = NULL;
        if (rndis->port.in_ep)
                rndis->port.in_ep->driver_data = NULL;

        ERROR(cdev, "%s: can't bind, err %d\n", f->name, status);

        return status;
}

static void
rndis_unbind(struct usb_configuration *c, struct usb_function *f)
{
        struct f_rndis          *rndis = func_to_rndis(f);

        rndis_deregister(rndis->config);
        rndis_exit();

        rndis_string_defs[0].id = 0;
        usb_free_all_descriptors(f);

        kfree(rndis->notify_req->buf);
        usb_ep_free_request(rndis->notify, rndis->notify_req);

        kfree(rndis);
}

/* Some controllers can't support RNDIS ... */
static inline bool can_support_rndis(struct usb_configuration *c)
{
        /* everything else is *presumably* fine */
        return true;
}

int
rndis_bind_config_vendor(struct usb_configuration *c, u8 ethaddr[ETH_ALEN],
                u32 vendorID, const char *manufacturer, struct eth_dev *dev)
{
        struct f_rndis  *rndis;
        int             status;

        if (!can_support_rndis(c) || !ethaddr)
                return -EINVAL;

        if (rndis_string_defs[0].id == 0) {
                /* ... and setup RNDIS itself */
                status = rndis_init();
                if (status < 0)
                        return status;

                status = usb_string_ids_tab(c->cdev, rndis_string_defs);
                if (status)
                        return status;

                rndis_control_intf.iInterface = rndis_string_defs[0].id;
                rndis_data_intf.iInterface = rndis_string_defs[1].id;
                rndis_iad_descriptor.iFunction = rndis_string_defs[2].id;
        }

        /* allocate and initialize one new instance */
        status = -ENOMEM;
        rndis = kzalloc(sizeof *rndis, GFP_KERNEL);
        if (!rndis)
                goto fail;

        memcpy(rndis->ethaddr, ethaddr, ETH_ALEN);
        rndis->vendorID = vendorID;
        rndis->manufacturer = manufacturer;

        rndis->port.ioport = dev;
        /* RNDIS activates when the host changes this filter */
        rndis->port.cdc_filter = 0;

        /* RNDIS has special (and complex) framing */
        rndis->port.header_len = sizeof(struct rndis_packet_msg_type);
        rndis->port.wrap = rndis_add_header;
        rndis->port.unwrap = rndis_rm_hdr;

        rndis->port.func.name = "rndis";
        rndis->port.func.strings = rndis_strings;
        /* descriptors are per-instance copies */
        rndis->port.func.bind = rndis_bind;
        rndis->port.func.unbind = rndis_unbind;
        rndis->port.func.set_alt = rndis_set_alt;
        rndis->port.func.setup = rndis_setup;
        rndis->port.func.disable = rndis_disable;

        status = usb_add_function(c, &rndis->port.func);
        if (status) {
                kfree(rndis);
fail:
                rndis_exit();
        }
        return status;
}

直接替换这个文件试一试: drivers/usb/gadget/f_rndis.c

大佬,你是将下面这部分的定义和有关rndis_dl_max_pkt_per_xfer 这个变量的部分去掉了吧,这样做的话有什么影响吗

static unsigned int rndis_dl_max_pkt_per_xfer = 3;
// module_param(rndis_dl_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
// MODULE_PARM_DESC(rndis_dl_max_pkt_per_xfer,
// 	"Maximum packets per transfer for DL aggregation");

static unsigned int rndis_ul_max_pkt_per_xfer = 3;
// module_param(rndis_ul_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
// MODULE_PARM_DESC(rndis_ul_max_pkt_per_xfer,
//        "Maximum packets per transfer for UL aggregation");

#21 全志 SOC » tina编译错误 » 2021-04-05 16:42:23

MagicKind
回复: 3
  │ │                         --- USB Gadget Support                                                                         │ │  
  │ │                         [ ]   Debugging messages (DEVELOPMENT)                                                         │ │  
  │ │                         [ ]   Debugging information files (DEVELOPMENT)                                                │ │  
  │ │                         [ ]   Debugging information files in debugfs (DEVELOPMENT)                                     │ │  
  │ │                         (2)   Maximum VBUS Power usage (2-500 mA)                                                      │ │  
  │ │                         (2)   Number of storage pipeline buffers                                                       │ │  
  │ │                               USB Peripheral Controller  --->                                                          │ │  
  │ │                         <*>   USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support))  --->                   │ │  
  │ │                                 Ethernet Gadget (with CDC Ethernet support)                                            │ │  
  │ │                         【*】       RNDIS support                                                                        │ │  
  │ │                         [ ]       Ethernet Emulation Model (EEM) support                                               │ │  
  │ │                                                                                                                        │ │  
  │ │                                                                           

RNDIS support这个选项一选上就报错,请问一下大佬知道是什么问题吗

In file included from drivers/usb/gadget/ether.c:106:0:
drivers/usb/gadget/f_rndis.c:70:41: error: expected ')' before 'uint'
 module_param(rndis_dl_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
                                         ^~~~
drivers/usb/gadget/f_rndis.c:72:2: error: expected ')' before string constant
  "Maximum packets per transfer for DL aggregation");
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/gadget/f_rndis.c:75:41: error: expected ')' before 'uint'
 module_param(rndis_ul_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
                                         ^~~~
drivers/usb/gadget/f_rndis.c:77:8: error: expected ')' before string constant
        "Maximum packets per transfer for UL aggregation");
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scripts/Makefile.build:308: recipe for target 'drivers/usb/gadget/ether.o' failed
make[8]: *** [drivers/usb/gadget/ether.o] Error 1
scripts/Makefile.build:455: recipe for target 'drivers/usb/gadget' failed
make[7]: *** [drivers/usb/gadget] Error 2
scripts/Makefile.build:455: recipe for target 'drivers/usb' failed
make[6]: *** [drivers/usb] Error 2
Makefile:797: recipe for target 'drivers' failed
make[5]: *** [drivers] Error 2

#22 Re: 全志 SOC » F1C100S 使用BSP USB转以太网,USB摄像头,USB转串口,U盘/读卡器 » 2021-04-01 16:38:54

大佬,请问一下,在Linux那边你是怎么样配置的,我这边插入usb网口都没反应

#23 全志 SOC » 问题求助,tina的移植ax88772c » 2021-04-01 16:01:27

MagicKind
回复: 0
In file included from drivers/usb/gadget/ether.c:106:0:
drivers/usb/gadget/f_rndis.c:70:41: error: expected ')' before 'uint'
 module_param(rndis_dl_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
                                         ^~~~
drivers/usb/gadget/f_rndis.c:72:2: error: expected ')' before string constant
  "Maximum packets per transfer for DL aggregation");
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/gadget/f_rndis.c:75:41: error: expected ')' before 'uint'
 module_param(rndis_ul_max_pkt_per_xfer, uint, S_IRUGO | S_IWUSR);
                                         ^~~~
drivers/usb/gadget/f_rndis.c:77:8: error: expected ')' before string constant
        "Maximum packets per transfer for UL aggregation");
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from include/linux/printk.h:5:0,
                 from include/linux/kernel.h:13,
                 from drivers/usb/gadget/ether.c:16:
include/linux/init.h:299:27: error: redefinition of '__inittest'
  static inline initcall_t __inittest(void)  \
                           ^
drivers/usb/gadget/ether.c:368:1: note: in expansion of macro 'module_init'
 module_init(init);
 ^~~~~~~~~~~
include/linux/init.h:299:27: note: previous definition of '__inittest' was here
  static inline initcall_t __inittest(void)  \
                           ^
drivers/usb/gadget/u_ether.c:1179:1: note: in expansion of macro 'module_init'
 module_init(gether_init);
 ^~~~~~~~~~~
include/linux/init.h:301:6: error: redefinition of 'init_module'
  int init_module(void) __attribute__((alias(#initfn)));
      ^
drivers/usb/gadget/ether.c:368:1: note: in expansion of macro 'module_init'
 module_init(init);
 ^~~~~~~~~~~
include/linux/init.h:301:6: note: previous definition of 'init_module' was here
  int init_module(void) __attribute__((alias(#initfn)));
      ^
drivers/usb/gadget/u_ether.c:1179:1: note: in expansion of macro 'module_init'
 module_init(gether_init);
 ^~~~~~~~~~~
include/linux/init.h:305:27: error: redefinition of '__exittest'
  static inline exitcall_t __exittest(void)  \
                           ^
drivers/usb/gadget/ether.c:374:1: note: in expansion of macro 'module_exit'
 module_exit(cleanup);
 ^~~~~~~~~~~
include/linux/init.h:305:27: note: previous definition of '__exittest' was here
  static inline exitcall_t __exittest(void)  \
                           ^
drivers/usb/gadget/u_ether.c:1186:1: note: in expansion of macro 'module_exit'
 module_exit(gether_exit);
 ^~~~~~~~~~~
include/linux/init.h:307:7: error: redefinition of 'cleanup_module'
  void cleanup_module(void) __attribute__((alias(#exitfn)));
       ^
drivers/usb/gadget/ether.c:374:1: note: in expansion of macro 'module_exit'
 module_exit(cleanup);
 ^~~~~~~~~~~
include/linux/init.h:307:7: note: previous definition of 'cleanup_module' was here
  void cleanup_module(void) __attribute__((alias(#exitfn)));
       ^
drivers/usb/gadget/u_ether.c:1186:1: note: in expansion of macro 'module_exit'
 module_exit(gether_exit);
 ^~~~~~~~~~~
scripts/Makefile.build:308: recipe for target 'drivers/usb/gadget/ether.o' failed

请问一下,有没有大佬知道这是什么错误吗,我在内核的usb选项已选择【*】      RNDIS support编译就报上面的错误

#24 Re: 全志 SOC » 求助荔枝派nano如何使用AX88772 » 2021-04-01 11:01:08

webb_2002 说:
MagicKind 说:

各位大佬请问一下,如何在tina上移植AX88772的驱动

直接移植编译成ko就可以了。

那系统内核,要配置什么吗

#25 全志 SOC » 求助荔枝派nano如何使用AX88772 » 2021-03-31 12:07:50

MagicKind
回复: 2

各位大佬请问一下,如何在tina上移植AX88772的驱动

#26 Re: 全志 SOC » 求助F1C200S启动时,无法挂在根文件 » 2021-03-31 09:48:58

无根浮萍 说:

@MagicKind 感觉前面那一步应该可以用不做, 只改 m25p80.c 就可以了

嗯嗯,应该可以的,不过,能用我就没有试了

#27 Re: 全志 SOC » 求助F1C200S启动时,无法挂在根文件 » 2021-03-30 17:41:54

raspberryman 说:

请问是如何修改的?

我修改了两个地方,一个是设备树文件sun3iw1p1-c200s-F1C200s.dts文件

			nor_flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
                                将compatible = "st,m25p64";
				改为compatible = "macronix,mx25l12805d","jedec,spi-nor";
				spi-max-frequency = <50000000>;
				reg = <0>;	/* Chip select 0 */
			};

一个是m25p80.c文件

{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
改为
{ "mx25l12805d", INFO(0x0b4018, 0, 64 * 1024, 256, 0) },

#29 Re: 全志 SOC » 求助F1C200S启动时,无法挂在根文件 » 2021-03-30 11:18:22

大佬,可以方便指导一下,怎么样修改的吗,我改不成功

#30 全志 SOC » 求助F1C200S启动时,无法挂在根文件 » 2021-03-30 10:13:20

MagicKind
回复: 7

启动日志
uboot部分

U-Boot 2014.07 (Mar 27 2021 - 11:07:01) Allwinner Technology 

initcall: 80809bd0
uboot commit : fe4e5a2b4205c27be53bc7aa7ed0396a9774aa21
 
U-Boot code: 80800000 -> 8083C29C  BSS: -> 80873078
initcall: 80800eb0
initcall: 80809908
initcall: 80817dc0
initcall: 80809e20
i2c_init: by cpux
gpio: conut=2, set gpio = 1
---name = twi_scl, port = 4,portnum=12,mul_sel=3,pull=-1 drive= -1, data=-1
+++name = twi_sda, port = 4,portnum=0,mul_sel=3,pull=-1 drive= -1, data=-1
[I2C-DEBUG]:i2c_set_clock() 354 
[I2C-ERROR]:twi_send_clk_9pulse() 136 SDA is still Stuck Low, failed. 
i2c_init ok
[0.238]pmbus:   ready
initcall: 80800d50
axp: get node[/soc/pmu0] error
axp_probe error
[0.247]PMU: cpux 408 Mhz,AXI=408 Mhz
PLL6=600 Mhz,AHB1=200 Mhz, APB1=100Mhz 
initcall: 80804664
key value = 4294967295, fel_key = [256,426]
initcall: 80809bb8
DRAM:  initcall: 80805e6c
32 MiB
initcall: 80809f00
Monitor len: 00073078
Ram size: 02000000
Ram top: 82000000
initcall: 80809b8c
Reserving 1048576k for uboot debugbuffer at 81f00000
initcall: 80809944
initcall: 80809b34
TLB table from 81ef0000 to 81ef4000
initcall: 8080995c
initcall: 80809ae8
Reserving 460k for U-Boot at: 81e7c000
initcall: 80809a84
Reserving 16640k for malloc() at: 80e3c000
Reserving 2048k for nocache malloc() at: 80c00000
initcall: 80809ddc
Reserving 88 Bytes for Board Info at: 80bfffa8
initcall: 80809964
initcall: 80809a50
Reserving 328 Bytes for Global Data at: 80bffe60
initcall: 80809d18
Reserving 49824 Bytes for FDT at: 80be7920
initcall: 80809cb0
Reserving 28k for soc config at: 80be0920
initcall: 8080996c
initcall: 808099ec
Reserving 8192 Bytes for IRQ stack at: 80bde910
initcall: 80809ee8
initcall: 808099d0
New Stack Pointer is: 80bde900
initcall: 80809c40
[0.344]fdt addr: 0x80be7920
[0.346]gd->fdt_size: 0xc2a0
initcall: 80809c14
initcall: 80809974
initcall: 8080997c
Relocation Offset is: 0167c000
Relocating to 81e7c000, new gd at 80bffe60, sp at 80bde900
before fix: vector 0, addr 81e7c660 ,value 0x80800904
after  fix: vector 0, addr 81e7c660 ,value 0x81e7c904
before fix: vector 1, addr 81e7c664 ,value 0x808006a0
after  fix: vector 1, addr 81e7c664 ,value 0x81e7c6a0
before fix: vector 2, addr 81e7c668 ,value 0x80800700
after  fix: vector 2, addr 81e7c668 ,value 0x81e7c700
before fix: vector 3, addr 81e7c66c ,value 0x80800760
after  fix: vector 3, addr 81e7c66c ,value 0x81e7c760
before fix: vector 4, addr 81e7c670 ,value 0x808007c0
after  fix: vector 4, addr 81e7c670 ,value 0x81e7c7c0
before fix: vector 5, addr 81e7c674 ,value 0x80800820
after  fix: vector 5, addr 81e7c674 ,value 0x81e7c820
before fix: vector 6, addr 81e7c678 ,value 0x80800880
after  fix: vector 6, addr 81e7c678 ,value 0x81e7c880
before fix: vector 7, addr 81e7c67c ,value 0x808008c0
after  fix: vector 7, addr 81e7c67c ,value 0x81e7c8c0
initcall: 81e855a0
initcall: 81e85750
initcall: 80809740
initcall: 80809730
dram_bank_mmu_setup: bank: 0
initcall: 80805e48
initcall: 808095a8
initcall: 808096c0
Now running in RAM - U-Boot at: 81e7c000
initcall: 808095d8
initcall: 808096dc
malloc start addr is 80e3c000, size 16640k 
no cache malloc start addr is 80c00000, size 16640k 
initcall: 80800fb0
initcall: 80809598
initcall: 808095e0
axp: get node[/soc/pmu0] error
initcall: 808136e4
initcall: 808096b0
initcall: 80810dec
initcall: 80801a44
IRQ_STACK_START=0x80be090c
initcall: 808096a0
initcall: 80809690
int sunxi_dma_init---
irq enable
initcall: 80805e00
initcall: 808097f0
[0.540]flash init start
workmode = 0,storage type = 3
[0.545]spinor:   0
flash size =0x8000 sectors
sunxi spinor is initing...int sunxi_dma_init---
irq enable
sunxi_dma_install_int ok
sunxi_dma_install_int ok
gpio: conut=4, set gpio = 1
---name = spi0_cs0, port = 3,portnum=1,mul_sel=2,pull=1 drive= -1, data=-1
+++name = spi0_sclk, port = 3,portnum=0,mul_sel=2,pull=-1 drive= -1, data=-1
+++name = spi0_mosi, port = 3,portnum=3,mul_sel=2,pull=-1 drive= -1, data=-1
+++name = spi0_miso, port = 3,portnum=2,mul_sel=2,pull=-1 drive= -1, data=-1
OK
spinor id:0x18400b
spi_freq = 40000000
[0.593]sunxi flash init ok
[0.595]sunxi flash init ok
sunxi flash init uboot
sunxi flash read : start 0, sector 32
spinor read: start 0x0, sector 0x20
spinor read: start 0x3e0, sector 0x20
drivers/spinor/sunxi_spinor.c 864
used mbr [0], count = 8
[0.617]flash init end
initcall: 80809670
[0.621]try to burn key
initcall: 8080961c
fdtdec_get_config_int: load-environment
env_relocate_spec storage_type = 3
sunxi flash read : start 1056, sector 512
spinor read: start 0x420, sector 0x200
spinor read: start 0x800, sector 0x200
drivers/spinor/sunxi_spinor.c 864
Destroy Hash Table: 81eb7864 table = 00000000
Create Hash Table: N=512
DELETE CANDIDATE: ""
hdelete: DELETE key ""
DELETE ERROR ##############################
INSERT: table 81eb7864, filled 1/521 rv 80e5c9e0 ==> name="enforcing" value="1"
INSERT: table 81eb7864, filled 2/521 rv 80e5cc60 ==> name="earlyprintk" value="sunxi-uart,0x01c25000"
INSERT: table 81eb7864, filled 3/521 rv 80e5d070 ==> name="initcall_debug" value="0"
INSERT: table 81eb7864, filled 4/521 rv 80e5e448 ==> name="console" value="ttyS0,115200"
INSERT: table 81eb7864, filled 5/521 rv 80e5df5c ==> name="nor_root" value="/dev/mtdblock4"
INSERT: table 81eb7864, filled 6/521 rv 80e5d688 ==> name="nand_root" value="/dev/nandd"
INSERT: table 81eb7864, filled 7/521 rv 80e5cdb4 ==> name="mmc_root" value="/dev/mmcblk0p7"
INSERT: table 81eb7864, filled 8/521 rv 80e5cda0 ==> name="init" value="/pseudo_init"
INSERT: table 81eb7864, filled 9/521 rv 80e5cfd0 ==> name="rdinit" value="/rdinit"
INSERT: table 81eb7864, filled 10/521 rv 80e5d660 ==> name="loglevel" value="8"
INSERT: table 81eb7864, filled 11/521 rv 80e5e178 ==> name="cma" value="32M"
INSERT: table 81eb7864, filled 12/521 rv 80e5cb84 ==> name="verify" value="no"
INSERT: table 81eb7864, filled 13/521 rv 80e5dbd8 ==> name="rootdelay" value="5"
INSERT: table 81eb7864, filled 14/521 rv 80e5e894 ==> name="setargs_nor" value="setenv bootargs enfor"
INSERT: table 81eb7864, filled 15/521 rv 80e5ea24 ==> name="setargs_nand" value="setenv bootargs enfo"
INSERT: table 81eb7864, filled 16/521 rv 80e5c300 ==> name="setargs_mmc" value="setenv  bootargs enfo"
INSERT: table 81eb7864, filled 17/521 rv 80e5ce90 ==> name="boot_normal" value="sunxi_flash read 8000"
INSERT: table 81eb7864, filled 18/521 rv 80e5d638 ==> name="boot_recovery" value="sunxi_flash read 80"
INSERT: table 81eb7864, filled 19/521 rv 80e5e010 ==> name="boot_fastboot" value="fastboot"
INSERT: table 81eb7864, filled 20/521 rv 80e5d2b4 ==> name="recovery_key_value_max" value="0x13"
INSERT: table 81eb7864, filled 21/521 rv 80e5d8e0 ==> name="recovery_key_value_min" value="0x10"
INSERT: table 81eb7864, filled 22/521 rv 80e5cbe8 ==> name="fastboot_key_value_max" value="0x8"
INSERT: table 81eb7864, filled 23/521 rv 80e5dfac ==> name="fastboot_key_value_min" value="0x2"
INSERT: table 81eb7864, filled 24/521 rv 80e5da98 ==> name="bootdelay" value="3"
INSERT: table 81eb7864, filled 25/521 rv 80e5d23c ==> name="bootcmd" value="run setargs_nor boot_norm"
INSERT: free(data = 80e3c180)
INSERT: done
initcall: 8080960c
do not find fastboot status flag
--------fastboot partitions--------
-total partitions:8-
-name-        -start-       -size-      
bootlogo    : 4000          80000       
env         : 84000         80000       
boot        : 104000        2c0000      
rootfs      : 3c4000        820000      
rootfs_data : be4000        80000       
misc        : c64000        10000       
private     : c74000        10000       
UDISK       : c84000        0           
-----------------------------------
Initial value for argc=3
Final value for argc=3
[1.009]base bootcmd=run setargs_nor boot_normal
[1.013]key -1
[1.014]cant find rcvy value
[1.017]cant find fstbt value
[1.020]misc partition found
sunxi flash read : start 25376, sector 4
spinor read: start 0x6320, sector 0x4
spinor read: start 0x6700, sector 0x4
drivers/spinor/sunxi_spinor.c 864
Initial value for argc=3
Final value for argc=3
[1.040]to be run cmd=run setargs_nor boot_normal
disable nand error: FDT_ERR_BADPATH
disable nand error: FDT_ERR_BADPATH
[1.061](weak)update dtb dram start
## error: update_fdt_dram_para : FDT_ERR_NOTFOUND
initcall: 808043a4
PowerBus = 0( 2:vBus 3:acBus other: not exist)
no battery exist
sunxi_bmp_logo_display
initcall: 808095d0
initcall: 808095f0
[1.085]inter uboot shell
### main_loop entered: bootdelay=3

### main_loop: bootcmd="run setargs_nor boot_normal"
Hit any key to stop autoboot:  0 
Initial value for argc=12
Final value for argc=12
[4.105]read partition: boot or recovery
sunxi flash read : start 2080, sector 64
spinor read: start 0x820, sector 0x40
spinor read: start 0xc00, sector 0x40
drivers/spinor/sunxi_spinor.c 864
rblock=5089, start=2080
sunxi flash read : start 2144, sector 5089
spinor read: start 0x860, sector 0x13e1
spinor read: start 0xc40, sector 0x13e1
drivers/spinor/sunxi_spinor.c 864
[4.353]sunxi flash read :offset 104000, 2638672 bytes OK
Initial value for argc=3
Final value for argc=3
## Current stack ends at 0x80bde628 *  kernel: cmdline image address = 0x80007fc0
## Booting kernel from Legacy Image at 80007fc0 ...
   Image Name:   ARM OpenWrt Linux-3.10.65
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2638096 Bytes = 2.5 MiB
   Load Address: 80008000
   Entry Point:  80008000
   kernel data at 0x80008000, len = 0x00284110 (2638096)
## No init Ramdisk
   ramdisk start = 0x00000000, ramdisk end = 0x00000000
Initial value for argc=3
Final value for argc=3
   XIP Kernel Image ... OK
   kernel loaded at 0x80008000, end = 0x8028c110
using: FDT
   reserving fdt memory region: addr=81000000 size=10000
## cmdline at 0x80bdd520 ... 0x80bdd676
## initrd_high = 0xffffffff, copy_to_ram = 1
   ramdisk load start = 0x00000000, ramdisk load end = 0x00000000
   Using Device Tree in place at 81000000, end 8100f29f
Initial value for argc=3
Final value for argc=3
No ethernet MAC Address defined
## Transferring control to Linux (at address 80008000)...

内核部分

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.65 (cotodo@cotodo) (gcc version 6.4.1 (OpenWrt/Linaro GCC 6.4-2017.1
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[    0.000000] CPU: VIVT data cache, VIVT instruction cache
[    0.000000] Machine: Allwinner A1X (Device Tree), model: sun3iw1p1
[    0.000000] bootconsole [earlycon0] enabled
[    0.000000] cma: CMA: failed to reserve 32 MiB
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] On node 0 totalpages: 8192
[    0.000000] free_area_init_node: node 0, pgdat c055d36c, node_mem_map c058b000
[    0.000000]   Normal zone: 64 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 8192 pages, LIFO batch:0
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
[    0.000000] Kernel command line: enforcing=1 earlyprintk=sunxi-uart,0x01c25000 initcall_debug=0 co3
[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Memory: 32MB = 32MB total
[    0.000000] Memory: 26656k/26656k available, 6112k 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 : 0xc2800000 - 0xff000000   ( 968 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0453f84   (4400 kB)
[    0.000000]       .init : 0xc0454000 - 0xc0472390   ( 121 kB)
[    0.000000]       .data : 0xc0474000 - 0xc055dc88   ( 936 kB)
[    0.000000]        .bss : 0xc055dc88 - 0xc058aba0   ( 180 kB)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:256
[    0.000000] of_sunxi_clocks_init : sunxi_clk_base[0xf1c20000]
[    0.000000] pll_cpu-set_default_rate=552000000 success!
[    0.000000] pll_video-set_default_rate=297000000 success!
[    0.000000] pll_ddr-set_default_rate=312000000 success!
[    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[    0.000000] Console: colour dummy device 80x30
[    0.005326] Calibrating delay loop... 275.25 BogoMIPS (lpj=1376256)
[    0.075249] pid_max: default: 32768 minimum: 301
[    0.080423] Mount-cache hash table entries: 512
[    0.086411] CPU: Testing write buffer coherency: ok
[    0.092197] Setting up static identity map for 0xc0350938 - 0xc0350990
[    0.101482] devtmpfs: initialized
[    0.106949] pinctrl core: initialized pinctrl subsystem
[    0.112808] NET: Registered protocol family 16
[    0.117963] DMA: failed to allocate 256 KiB pool for atomic coherent allocation
[    0.125991] dump_class_init,844, success
[    0.134787] sun3iw1p1-pinctrl pio: initialized sunXi PIO driver
[    0.160428] bio: create slab <bio-0> at 0
[    0.165942] pwm module init!
[    0.170734] SCSI subsystem initialized
[    0.175059] usbcore: registered new interface driver usbfs
[    0.180858] usbcore: registered new interface driver hub
[    0.186748] usbcore: registered new device driver usb
[    0.194354] gpio=0,mul_sel=0,pull=0,drv_level=0,data=0
[    0.199825] twi_start()387 - [i2c0] START can't sendout!
[    0.205623] twi_start()387 - [i2c0] START can't sendout!
[    0.211330] twi_start()387 - [i2c0] START can't sendout!
[    0.216965] pcf857x 0-0020: retry commucation.7
[    0.221782] twi_start()387 - [i2c0] START can't sendout!
[    0.227512] twi_start()387 - [i2c0] START can't sendout!
[    0.233234] twi_start()387 - [i2c0] START can't sendout!
[    0.238825] pcf857x 0-0020: retry commucation.6
[    0.243661] twi_start()387 - [i2c0] START can't sendout!
[    0.249362] twi_start()387 - [i2c0] START can't sendout!
[    0.255084] twi_start()387 - [i2c0] START can't sendout!
[    0.260674] pcf857x 0-0020: retry commucation.5
[    0.265507] twi_start()387 - [i2c0] START can't sendout!
[    0.271207] twi_start()387 - [i2c0] START can't sendout!
[    0.276929] twi_start()387 - [i2c0] START can't sendout!
[    0.282536] pcf857x 0-0020: retry commucation.4
[    0.287348] twi_start()387 - [i2c0] START can't sendout!
[    0.293070] twi_start()387 - [i2c0] START can't sendout!
[    0.298772] twi_start()387 - [i2c0] START can't sendout!
[    0.304377] pcf857x 0-0020: retry commucation.3
[    0.309189] twi_start()387 - [i2c0] START can't sendout!
[    0.314910] twi_start()387 - [i2c0] START can't sendout!
[    0.320611] twi_start()387 - [i2c0] START can't sendout!
[    0.326216] pcf857x 0-0020: retry commucation.2
[    0.331028] twi_start()387 - [i2c0] START can't sendout!
[    0.336750] twi_start()387 - [i2c0] START can't sendout!
[    0.342468] twi_start()387 - [i2c0] START can't sendout!
[    0.348056] pcf857x 0-0020: retry commucation.1
[    0.352888] twi_start()387 - [i2c0] START can't sendout!
[    0.358591] twi_start()387 - [i2c0] START can't sendout!
[    0.364310] twi_start()387 - [i2c0] START can't sendout!
[    0.369929] pcf857x: probe of 0-0020 failed with error -121
[    0.379619] Linux video capture interface: v2.00
[    0.385012] Advanced Linux Sound Architecture Driver Initialized.
[    0.393218] cfg80211: Calling CRDA to update world regulatory domain
[    0.400597] Switching to clocksource sun3i high-res couter
[    0.425784] get det_vbus is fail, 84
[    0.431283] NET: Registered protocol family 2
[    0.437960] TCP established hash table entries: 512 (order: 0, 4096 bytes)
[    0.445073] TCP bind hash table entries: 512 (order: -1, 2048 bytes)
[    0.451734] TCP: Hash tables configured (established 512 bind 512)
[    0.458289] TCP: reno registered
[    0.461691] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.467803] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.474874] NET: Registered protocol family 1
[    0.492901] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.499589] jffs2: version 2.2. © 2001-2006 Red Hat, Inc.
[    0.506028] msgmni has been set to 52
[    0.513138] io scheduler noop registered
[    0.517433] io scheduler cfq registered (default)
[    0.522309] [pm]aw_pm_init!
[    0.525576] [pm]valid
[    0.528067] [pm]valid
[    0.530810] [DISP]disp_module_init
[    0.586477] pll_freq=297000000HZ, lcd_dclk_freq=33000000HZ, clk_div=9
[    0.593896] num_screens=1
[    0.596760] screen_id=0
[    0.599339] para->mclk[MOD_CLK_LCD1CH0]=0xc180c300
[    0.604290] para->mclk[MOD_CLK_LCD1CH1]=0xc180c400
[    0.609285] disp tv init
[    0.611955] tcon_clk=0xc180c300, tcon_clk_parent=0x0
[    0.617121] tcon_clk=0xc180c300, tcon_clk_parent=0xc18043c0
[    0.622867] tve_clk=0xc180c400, tve_clk_parent=0xc18043c0
[    0.628476] disp al tv init
[    0.634157] fetch script datadisp.screen2_output_type fail
[    0.640241] fetch script datadisp.screen2_output_mode fail
[    0.648626] fetch script datadisp.fb2_format fail
[    0.653804] fetch script datadisp.fb2_scaler_mode_enable fail
[    0.660109] fetch script datadisp.fb2_width fail
[    0.665198] fetch script datadisp.fb2_height fail
[    0.670161] disp_malloc fail, size=0x2ee000
[    0.674498] disp_malloc fail!
[    0.677665] [DISP] Fb_map_kernel_logo,line:545:    Fb_map_kernel_logo failed!
[    0.689417] [DISP]disp_module_init finish
[    0.708204] uart0: ttyS0 at MMIO 0x1c25000 (irq = 104) is a SUNXI
[    0.714531] sw_console_setup()1324 - console setup baud 115200 parity n bits 8, flow n
[    0.722801] console [ttyS0] enabled, bootconsole disabled
[    0.722801] console [ttyS0] enabled, bootconsole disabled
[    0.735398] uart1: ttyS1 at MMIO 0x1c25400 (irq = 105) is a SUNXI
[    0.743371] misc dump reg init
[    0.748226] sunxi-wlan wlan: wlan_busnum (0)
[    0.752995] sunxi-wlan wlan: wlan_power_num (0)
[    0.758146] sunxi-wlan wlan: Missing wlan_io_regulator.
[    0.763955] sunxi-wlan wlan: io_regulator_name ((null))
[    0.769840] sunxi-wlan wlan: request pincrtl handle for device [wlan] failed
[    0.777697] ------------SUNXI_RF: Set regon for SUN3IW1P1_R6!----------------
[    0.785640] sunxi-wlan wlan: wlan_regon gpio=-1048163584  mul-sel=-1048355436  pull=-1048355480  d0
[    0.799292] sunxi-wlan wlan: can't request wlan_regon gpio 2041
[    0.805898] platform wlan: Driver sunxi-wlan requests probe deferral
[    0.813357] lradc_battery_probe:lradc_battery_probe ++++++
[    0.819534] lradc_battery_dts_parse:lradc_battery_dts_parse ++++++
[    0.826471] key base: f1c23400
[    0.829998] irq num: 117 !
[    0.833004] battery_data_hw_init:battery_data_hw_init ++++++
[    0.839402] lradc_battery_probe:lradc_battery_probe ------
[    0.848217] spi spi0: master is unqueued, this is deprecated
[    0.855841] m25p80 spi0.0: unrecognized JEDEC id 0b4018
[    0.862140] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.870067] usbcore: registered new interface driver usb-storage
[    0.876933] usbcore: registered new interface driver ums-alauda
[    0.883635] usbcore: registered new interface driver ums-cypress
[    0.890470] usbcore: registered new interface driver ums-datafab
[    0.897295] usbcore: registered new interface driver ums_eneub6250
[    0.904240] usbcore: registered new interface driver ums-freecom
[    0.911061] usbcore: registered new interface driver ums-isd200
[    0.917783] usbcore: registered new interface driver ums-jumpshot
[    0.924634] usbcore: registered new interface driver ums-karma
[    0.931258] usbcore: registered new interface driver ums-onetouch
[    0.938215] usbcore: registered new interface driver ums-realtek
[    0.945007] usbcore: registered new interface driver ums-sddr09
[    0.951749] usbcore: registered new interface driver ums-sddr55
[    0.958477] usbcore: registered new interface driver ums-usbat
[    0.965848] gpio_request failed
[    0.969467] get regulator_io is no nocare
[    0.974065] sunxi_hcd_host0 1c13000.otghci0-controller: sunxi_hcd host driver
[    0.982083] sunxi_hcd_host0 1c13000.otghci0-controller: new USB bus registered, assigned bus numbe1
[    0.993842] hub 1-0:1.0: USB hub found
[    0.998184] hub 1-0:1.0: 1 port detected
[    1.003020] wrn: hcd is not enable, need not stop hcd
[    1.009516] sunxi_keyboard_startup: keyboard has no clk.
[    1.015954] input: sunxi-keyboard as /devices/virtual/input/input0
[    1.024039] rtc-pcf8563 0-0051: chip found, driver version 0.4.3
[    1.031056] twi_start()387 - [i2c0] START can't sendout!
[    1.037251] twi_start()387 - [i2c0] START can't sendout!
[    1.043363] twi_start()387 - [i2c0] START can't sendout!
[    1.049505] rtc-pcf8563 0-0051: pcf8563_get_datetime: read error
[    1.056824] rtc-pcf8563 0-0051: rtc core: registered rtc-pcf8563 as rtc0
[    1.064376] sunxi cedar version 0.1 
[    1.068633] VE: install start!!!
[    1.068633] 
[    1.074020] cedar_ve: cedar-ve the get irq is 103
[    1.079947] VE: install end!!!
[    1.079947] 
[    1.086806] sunxi-mmc sdc0: SD/MMC/SDIO Host Controller Driver(v0.91 2018-5-29 14:19) Compiled in 7
[    1.099408] sunxi-mmc sdc0: Can't get vmmc regulator string
[    1.105648] sunxi-mmc sdc0: Can't get vqmmc regulator string
[    1.112014] sunxi-mmc sdc0: Can't get vdmmc regulator string
[    1.118344] sunxi-mmc sdc0: Failed getting OCR mask: 0
[    1.124527] sunxi-mmc sdc0: Failed to allocate DMA descriptor mem
[    1.131795] sunxi-mmc: probe of sdc0 failed with error -12
[    1.138432] sun3iw1p1-pinctrl pio: pin PC0 already requested by spi0; cannot claim for sdc1
[    1.147803] sun3iw1p1-pinctrl pio: pin-64 (sdc1) status -22
[    1.154017] sun3iw1p1-pinctrl pio: could not request pin 64 on device pio
[    1.161593] sunxi-mmc sdc1: Error applying setting, reverse things back
[    1.169041] sunxi-mmc sdc1: SD/MMC/SDIO Host Controller Driver(v0.91 2018-5-29 14:19) Compiled in 7
[    1.181482] sunxi-mmc sdc1: Can't get vmmc regulator string
[    1.187761] sunxi-mmc sdc1: Can't get vqmmc regulator string
[    1.194050] sunxi-mmc sdc1: Can't get vdmmc regulator string
[    1.200405] sunxi-mmc sdc1: Failed getting OCR mask: 0
[    1.207179] sunxi-mmc sdc1: Failed to allocate DMA descriptor mem
[    1.214305] sunxi-mmc: probe of sdc1 failed with error -12
[    1.224732] failed to get gpio-spk and gpio_num
[    1.231867] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin HPOUTR
[    1.239933] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin HPOUTL
[    1.247908] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin SPKL
[    1.255656] sunxi-internal-codec 1c23c00.codec: ASoC: DAPM unknown pin SPKR
[    1.263419] sunxi-codec-machine sound.2: ASoC: DAPM unknown pin External Speaker
[    1.271843] sunxi-internal-cpudai 1c23c00.cpudai0-controller: ASoC: pcm constructor failed: -12
[    1.281588] sunxi-codec-machine sound.2: ASoC: can't create pcm SUNXI-CODEC :-12
[    1.289838] sunxi-codec-machine sound.2: ASoC: failed to instantiate card -12
[    1.298159] snd_soc_register_card failed -12
[    1.302935] sunxi-codec-machine: probe of sound.2 failed with error -12
[    1.311088] ipip: IPv4 over IPv4 tunneling driver
[    1.317547] gre: GRE over IPv4 demultiplexor driver
[    1.322981] ip_gre: GRE over IPv4 tunneling driver
[    1.330601] TCP: cubic registered
[    1.334333] Initializing XFRM netlink socket
[    1.339216] NET: Registered protocol family 17
[    1.344231] NET: Registered protocol family 15
[    1.349701] VFP support v0.3: not present
[    1.355394] [LCD]lcd_module_init
[    1.363105] enhance_en=1
[    1.365983] matrixresult:(0x0, 0x3c4, 0x0, 0x0)
[    1.371269] pll_freq=297000000HZ, lcd_dclk_freq=33000000HZ, clk_div=9
[    1.378525] clk_div=9
[    1.381065] [DISP] disp_sys_gpio_request,line:303:    disp_sys_gpio_request failed, gpio_name=lcd_7
[    1.395172] [LCD]open, step 0 finish
[    1.436447] [LCD]open, step 1 finish
[    1.496450] [LCD]open, step 2 finish
[    1.616480] ------------[ cut here ]------------
[    1.621677] WARNING: at drivers/gpio/gpiolib.c:126 gpio_to_desc+0x28/0x4c()
[    1.629470] invalid GPIO -517
[    1.632790] Modules linked in:
[    1.636198] CPU: 0 PID: 25 Comm: kworker/0:1 Not tainted 3.10.65 #38
[    1.643345] Workqueue: events start_work
[    1.647795] Backtrace: 
[    1.650589] [<c0013328>] (dump_backtrace+0x0/0x104) from [<c0013534>] (show_stack+0x18/0x1c)
[    1.660013]  r7:0000007e r6:c0405e3a r5:00000009 r4:c189fda8
[    1.666462] [<c001351c>] (show_stack+0x0/0x1c) from [<c034d840>] (dump_stack+0x20/0x28)
[    1.675416] [<c034d820>] (dump_stack+0x0/0x28) from [<c001b9dc>] (warn_slowpath_common+0x54/0x70)
[    1.685390] [<c001b988>] (warn_slowpath_common+0x0/0x70) from [<c001ba30>] (warn_slowpath_fmt+0x38)
[    1.695975]  r9:c056fa80 r8:c0406cca r7:00000001 r6:00000000 r5:c18cc3c0
r4:fffffdfb
[    1.704847] [<c001b9f8>] (warn_slowpath_fmt+0x0/0x40) from [<c014bb98>] (gpio_to_desc+0x28/0x4c)
[    1.714647]  r3:fffffdfb r2:c0405e29
[    1.718733] [<c014bb70>] (gpio_to_desc+0x0/0x4c) from [<c014bc3c>] (gpio_get_value_cansleep+0x10/0)
[    1.729175] [<c014bc2c>] (gpio_get_value_cansleep+0x0/0x44) from [<c015bbd0>] (disp_sys_gpio_set_d)
[    1.741089] [<c015bbb0>] (disp_sys_gpio_set_direction+0x0/0xb8) from [<c0172130>] (disp_lcd_gpio_s)
[    1.753334]  r5:c18cc3c0 r4:c1814000
[    1.757408] [<c0172088>] (disp_lcd_gpio_set_direction+0x0/0xc8) from [<c016db04>] (bsp_disp_lcd_gp)
[    1.770012]  r7:c1814000 r6:c056f808 r5:00000001 r4:00000000
[    1.776383] [<c016dacc>] (bsp_disp_lcd_gpio_set_direction+0x0/0x44) from [<c0178648>] (sunxi_lcd_g)
[    1.789092]  r5:00000000 r4:00000003
[    1.793123] [<c0178628>] (sunxi_lcd_gpio_set_direction+0x0/0x30) from [<c017bd94>] (LCD_bl_open+0x)
[    1.803961] [<c017bd6c>] (LCD_bl_open+0x0/0x3c) from [<c01553e4>] (drv_lcd_enable+0xa0/0xe0)
[    1.813410] [<c0155344>] (drv_lcd_enable+0x0/0xe0) from [<c0155530>] (start_work+0x10c/0x1cc)
[    1.822936]  r9:c056fa80 r8:c0406ce7 r7:00000001 r6:c0406c77 r5:c056fcf4
r4:00000000
[    1.831736] [<c0155424>] (start_work+0x0/0x1cc) from [<c0031cc0>] (process_one_work+0x1e8/0x330)
[    1.841574] [<c0031ad8>] (process_one_work+0x0/0x330) from [<c0031e38>] (process_scheduled_works+0)
[    1.852470] [<c0031e08>] (process_scheduled_works+0x0/0x34) from [<c0032b78>] (worker_thread+0x1e0)
[    1.863117]  r5:c0480bd0 r4:c189c060
[    1.867191] [<c0032998>] (worker_thread+0x0/0x358) from [<c0037cf8>] (kthread+0xa8/0xb4)
[    1.876226] [<c0037c50>] (kthread+0x0/0xb4) from [<c000f930>] (ret_from_fork+0x14/0x24)
[    1.885173]  r7:00000000 r6:00000000 r5:c0037c50 r4:c1849e7c
[    1.891520] ---[ end trace 77f3c8ee3675178e ]---
[    1.896677] ------------[ cut here ]------------
[    1.901869] WARNING: at drivers/gpio/gpiolib.c:126 gpio_to_desc+0x28/0x4c()
[    1.909636] invalid GPIO -517
[    1.912924] Modules linked in:
[    1.916328] CPU: 0 PID: 25 Comm: kworker/0:1 Tainted: G        W    3.10.65 #38
[    1.924532] Workqueue: events start_work
[    1.928945] Backtrace: 
[    1.931726] [<c0013328>] (dump_backtrace+0x0/0x104) from [<c0013534>] (show_stack+0x18/0x1c)
[    1.941158]  r7:0000007e r6:c0405e3a r5:00000009 r4:c189fda0
[    1.947561] [<c001351c>] (show_stack+0x0/0x1c) from [<c034d840>] (dump_stack+0x20/0x28)
[    1.956567] [<c034d820>] (dump_stack+0x0/0x28) from [<c001b9dc>] (warn_slowpath_common+0x54/0x70)
[    1.966512] [<c001b988>] (warn_slowpath_common+0x0/0x70) from [<c001ba30>] (warn_slowpath_fmt+0x38)
[    1.977089]  r9:c056fa80 r8:c0406cca r7:00000001 r6:00000000 r5:c18cc3c0
r4:00000000
[    1.985922] [<c001b9f8>] (warn_slowpath_fmt+0x0/0x40) from [<c014bb98>] (gpio_to_desc+0x28/0x4c)
[    1.995723]  r3:fffffdfb r2:c0405e29
[    1.999794] [<c014bb70>] (gpio_to_desc+0x0/0x4c) from [<c014c628>] (gpio_direction_output+0x14/0x2)
[    2.010067] [<c014c614>] (gpio_direction_output+0x0/0x20) from [<c015bbdc>] (disp_sys_gpio_set_dir)
[    2.021725]  r5:c18cc3c0 r4:fffffdfb
[    2.025780] [<c015bbb0>] (disp_sys_gpio_set_direction+0x0/0xb8) from [<c0172130>] (disp_lcd_gpio_s)
[    2.038028]  r5:c18cc3c0 r4:c1814000
[    2.042060] [<c0172088>] (disp_lcd_gpio_set_direction+0x0/0xc8) from [<c016db04>] (bsp_disp_lcd_gp)
[    2.054670]  r7:c1814000 r6:c056f808 r5:00000001 r4:00000000
[    2.061084] [<c016dacc>] (bsp_disp_lcd_gpio_set_direction+0x0/0x44) from [<c0178648>] (sunxi_lcd_g)
[    2.073782]  r5:00000000 r4:00000003
[    2.077851] [<c0178628>] (sunxi_lcd_gpio_set_direction+0x0/0x30) from [<c017bd94>] (LCD_bl_open+0x)
[    2.088688] [<c017bd6c>] (LCD_bl_open+0x0/0x3c) from [<c01553e4>] (drv_lcd_enable+0xa0/0xe0)
[    2.098130] [<c0155344>] (drv_lcd_enable+0x0/0xe0) from [<c0155530>] (start_work+0x10c/0x1cc)
[    2.107649]  r9:c056fa80 r8:c0406ce7 r7:00000001 r6:c0406c77 r5:c056fcf4
r4:00000000
[    2.116446] [<c0155424>] (start_work+0x0/0x1cc) from [<c0031cc0>] (process_one_work+0x1e8/0x330)
[    2.126235] [<c0031ad8>] (process_one_work+0x0/0x330) from [<c0031e38>] (process_scheduled_works+0)
[    2.137142] [<c0031e08>] (process_scheduled_works+0x0/0x34) from [<c0032b78>] (worker_thread+0x1e0)
[    2.147789]  r5:c0480bd0 r4:c189c060
[    2.151844] [<c0032998>] (worker_thread+0x0/0x358) from [<c0037cf8>] (kthread+0xa8/0xb4)
[    2.160936] [<c0037c50>] (kthread+0x0/0xb4) from [<c000f930>] (ret_from_fork+0x14/0x24)
[    2.169873]  r7:00000000 r6:00000000 r5:c0037c50 r4:c1849e7c
[    2.176179] ---[ end trace 77f3c8ee3675178f ]---
[    2.181337] gpiod_direction_output: invalid GPIO
[    2.186517] [DISP] disp_sys_gpio_set_direction,line:413:    gpio_direction_output fail!
[    2.195407] ------------[ cut here ]------------
[    2.200607] WARNING: at drivers/gpio/gpiolib.c:126 gpio_to_desc+0x28/0x4c()
[    2.208400] invalid GPIO -517
[    2.211705] Modules linked in:
[    2.215108] CPU: 0 PID: 25 Comm: kworker/0:1 Tainted: G        W    3.10.65 #38
[    2.223297] Workqueue: events start_work
[    2.227701] Backtrace: 
[    2.230484] [<c0013328>] (dump_backtrace+0x0/0x104) from [<c0013534>] (show_stack+0x18/0x1c)
[    2.239922]  r7:0000007e r6:c0405e3a r5:00000009 r4:c189fda8
[    2.246273] [<c001351c>] (show_stack+0x0/0x1c) from [<c034d840>] (dump_stack+0x20/0x28)
[    2.255278] [<c034d820>] (dump_stack+0x0/0x28) from [<c001b9dc>] (warn_slowpath_common+0x54/0x70)
[    2.265222] [<c001b988>] (warn_slowpath_common+0x0/0x70) from [<c001ba30>] (warn_slowpath_fmt+0x38)
[    2.275801]  r9:c056fa80 r8:c0406cca r7:00000001 r6:00000000 r5:c18cc3c0
r4:00000001
[    2.284619] [<c001b9f8>] (warn_slowpath_fmt+0x0/0x40) from [<c014bb98>] (gpio_to_desc+0x28/0x4c)
[    2.294444]  r3:fffffdfb r2:c0405e29
[    2.298511] [<c014bb70>] (gpio_to_desc+0x0/0x4c) from [<c014be10>] (gpio_set_value_cansleep+0x14/0)
[    2.308934] [<c014bdfc>] (gpio_set_value_cansleep+0x0/0x6c) from [<c015bccc>] (disp_sys_gpio_set_v)
[    2.320402]  r5:c18cc3c0 r4:c1814000
[    2.324445] [<c015bcb4>] (disp_sys_gpio_set_value+0x0/0x4c) from [<c0172068>] (disp_lcd_gpio_set_v)
[    2.335937] [<c0171fc0>] (disp_lcd_gpio_set_value+0x0/0xc8) from [<c016dac0>] (bsp_disp_lcd_gpio_s)
[    2.347780]  r7:c1814000 r6:c056f808 r5:00000001 r4:00000000
[    2.354173] [<c016da88>] (bsp_disp_lcd_gpio_set_value+0x0/0x44) from [<c0178618>] (sunxi_lcd_gpio_)
[    2.366114]  r5:00000000 r4:00000003
[    2.370222] [<c01785f8>] (sunxi_lcd_gpio_set_value+0x0/0x30) from [<c017bda4>] (LCD_bl_open+0x38/0)
[    2.380655] [<c017bd6c>] (LCD_bl_open+0x0/0x3c) from [<c01553e4>] (drv_lcd_enable+0xa0/0xe0)
[    2.390126] [<c0155344>] (drv_lcd_enable+0x0/0xe0) from [<c0155530>] (start_work+0x10c/0x1cc)
[    2.399636]  r9:c056fa80 r8:c0406ce7 r7:00000001 r6:c0406c77 r5:c056fcf4
r4:00000000
[    2.408461] [<c0155424>] (start_work+0x0/0x1cc) from [<c0031cc0>] (process_one_work+0x1e8/0x330)
[    2.418284] [<c0031ad8>] (process_one_work+0x0/0x330) from [<c0031e38>] (process_scheduled_works+0)
[    2.429176] [<c0031e08>] (process_scheduled_works+0x0/0x34) from [<c0032b78>] (worker_thread+0x1e0)
[    2.439845]  r5:c0480bd0 r4:c189c060
[    2.443882] [<c0032998>] (worker_thread+0x0/0x358) from [<c0037cf8>] (kthread+0xa8/0xb4)
[    2.452953] [<c0037c50>] (kthread+0x0/0xb4) from [<c000f930>] (ret_from_fork+0x14/0x24)
[    2.461895]  r7:00000000 r6:00000000 r5:c0037c50 r4:c1849e7c
[    2.468237] ---[ end trace 77f3c8ee36751790 ]---
[    2.473390] [LCD]open, step 3 finish
[    2.486969] [LCD]lcd_module_init finish
[    2.491953] sunxi-wlan wlan: wlan_busnum (0)
[    2.496868] sunxi-wlan wlan: wlan_power_num (0)
[    2.501919] sunxi-wlan wlan: Missing wlan_io_regulator.
[    2.507816] sunxi-wlan wlan: io_regulator_name ((null))
[    2.513732] sunxi-wlan wlan: request pincrtl handle for device [wlan] failed
[    2.521708] ------------SUNXI_RF: Set regon for SUN3IW1P1_R6!----------------
[    2.529728] sunxi-wlan wlan: wlan_regon gpio=-1048163584  mul-sel=-1047978604  pull=-1047978648  d0
[    2.543416] sunxi-wlan wlan: can't request wlan_regon gpio 2041
[    2.550094] platform wlan: Driver sunxi-wlan requests probe deferral
[    2.557531] usb_serial_number:20080411
[    2.562323] file system registered
[    2.569004] android_usb gadget: Mass Storage Function, version: 2009/09/11
[    2.576843] android_usb gadget: Number of LUNs=3
[    2.581984]  lun0: LUN: removable file: (no medium)
[    2.587460]  lun1: LUN: removable file: (no medium)
[    2.592907]  lun2: LUN: removable file: (no medium)
[    2.599293] android_usb gadget: android_usb ready
[    2.604744] twi_start()387 - [i2c0] START can't sendout!
[    2.611023] twi_start()387 - [i2c0] START can't sendout!
[    2.617196] twi_start()387 - [i2c0] START can't sendout!
[    2.623231] rtc-pcf8563 0-0051: pcf8563_get_datetime: read error
[    2.629966] rtc-pcf8563 0-0051: hctosys: unable to read the hardware clock
[    2.637892] ALSA device list:
[    2.641243]   No soundcards found.
[    2.646072] VFS: Cannot open root device "mtdblock4" or unknown-block(0,0): error -6
[    2.654817] Please append a correct "root=" boot option; here are the available partitions:
[    2.664187] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

nor的fex文件配置

partition_start]

[partition]
    name         = bootlogo
    size         = 1024
    downloadfile = "bootlogo.fex"
    user_type    = 0x8000

[partition]
    name         = env
    ;size         = 256
    size         = 1024
    downloadfile = "env.fex"
    user_type    = 0x8000

[partition]
    name         = boot
    ;size         = 5120
    size         = 5632
    downloadfile = "boot.fex"
    user_type    = 0x8000

[partition]
    name         = rootfs
    ;size         = 1024
    ;size         = 16640
    size         = 17920
    downloadfile = "rootfs.fex"
    user_type    = 0x8000

[partition]
    name         = rootfs_data
    size         = 1024
    user_type    = 0x8000

;[partition]
;    name         = extend
;    size         = 8192
;    downloadfile = "usr.fex"
;    user_type    = 0x8000

[partition]
    name         = misc
    size         = 128
    user_type    = 0x8000

[partition]
    name         = private
    size         = 128
    user_type    = 0x8000

[partition]
    name         = UDISK
    user_type    = 0x8100

希望路过的大佬能够指点一二,小弟在此谢过了

#31 Re: 全志 SOC » 全志 F1C200s Tina 修改 SPI NOR FLASH 芯片尺寸和分区大小 [分享] » 2021-03-30 10:09:29

raspberryman 说:

MagicKind,麻烦重新开帖,把你的日志和.config配置都贴上,否则谁能猜中?

好的,麻烦大佬帮忙看一下了

求助F1C200S启动时,无法挂在根文件
http://whycan.com/t_6238.html
(出处:哇酷开发者社区)

#32 Re: 全志 SOC » 全志 F1C200s Tina 修改 SPI NOR FLASH 芯片尺寸和分区大小 [分享] » 2021-03-30 09:50:02

raspberryman 说:
MagicKind 说:
飞翔工控 说:

https://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html

#define ENXIO            6      /* No such device or address */

/dev/mtdblock4 设备不存在

这个不是系统会自己创建的吗

要追溯起来,可复杂了。
要提供dtb/bootargs mtdparts传入分区参数,要勾选mtd和mtdblock驱动

这个都勾上了的

#33 Re: 全志 SOC » 全志 F1C200s Tina 修改 SPI NOR FLASH 芯片尺寸和分区大小 [分享] » 2021-03-30 09:42:32

飞翔工控 说:
MagicKind 说:

大佬,请问下,你知道VFS: Cannot open root device "mtdblock4" or unknown-block(0,0): error -6的问题是什么吗

https://www-numi.fnal.gov/offline_software/srt_public_context/WebDocs/Errors/unix_system_errors.html

#define ENXIO            6      /* No such device or address */

/dev/mtdblock4 设备不存在

这个不是系统会自己创建的吗

#34 Re: 全志 SOC » 全志 F1C200s Tina 修改 SPI NOR FLASH 芯片尺寸和分区大小 [分享] » 2021-03-30 09:23:56

大佬,请问下,你知道VFS: Cannot open root device "mtdblock4" or unknown-block(0,0): error -6的问题是什么吗

#35 Re: 全志 SOC » F1C200S的tina系统如何移植到F1C100S » 2021-03-26 18:21:16

MagicKind 说:
staunchheart 说:

如果你有TINA的SDK,能编译F1C200的工程,在编译过程中,有一步是询问你是F1C200/F1C600/R6  这里选3  R6就是F1C100S。

好的,谢谢,我去试试看

不行啊,大佬编译出来的img,烧录到TF卡上面,然后插入荔枝派的nano,启动不起来

#36 Re: 全志 SOC » F1C200S的tina系统如何移植到F1C100S » 2021-03-26 12:40:54

staunchheart 说:

如果你有TINA的SDK,能编译F1C200的工程,在编译过程中,有一步是询问你是F1C200/F1C600/R6  这里选3  R6就是F1C100S。

好的,谢谢,我去试试看

#37 Re: 全志 SOC » F1C200S的tina系统如何移植到F1C100S » 2021-03-26 12:39:33

webb_2002 说:

直接使用哦,不需要移植。

不行啊,大佬,我img文件烧录到TF卡之后,插入荔枝派nano启动不了

#38 全志 SOC » F1C200S的tina系统如何移植到F1C100S » 2021-03-25 18:28:50

MagicKind
回复: 5

如题,F1C200S的tina系统如何移植到F1C100S,请问有没大佬做个这方便的操作

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn