WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-11-18 11:11:01

2505300733
会员
所在地: 广州
注册时间: 2019-10-24
累计积分: 28

全志Android6的HAL层的ioctl函数命令问题?

平台:全志的Android6 ,使用的是全志A40I

出现的问题:  打开摄像头的时候,内核层没有提示任何的错误,但是在ADB里面 使用  logcat  |grep V4L2 查看摄像头打印出来的信息
提示以下两句话:

FluxBB bbcode 测试

返回源代码找到对应的文件是在:V4L2CameraDevice2.cpp  里面获取摄像头传感器类型出现了错误:便是一下函数的ioctl()出现了错误。
int V4L2CameraDevice::getSensorType()
{
        ........   
    ctrl.id = V4L2_CID_SENSOR_TYPE;                                  //  是这个宏有问题 匹配不上
    qc_ctrl.id = V4L2_CID_SENSOR_TYPE;                              //
    if (-1 == ioctl (mCameraFd, VIDIOC_QUERYCTRL, &qc_ctrl))
    {
        LOGE("query sensor type ctrl failed");
        return -1;
    }
    ret = ioctl(mCameraFd, VIDIOC_G_CTRL, &ctrl);
    return ctrl.value;
}
经过内核打印和对比之后发现是 V4L2_CID_SENSOR_TYPE这个宏有问题,进一步查看HAL的这个宏的定义在对应的videodev2_34.h里面发现

#define V4L2_CID_PRIVATE_BASE        0x08000000
V4L2_CID_SENSOR_TYPE                         (V4L2_CID_PRIVATE_BASE+16)

但是在内核层查看比较对应的宏之后发现;这个宏又是这样定义的,真是醉了。

#define V4L2_CTRL_CLASS_USER                                  0x00980000        /* Old-style 'user' controls */
#define V4L2_CID_BASE                                      (V4L2_CTRL_CLASS_USER | 0x900)
#define V4L2_CID_USER_BASE                                  (V4L2_CID_BASE)
#define V4L2_CID_USER_SUNXI_CAMERA_BASE          (V4L2_CID_USER_BASE + 0x1050)
#define V4L2_CID_SENSOR_TYPE                                 (V4L2_CID_USER_SUNXI_CAMERA_BASE+13)

但是在HAL层的videodev2_34.h 文件里面也有内核上面的定义但是并没有用。
有遇到这个问题的大神麻烦帮小弟看一下,究竟是修改内核的参数来配合HAL的宏好 ,还是修改HAL层的宏来匹配内核的。
查找内核层的头文件里面也有这个定义:

#define V4L2_CID_PRIVATE_BASE        0x08000000
但是,但是,但是居然没有定义这个宏 V4L2_CID_SENSOR_TYPE 。给的SDK都是这么不严谨的么。

在这里请教一下大家了,谢谢

离线

#2 2019-11-18 11:44:17

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 全志Android6的HAL层的ioctl函数命令问题?

没看出来, 帮你顶一下吧。

在线

#3 2019-11-18 14:38:45

2505300733
会员
所在地: 广州
注册时间: 2019-10-24
累计积分: 28

Re: 全志Android6的HAL层的ioctl函数命令问题?

晕哥 说:

没看出来, 帮你顶一下吧。


晕哥   在 V4L2CameraDevice2.cpp文件里面发现这个有头文件定义。#include <sunxi_camera.h>头文件里面定义的就符合内核ioctl命令。
会不会是我选择的平台有关啊。 但是我这个是A40I不是A64。疑惑的是这里的A64是他的芯片还是说对应的的arm64

#ifdef __PLATFORM_A64__
#include <sunxi_camera.h>
#else   
#include <videodev2_34.h>
#endif

离线

#4 2019-11-18 14:50:36

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 全志Android6的HAL层的ioctl函数命令问题?

https://linux-sunxi.org/A40i
https://linux-sunxi.org/A64

感觉应该 A40I不是A64


不确定的话就这样:


#ifdef __PLATFORM_A64__
#include <sunxi_camera.h>
#error "----------error A64----------"
#else   
#include <videodev2_34.h>
#error "----------error A40i----------"
#endif


看编译的时候, 输出什么信息。

在线

#5 2019-11-21 14:04:41

