兄弟们我离职了,以后看什么时候有机会用上全志的芯片就来问问吧,不过就我这一圈体验下来,只能说代码做得勉强还行,就这样。
xjy_5 发布的最佳帖子
-
关于V853做网络摄像头推流的问题
没搞过开发板做服务器,老板要求开发板实现屏幕采集,usb键盘鼠标转发,这就涉及开发板视频流推流的问题,预想是的采集后h264编码发送。
现在找着的方法是用nginx服务器+fastcgi做程序和服务器的数据共享,这些都是openwrt自带有的组件,但问题来了,开发板的程序要想用Fastcgi要libfcgi库,我找了半天就找到几个patch文件,具体的库究竟是在哪完成的编译的??
自己完成libfcgi的交叉编译还是颇有难度,没搞定。
可以用的是cgi,但它每次都要创建线程再删除,性能实在太差了。 -
回复: 求高人指点! ISP通路测试 sample_vin_isp_test 报错
@kunyi 开ISP当然可以用,现在关ISP也能用了,就是抓图的时候像素格式没设置对
-
回复: 再见了各位!
@xiaowenge 那是,性价比这块全志芯片还不错的,如果能自己搞定软件的话... 确实难就难在这,我这里东西都做得差不多了,只是老板想叫我去做bios编程的工作内容,我不同意,试用期也就这样了。
-
vin驱动内设置mbus_code = MEDIA_BUS_FMT_UYVY8_2X8,应用层开启采集时应该使用哪种像素格式?
兜兜转转又回到了RK628驱动,老板要求的,因为它比较新,有公司可以问,它做hdmi转mipi csi只能输出YUV422格式像素,驱动对应的是 MEDIA_BUS_FMT_UYVY8_2X8 ,抓图例程用/root/sample_driverVipp,不过我发现实际运行起来后被设成了MEDIA_BUS_FMT_SBGGR8_1X8,只有用 V4L2_PIX_FMT_SBGGR8作为像素格式不会报错,不过也没出图,看mipi clk有1.2V波形,这该咋办?
讲真卡在这里真的太久了,哎,烦
-
V853移植rk628成功出图,但是图片颜色异常,求个排查思路
驱动里设置
/* * Store information about the video data format. */ static struct sensor_format_struct sensor_formats[] = { { .desc = "UYVY 4:2:2", .mbus_code = MEDIA_BUS_FMT_UYVY8_2X8, /*.mbus_code = MEDIA_BUS_FMT_SBGGR10_1X10, */ .regs = 0, .regs_size = 0, .bpp = 4, }, }; #define N_FMTS ARRAY_SIZE(sensor_formats) /* * Then there is the issue of window sizes. Try to capture the info here. */ static struct sensor_win_size sensor_win_sizes[] = { { .width = 1920, .height = 1080, .hoffset = 0, .voffset = 0, .hts = 2200, .vts = 1125, .pclk = 74250000*2, .mipi_bps = 375 * 1000 * 1000, .fps_fixed = 60, .regs = 0, .regs_size = 0, .set_size = NULL, }, };
修改了sunxi_isp.c和vin_tdm.c,增加对MEDIA_BUS_FMT_UYVY8_2X8的支持,设备树里设置 sensor0_isp_used = <0>; sensor0_fmt = <0>;
static struct tdm_format sunxi_tdm_formats[] = { { .code = MEDIA_BUS_FMT_UYVY8_2X8, .input_type = INPUTTPYE_8BIT, .input_bit_width = RAW_8BIT, .raw_fmt = BAYER_RGGB, },{ ...
static struct isp_pix_fmt sunxi_isp_formats[] = { { .fourcc = V4L2_PIX_FMT_UYVY, .mbus_code = MEDIA_BUS_FMT_UYVY8_2X8, .infmt = ISP_BGGR, .input_bit = RAW_8, },{
使用camerademo setting 抓图
root@TinaLinux:/# camerademo setting [CAMERA]********************************************************** [CAMERA]* * [CAMERA]* this is camera test. * [CAMERA]* * [CAMERA]********************************************************** [CAMERA] Please input the setting parameters according to the prompts. [CAMERA]********************************************************** [CAMERA] open /dev/video0! [CAMERA]********************************************************** [CAMERA]********************************************************** [CAMERA] Please enter the data save path: /root/pic [CAMERA] Please enter the number of captured photos: 1 [CAMERA] Please enter the data save type: [CAMERA] 0:save BMP and YUV formats [CAMERA] 1:save BMP format [CAMERA] 2:save YUV format 2 [CAMERA]************************[ 38.522814] [rk628_mipi]PWR_ON! ********************************[ 38.530221] [rk628_mipi]sensor_init ** [CAMERA] The path to data sa[ 38.536887] rk628_mipi 1-0050: RK628 I2C driver version: 00.00.08 ving is /root/pic. [CAMERA] The[ 38.545311] [rk628_mipi]do nothing rk628 init over number of captured photos is 1.[ 38.553725] [VIN]fmt yuv mask [CAMERA] save yuv format [ 38.559577] [VIN]fmt yuv mask [ 38.565431] [VIN]fmt yuv mask [ 38.568777] [VIN]fmt yuv mask [ 38.572136] [VIN]fmt yuv mask [ 38.575590] [VIN]fmt yuv mask [ 38.578934] [VIN]fmt yuv mask [ 38.582275] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.589048] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.595745] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.602458] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.609179] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.615919] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.622589] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.629328] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.636020] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.642742] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.649440] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.656219] [VIN]no fmt yuv mask mask:0x2 vinc->support_raw:0x0 [ 38.662874] [VIN]fmt yuv mask [ 38.666308] [VIN]fmt yuv mask [ 38.669643] [VIN]fmt yuv mask [ 38.672999] [VIN]fmt yuv mask [ 38.676424] [VIN]fmt yuv mask [ 38.679768] [VIN]fmt yuv mask [ 38.683100] [VIN]fmt yuv mask [ 38.686521] [VIN]fmt yuv mask [ 38.689881] [VIN]fmt yuv mask [ 38.693214] [VIN]fmt yuv mask [ 38.696641] [VIN]fmt yuv mask [ 38.699984] [VIN]fmt yuv mask [CAMERA]********************************************************* [CAMERA] The sensor supports the following formats : [CAMERA] index 0 : YUV422P [CAMERA] index 1 : NV16 [CAMERA] index 2 : NV61 [CAMERA] index 3 : YUV420 [CAMERA] index 4 : YVU420 [CAMERA] index 5 : NV12 [CAMERA] index 6 : NV21 [CAMERA] index 7 : BGGR8 [CAMERA] index 8 : GBRG8 [CAMERA] index 9 : GRBG8 [CAMERA] index 10 : RGGB8 [CAMERA] index 11 : BGGR10 [CAMERA] index 12 : GBRG10 [CAMERA] index 13 : GRBG10 [CAMERA] index 14 : RGGB10 [CAMERA] index 15 : BGGR12 [CAMERA] index 16 : GBRG12 [CAMERA] index 17 : GRBG12 [CAMERA] index 18 : RGGB12 [CAMERA] index 19 : YUYV [CAMERA] index 20 : UYVY [CAMERA] index 21 : VYUY [CAMERA] index 22 : YVYU [CAMERA] index 23 : YUYV [CAMERA] index 24 : UYVY [CAMERA] index 25 : VYUY [CAMERA] index 26 : YVYU [CAMERA] index 27 : UYVY [CAMERA] index 28 : VYUY [CAMERA] index 29 : YVYU [CAMERA] index 30 : YUYV [CAMERA] Please enter the serial number you need for pixelformat: 0 [CAMERA] The input value is 0. [CAMERA] camera pixelformat: YUV422P [CAMERA]********************************************************** [CAMERA] The YUV422P supports the following resolutions: [CAMERA] Index 0 : 1920 * 1080 [CAMERA] Please enter the serial number you need for windows size: 0 [CAMERA] The input value is 0. [ 45.692968] [VIN]fmt yuv mask [CAMERA] Resolution size : 1920 [ 45.699066] [rk628_mipi]ioctl cmd:0x0 * 1080 [CAMERA] The photo save path is /root/pic. [CAMERA] The number of photos taken is 1. [CAMERA]usr cap mplane begin io[ 45.714464] [cmb_phy_set_deskew_laneck0]-[239]:sel:0, delay:2 n_alloc_open pid: 1118, g_allo[ 45.723594] [cmb_phy_set_deskew_laneck0]-[239]:sel:1, delay:7 c_context = 0xb6efcf70 [CAMERA[ 45.733361] [rk628_mipi]s_stream enable val:1 ] Camera capture framerate is 60/1 [CAMERA] VIDIOC_S_FMT succeed [CAMERA] fmt.type = 9 [CAMER[ 45.747495] rk628_mipi 1-0050: src 1920x1080 clock:148500000 A] fmt.fmt.pix_mp.width = 1920 [ 45.755089] rk628_mipi 1-0050: dst 1920x1080 clock:148500000 [CAMERA] fmt.fmt.pix_mp.height = 1080 [CAMERA] fmt.fmt.pix_mp.pixelformat = YUV422P [CAMERA] fmt.fmt.pix_mp.field = 1 [ 45.901485] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [ 45.954623] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [ 46.014629] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [ 46.074626] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [ 46.134614] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [ 46.194637] rk628_mipi 1-0050: rk628_is_avi_ready PDEC_AVI_PB:0x1084a80c, avi_rcv_rdy:1 [CAMERA] stream on succeed [CAMERA] camera0 capture num is [0] [CAMERA_PROMPT] the time interval from the start to the first frame is 28 ms [CAMERA] Capture thread finish[ 46.583099] [rk628_mipi]s_stream enable val:0 [CAMERA] close /dev/video0[ 46.594185] [rk628_mipi]PWR_OFF!do nothing ion_alloc_close pid: 1118, release g_alloc_context = 0xb6efcf70 root@TinaLinux:/#
图片格式YUV422,宽高19201080理论上大小是19201080*2=4147200字节,实际上得到的图是4177920字节,多出来啥了?
用yuvplayer看图,颜色设置YUV422,能看到图片还白加点偏移的颜色的
-
回复: V853使用MIPI CSI接口是否只支持RAW格式像素?
@awwwwa 看来设备树里关ISP只是不使用硬件ISP但set_fmt还是会在代码里面过过,我开了ISP就出现isp error了,现在看来抓图应该是抓成功了,但数据格式不太对,有颜色,颜色都有偏移,文件大小也稍大了些,理论上192010802=417200字节,实际上是4177920字节,多出来什么了?
我截图桌面用ffmpeg转成yuv422图片确实是417200字节
-
回复: V853使用MIPI CSI接口是否只支持RAW格式像素?
@awwwwa 出图了,黑白色,我的天,今晚做梦都能笑出来了,哈哈
主要改了sunxi_isp_formats 和 sunxi_tdm_formats ,添加了含MEDIA_BUS_FMT_UYVY8_2X8的定义static struct tdm_format sunxi_tdm_formats[] = { { .code = MEDIA_BUS_FMT_UYVY8_2X8, .input_type = INPUTTPYE_8BIT, .input_bit_width = RAW_8BIT, .raw_fmt = BAYER_RGGB, },{ ...
static struct isp_pix_fmt sunxi_isp_formats[] = { { .fourcc = V4L2_PIX_FMT_YUV422P, .mbus_code = MEDIA_BUS_FMT_UYVY8_2X8, .infmt = ISP_BGGR, .input_bit = RAW_8, },{ ...
用yuvplayer看的图
-
回复: V853使用MIPI CSI接口是否只支持RAW格式像素?
@awwwwa 要是有办法绕掉sunxi_isp.c就好了 ,sunxi_csi_formats里都有MEDIA_BUS_FMT_UYVY8_2X8的定义了
-
回复: V853使用MIPI CSI接口是否只支持RAW格式像素?
@awwwwa reset脚,中断脚我在设备树其他地方定义,在驱动的sensor_init里获取来用了,也能用,iic是用rk628原本的regmap,也能用,不过这些放一边先。
驱动里设置 MEDIA_BUS_FMT_UYVY8_2X8 用camerademo抓图应该设置那个像素格式?使用gc2053的经验告诉我,设备树里关掉isp后抓图设置的像素格式应该和驱动里设置的一致,那MEDIA_BUS_FMT_UYVY8_2X8 对应的是哪个?int return_format(char *short_name) { if (strcmp(short_name, "YUV422P") == 0) return V4L2_PIX_FMT_YUV422P; else if (strcmp(short_name, "YUV420") == 0) return V4L2_PIX_FMT_YUV420; else if (strcmp(short_name, "YVU420") == 0) return V4L2_PIX_FMT_YVU420; else if (strcmp(short_name, "NV16") == 0) return V4L2_PIX_FMT_NV16; else if (strcmp(short_name, "NV12") == 0) return V4L2_PIX_FMT_NV12; else if (strcmp(short_name, "NV61") == 0) return V4L2_PIX_FMT_NV61; else if (strcmp(short_name, "NV21") == 0) return V4L2_PIX_FMT_NV21; else if (strcmp(short_name, "YUYV") == 0) return V4L2_PIX_FMT_YUYV; else if (strcmp(short_name, "YVYU") == 0) return V4L2_PIX_FMT_YVYU; else if (strcmp(short_name, "UYVY") == 0) return V4L2_PIX_FMT_UYVY; else if (strcmp(short_name, "VYUY") == 0) return V4L2_PIX_FMT_VYUY; else if (strcmp(short_name, "MJPEG") == 0) return V4L2_PIX_FMT_MJPEG; else if (strcmp(short_name, "H264") == 0) return V4L2_PIX_FMT_H264; else if (strcmp(short_name, "BGGR8") == 0) return V4L2_PIX_FMT_SBGGR8; else if (strcmp(short_name, "GBRG8") == 0) return V4L2_PIX_FMT_SGBRG8; else if (strcmp(short_name, "GRBG8") == 0) return V4L2_PIX_FMT_SGRBG8; else if (strcmp(short_name, "RGGB8") == 0) return V4L2_PIX_FMT_SRGGB8; else if (strcmp(short_name, "BGGR10") == 0) return V4L2_PIX_FMT_SBGGR10; else if (strcmp(short_name, "GBRG10") == 0) return V4L2_PIX_FMT_SGBRG10; else if (strcmp(short_name, "GRBG10") == 0) return V4L2_PIX_FMT_SGRBG10; else if (strcmp(short_name, "RGGB10") == 0) return V4L2_PIX_FMT_SRGGB10; else if (strcmp(short_name, "BGGR12") == 0) return V4L2_PIX_FMT_SBGGR12; else if (strcmp(short_name, "GBRG12") == 0) return V4L2_PIX_FMT_SGBRG12; else if (strcmp(short_name, "GRBG12") == 0) return V4L2_PIX_FMT_SGRBG12; else if (strcmp(short_name, "RGGB12") == 0) return V4L2_PIX_FMT_SRGGB12; else return -1; }
-
uhttpd服务启动报错
root@TinaLinux:/# /etc/init.d/uhttpd start
root@TinaLinux:/# /etc/rc.common: line 128: uci_load: not found不知道怎么添加uci的调用,没找到uci的配置路径,在menuconfig下直接搜索uci信息太多,搜索uci_load就没信息
-
回复: uhttpd服务启动报错
@awwwwa 还是一样的,luci加进来了,官网的配置暂时没找着这个内容
root@TinaLinux:/# luci-
luci-bwc luci-reload
root@TinaLinux:/# /etc/init.d/uhttpd start
root@TinaLinux:/# /etc/rc.common: line 128: uci_load: not foundroot@TinaLinux:/#
-
回复: v853上电自动打开eth0怎么设置
@sunxi 修改脚本/etc/init.d/S40network
添加 ifconfig eth0 up
ifconfig eth0 "192.168.1.1" netmask "255.255.255.0"参考例子
#!/bin/sh # # Start the network.... # # Debian ifupdown needs the /run/network lock directory mkdir -p /run/network MAC_ADDR="`cat /sys/class/sunxi_info/sys_info | awk '$1=="sunxi_chipid" {print $3}' | sed 's/../&:/g' | cut -c1-14`" ipaddr="192.168.20.162" netmask="255.255.255.0" case "$1" in start) printf "Starting network: " /sbin/ifup -a [ $? = 0 ] && echo "OK" || echo "FAIL" /sbin/ifconfig eth0 hw ether "00:$MAC_ADDR" #udhcpc -b -R & ifconfig eth0 up ifconfig eth0 "$ipaddr" netmask "$netmask" ;; stop) printf "Stopping network: " /sbin/ifdown -a [ $? = 0 ] && echo "OK" || echo "FAIL" ;; restart|reload) "$0" stop "$0" start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $?
可以修改openwrt/target/v853/v853-vision/busybox-init-base-files/etc/init.d/S40network,这样每次打包都会把这个脚本改好