页次: 1
修改之后,系统启动有一部分提示,我感到很奇怪但是又不知道是什么问题
[ 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
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
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 │ │
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:/#
先插到电脑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:/#
先插到电脑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)
我看了全志的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:/#
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");
│ │ --- 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
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编译就报上面的错误
请问是如何修改的?
我修改了两个地方,一个是设备树文件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) },
启动日志
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
希望路过的大佬能够指点一二,小弟在此谢过了
MagicKind,麻烦重新开帖,把你的日志和.config配置都贴上,否则谁能猜中?
好的,麻烦大佬帮忙看一下了
求助F1C200S启动时,无法挂在根文件
http://whycan.com/t_6238.html
(出处:哇酷开发者社区)
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驱动
这个都勾上了的
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 设备不存在
这个不是系统会自己创建的吗
页次: 1