页次: 1
https://urchinzhou.github.io/2021/03/05/关于xlog加密处理分析/
关于 xlog 加密处理分析 2021-03
信息安全
xlog 使用微型加密算法(TEA,Tiny Encryption Algorithm)对日志数据进行加密,使用 ECDH 密钥交换算法进行对称密钥的协商,对称密钥以数组形式存储在栈区,声明为 LogCrypt 类的私有字段。
会话密钥长度与椭圆曲线参数相关,xlog 中使用 16 Bytes 密钥。
相关接口
uECC_make_key ( client_pubkey, client_pri )
生成客户端公私钥对
uECC_shared_secret ( svr_pubkey, client_pri, secret )
根据服务端公钥与客户端私钥,运算出对称密钥 secret
__TeaEncrypt ( log, secret )
使用对称密钥加密日志
协商流程:
client 调用 uECC_make_key 生成 pubKeyA 与 priKeyA;
server 调用 uECC_make_key 生成 pubKeyB 与 priKeyB;
client 获取server 公钥 pubKeyB ,调用 uECC_shared_secret 生成对称密钥 secret;(此处采用 ECDH 密钥交换算法)
server 获取client 公钥 pubKeyA ,调用 uECC_shared_secret 生成对称密钥 secret;
ECDH 密钥交换算法原理概述
ECDH 基于 ECC 算法,ECC 是建立在基于椭圆曲线的离散对数问题上的密码体制,给定椭圆曲线上的一个点 P,一个整数 k,求解 Q = kP 很容易,但给定一个点 P、一个点Q,求解 k 很难。ECDH 便建立在该数学难题上。
假设密钥协商的双方 Alice 和 Bob 共享公共参数 p、g 以及 ECDH 算法,以下场景可模拟交换流程(mod 表示取余运算):
Alice 生成私钥 a,通过公式 g^a mod p = A 生成公钥 A,并将 p、g、A 发送给 Bob;
Bob 获得 p、g、A 后,生成自己的私钥 b,通过g^b mod p = B 生成公钥B,通过公式 A^B mod p = K 生成会话密钥(对称密钥)K,然后将公钥 B 发送给 Alice;
Alice 获得 Bob 的公钥 B,通过 B^a mod p = K 生成会话密钥 K,至此,Alice 和 Bob 在未传递私钥 a、b 的情况下,完成了会话密钥协商。
ECDH 不传输对称密钥,而是传输 ECC 椭圆曲线算法生成的公钥,然后通过收到的公钥结合自己的私钥,各自计算出共享的对称密钥,椭圆曲线保证了双方计算出的密钥一定是相同的,且第三方在不知道通信双方私钥的情况下,无法通过从信道中截获的信息反推出对称密钥。
代入数据:
假定 p = 23,g = 5;
Alice 生成私钥 a = 6,计算 A = g^a mod p = 5^6 mod 23 = 8;
Bob 生成私钥 b = 15,计算 B = g^b mod p = 5^15 mod 23 = 19,计算 K = A^B mod p = 8^18 mod 23 = 2;
Alice 计算 K’ = B^a mod p = 19^6 mod 23 = 2,K’ = K。
谢谢, 试了一下, 这个也不错, 只是打开速度太慢了.
# modetest -M sun4i-drm -v -s 43@41:800x480
setting mode 800x480-61.58Hz on connectors 43, crtc 41
failed to set gamma: Function not implemented
freq: 61.88Hz
freq: 61.57Hz
freq: 61.58Hz
freq: 61.58Hz
freq: 61.58Hz
freq: 61.58Hz
freq: 61.58Hz
freq: 61.58Hz
freq: 61.58Hz
奇怪, 这个可以显示
后记, 把drm驱动patch了一下, 可以显示了:
--------------------------------------
# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...failed
trying to open device 'pl111'...failed
trying to open device 'stm'...failed
trying to open device 'sun4i-drm'...done
Encoders:
id crtc type possible crtcs possible clones
44 43 none 0x00000001 0x00000000
Connectors:
id encoder status name size (mm) modes encoders
45 44 connected unknown-1 154x86 1 44
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
#0 800x480 61.58 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
CRTCs:
id fb pos size
43 46 (0,0) (800x480)
#0 800x480 61.58 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
23 VRR_ENABLED:
flags: range
values: 0 1
value: 0
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
30 0 0 0,0 0,0 0 0x00000001
formats: BG16 BG24 BX12 BX15 BX24 RG16 RG24 RX12 RX15 RX24 XB15 XB12 XB24 XR24 XR15 XR12 NV16 NV12 NV21 NV61 UYVY VYUY YUYV YVYU YU11 YU12 YU16 YV11 YV12 YV16
props:
7 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
29 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001e00000018000000
00000000900000004247313642473234
42583132425831354258323452473136
52473234525831325258313552583234
58423135584231325842323458523234
58523135585231324e5631364e563132
4e5632314e5636315559565956595559
59555956595659555955313159553132
59553136595631315956313259563136
in_formats blob decoded:
BG16:
BG24:
BX12:
BX15:
BX24:
RG16:
RG24:
RX12:
RX15:
RX24:
XB15:
XB12:
XB24:
XR24:
XR15:
XR12:
NV16:
NV12:
NV21:
NV61:
UYVY:
VYUY:
YUYV:
YVYU:
YU11:
YU12:
YU16:
YV11:
YV12:
YV16:
32 alpha:
flags: range
values: 0 65535
value: 65535
33 zpos:
flags: range
values: 0 2
value: 0
34 43 46 0,0 0,0 0 0x00000001
formats: BG16 BG24 BX12 BX15 BX24 RG16 RG24 RX12 RX15 RX24 XB15 XB12 XB24 XR24 XR15 XR12 NV16 NV12 NV21 NV61 UYVY VYUY YUYV YVYU YU11 YU12 YU16 YV11 YV12 YV16
props:
7 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
29 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001e00000018000000
00000000900000004247313642473234
42583132425831354258323452473136
52473234525831325258313552583234
58423135584231325842323458523234
58523135585231324e5631364e563132
4e5632314e5636315559565956595559
59555956595659555955313159553132
59553136595631315956313259563136
in_formats blob decoded:
BG16:
BG24:
BX12:
BX15:
BX24:
RG16:
RG24:
RX12:
RX15:
RX24:
XB15:
XB12:
XB24:
XR24:
XR15:
XR12:
NV16:
NV12:
NV21:
NV61:
UYVY:
VYUY:
YUYV:
YVYU:
YU11:
YU12:
YU16:
YV11:
YV12:
YV16:
36 alpha:
flags: range
values: 0 65535
value: 65535
37 zpos:
flags: range
values: 0 2
value: 0
38 0 0 0,0 0,0 0 0x00000001
formats: AB15 AB12 AB24 AR15 AR12 AR24 BG16 BG24 BA15 BA12 BA24 BX24 RG16 RG24 RA12 RA15 RA24 RX24 XB24 XR24
props:
7 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
29 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001400000018000000
00000000680000004142313541423132
41423234415231354152313241523234
42473136424732344241313542413132
42413234425832345247313652473234
52413132524131355241323452583234
5842323458523234
in_formats blob decoded:
AB15:
AB12:
AB24:
AR15:
AR12:
AR24:
BG16:
BG24:
BA15:
BA12:
BA24:
BX24:
RG16:
RG24:
RA12:
RA15:
RA24:
RX24:
XB24:
XR24:
40 alpha:
flags: range
values: 0 65535
value: 65535
41 pixel blend mode:
flags: enum
enums: None=2 Pre-multiplied=0 Coverage=1
value: 0
42 zpos:
flags: range
values: 0 2
value: 0
Frame buffers:
id size pitch
可以显示了:
modetest -M sun4i-drm -P 30@43:480x272+10+10 -P 34@43:480x272+100+100 -P 38@43:480x272+150+150
modetest -M sun4i-drm -s 45:800x480 -F smpte
请问大家f1c100s上执行libdrm测试程序modetest屏幕没有反应
http://whycan.com/t_5446.html
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
这个是前面 f1c100s 的 modetest 测试
# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...failed
trying to open device 'pl111'...failed
trying to open device 'stm'...failed
trying to open device 'sun4i-drm'...done
Encoders:
id crtc type possible crtcs possible clones
42 41 none 0x00000001 0x00000000
Connectors:
id encoder status name size (mm) modes encoders
43 42 connected unknown-1 154x86 1 42
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
#0 800x480 61.58 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
CRTCs:
id fb pos size
41 44 (0,0) (800x480)
#0 800x480 61.58 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
24 VRR_ENABLED:
flags: range
values: 0 1
value: 0
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
31 0 0 0,0 0,0 0 0x00000001
formats: BG16 BG24 BX12 BX15 BX24 RG16 RG24 RX12 RX15 RX24 XB15 XB12 XB24 XR15 XR12 XR24 NV16 NV12 NV21 NV61 UYVY VYUY YUYV YVYU YU11 YU12 YU16 YV11 YV12 YV16
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
32 zpos:
flags: range
values: 0 2
value: 0
33 COLOR_ENCODING:
flags: enum
enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
value: 0
34 COLOR_RANGE:
flags: enum
enums: YCbCr limited range=0 YCbCr full range=1
value: 0
35 0 0 0,0 0,0 0 0x00000001
formats: BG16 BG24 BX12 BX15 BX24 RG16 RG24 RX12 RX15 RX24 XB15 XB12 XB24 XR15 XR12 XR24 NV16 NV12 NV21 NV61 UYVY VYUY YUYV YVYU YU11 YU12 YU16 YV11 YV12 YV16
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
36 zpos:
flags: range
values: 0 2
value: 0
37 COLOR_ENCODING:
flags: enum
enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
value: 0
38 COLOR_RANGE:
flags: enum
enums: YCbCr limited range=0 YCbCr full range=1
value: 0
39 41 44 0,0 0,0 0 0x00000001
formats: AB15 AB12 AB24 AR15 AR12 AR24 BG16 BG24 BA15 BA12 BA24 BX24 RG16 RG24 RA12 RA15 RA24 RX24 XB24 XR24
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
40 zpos:
flags: range
values: 0 2
value: 0
Frame buffers:
id size pitch
modetest -M sun4i-drm -P 31@41:800x480+10+10
modetest -M sun4i-drm -P 35@0:800x480+100+100
modetest -M sun4i-drm -P 39@41:800x480+100+100
这三个只有最后一个才有反应, 而且显示还不对
不知道是驱动不对, 还是modetest使用有误
必选项:
BR2_PACKAGE_OPENCV3=y
#
# OpenCV modules
#
# BR2_PACKAGE_OPENCV3_LIB_CALIB3D is not set
# BR2_PACKAGE_OPENCV3_LIB_FEATURES2D is not set
# BR2_PACKAGE_OPENCV3_LIB_FLANN is not set
# BR2_PACKAGE_OPENCV3_LIB_HIGHGUI is not set
BR2_PACKAGE_OPENCV3_LIB_IMGCODECS=y
BR2_PACKAGE_OPENCV3_LIB_IMGPROC=y
# BR2_PACKAGE_OPENCV3_LIB_ML is not set
# BR2_PACKAGE_OPENCV3_LIB_OBJDETECT is not set
# BR2_PACKAGE_OPENCV3_LIB_PHOTO is not set
BR2_PACKAGE_OPENCV3_LIB_PYTHON=y
# BR2_PACKAGE_OPENCV3_LIB_SHAPE is not set
# BR2_PACKAGE_OPENCV3_LIB_STITCHING is not set
# BR2_PACKAGE_OPENCV3_LIB_SUPERRES is not set
# BR2_PACKAGE_OPENCV3_LIB_TS is not set
# BR2_PACKAGE_OPENCV3_LIB_VIDEOIO is not set
用qemu模拟器先跑一跑:
sudo apt install qemu-user-static -y
cp /usr/bin/qemu-arm-static output/target/usr/bin/
sudo chroot output/target/ /bin/sh
运行OK:
/ # python
Python 3.8.2 (default, Nov 15 2020, 08:10:56)
[GCC 4.8.3 20140320 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.imread("AAAA.jpg")
>>>
>>>
>>> quit();
模拟器缺少随机数设备文件, 会提示:
Fatal Python error: _Py_HashRandomization_Init: failed to get random numbers to initialize Python
解决办法:
https://blog.csdn.net/u013538795/article/details/105703418
mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9
日志文件: libdrm_modetest_log.txt
Connecting to COM58...
Connected.
U-Boot SPL 2020.07 (Oct 20 2020 - 11:09:37 +0800)
DRAM: 64 MiB
Trying to boot from MMC1
U-Boot 2020.07 (Oct 20 2020 - 11:09:37 +0800) Allwinner Technology
CPU: Allwinner F Series (SUNIV)
Model: Allwinner F1C100s Generic Device
DRAM: 64 MiB
MMC: mmc@1c0f000: 0, mmc@1c10000: 1
Setting up a 800x480 lcd console (overscan 0x0)
In: serial
Out: vga
Err: vga
Allwinner mUSB OTG (Peripheral)
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Card did not respond to voltage select!
unrecognized JEDEC id bytes: ff, c8, f1
Failed to initialize SPI flash at 0:0 (error -2)
List of MTD devices:
* spi-nand0
- device: spi-nand@1
- parent: spi@1c05000
- driver: spi_nand
- type: NAND flash
- block size: 0x20000 bytes
- min I/O: 0x800 bytes
- OOB size: 64 bytes
- OOB available: 31 bytes
- 0x000000000000-0x000008000000 : "spi-nand0"
=========================
Boot Device: mmc0
Boot Slot 0: mmc0
Boot Slot 1: spi-nand
=========================
switch to partitions #0, OK
mmc0 is current device
Booting from MMC0...
4317144 bytes read in 702 ms (5.9 MiB/s)
15533 bytes read in 7 ms (2.1 MiB/s)
## Flattened Device Tree blob at 80700000
Booting using the fdt blob at 0x80700000
Loading Device Tree to 816f9000, end 816ffcac ... OK
Cannot setup simplefb: node not found
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.4.66 (whycan@ubuntu) (gcc version 8.4.0 (Buildroot 2020.02.4-00005-g9d84975a2d)) #1 Tue Oct 20 11:10:31 CST 2020
[ 0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] OF: fdt: Machine model: Widora MangoPi R3
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] cma: Reserved 16 MiB at 0x83000000
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 16256
[ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk rootwait consoleblank=0 net.ifnames=0 biosdevname=0 root=/dev/mmcblk0p3
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 38736K/65536K available (6144K kernel code, 248K rwdata, 1680K rodata, 1024K init, 225K bss, 10416K reserved, 16384K cma-reserved)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] random: get_random_bytes called from start_kernel+0x254/0x444 with crng_init=0
[ 0.000049] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000138] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000896] Console: colour dummy device 80x30
[ 0.001008] Calibrating delay loop... 203.16 BogoMIPS (lpj=1015808)
[ 0.070261] pid_max: default: 32768 minimum: 301
[ 0.070762] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.070803] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.072691] CPU: Testing write buffer coherency: ok
[ 0.074791] Setting up static identity map for 0x80100000 - 0x80100058
[ 0.076097] devtmpfs: initialized
[ 0.088051] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.088113] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
[ 0.092275] pinctrl core: initialized pinctrl subsystem
[ 0.095022] NET: Registered protocol family 16
[ 0.098735] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.101110] cpuidle: using governor menu
[ 0.145605] SCSI subsystem initialized
[ 0.145989] usbcore: registered new interface driver usbfs
[ 0.146196] usbcore: registered new interface driver hub
[ 0.146393] usbcore: registered new device driver usb
[ 0.146897] mc: Linux media interface: v0.10
[ 0.147051] videodev: Linux video capture interface: v2.00
[ 0.147173] pps_core: LinuxPPS API ver. 1 registered
[ 0.147193] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.147262] PTP clock support registered
[ 0.148335] ion_parse_dt_heap_common: id 4 type 4 name cma align 1000
[ 0.149338] Advanced Linux Sound Architecture Driver Initialized.
[ 0.151871] clocksource: Switched to clocksource timer
[ 0.183602] thermal_sys: Registered thermal governor 'step_wise'
[ 0.184373] NET: Registered protocol family 2
[ 0.186004] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 0.186091] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.186149] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.186198] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.186505] UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.186567] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
[ 0.187091] NET: Registered protocol family 1
[ 0.189740] NetWinder Floating Point Emulator V0.97 (double precision)
[ 0.191601] Initialise system trusted keyrings
[ 0.192387] workingset: timestamp_bits=30 max_order=14 bucket_order=0
[ 0.214403] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.215039] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 0.329964] Key type asymmetric registered
[ 0.330002] Asymmetric key parser 'x509' registered
[ 0.330168] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249)
[ 0.330196] io scheduler mq-deadline registered
[ 0.330213] io scheduler kyber registered
[ 0.345969] suniv-f1c100s-pinctrl 1c20800.pinctrl: initialized sunXi PIO driver
[ 0.370180] Serial: 8250/16550 driver, 8 ports, IRQ sharing disabled
[ 0.376529] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pa not found, using dummy regulator
[ 0.377878] printk: console [ttyS0] disabled
[ 0.398208] 1c25400.serial: ttyS0 at MMIO 0x1c25400 (irq = 28, base_baud = 6250000) is a 16550A
[ 0.828403] printk: console [ttyS0] enabled
[ 0.838230] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pd not found, using dummy regulator
[ 0.859557] panel-simple panel: panel supply power not found, using dummy regulator
[ 0.869274] SCSI Media Changer driver v0.25
[ 0.875190] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pc not found, using dummy regulator
[ 0.888081] spi-nor spi0.0: unrecognized JEDEC id bytes: 00 c8 f1 c8 f1 c8
[ 0.895680] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.902319] ehci-platform: EHCI generic platform driver
[ 0.907971] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.914290] ohci-platform: OHCI generic platform driver
[ 0.920068] usbcore: registered new interface driver usb-storage
[ 0.927202] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using dummy regulator
[ 0.940837] i2c /dev entries driver
[ 0.945119] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pd not found, using dummy regulator
[ 0.958873] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pe not found, using dummy regulator
[ 0.969865] sun4i-csi 1cb0000.csi: Packed (RAW) format enabled.
[ 0.977724] sunxi-wdt 1c20ca0.watchdog: Watchdog enabled (timeout=16 sec, nowayout=0)
[ 0.987802] suniv-f1c100s-pinctrl 1c20800.pinctrl: 1c20800.pinctrl supply vcc-pf not found, using dummy regulator
[ 1.025855] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB
[ 1.035352] usbcore: registered new interface driver usbhid
[ 1.040926] usbhid: USB HID core driver
[ 1.045202] sunxi-cedar 1c0e000.video-codec: sunxi cedar version 0.01alpha
[ 1.052496] sunxi-cedar 1c0e000.video-codec: cedar-ve the get irq is 20
[ 1.064232] debugfs: Directory '1c23c00.codec' with parent 'F1C100s Audio Codec' already present!
[ 1.078113] sun4i-codec 1c23c00.codec: Codec <-> 1c23c00.codec mapping ok
[ 1.094614] NET: Registered protocol family 17
[ 1.099169] Key type dns_resolver registered
[ 1.104667] Loading compiled-in X.509 certificates
[ 1.123260] sun4i-drm soc:display-engine: bound 1e00000.display-frontend (ops 0xc073b3d8)
[ 1.132315] sun4i-drm soc:display-engine: bound 1e60000.display-backend (ops 0xc073ac18)
[ 1.141828] sun4i-drm soc:display-engine: bound 1c0c000.lcd-controller (ops 0xc07397b8)
[ 1.150413] sun4i-drm soc:display-engine: bound 1c0a000.tv-encoder (ops 0xc073a4d8)
[ 1.158193] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.164855] [drm] No driver support for vblank timestamp query.
[ 1.172640] [drm] Initialized sun4i-drm 1.0.0 20150629 for soc:display-engine on minor 0
[ 1.181552] [drm] kms: can't enable cloning when we probably wanted to.
[ 1.253664] Console: switching to colour frame buffer device 100x30
[ 1.260080] mmc0: host does not support reading read-only switch, assuming write-enable
[ 1.262868] mmc0: new high speed SD card at address 0001
[ 1.265210] mmcblk0: mmc0:0001 00000 1.83 GiB
[ 1.296288] mmcblk0: p1 p2 p3
[ 1.320882] sun4i-drm soc:display-engine: fb0: sun4i-drmdrmfb frame buffer device
[ 1.329312] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 1.347260] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 1.354102] ALSA device list:
[ 1.357091] #0: F1C100s Audio Codec
[ 1.361288] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[ 1.370087] cfg80211: failed to load regulatory.db
[ 1.385261] EXT4-fs (mmcblk0p3): INFO: recovery required on readonly filesystem
[ 1.392694] EXT4-fs (mmcblk0p3): write access will be enabled during recovery
[ 1.416029] random: fast init done
[ 1.651705] EXT4-fs (mmcblk0p3): recovery complete
[ 1.672395] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
[ 1.680633] VFS: Mounted root (ext4 filesystem) readonly on device 179:3.
[ 1.690205] devtmpfs: mounted
[ 1.699751] Freeing unused kernel memory: 1024K
[ 1.704528] Run /sbin/init as init process
[ 1.911515] EXT4-fs (mmcblk0p3): re-mounted. Opts: (null)
Mounting OverlayFS: Skip
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Populating /dev using udev: [ 2.519354] udevd[86]: starting version 3.2.9
[ 2.552314] random: udevd: uninitialized urandom read (16 bytes read)
[ 2.564164] random: udevd: uninitialized urandom read (16 bytes read)
[ 2.571118] random: udevd: uninitialized urandom read (16 bytes read)
[ 2.671601] udevd[87]: starting eudev-3.2.9
done
Initializing random number generator: OK
Saving random seed: [ 5.271298] random: dd: uninitialized urandom read (512 bytes read)
OK
Starting network: OK
#
#
#
# modetest
[ 13.280195] random: crng init done
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...failed
trying to open device 'pl111'...failed
trying to open device 'stm'...failed
trying to open device 'sun4i-drm'...done
Encoders:
id crtc type possible crtcs possible clones
48 47 none 0x00000001 0x00000000
50 0 TVDAC 0x00000001 0x00000000
Connectors:
id encoder status name size (mm) modes encoders
49 48 connected unknown-1 154x86 1 48
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
800x480 62 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
20 CRTC_ID:
flags: object
value: 47
51 0 connected composite-1 0x0 2 50
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
PAL 50 720 723 725 864 576 604 606 625 13500 flags: interlace; type: driver
NTSC 60 720 738 740 858 480 506 508 525 13500 flags: interlace; type: driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
20 CRTC_ID:
flags: object
value: 0
CRTCs:
id fb pos size
47 52 (0,0) (800x480)
800x480 62 800 840 888 928 480 493 496 525 30000 flags: ; type: preferred, driver
props:
22 ACTIVE:
flags: range
values: 0 1
value: 1
23 MODE_ID:
flags: blob
blobs:
value:
30750000200348037803a0030000e001
ed01f0010d0200003e00000000000000
48000000383030783438300000000000
00000000000000000000000000000000
00000000
19 OUT_FENCE_PTR:
flags: range
values: 0 18446744073709551615
value: 0
24 VRR_ENABLED:
flags: range
values: 0 1
value: 0
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
31 47 52 0,0 0,0 0 0x00000001
formats: AR24 AR12 AR15 BX24 RA15 RA12 RG24 RG16 NV12 NV16 NV21 NV61 UYVY VYUY XR24 YU11 YU12 YU16 YU24 YUYV YV11 YV12 YV16 YV24 YVYU
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
17 FB_ID:
flags: object
value: 52
18 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
20 CRTC_ID:
flags: object
value: 47
13 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
15 CRTC_W:
flags: range
values: 0 2147483647
value: 800
16 CRTC_H:
flags: range
values: 0 2147483647
value: 480
9 SRC_X:
flags: range
values: 0 4294967295
value: 0
10 SRC_Y:
flags: range
values: 0 4294967295
value: 0
11 SRC_W:
flags: range
values: 0 4294967295
value: 52428800
12 SRC_H:
flags: range
values: 0 4294967295
value: 31457280
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001900000018000000
02000000800000004152323441523132
41523135425832345241313552413132
52473234524731364e5631324e563136
4e5632314e5636315559565956595559
58523234595531315955313259553136
59553234595559565956313159563132
59563136595632345956595500000000
ffffff01000000000000000000000000
0000000000000000008f730000000000
00000000000000000100000000000009
in_formats blob decoded:
AR24: LINEAR
AR12: LINEAR
AR15: LINEAR
BX24: LINEAR
RA15: LINEAR
RA12: LINEAR
RG24: LINEAR
RG16: LINEAR
NV12: LINEAR (UNKNOWN MODIFIER)
NV16: LINEAR (UNKNOWN MODIFIER)
NV21: LINEAR (UNKNOWN MODIFIER)
NV61: LINEAR (UNKNOWN MODIFIER)
UYVY: LINEAR
VYUY: LINEAR
XR24: LINEAR
YU11: LINEAR (UNKNOWN MODIFIER)
YU12: LINEAR (UNKNOWN MODIFIER)
YU16: LINEAR (UNKNOWN MODIFIER)
YU24: LINEAR
YUYV: LINEAR
YV11: LINEAR (UNKNOWN MODIFIER)
YV12: LINEAR (UNKNOWN MODIFIER)
YV16: LINEAR (UNKNOWN MODIFIER)
YV24: LINEAR
YVYU: LINEAR
33 alpha:
flags: range
values: 0 65535
value: 65535
34 zpos:
flags: range
values: 0 3
value: 0
35 0 0 0,0 0,0 0 0x00000001
formats: AR24 AR12 AR15 BX24 RA15 RA12 RG24 RG16 NV12 NV16 NV21 NV61 UYVY VYUY XR24 YU11 YU12 YU16 YU24 YUYV YV11 YV12 YV16 YV24 YVYU
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
17 FB_ID:
flags: object
value: 0
18 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
20 CRTC_ID:
flags: object
value: 0
13 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
15 CRTC_W:
flags: range
values: 0 2147483647
value: 0
16 CRTC_H:
flags: range
values: 0 2147483647
value: 0
9 SRC_X:
flags: range
values: 0 4294967295
value: 0
10 SRC_Y:
flags: range
values: 0 4294967295
value: 0
11 SRC_W:
flags: range
values: 0 4294967295
value: 0
12 SRC_H:
flags: range
values: 0 4294967295
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001900000018000000
02000000800000004152323441523132
41523135425832345241313552413132
52473234524731364e5631324e563136
4e5632314e5636315559565956595559
58523234595531315955313259553136
59553234595559565956313159563132
59563136595632345956595500000000
ffffff01000000000000000000000000
0000000000000000008f730000000000
00000000000000000100000000000009
in_formats blob decoded:
AR24: LINEAR
AR12: LINEAR
AR15: LINEAR
BX24: LINEAR
RA15: LINEAR
RA12: LINEAR
RG24: LINEAR
RG16: LINEAR
NV12: LINEAR (UNKNOWN MODIFIER)
NV16: LINEAR (UNKNOWN MODIFIER)
NV21: LINEAR (UNKNOWN MODIFIER)
NV61: LINEAR (UNKNOWN MODIFIER)
UYVY: LINEAR
VYUY: LINEAR
XR24: LINEAR
YU11: LINEAR (UNKNOWN MODIFIER)
YU12: LINEAR (UNKNOWN MODIFIER)
YU16: LINEAR (UNKNOWN MODIFIER)
YU24: LINEAR
YUYV: LINEAR
YV11: LINEAR (UNKNOWN MODIFIER)
YV12: LINEAR (UNKNOWN MODIFIER)
YV16: LINEAR (UNKNOWN MODIFIER)
YV24: LINEAR
YVYU: LINEAR
37 alpha:
flags: range
values: 0 65535
value: 65535
38 zpos:
flags: range
values: 0 3
value: 1
39 0 0 0,0 0,0 0 0x00000001
formats: AR24 AR12 AR15 BX24 RA15 RA12 RG24 RG16 NV12 NV16 NV21 NV61 UYVY VYUY XR24 YU11 YU12 YU16 YU24 YUYV YV11 YV12 YV16 YV24 YVYU
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
17 FB_ID:
flags: object
value: 0
18 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
20 CRTC_ID:
flags: object
value: 0
13 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
15 CRTC_W:
flags: range
values: 0 2147483647
value: 0
16 CRTC_H:
flags: range
values: 0 2147483647
value: 0
9 SRC_X:
flags: range
values: 0 4294967295
value: 0
10 SRC_Y:
flags: range
values: 0 4294967295
value: 0
11 SRC_W:
flags: range
values: 0 4294967295
value: 0
12 SRC_H:
flags: range
values: 0 4294967295
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001900000018000000
02000000800000004152323441523132
41523135425832345241313552413132
52473234524731364e5631324e563136
4e5632314e5636315559565956595559
58523234595531315955313259553136
59553234595559565956313159563132
59563136595632345956595500000000
ffffff01000000000000000000000000
0000000000000000008f730000000000
00000000000000000100000000000009
in_formats blob decoded:
AR24: LINEAR
AR12: LINEAR
AR15: LINEAR
BX24: LINEAR
RA15: LINEAR
RA12: LINEAR
RG24: LINEAR
RG16: LINEAR
NV12: LINEAR (UNKNOWN MODIFIER)
NV16: LINEAR (UNKNOWN MODIFIER)
NV21: LINEAR (UNKNOWN MODIFIER)
NV61: LINEAR (UNKNOWN MODIFIER)
UYVY: LINEAR
VYUY: LINEAR
XR24: LINEAR
YU11: LINEAR (UNKNOWN MODIFIER)
YU12: LINEAR (UNKNOWN MODIFIER)
YU16: LINEAR (UNKNOWN MODIFIER)
YU24: LINEAR
YUYV: LINEAR
YV11: LINEAR (UNKNOWN MODIFIER)
YV12: LINEAR (UNKNOWN MODIFIER)
YV16: LINEAR (UNKNOWN MODIFIER)
YV24: LINEAR
YVYU: LINEAR
41 alpha:
flags: range
values: 0 65535
value: 65535
42 zpos:
flags: range
values: 0 3
value: 2
43 0 0 0,0 0,0 0 0x00000001
formats: AR24 AR12 AR15 BX24 RA15 RA12 RG24 RG16 NV12 NV16 NV21 NV61 UYVY VYUY XR24 YU11 YU12 YU16 YU24 YUYV YV11 YV12 YV16 YV24 YVYU
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
17 FB_ID:
flags: object
value: 0
18 IN_FENCE_FD:
flags: signed range
values: -1 2147483647
value: -1
20 CRTC_ID:
flags: object
value: 0
13 CRTC_X:
flags: signed range
values: -2147483648 2147483647
value: 0
14 CRTC_Y:
flags: signed range
values: -2147483648 2147483647
value: 0
15 CRTC_W:
flags: range
values: 0 2147483647
value: 0
16 CRTC_H:
flags: range
values: 0 2147483647
value: 0
9 SRC_X:
flags: range
values: 0 4294967295
value: 0
10 SRC_Y:
flags: range
values: 0 4294967295
value: 0
11 SRC_W:
flags: range
values: 0 4294967295
value: 0
12 SRC_H:
flags: range
values: 0 4294967295
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001900000018000000
02000000800000004152323441523132
41523135425832345241313552413132
52473234524731364e5631324e563136
4e5632314e5636315559565956595559
58523234595531315955313259553136
59553234595559565956313159563132
59563136595632345956595500000000
ffffff01000000000000000000000000
0000000000000000008f730000000000
00000000000000000100000000000009
in_formats blob decoded:
AR24: LINEAR
AR12: LINEAR
AR15: LINEAR
BX24: LINEAR
RA15: LINEAR
RA12: LINEAR
RG24: LINEAR
RG16: LINEAR
NV12: LINEAR (UNKNOWN MODIFIER)
NV16: LINEAR (UNKNOWN MODIFIER)
NV21: LINEAR (UNKNOWN MODIFIER)
NV61: LINEAR (UNKNOWN MODIFIER)
UYVY: LINEAR
VYUY: LINEAR
XR24: LINEAR
YU11: LINEAR (UNKNOWN MODIFIER)
YU12: LINEAR (UNKNOWN MODIFIER)
YU16: LINEAR (UNKNOWN MODIFIER)
YU24: LINEAR
YUYV: LINEAR
YV11: LINEAR (UNKNOWN MODIFIER)
YV12: LINEAR (UNKNOWN MODIFIER)
YV16: LINEAR (UNKNOWN MODIFIER)
YV24: LINEAR
YVYU: LINEAR
45 alpha:
flags: range
values: 0 65535
value: 65535
46 zpos:
flags: range
values: 0 3
value: 3
Frame buffers:
id size pitch
#
上面是控制台日志
听风识雨 说:主线Linux暂时不支持, 但是我搞定了, X3/V3s/F1C100s都可以用
大佬有在x3上实测过可以运行没,用的是 tina 还是主线啊。
基于aodzip大神的buildroot, 添加rndis/dhcpd/mjpg-streamer, 打造了tiny200"伪"网络摄像头
http://whycan.com/t_5391.html#p54413
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
https://blog.csdn.net/xiaofeng881105/article/details/82530515
如果驱动加载成功且没有报错的话,在电脑端应该能识别到UVC camera。但由于3516av100可用的usb 端点数量有限,g_webcam加载时报错:
g_webcam gadget: uvc_function_bind
g_webcam gadget: Unable to allocate streaming EP
himm 0x10080044 ---> 0x00000024
himm 0x10080048 ---> 0x2288C8D4
读取硬件配置寄存器GHWCFG1和GHWCFG2,可以查看到除了ep0(双向)之外,只有两个可用端点,一个in一个out。Usb协议中ep0为必备端点,上电即可使用,而其他端点需要通过ep0和主机建立连接时进行配置,配置后才可以使用。UVC协议中需要使用两个IN ep,一个用作视频控制VC,一个用作视频流VS,因此在加载该驱动时获取ep失败,在绑定uvc功能模块时报的错。(海思方面答复是3516av100不支持)
注意:驱动本身最大支持到16个端点(含ep0),但是实际可用的受限于硬件,通过读取寄存器获取到可用端点总数和in/out端点数。
理论上可以复用ep0作为uvc的VC端点,因为ep0是双向的;但实际验证行不通,为此做了如下修改尝试:
VC复用ep0
VC为空
VC和VS共用端点
主要修改f_uvd.c中uvc_function_bind函数。上面的修改均行不通,修改后再host对设备进行配置时,setup报错。
实际查看代码,关于uvc的描述符中定义了uvc控制类和uvc视频流类:uvc_control_cls和uvc_fs_streaming_cls,还有一个uvc_hs_streaming_cls类。
如果要修改还需要对uvc协议和驱动代码深入的了解,时间有限,没有深入去理解。
http://bbs.ebaina.com/thread-39433-1-1.html
请问有没有在3518EV200上做uvc gadget webcam的?加载驱动报下面的错误,似乎usb ep没申请到,可能是什么问题?
# insmod g_webcam.ko
g_webcam gadget: uvc_function_bind
g_webcam gadget: Unable to allocate streaming EP
insmod: can't insert 'g_webcam.ko': Invalid argument
好像节点不够啊
申请了一个control的EP IN的节点成功了。再申请一个Stream的EP In的节点就失败了。难道3518EV200这个芯片的USB只能支持1个EP In的节点?从哪里可以确认?技术手册?什么文档?
代码里面加了打印,竟然dwc_otg在初始化的时候,只有一个In和一个Out ep。这个是硬件决定的?还是可以修改配置?
硬件决定的,看GHWCFG2这个寄存器。
是的,确实是读这个寄存器,dwc_otg加载的时候,判断的。
就是不清楚是否可以修改。如果改不了,那这个芯片就用不了了。
有没有芯片支持的EP可以多点的?3516、3519、3518?
https://forums.developer.nvidia.com/t/tx2-usb-3-0-device-mode-support-iso-transfer/62626
i want to know did the usb 3.0 host can support ISO transfer
i have apply the patch to set usb 3.0 into device mode
when i set it to bulk mode ,it can work well
but when i try to set it as ISO mode ,it can’t int succeed
[ 176.034876] g_webcam 3550000.xudc: failed to start g_webcam: -22
[ 207.267492] tegra-xotg xotg: update_vbus_state: VBUS detected
[ 207.482267] tegra-usb-cd usb_cd: notification status (0x0, 0x10)
[ 207.488345] tegra-usb-cd usb_cd: connected to CDP
[ 207.493170] tegra-usb-cd usb_cd: set current 0ma
[ 207.497874] tegra-xudc-new 3550000.xudc: exiting ELPG
[ 207.505957] tegra-xudc-new 3550000.xudc: exiting ELPG done
[ 207.511482] tegra-xudc-new 3550000.xudc: device mode on
[ 211.845324] g_webcam gadget: Linux USB Audio Gadget, version: Feb 2, 2012
[ 211.852259] g_webcam gadget: uvc_function_bind
[ 211.856761] g_webcam gadget: Unable to allocate streaming EP
[ 211.862458] ac_intf:0
[ 211.864742] as_in_intf:1
[ 211.867315] f_audio_bind:671
[ 211.870230] g_webcam 3550000.xudc: failed to start g_webcam: -22any one can help me to confirm that?
是usb 不支持 iso 模式?
https://forum.pine64.org/printthread.php?tid=6227
RE: Problem setting Pine64 as a USB device - martin357 - 07-02-2018
Thank you for your response.
Trying different USB cable, also sudo lsusb but I see no change.
In the meanwhile I tried:
Modprobe g_webcam as the only gadget module that is included in armbain 5.3x 3.10.105/107, it failed to load:
Code:
[ 125.143273] g_webcam gadget: uvc_function_bind
[ 125.143306] gadget_is_softwinner_otg is not -int # << this is the same error I get when loading
[ 125.143314] gadget_is_softwinner_otg is not -int # the g_serial module without the use_acm=0
[ 125.143322] gadget_is_softwinner_otg is not -int # option. In both cases it doesn't work.
[ 125.143330] gadget_is_softwinner_otg is not -int
[ 125.143347] g_webcam gadget: Unable to allocate streaming EP
[ 125.143382] g_webcam 1c19000.udc-controller: failed to start g_webcam: -22I get the same errors about endpoints when I try to insert my compiled g_serial without the use_acm=0 option. It realy does seem that gadgets simply do not work with this(BSP/mostly BSP) kernel 3.10.107 and that's why it's not included . However I can't find any further information about it.
I using configfs to setup the gadget seem to get the same result.(and functionfs is not configured on Armbian with 3.10.105/107 kernel)I found out that USB gadgets actualy do work with the mainline kernel(4.13.xx), which is great, but does not really solve my problem, because the mainline kernel does not support DSI MIPI displays at this time. Because of that, I am still trying to make it work on the 3.10.xx kernel.
I am looking for a way to get both of those features working.
一样的错误 ...
启动文件: /etc/init.d/S99uvc
mount -t configfs none /sys/kernel/config
mkdir /sys/kernel/config/usb_gadget/g1
cd /sys/kernel/config/usb_gadget/g1
mkdir configs/c.1
mkdir strings/0x409
mkdir configs/c.1/strings/0x409
echo 0x3290 > idProduct
echo 0x18ec > idVendor
echo 0x0310 > bcdUSB
echo serial > strings/0x409/serialnumber
echo manufacturer > strings/0x409/manufacturer
echo UVC Gadget > strings/0x409/product
echo "Conf 1" > configs/c.1/strings/0x409/configuration
echo 120 > configs/c.1/MaxPower
mkdir functions/uvc.usb0
mkdir -p functions/uvc.usb0/streaming/uncompressed/u/480p
cat <<EOF > functions/uvc.usb0/streaming/uncompressed/u/480p/dwFrameInterval
333333
1000000
5000000
EOF
echo 480 > functions/uvc.usb0/streaming/uncompressed/u/480p/wHeight
echo 333333 > functions/uvc.usb0/streaming/uncompressed/u/480p/dwDefaultFrameInterval
echo 614400 > functions/uvc.usb0/streaming/uncompressed/u/480p/dwMaxVideoFrameBufferSize
echo 73728000 > functions/uvc.usb0/streaming/uncompressed/u/480p/dwMaxBitRate
echo 24576000 > functions/uvc.usb0/streaming/uncompressed/u/480p/dwMinBitRate
mkdir functions/uvc.usb0/streaming/header/h
cd functions/uvc.usb0/streaming/header/h
ln -s ../../uncompressed/u
cd ../../class/fs
ln -s ../../header/h
cd ../../class/hs
ln -s ../../header/h
cd ../../class/ss
ln -s ../../header/h
cd ../../../control
mkdir header/h
ln -s header/h class/fs
ln -s header/h class/hs
ln -s header/h class/ss
cd /sys/kernel/config/usb_gadget/g1
echo 1024 > functions/uvc.usb0/streaming_maxpacket
echo 15 > functions/uvc.usb0/streaming_maxburst
ln -s functions/uvc.usb0 configs/c.1
ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/g1/UDC
/etc/init.d/S99uvc
ln: class/hs: Operation not permitted
[ 342.174711] configfs-gadget gadget: uvc: uvc_function_bind()
[ 342.180408] configfs-gadget gadget: uvc: Unable to allocate streaming EP
[ 342.187336] configfs-gadget musb-hdrc.1.auto: failed to start g1: -22
请问楼主解决了吗?我的也是一样的问题.
https://github.com/wlhe/uvc-gadget
请问楼主这个项目加到 buildroot 应该怎么修改呢?
基于aodzip大神的buildroot, 添加rndis/dhcpd/mjpg-streamer, 打造了tiny200"伪"网络摄像头
tf卡镜像下载: sysimage-sdcard.7z
1. usb配置成rndis了, linux启动后会出现一张网卡, windows需要装rndis驱动程序, tiny200 的ip地址是 192.168.7.1
电脑自动从tiny200开发板的 dhcpd服务器获取ip地址
2. tiny200已内置 mjpg-streamer 网络摄像头程序, 因为没有驱动jpeg硬件编码器, 所以帧率相当低, 差不多只有 1fps
地址 http://192.168.7.1:8080/
这是我们物业公司交物业费的二维码, 扫一扫进入一个URL:
X Y Z 已经替代了隐私信息
这家公司就是专门替物业公司收费的:
Ubuntu 与 宿主机共享文件夹:
请问 VMWARE 15.5.2 + Ubuntu18.04 把本地硬盘映射过去,为什么每次开机都没有呢?每次重启虚拟机都要重新禁用/启用
http://whycan.cn/t_5173.html#p52523
(出处:哇酷开发者社区【VMWare/Linux/Ubuntu/Fedora/CentOS/U-BOOT】)
https://blog.csdn.net/nzyalj/article/details/80288340
ubuntu 16.04 不能与宿主机共享剪贴板, 用以下命令安装vmware tools就行:
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop
https://kb.vmware.com/s/article/60262
把这个命令写到 /etc/rc.local 就行了, 每次开机启动执行:
感谢站长, 试过了,实在腻好用了, 妈妈再也不要担心我的共享文件夹不会开机挂载了。
u-boot设置的bootargs:
[ 0.000000] Kernel command line: console=ttyS0,115200 earlyprintk panic=5 rootwait mtdparts=spi32766.0:320k(uboot),320k(logob),320k(logoa),64k(dtb),5M(kernel),-(rootfs) root=31:5 rw rootfstype=jffs2 init=/linuxrc fbcon=map:1 vt.global_cursor_default=0
没有生成mtd分区:
[ 0.953109] printk: console [ttyS0] enabled
[ 0.971805] m25p80 spi0.0: mx25l25635e (32768 Kbytes)
[ 0.980261] libphy: Fixed MDIO Bus: probed
[ 0.984377] CAN device driver interface
打开 drivers/mtd/cmdlinepart.c 开启调试信息:
/* debug macro */
#if 1
#define dbg(x) do { printk("DEBUG-CMDLINE-PART: "); printk x; } while(0)
#else
#define dbg(x)
#endif
以下是带调试信息的log, 但是仍然没有生成mtd分区:
[ 0.985974] m25p80 spi0.0: mx25l25635e (32768 Kbytes)
[ 0.991106] DEBUG-CMDLINE-PART:
[ 0.991115] parsing <320k(uboot),320k(logob),320k(logoa),64k(dtb),5M(kernel),-(rootfs)>
[ 1.002381] DEBUG-CMDLINE-PART:
[ 1.002395] partition 5: name <rootfs>, offset ffffffffffffffff, size ffffffffffffffff, mask flags 0
[ 1.014769] DEBUG-CMDLINE-PART:
[ 1.014781] partition 4: name <kernel>, offset ffffffffffffffff, size 500000, mask flags 0
[ 1.026284] DEBUG-CMDLINE-PART:
[ 1.026296] partition 3: name <dtb>, offset ffffffffffffffff, size 10000, mask flags 0
[ 1.037451] DEBUG-CMDLINE-PART:
[ 1.037463] partition 2: name <logoa>, offset ffffffffffffffff, size 50000, mask flags 0
[ 1.048809] DEBUG-CMDLINE-PART:
[ 1.048822] partition 1: name <logob>, offset ffffffffffffffff, size 50000, mask flags 0
[ 1.060150] DEBUG-CMDLINE-PART:
[ 1.060162] partition 0: name <uboot>, offset ffffffffffffffff, size 50000, mask flags 0
[ 1.071490] DEBUG-CMDLINE-PART:
[ 1.071497] mtdid=<spi32766.0> num_parts=<6>
[ 1.082344] libphy: Fixed MDIO Bus: probed
simplefb_lcd: framebuffer@0 {
compatible = "allwinner,simple-framebuffer",
"simple-framebuffer";
allwinner,pipeline = "de0-lcd0";
clocks = <&ccu CLK_BUS_TCON0>, <&display_clocks 0>,
<&display_clocks 6>, <&ccu CLK_TCON0>;
status = "disabled";
};
我看到你的这个用了 simplefb, 如果这个地方继承了u-boot的simplefb, 那么可以不需要drm了。
adozip大佬的帖子大概是这么说的
Widora TINY200 R2 体验版开源开发包,修复了大部分F1C100s/F1C200s的遗留问题
http://whycan.cn/t_5061.html#p51424
(出处:哇酷开发者社区【全志 V3S/F1C100s/X3】)
页次: 1