2505300733
会员
所在地: 广州
注册时间: 2019-10-24
累计积分: 28

Re: 全志Android6的HAL层的ioctl函数命令问题?

晕哥 说:

https://linux-sunxi.org/A40i
https://linux-sunxi.org/A64

感觉应该 A40I不是A64


不确定的话就这样:


#ifdef __PLATFORM_A64__
#include <sunxi_camera.h>
#error "----------error A64----------"
#else   
#include <videodev2_34.h>
#error "----------error A40i----------"
#endif


看编译的时候, 输出什么信息。


编译过后启动的#include <videodev2_34.h>这个头文件。 但是使用这个头文件会出现一个错误,就是访问内核VFE.C的ioctl函数的命令会出错
比较之后,VFE.C文件适配的头文件应该是#include <sunxi_camera.h>。   做了两套改变
①、试图将#ifdef __PLATFORM_A64__  全部调换成#ifdef __PLATFORM_A40__是可以编译成功的。也没有提示说因为ioctl函数的调用错误的提示
     了。 但是开机点击开机应用只有MCLK引脚有信号,其他引脚都没有信号
②、将videodev2_34.h里面的ioctl命令替换成sunxi_camera.h里面的,仅仅是替换几个命令,其他东西没有改变,图像不出但是各个引脚出现一些电平
     信号了,这个就很奇怪。

离线

#6 2019-11-21 14:14:02

2505300733
会员
所在地: 广州
注册时间: 2019-10-24
累计积分: 28

Re: 全志Android6的HAL层的ioctl函数命令问题?

使用①方案的时候,没有出现图像仅仅就是CSI的MCLK引脚时钟有信号。
在ADB下面使用: logcat  |grep Camera  打印出以下内容。(由于对安卓懂得不多,这个命令查看一下,有知道其他的朋友希望不啬赐教。 谢谢)

30|root@azalea-m2ultra:/ # logcat |grep Camera
1-02 14:10:34.577  1758  1758 I CameraService: CameraService started (pid=1758)
1-02 14:10:34.577  1758  1758 I CameraService: CameraService process starting
1-02 14:10:35.204  1758  1758 D HALCameraFactory: camera hal version: 3000130327_V1.0
1-02 14:10:35.211  1758  1758 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 14:10:35.211  1758  1758 I CameraService: Loaded "V4L2Camera Module" camera module
1-02 14:10:35.211  1758  1758 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 14:10:35.211  1758  1758 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 14:10:35.211  1758  1758 I CameraFlashlight: Opening camera 0
1-02 14:10:35.211  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver

