页次: 1
drmModeObjectSetProperty()
尝试通过这个接口设置支持rotate的plane,但是不行。
void set_plane_property(int fd, int plane_id,struct property_arg *p)
{
drmModeObjectPropertiesPtr props;
drmModePropertyPtr pt;
const char *obj_type;
int ret;
int i;
props = drmModeObjectGetProperties(fd, plane_id,
DRM_MODE_OBJECT_PLANE);
if(props){
for (i = 0; i < (int)props->count_props; ++i) {
pt = drmModeGetProperty(fd, props->props[i]);
if (!pt)
continue;
if (strcmp(pt->name, p->name) == 0){
drmModeFreeProperty(pt);
break;
}
drmModeFreeProperty(pt);
}
if (i == (int)props->count_props) {
printf("%i has no %s property\n",p->obj_id, p->name);
return;
}
p->prop_id = props->props[i];
ret = drmModeObjectSetProperty(fd, p->obj_id, p->obj_type,
p->prop_id, p->value);
if (ret < 0)
printf("faild to set property %s,id %d,value %d\n",p->obj_id, p->name, p->value);
drmModeFreeObjectProperties(props);
}
}
void set_rotation(int fd, int plane_id,int value)
{
struct property_arg prop;
if(value !=1 && value !=2 && value !=4 && value !=8)
return;
memset(&prop, 0, sizeof(prop));
prop.obj_type = 0;
prop.name[DRM_PROP_NAME_LEN] = '\0';
prop.obj_id = plane_id;
memcpy(prop.name,"rotation",sizeof("rotation"));
prop.value = value; //rotate-0=0x1 rotate-90=0x2 rotate-180=0x4 rotate-270=0x8, modetest -p can show the details
set_plane_property(fd,plane_id,&prop);
}
set_rotation(fd,plane_res->planes[index], 0x1);
没看懂你的需求是啥,如果用的是官方默认的Linux的SDK,输入下面的命令看看;
echo "output:all:rotate90"> /tmp/.weston_drm.conf # All screens are rotated 90 degrees
先说正常情况:竖屏1080x1920的plane,播放视频,需要1080x1920分辨率的。一般视频是1920x1080格式,如果想在竖屏播放,必须rotate后成1080x1920的才可以发送给plane.
需求就是:想通过设置drm plane的rotate属性,比如设置旋转90度,之后向此plane发送1920x1080的视频,此plane是不是就可以“在内部rotate后”,显示到1080x1920的屏幕上?
使用的rk3568, 接了dsi竖屏:
163 162 connected DSI-1 0x0 1 162
modes:
name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
1080x1920 62 1080 1116 1120 1150 1920 1926 1928 1934 138000 flags: nhsync, nvsync; type: preferred, driver
有支持rotate的plane,这个plane如何使用?如果我设置roate 90或270后,是不是可以将横屏的1920x1080数据,直接发送到竖屏(1080x1920)上进行显示?
目前rotate操作是调用opencl 旋转后送到竖屏drm显示的。
131 0 0 0,0 0,0 0 0x00000003
formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV16 NV24 NA12 NA16 NA24
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000000e00000018000000
0a000000500000005852323441523234
58423234414232345247323442473234
52473136424731364e5631324e563136
4e5632344e4131324e4131364e413234
ff1b0000000000000000000000000000
0100000000000008ff1b000000000000
00000000000000004100000000000008
ff1b0000000000000000000000000000
1100000000000008ff1b000000000000
00000000000000008100000000000008
ff1b0000000000000000000000000000
5100000000000008ff1b000000000000
0000000000000000c100000000000008
ff1b0000000000000000000000000000
9100000000000008ff1b000000000000
0000000000000000d100000000000008
ff1b0000000000000000000000000000
7100000000000008ff3f000000000000
00000000000000000000000000000000
in_formats blob decoded:
XR24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
AR24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
XB24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
AB24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
RG24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
BG24: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
RG16: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
BG16: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
NV12: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
NV16: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
NV24: LINEAR
NA12: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
NA16: (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) (UNKNOWN MODIFIER) LINEAR
NA24: LINEAR
133 rotation:
flags: bitmask
values: rotate-0=0x1 rotate-90=0x2 rotate-270=0x8 reflect-x=0x10 reflect-y=0x20
value: 0
134 alpha:
flags: range
values: 0 65535
value: 65535
135 pixel blend mode:
flags: enum
enums: None=2 Pre-multiplied=0 Coverage=1
value: 0
136 zpos:
flags: range
values: 0 7
value: 6
137 NAME:
flags: immutable bitmask
values: Cluster1-win0=0x40
value: 64
138 FEATURE:
flags: immutable bitmask
values: scale=0x1 afbdc=0x10
value: 17
139 INPUT_WIDTH:
flags: immutable range
values: 0 4096
value: 0
140 INPUT_HEIGHT:
flags: immutable range
values: 0 2304
value: 0
141 OUTPUT_WIDTH:
flags: immutable range
values: 0 4096
value: 0
142 OUTPUT_HEIGHT:
flags: immutable range
values: 0 2304
value: 0
143 SCALE_RATE:
flags: immutable range
values: 4 4
value: 0
144 colorkey:
flags: range
values: 0 2164260863
value: 0
https://whycan.cn/files/members/1574/2019-09-19_113155.png
linux usb gadget驱动简直太好用, 随便配置一下就是一个复合USB设备, 这是我的 S5PV210 开发板。
https://www.kernel.org/doc/Documentation/usb/gadget_configfs.txt
mount -t configfs none /sys/kernel/config modprobe libcomposite modprobe usb_f_serial modprobe usb_f_fs modprobe usb_f_hid modprobe usb_f_acm sleep 2 cd /sys/kernel/config/usb_gadget/ if [ ! -d /sys/kernel/config/usb_gadget/g1 ]; then mkdir g1 cd g1 echo 0x8087 > idVendor echo 0x101e > idProduct mkdir strings/0x409 echo 012345678 > strings/0x409/serialnumber echo Intel > strings/0x409/manufacturer echo IoTplatform > strings/0x409/product mkdir functions/acm.GS0 mkdir functions/ffs.adb mkdir functions/hid.usb0 # setup hid parameters for the keyboard function echo 1 > functions/hid.usb0/protocol echo 1 > functions/hid.usb0/subclass echo 8 > functions/hid.usb0/report_length echo -ne "\x05\x01\x09\x06\xA1\x01\x05\x07\x19\xE0\x29\xE7\x15\x00\x25\x01\x75\x01\x95\x08\x81\x02\x95\x01\x75\x08\x81\x03\x95\x05\x75\x01\x05\x08\x19\x01\x29\x05\x91\x02\x95\x01\x75\x03\x91\x03\x95\x06\x75\x08\x15\x00\x25\x65\x05\x07\x19\x00\x29\x65\x81\x00\xC0" > functions/hid.usb0/report_desc mkdir configs/c.1 mkdir configs/c.1/strings/0x409 echo "adb+cdc" > configs/c.1/strings/0x409/configuration echo 120 > configs/c.1/MaxPower ln -s functions/acm.GS0 configs/c.1 ln -s functions/ffs.adb/ configs/c.1 ln -s functions/hid.usb0 configs/c.1/ mkdir /dev/usb-ffs mkdir /dev/usb-ffs/adb mount -t functionfs adb /dev/usb-ffs/adb adbd & fi echo s3c-hsotg > UDC
请问用的linux是哪个版本?还是用的android
[ 26.600400] Adding 905212k swap on /var/swap. Priority:-2 extents:4 across:1167356k SSFS
[ 66.371975] esp8089_spi: loading out-of-tree module taints kernel.
[ 66.396631] esp8089_spi: EAGLE DRIVER VER bdf5087c3deb
[ 67.015290] esp8089_spi: esp_spi_dummy_probe enter
[ 67.015484] esp8089_spi: register board OK
[ 67.015497] esp8089_spi: sem_timeout = 0
[ 67.226446] esp8089_spi: ESP8089 power up OK
[ 67.226881] esp8089_spi: esp_spi_probe ENTER
[ 67.226892] esp8089_spi: esp_setup_spi
[ 67.226920] esp8089_spi: sif_spi_protocol_init
[ 67.226933] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 67.226940] esp8089_spi: fail_count = 0
[ 67.352574] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 67.453473] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 67.453485] esp8089_spi: fail_count = 1
[ 67.561299] rx:[0x3f],[0x09],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 67.662171] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 67.662184] esp8089_spi: fail_count = 2
[ 67.770685] rx:[0xff],[0xff],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 68.375609] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1578
[ 68.380606] rx:[0xff],[0xff],[0x01],[0x10],[0xff],[0xff],[0x00],[0xff],[0xff],[0xff]
[ 68.884734] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1591
[ 68.888699] rx:[0xff],[0xff],[0x00],[0x90],[0xff],[0xff],[0x00],[0xff],[0xff],[0xff]
[ 69.392803] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1603
[ 69.397658] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 69.901795] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1617
[ 69.907142] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 70.411257] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1630
[ 70.415723] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 70.919875] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1643
[ 70.931100] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 71.435197] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 71.439793] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 71.943983] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 71.950147] rx:[0xff],[0x00],[0x25],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 72.454206] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 72.458791] rx:[0xff],[0x00],[0x10],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 72.963012] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 72.968017] rx:[0xff],[0x00],[0x12],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 73.472106] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 73.476040] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 73.980207] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 73.984614] rx:[0xff],[0x00],[0x06],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 74.488777] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 74.493607] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 74.997712] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 75.002035] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 75.506140] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1668
[ 75.509766] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 75.509787] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1681
[ 75.509929] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 75.509941] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1694
[ 75.510079] rx:[0xff],[0x00],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 76.530982] esp8089_spi: esp_pub_init_all
[ 76.531125] esp8089_spi: esp_download_fw
[ 77.025219] esp8089_spi: sif_platform_irq_init enter
[ 77.244191] esp_host:bdf5087c3deb
esp_target: e826c2b3c9fd 57 18202
[ 77.244321] esp_readwrite_file: file /system/lib/modules/test_results filp_open error
[ 77.245832] esp8089_spi: first normal exit
[ 77.245848] esp8089_spi: esp_spi_probe EXIT
[ 77.246132] esp8089_spi: sem_timeout = 0
[ 77.246206] esp8089_spi: esp_spi_remove
[ 77.376590] esp8089_spi: esp_spi_probe ENTER
[ 77.376606] esp8089_spi: esp_setup_spi
[ 77.376614] esp8089_spi: sif_spi_protocol_init
[ 77.376628] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 77.376634] esp8089_spi: fail_count = 0
[ 77.485191] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 77.586224] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 77.586238] esp8089_spi: fail_count = 1
[ 77.693635] rx:[0x3f],[0x09],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 77.794564] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1559
[ 77.794577] esp8089_spi: fail_count = 2
[ 77.901298] rx:[0xff],[0xff],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 78.506161] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1578
[ 78.510096] rx:[0xff],[0xff],[0x01],[0x10],[0xff],[0xff],[0x00],[0xff],[0xff],[0xff]
[ 79.014201] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1591
[ 79.019392] rx:[0xff],[0xff],[0x00],[0x90],[0xff],[0xff],[0x00],[0xff],[0xff],[0xff]
[ 79.523503] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1603
[ 79.528183] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 80.032309] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1617
[ 80.036776] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 80.540880] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1630
[ 80.545516] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 81.049727] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1643
[ 81.061853] rx:[0xff],[0x00],[0x03],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 81.565989] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 81.570411] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 82.074605] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 82.079556] rx:[0xff],[0x00],[0x25],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 82.583775] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 82.589059] rx:[0xff],[0x00],[0x10],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 83.093204] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 83.145532] rx:[0xff],[0x00],[0x12],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 83.649765] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 83.654466] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 84.158628] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 84.163003] rx:[0xff],[0x00],[0x06],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 84.667139] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 84.671465] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 85.175548] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1655
[ 85.180071] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 85.684170] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1668
[ 85.689675] rx:[0xff],[0x00],[0x00],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 85.689695] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1681
[ 85.689837] rx:[0xff],[0x00],[0x02],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 85.689851] esp8089_spi: /data/raspberry/8266/ESP8089-SPI/spi_sif_esp.c, 1694
[ 85.689987] rx:[0xff],[0x00],[0x01],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff],[0xff]
[ 86.710515] esp8089_spi: esp_pub_init_all
[ 86.710532] esp8089_spi: esp_download_fw
[ 87.314819] esp8089_spi: sif_platform_irq_init enter
[ 87.363840] esp_host:bdf5087c3deb
esp_target: e826c2b3c9fd 57 18202
[ 87.588031] esp8089_spi: esp_spi_probe EXIT
[ 87.588344] esp8089_spi: esp_spi_init err 0
[ 88.913171] esp_op_add_interface STA
[ 88.915054] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 90.110801] wlan0: authenticate with 20:dc:e6:fd:c9:77
[ 90.111152] wlan0: send auth to 20:dc:e6:fd:c9:77 (try 1/3)
[ 90.122334] wlan0: authenticated
[ 90.126579] wlan0: associate with 20:dc:e6:fd:c9:77 (try 1/3)
[ 90.137107] wlan0: RX AssocResp from 20:dc:e6:fd:c9:77 (capab=0x431 status=0 aid=2)
[ 90.137311] wlan0: associated
[ 90.571333] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
成功把8266当成wifi网卡,之前的出现以下错误是en脚没有使能。直接接到3.3V后,可以下载固件,并正常加载ko.
[ 72.081984] rx:[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00],[0x00]
[ 72.182922] esp8089_spi: first error exit
[ 72.182938] esp8089_spi: esp_spi_probe EXIT
[ 72.187142] eagle: probe of spi0.0 failed with error -110
[ 72.187353] esp8089_spi: sem_timeout = 0
[ 72.187367] esp8089_spi: esp_spi_init err 0
[ 177.692206] esp8089_spi: esp_spi_exit
先上个拆机图
3516Cv300的usb可以做uvc,之后找了接口定义,这个pcb也留有usb接口。理论接出来后,可以做uvc摄像头开发。
之后装上ttl,这个找G T R 就不说了。
从uboot打印和环境变量等,可以得到如下配置信息:
有线网口rtl8201f,108030编码,128Mddr3 8M spi flash
Block:64KB Chip:8MB Name:"XM25Q64AHIG"
at hifmc100_setTB() sr: 0x8 <<111>>.
unlock all.
SPI Nor total size: 8MB
sensor ar0237
uboot环境变量:
bootargs=init=linuxrc mem=${osmem} console=ttyAMA0,115200 root=/dev/mtdblock1 rootfstype=squashfs mtdparts=hi_sfc:0x30000(boot),0x2E0000(romfs),0x300000(user),0x160000(web),0x40000(custom),0x50000(mtd)
bootcmd=setenv setargs setenv bootargs ${bootargs};run setargs;sf probe 0;sf read 83000000 30000 2E0000;squashfsload;bootm 0x82000000
bootdelay=1
baudrate=115200
ipaddr=192.168.1.10
serverip=192.168.1.107
netmask=255.255.255.0
bootfile="uImage"
da=tftp 0x82000000 u-boot.bin.img;sf probe 0;flwrite
du=tftp 0x82000000 user-x.cramfs.img;sf probe 0;flwrite
dr=tftp 0x82000000 romfs-x.cramfs.img;sf probe 0;flwrite
dw=tftp 0x82000000 web-x.cramfs.img;sf probe 0;flwrite
dl=tftp 0x82000000 logo-x.cramfs.img;sf probe 0;flwrite
dc=tftp 0x82000000 custom-x.cramfs.img;sf probe 0;flwrite
up=tftp 0x82000000 update.img;sf probe 0;flwrite
ua=mw.b 0x82000000 ff 1000000;tftp 0x82000000 upall_verify.img;sf probe 0;flwrite
tk=tftp 0x82000000 uImage;setenv setargs setenv bootargs ${bootargs};run setargs;bootm 0x82000000
dd=mw.b 0x82000000 ff 1000000;tftp 0x82000000 mtd-x.jffs2.img;sf probe 0;flwrite
ethaddr=00:12:17:95:cf:8c
NID=0x0001
osmem=65M
appSystemLanguage=SimpChinese
appVideoStandard=PAL
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06-svn706 (Oct 09 2017 - 14:57:23)
Environment size: 1291/65532 bytes
备份官方flash镜像:
sf probe 0; sf read 82000000 0 800000
把整个flash镜像通道tftp上传到服务器:
tftp 82000000 xx.bin 800000
如果不放心,可以通过crc32校验下上传的文件与读出来的是否一致:crc32 82000000 800000
通过uboot环境变量,可以知道flash上的分区表,以解开,编辑,重新打包romfs为例:
获取romfs: dd if=xx.bin of=romfs.bin bs=1k skip=192 count=2944
查看squashfs压缩类型和块大小:Compression xz Block size 262144
解包: unsquashfs romfs.bin
打包: sudo mksquashfs ./squashfs-root/ romfs.bin -b 256k -noappend -all-root -comp lzma
烧写: sf probe 0; tftp 82000000 romfs.bin ; sf erase 0x30000 0x2E0000; sf write 82000000 0x30000 0x2E0000
erase时提示保护,但是运行sa时,就解锁了。
锁flash: sf lock level/all 解锁: sf lock 0
锁全部:sf lock 8 sf lock all
其它地方找的相关型号,接口定义:
IPG80H20PS-S
页次: 1