Hi!
Thank you for info. I see them inside ‘libnvodm_imager.so’.
target $ dd if=/usr/lib/aarch64-linux-gnu/tegra/libnvodm_imager.so ibs=1 skip=4970752 bs=1 count=512 | hexdump -C
00000000 65 72 61 74 65 00 00 00 6d 69 6e 5f 65 78 70 5f |erate...min_exp_|
00000010 74 69 6d 65 00 00 00 00 6d 61 78 5f 65 78 70 5f |time....max_exp_|
00000020 74 69 6d 65 00 00 00 00 6d 69 6e 5f 67 61 69 6e |time....min_gain|
00000030 5f 76 61 6c 00 00 00 00 6d 61 78 5f 67 61 69 6e |_val....max_gain|
00000040 5f 76 61 6c 00 00 00 00 6d 69 6e 5f 68 64 72 5f |_val....min_hdr_|
00000050 72 61 74 69 6f 00 00 00 6d 61 78 5f 68 64 72 5f |ratio...max_hdr_|
00000060 72 61 74 69 6f 00 00 00 6d 63 6c 6b 5f 6b 68 7a |ratio...mclk_khz|
00000070 00 00 00 00 00 00 00 00 6d 63 6c 6b 5f 6d 75 6c |........mclk_mul|
00000080 74 69 70 6c 69 65 72 00 63 69 6c 5f 73 65 74 74 |tiplier.cil_sett|
00000090 6c 65 74 69 6d 65 00 00 64 69 73 63 6f 6e 74 69 |letime..disconti|
000000a0 6e 75 6f 75 73 5f 63 6c 6b 00 00 00 00 00 00 00 |nuous_clk.......|
000000b0 65 6d 62 65 64 64 65 64 5f 6d 65 74 61 64 61 74 |embedded_metadat|
000000c0 61 5f 68 65 69 67 68 74 00 00 00 00 00 00 00 00 |a_height........|
000000d0 64 70 63 6d 5f 65 6e 61 62 6c 65 00 00 00 00 00 |dpcm_enable.....|
000000e0 74 72 75 65 00 00 00 00 78 5f 73 74 61 72 74 00 |true....x_start.|
000000f0 79 5f 73 74 61 72 74 00 78 5f 65 6e 64 00 00 00 |y_start.x_end...|
00000100 79 5f 65 6e 64 00 00 00 68 5f 73 63 61 6c 69 6e |y_end...h_scalin|
00000110 67 00 00 00 00 00 00 00 76 5f 73 63 61 6c 69 6e |g.......v_scalin|
00000120 67 00 00 00 00 00 00 00 73 65 6e 73 6f 72 5f 6d |g.......sensor_m|
00000130 6f 64 65 6c 00 00 00 00 25 73 3a 20 50 61 73 73 |odel....%s: Pass|
00000140 65 64 20 69 6e 20 69 6e 76 61 6c 69 64 20 4e 55 |ed in invalid NU|
00000150 4c 4c 20 70 61 72 61 6d 65 74 65 72 73 00 00 00 |LL parameters...|
00000160 25 73 3a 20 43 61 6e 20 6e 6f 74 20 61 6c 6c 6f |%s: Can not allo|
00000170 63 61 74 65 20 63 6f 6e 74 65 78 74 20 30 78 25 |cate context 0x%|
00000180 58 00 00 00 00 00 00 00 25 73 3a 20 68 44 65 76 |X.......%s: hDev|
00000190 20 54 61 62 6c 65 20 6e 6f 74 20 69 6e 69 74 69 | Table not initi|
000001a0 61 6c 69 7a 65 64 00 00 76 69 2d 6f 75 74 70 75 |alized..vi-outpu|
000001b0 74 00 00 00 00 00 00 00 25 73 3a 20 44 65 76 69 |t.......%s: Devi|
000001c0 63 65 20 69 73 20 6e 6f 74 20 6f 66 20 43 53 49 |ce is not of CSI|
000001d0 20 74 79 70 65 00 00 00 75 73 65 5f 64 65 63 69 | type...use_deci|
000001e0 62 65 6c 5f 67 61 69 6e 00 00 00 00 00 00 00 00 |bel_gain........|
000001f0 75 73 65 5f 73 65 6e 73 6f 72 5f 6d 6f 64 65 5f |use_sensor_mode_|
Also I can see that sensors are hardcoded inside this library.
target $ hexdump -C /usr/lib/aarch64-linux-gnu/tegra/libnvodm_imager.so | grep imx
000bf380 6f 64 65 00 00 00 00 00 2f 64 65 76 2f 69 6d 78 |ode...../dev/imx|
000bf3c0 20 25 73 0a 00 00 00 00 69 6d 78 31 33 32 3a 20 | %s.....imx132: |
000bf3f0 69 6d 78 31 33 32 3a 20 43 61 6e 20 6e 6f 74 20 |imx132: Can not |
000bf480 5f 69 6d 78 31 33 32 2e 63 00 00 00 00 00 00 00 |_imx132.c.......|
000bf4b0 20 25 73 0a 00 00 00 00 45 72 72 3a 69 6d 78 31 | %s.....Err:imx1|
000e7c30 72 20 4f 70 65 6e 0a 00 2f 64 65 76 2f 69 6d 78 |r Open../dev/imx|
000e7c70 20 25 73 0a 00 00 00 00 45 72 72 3a 69 6d 78 31 | %s.....Err:imx1|
000e7da0 5f 69 6d 78 31 33 35 2e 63 00 00 00 00 00 00 00 |_imx135.c.......|
00122220 6f 64 65 00 00 00 00 00 2f 64 65 76 2f 69 6d 78 |ode...../dev/imx|
001222b0 6f 72 5f 62 61 79 65 72 5f 69 6d 78 31 37 39 2e |or_bayer_imx179.|
001222c0 63 00 00 00 00 00 00 00 45 72 72 3a 69 6d 78 31 |c.......Err:imx1|
0014d170 2f 64 65 76 2f 69 6d 78 32 30 38 00 00 00 00 00 |/dev/imx208.....|
0014d220 6f 72 5f 62 61 79 65 72 5f 69 6d 78 32 30 38 2e |or_bayer_imx208.|
0014d230 63 00 00 00 00 00 00 00 45 72 72 3a 69 6d 78 32 |c.......Err:imx2|
0018a540 2f 64 65 76 2f 69 6d 78 32 31 34 00 00 00 00 00 |/dev/imx214.....|
0018a5d0 5f 69 6d 78 32 31 34 2e 63 00 00 00 00 00 00 00 |_imx214.c.......|
0018a5e0 45 72 72 3a 69 6d 78 32 31 34 20 6f 64 6d 3a 25 |Err:imx214 odm:%|
0018a700 5f 45 52 53 5f 69 6d 78 32 31 34 0a 23 2a 20 49 |_ERS_imx214.#* I|
001b78e0 6f 64 65 00 00 00 00 00 2f 64 65 76 2f 69 6d 78 |ode...../dev/imx|
001b7960 64 2e 0a 00 00 00 00 00 45 72 72 3a 69 6d 78 32 |d.......Err:imx2|
001b7a30 6f 72 5f 62 61 79 65 72 5f 69 6d 78 32 31 39 2e |or_bayer_imx219.|
001b7af0 69 6d 78 32 31 39 0a 23 2a 20 53 65 6e 73 6f 72 |imx219.#* Sensor|
002b2b80 65 31 36 33 33 5f 69 6d 78 32 30 38 00 00 00 00 |e1633_imx208....|
002b2b90 65 31 36 33 33 5f 69 6d 78 32 31 39 00 00 00 00 |e1633_imx219....|
002b2ba0 69 6d 78 32 37 34 5f 66 72 6f 6e 74 5f 41 36 56 |imx274_front_A6V|
002b2c60 69 6d 78 31 38 35 5f 62 6f 74 74 6f 6d 5f 6c 69 |imx185_bottom_li|
002b2c70 69 6d 78 31 38 35 00 00 23 2a 20 3d 3d 3d 3d 3d |imx185..#* =====|
I see that nvcamera-daemon is linked against this library:
target $ ldd /usr/sbin/nvcamera-daemon | grep imager
libnvodm_imager.so => /usr/lib/aarch64-linux-gnu/tegra/libnvodm_imager.so (0x0000007f787c6000)
So, the question is:
(1): How to add new sensor to ‘libnvodm_imager.so’ library?
Also, I need to solve the problem of alternating useful and zero frames when using v4l2-ctl capture.
(2): Which type of ‘v4l-utils’ package should be used (apt-get source or nvidia source-pack)?
Remove apt-get installed binary version.
target $ sudo apt-get remove v4l-utils
So, we can see TWO variants of v4l-utils comes from sources.
One comes from Nvidia download center as ‘sources’ pack
http://developer.download.nvidia.com/embedded/L4T/r24_Release_v2.1/BSP/sources_r24.2.1.tbz2
55f301507f978f23a868437515d041f0d6e8aa68 /opt/tx1/r24.2.1/sources_r24.2.1.tbz2
It contains
81ef29a2c171bad749c89b3658ff5f7ce3bafdeb sources/v4l2-utils_src.tbz2
This type of sources fails to compile on target!
CXXLD qv4l2
../v4l2-ctl/qv4l2-vivid-tpg.o: In function `vzalloc':
/home/ubuntu/build/v4l2utils/utils/qv4l2/../v4l2-ctl/vivid-tpg.c:92: undefined reference to `v4l2_page_size'
/home/ubuntu/build/v4l2utils/utils/qv4l2/../v4l2-ctl/vivid-tpg.c:92: undefined reference to `v4l2_page_size'
Please, see the workflow of how to build and log here:
http://pastebin.com/EvqA5LkJ
Did anything special rules exist to build this packet? I can’t see any special Nvidia readme file.
Second version of ‘v4l-utils’ comes from ubuntu-repository.
target $ mkdir /home/ubuntu/build
target $ cd /home/ubuntu/build
target $ apt-get source v4l-utils
target $ cd v4l-utils-1.10.0
target $ ./bootstrap.sh
target $ ./configure
target $ make
target $ sudo make install
These sources are built without problems.
(3): How to set mipi csi settings if we use v4l2-ctl capture?
target $ ldd /usr/local/bin/v4l2-ctl
linux-vdso.so.1 => (0x0000007f87c90000)
libv4l2.so.0 => /usr/lib/aarch64-linux-gnu/libv4l2.so.0 (0x0000007f87c56000)
libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f87ac7000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f87aa5000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f8795f000)
/lib/ld-linux-aarch64.so.1 (0x0000005562797000)
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f87933000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f8791f000)
libv4lconvert.so.0 => /usr/lib/aarch64-linux-gnu/libv4lconvert.so.0 (0x0000007f8789a000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f877ef000)
librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f877d7000)
libjpeg.so.8 => /usr/lib/aarch64-linux-gnu/libjpeg.so.8 (0x0000007f87790000)
It does not use libnvodm_imager library.
Thank you in advance.