1-02 14:10:35.211  1758  1758 E V4L2CameraDevice: USE_ION_MEM_ALLOCATOR
1-02 14:10:35.242  1758  1758 E V4L2CameraDevice: open  HAL_info_name  = /dev/video0
1-02 14:10:35.487  1758  1758 E V4L2CameraDevice: openCameraDev ok
1-02 14:10:35.488  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver
1-02 14:10:35.512  1758  2243 W CameraHardware: CMD_QUEUE_STOP_FACE_DETECTE failed, mFaceDetection not opened.
1-02 14:10:35.664  1758  1758 I CameraFlashlight: Destroying camera 0
1-02 14:10:35.765  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver
1-02 14:10:41.866  2516  2516 I SystemServer: Camera Service
1-02 14:10:41.867  2516  2516 I SystemServiceManager: Starting com.android.server.camera.CameraService
1-02 14:10:45.475  3364  3364 I CameraManagerGlobal: Connecting to camera service
1-02 14:10:45.483  1758  1758 I CameraService: getCameraCharacteristics: Switching to HAL1 shim implementation...
1-02 14:10:45.484  1758  1758 D HALCameraFactory: Calling process is: com.android.systemui
1-02 14:10:45.484  1758  1758 I CameraService: CameraService::connect call (PID 1758 "media", camera ID 0) for HAL version default and Camera API version 1
1-02 14:10:45.485  1758  1758 E CameraService: getCameraPriorityFromProcState: Received invalid process state -1 from ActivityManagerService!
1-02 14:10:45.485  1758  1758 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 14:10:45.485  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver
1-02 14:10:45.551  1758  1758 I CameraClient: Opening camera 0
1-02 14:10:45.551  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver
1-02 14:10:45.582  1758  1758 E V4L2CameraDevice: open  HAL_info_name  = /dev/video0
1-02 14:10:45.818  1758  1758 E V4L2CameraDevice: openCameraDev ok
1-02 14:10:45.819  1758  1758 D HALCameraFactory: Calling process is: /system/bin/mediaserver
1-02 14:10:45.821  1758  2243 W CameraHardware: CMD_QUEUE_STOP_FACE_DETECTE failed, mFaceDetection not opened.
1-02 14:10:45.997  1758  1758 I CameraFlashlight: Destroying camera 0
1-02 14:10:46.105  1758  1758 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 14:10:46.112  1758  1758 I CameraService: disconnect: Disconnected client for camera 0 for PID 1758
1-02 14:10:46.119  1758  3939 D HALCameraFactory: Calling process is: com.android.systemui
1-02 14:10:46.130  1758  3292 D HALCameraFactory: Calling process is: com.android.systemui
1-02 16:45:40.749  2516  2574 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.camera2/com.android.camera.CameraLauncher bnds=[186,659][319,747] (ha
extras)} from uid 10006 on display 0
1-02 16:45:40.812  2516  2575 I ActivityManager: Start proc 9109:com.android.camera2/u0a21 for activity com.android.camera2/com.android.camera.CameraLauncher
1-02 16:45:41.001  9109  9109 V CAM_Profiler: [  0.000ms][ui] GUARD: CameraApp onCreate() - START
1-02 16:45:41.012  9109  9109 I CAM_Profiler: [ 21.770ms][ui] GUARD: CameraApp onCreate() - [21.770ms] initializeTimeOfFirstRun
1-02 16:45:41.013  9109  9109 V CAM_Profiler: [ 22.674ms][ui] GUARD: CameraApp onCreate() - [ 0.904ms] UsageStatistics.initialize
1-02 16:45:41.018  9109  9109 V CAM_Profiler: [ 27.353ms][ui] GUARD: CameraApp onCreate() - [ 4.678ms] clearNotifications
1-02 16:45:41.018  9109  9109 I CAM_Profiler: [ 27.353ms][ui] GUARD: CameraApp onCreate() - STOP
1-02 16:45:41.038  9109  9109 V CAM_QuickActivity: START onCreate: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.038  9109  9109 V CAM_Profiler: [  0.000ms][ui] GUARD: CameraActivity.onCreateTasks - START
1-02 16:45:41.156  9109  9109 I CAM_Profiler: [116.961ms][ui] GUARD: CameraActivity.onCreateTasks - [44.646ms] Glide.setup
1-02 16:45:41.159  9109  9109 V CAM_Profiler: [120.970ms][ui] GUARD: CameraActivity.onCreateTasks - [ 4.009ms] OneCameraManager.get
1-02 16:45:41.175  9109  9109 I CameraManagerGlobal: Connecting to camera service
1-02 16:45:41.182  1758  3139 I CameraService: getCameraCharacteristics: Switching to HAL1 shim implementation...
1-02 16:45:41.182  1758  3139 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.189  1758  1758 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.199  1758  3139 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.209  9109  9109 V CAM_Profiler: [170.227ms][ui] GUARD: CameraActivity.onCreateTasks - [10.681ms] computePictureSizes
1-02 16:45:41.452  9109  9109 I CAM_Profiler: [413.129ms][ui] GUARD: CameraActivity.onCreateTasks - [239.571ms] setContentView()
1-02 16:45:41.479  9109  9109 I CAM_Profiler: [440.704ms][ui] GUARD: CameraActivity.onCreateTasks - [27.576ms] Configure Camera UI
1-02 16:45:41.497  9109  9109 V CAM_CameraController: Closing camera
1-02 16:45:41.506  9109  9109 V CAM_SettingsManager: listeners: [com.android.camera.app.CameraAppUI@e6c2f2b]
1-02 16:45:41.515  9109  9109 V CAM_SettingsManager: listeners: [com.android.camera.app.CameraAppUI@e6c2f2b, com.android.camera.ButtonManager@dc0ec34]
1-02 16:45:41.515  9109  9109 V CAM_SettingsManager: listeners: [com.android.camera.app.CameraAppUI@e6c2f2b, com.android.camera.ButtonManager@dc0ec34, com.android.camera.widget.IndicatorIconController@6fc3fd2]
1-02 16:45:41.516  9109  9109 V CAM_Profiler: [477.669ms][ui] GUARD: CameraActivity.onCreateTasks - [10.549ms] Init Current Module UI
1-02 16:45:41.521  9109  9109 D CAM_Camera2OneCamMgr: Getting First BACK Camera
1-02 16:45:41.521  1758  1758 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.523  1758  3139 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.537  1758  3982 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.538  1758  3981 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.554  9109  9109 I CAM_Profiler: [515.696ms][ui] GUARD: CameraActivity.onCreateTasks - [38.028ms] Init CurrentModule
1-02 16:45:41.566  9109  9109 I CAM_Profiler: [527.757ms][ui] GUARD: CameraActivity.onCreateTasks - STOP
1-02 16:45:41.566  9109  9109 V CAM_QuickActivity: END onCreate: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.571  9109  9109 V CAM_QuickActivity: START onStart: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.581  9109  9109 V CAM_QuickActivity: END onStart: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.581  9109  9109 V CAM_QuickActivity: START onResume: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.585  9109  9109 V CAM_Profiler: [  0.000ms][ui] GUARD: CameraActivity.resume - START
1-02 16:45:41.586  9109  9109 V CAM_CameraActivity: Build info: azalea_m2ultra-eng 6.0.1 MOB30R 20191107 test-keys
1-02 16:45:41.627  9109  9187 V CAM_CameraDataAdapter: retrieved photo metadata, number of items: 0
1-02 16:45:41.627  9109  9187 V CAM_CameraDataAdapter: retrieved video metadata, number of items: 0
1-02 16:45:41.627  9109  9187 V CAM_CameraDataAdapter: sorting video/photo metadata
1-02 16:45:41.630  9109  9187 V CAM_CameraDataAdapter: sorted video/photo metadata
1-02 16:45:41.631  9109  9109 I CAM_Profiler: [ 45.793ms][ui] GUARD: CameraActivity.resume - [35.718ms] mCurrentModule.resume
1-02 16:45:41.633  9109  9109 V CAM_Profiler: [ 48.248ms][ui] GUARD: CameraActivity.resume - [ 0.083ms] mPanoramaViewHelper.onResume()
1-02 16:45:41.634  9109  9109 I CAM_Profiler: [ 48.767ms][ui] GUARD: CameraActivity.resume - STOP
1-02 16:45:41.634  9109  9109 V CAM_QuickActivity: END onResume: Activity = com.android.camera.CameraActivity@7b9f38e
1-02 16:45:41.669  9109  9109 V CAM_CameraActivity: ignoring storage callback after activity pause
1-02 16:45:41.929  9109  9109 V CAM_CameraAppUI: SurfaceTexture is available
1-02 16:45:41.933  9109  9229 V CAM_Profiler: [  0.000ms] GUARD: CaptureModule.closeCamera() - START
1-02 16:45:41.933  9109  9229 V CAM_Profiler: [  0.683ms] GUARD: CaptureModule.closeCamera() - [ 0.683ms] mCameraOpenCloseLock.acquire()
1-02 16:45:41.934  9109  9229 V CAM_Profiler: [  0.997ms] GUARD: CaptureModule.closeCamera() - STOP
1-02 16:45:41.934  9109  9229 V CAM_Profiler: [  0.000ms] GUARD: CaptureModule.openCameraAndStartPreview() - START
1-02 16:45:41.934  9109  9229 V CAM_Profiler: [  0.233ms] GUARD: CaptureModule.openCameraAndStartPreview() - [ 0.233ms] Acquired mCameraOpenCloseLock
1-02 16:45:41.935  9109  9229 D CAM_Camera2OneCamMgr: Getting First BACK Camera
1-02 16:45:41.936  1758  3939 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.938  1758  3292 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.945  9109  9229 I CAM_OneCamera1Opnr: Opening Camera: CameraId{Api2='0',Api1:0}
1-02 16:45:41.948  1758  3139 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.949  9109  9109 V CAM_CameraDataAdapter: new photos query return num items: 0
1-02 16:45:41.953  1758  3982 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.954  2516  2910 I ActivityManager: Displayed com.android.camera2/com.android.camera.CameraLauncher: +1s167ms
1-02 16:45:41.964  1758  9195 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:41.967  9109  9229 I CameraManager: Using legacy camera HAL.
1-02 16:45:41.975  1758  3939 I CameraService: CameraService::connect call (PID 9109 "com.android.camera2", camera ID 0) for HAL version default and Camera API version 1
1-02 16:45:41.977  1758  3939 D HALCameraFactory: There is 1 attached cameras and 0 removable cameras
1-02 16:45:41.977  1758  3939 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.036  1758  3939 I CameraClient: Opening camera 0
1-02 16:45:42.036  1758  3939 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.067  1758  3939 E V4L2CameraDevice: open   HAL_info_name  = /dev/video0
1-02 16:45:42.318  1758  3939 E V4L2CameraDevice: openCameraDev ok
1-02 16:45:42.319  1758  3939 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.334  1758  3139 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.371  9109  9229 I CAM_Profiler: [436.960ms] GUARD: CaptureModule.openCameraAndStartPreview() - [436.727ms] mOneCameraOpener.open()
1-02 16:45:42.372  1758  3982 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.372  9109  9229 I CAM_Profiler: [436.960ms] GUARD: CaptureModule.openCameraAndStartPreview() - STOP
1-02 16:45:42.382  1758  3939 D HALCameraFactory: Calling process is: com.android.camera2
1-02 16:45:42.393  9109  9180 I CAM_OneCamCreator: Camera support level: LEGACY_JPEG
1-02 16:45:42.434  9109  9180 D CAM_CaptureModule: onCameraOpened: com.android.camera.one.v2.initialization.GenericOneCameraImpl@11360fb
1-02 16:45:42.443  9109  9180 I CameraDeviceState: Legacy camera service transitioning to state CONFIGURING
1-02 16:45:42.447  9109  9269 D Camera  : app passed NULL surface
1-02 16:45:42.479  9109  9180 I CameraDeviceState: Legacy camera service transitioning to state IDLE
1-02 16:45:42.496  9109  9180 V CAM_SettingsManager: listeners: [com.android.camera.app.CameraAppUI@e6c2f2b, com.android.camera.ButtonManager@dc0ec34, com.android.camera.widget.IndicatorIconController@6fc3fd2, com.android.camera.
ettings.SettingObserver$Listener@a15d448]
1-02 16:45:42.496  9109  9180 V CAM_SettingsManager: listeners: [com.android.camera.app.CameraAppUI@e6c2f2b, com.android.camera.ButtonManager@dc0ec34, com.android.camera.widget.IndicatorIconController@6fc3fd2, com.android.camera.
ettings.SettingObserver$Listener@a15d448, com.android.camera.settings.SettingObserver$Listener@e137806]
1-02 16:45:42.505  9109  9109 V CAM_CameraAppUI: onPreviewStarted
1-02 16:45:42.523  1758  9195 D CameraHardware: Starting camera, Size:640x480 , picture format:yuv420sp
1-02 16:45:42.523  1758  9195 D V4L2CameraDevice: startDevice, wxh: 640x480, fmt: 825382478
1-02 16:45:44.774  1758  2238 E V4L2CameraDevice: select timeout
2238 W V4L2CameraDevice: wait v4l2 buffer time out
1-02238 W V4L2CameraDevice: preview queue has 0 items.
1-02 16:45:46.776  1758  2238 E V4L2CameraDevice: select timeout
1-02 16:45:46.776  1758  2238 W V4L2CameraDevice: wait v4l2 buffer time out
1-02 16:45:46.776  1758  2238 W V4L2CameraDevice: preview queue has 0 items.
1-02 16:45:46.778  9109  9269 I CameraDeviceState: Legacy camera service transitioning to state CAPTURING
1-02 16:45:48.776  1758  2238 E V4L2CameraDevice: select timeout
1-02 16:45:48.776  1758  2238 W V4L2CameraDevice: wait v4l2 buffer time out

最近编辑记录 2505300733 (2019-11-21 14:23:03)

离线

#7 2019-11-23 12:12:47

2505300733
会员
所在地: 广州
注册时间: 2019-10-24
累计积分: 28

Re: 全志Android6的HAL层的ioctl函数命令问题?

顶一下  看看有没有大佬 路过

离线

页脚