04/19/18 [linux-elphel][rocko] by Oleg Dzhimiev: fixed bad frames for mt9f002 when changing window size
Oleg Dzhimiev committed changes to the Elphel git project :
fixed bad frames for mt9f002 when changing window size
fixed bad frames for mt9f002 when changing window size
04/18/18 [imagej-elphel][master] by AndreyFilippov: Rewriting correlation processing to handle diagonal and multi-baseline pairs
AndreyFilippov committed changes to the Elphel git project :
Rewriting correlation processing to handle diagonal and multi-baseline pairs
Rewriting correlation processing to handle diagonal and multi-baseline pairs
04/17/18 [linux-elphel][rocko] by Oleg Dzhimiev: typo-error
Oleg Dzhimiev committed changes to the Elphel git project :
typo-error
typo-error
04/17/18 [linux-elphel][rocko] by Oleg Dzhimiev: clean up
Oleg Dzhimiev committed changes to the Elphel git project :
clean up
clean up
04/17/18 [linux-elphel][rocko] by Oleg Dzhimiev: typos
Oleg Dzhimiev committed changes to the Elphel git project :
typos
typos
04/17/18 [elphel-web-camvc][master] by Oleg Dzhimiev: fixed magnifier and preview window frame lagging
Oleg Dzhimiev committed changes to the Elphel git project :
fixed magnifier and preview window frame lagging
fixed magnifier and preview window frame lagging
10398
MT9F002 Application Notes
← Older revision Revision as of 01:32, 17 April 2018 Line 26: Line 26: |[[File:Mt9f002 slave mode.jpeg|700px|thumb|Fig.3 Slave mode]] |[[File:Mt9f002 slave mode.jpeg|700px|thumb|Fig.3 Slave mode]] |} |} + +====I2C commands via sysfs==== + root@elphel393:~# cd /sys/devices/soc0/elphel393-sensor-i2c\@0/ +* read (port 0): + echo "mt9f002 0x0 0x3000" > i2c0 + cat i2c0 +* write: + echo "mt9f002 0x0 0x301a 0x011c" > i2c0 ====Measure frame timing==== ====Measure frame timing==== OlegNew image sensors for 10393
in device tree
← Older revision Revision as of 01:07, 17 April 2018 (5 intermediate revisions by the same user not shown)Line 6: Line 6: * Read [[Driverless_mode_393|this article]] * Read [[Driverless_mode_393|this article]] ===Developing a driver=== ===Developing a driver=== −{|+[[File:10393 sensor driver structure.png|thumb|700px|Fig.1 Sensor driver]] −|[[File:10393 sensor driver structure.png|thumb|700px|Fig.1 Sensor driver]]+[[File:10393_cpu_fpga_i2c_records_table.png|thumb|700px|Fig.2 FPGA has a certain 256-line table (for all ports)]] −|} −{| −|[[File:10393_cpu_fpga_i2c_records_table.png|thumb|700px|Fig.2 FPGA has a certain 256-line table (for all ports)]] −|} −* In device tree:+====Device tree==== −** record for sensor, like:+* record for sensor, like: − elphel393_mt9f002: elphel393-mt9f002@0 {+ <font size=1>elphel393_mt9f002: elphel393-mt9f002@0 { − compatible = "elphel,elphel393-mt9f002-1.00";+ compatible = "elphel,elphel393-mt9f002-1.00"; − };+ };</font> −** record for sensor i2c address, like:+* record for sensor i2c address, like: − elphel393_sensor_i2c: elphel393-sensor-i2c@0 {+ <font size=1>elphel393_sensor_i2c: elphel393-sensor-i2c@0 { − compatible = "elphel,elphel393-sensor-i2c-1.00";+ compatible = "elphel,elphel393-sensor-i2c-1.00"; − /* Add known devices: name, slave address (7-bit), number of address bytes, number of data bytes, SCL frequency (kHz) */+ /* Add known devices: name, slave address (7-bit), number of address bytes, number of data bytes, SCL frequency (kHz) */ − elphel393-sensor-i2c,i2c_devices = "mt9f002 0x10 2 2 500",+ elphel393-sensor-i2c,i2c_devices = "mt9f002 0x10 2 2 500", − "mt9p006 0x48 1 2 500",+ "mt9p006 0x48 1 2 500", − "el10359 0x08 1 2 500",+ "el10359 0x08 1 2 500", − "el10359_32 0x08 1 4 500",+ "el10359_32 0x08 1 4 500", − "pca9500_eeprom 0x50 1 1 100",+ "pca9500_eeprom 0x50 1 1 100", − "sensor_eeprom 0x50 1 1 100",+ "sensor_eeprom 0x50 1 1 100", − "sensor_temp 0x18 1 2 100",+ "sensor_temp 0x18 1 2 100", − "cy22393 0x69 1 1 100";+ "cy22393 0x69 1 1 100"; − } ;+ };</font> +* edit detected sensors: + <font size=1>elphel393_detect_sensors: elphel393-detect_sensors@0 { + compatible = "elphel,elphel393-detect_sensors-1.00"; + elphel393-detect_sensors,port-mux = "none none none none"; /* "none", "detect" or "mux10359" */ + elphel393-detect_sensors,sensors = "mt9f002", // Line per port, may contain up to 4 sensors (3 with 10359) + "mt9f002", + "mt9f002", + "mt9f002"; + };</font> −** edit detected sensors:+====Add a proper application==== − elphel393_detect_sensors: elphel393-detect_sensors@0 {+* In '''autocampars.php''' − compatible = "elphel,elphel393-detect_sensors-1.00";+* Set application through 10389's serial or more preferably through /etc/elphel393/default_10389.xml in a 10389-less setup − elphel393-detect_sensors,port-mux = "none none none none"; /* "none", "detect" or "mux10359" */ − elphel393-detect_sensors,sensors = "mt9f002", // Line per port, may contain up to 4 sensors (3 with 10359) − "mt9f002", − "mt9f002", − "mt9f002"; − }; − −* edit '''autocampars.php''' - add a proper application −* set application through 10389's serial or more preferably through /etc/elphel393/default_10389.xml in a 10389-less setup +====Driver code==== * In ''linux-elphel/src/drivers/elphel/'' * In ''linux-elphel/src/drivers/elphel/'' ** Create mt9f002.h and mt9f002.c ** Create mt9f002.h and mt9f002.c ** Add to Makefile: ** Add to Makefile: − obj-$(CONFIG_ELPHEL393) += mt9f002.o+ <font size=1>obj-$(CONFIG_ELPHEL393) += mt9f002.o</font> ** Edit pgm_functions.c ** Edit pgm_functions.c ** mt9f002.h - fill with registers addresses (from sensor's datasheet) and other constants ** mt9f002.h - fill with registers addresses (from sensor's datasheet) and other constants ** mt9f002.c: ** mt9f002.c: − mt9f002_par2addr table+ <font size=1>mt9f002_par2addr table mt9f002_pages table mt9f002_pages table mt9f002_ahead_tab - no need to edit in the beginning mt9f002_ahead_tab - no need to edit in the beginning Line 66: Line 63: mt9f002_pgm_limitfps func mt9f002_pgm_limitfps func mt9f002_pgm_exposure func mt9f002_pgm_exposure func − mt9f002_pgm_triggermode func+ mt9f002_pgm_triggermode func</font> [[Category:393]] [[Category:393]] OlegNew image sensors for 10393
Driver
← Older revision Revision as of 01:03, 17 April 2018 (4 intermediate revisions by the same user not shown)Line 6: Line 6: * Read [[Driverless_mode_393|this article]] * Read [[Driverless_mode_393|this article]] ===Developing a driver=== ===Developing a driver=== −{|+[[File:10393 sensor driver structure.png|thumb|700px|Fig.1 Sensor driver]] −|[[File:10393 sensor driver structure.png|thumb|700px|Fig.1 Sensor driver]]+[[File:10393_cpu_fpga_i2c_records_table.png|thumb|700px|Fig.2 FPGA has a certain 256-line table (for all ports)]] −|} −{| −|[[File:10393_cpu_fpga_i2c_records_table.png|thumb|700px|Fig.2 FPGA has a certain 256-line table (for all ports)]] −|} −* In device tree:+====in device tree==== −** record for sensor, like:+* record for sensor, like: − elphel393_mt9f002: elphel393-mt9f002@0 {+ <font size=1>elphel393_mt9f002: elphel393-mt9f002@0 { − compatible = "elphel,elphel393-mt9f002-1.00";+ compatible = "elphel,elphel393-mt9f002-1.00"; − };+ };</font> −** record for sensor i2c address, like:+* record for sensor i2c address, like: − elphel393_sensor_i2c: elphel393-sensor-i2c@0 {+ <font size=1>elphel393_sensor_i2c: elphel393-sensor-i2c@0 { − compatible = "elphel,elphel393-sensor-i2c-1.00";+ compatible = "elphel,elphel393-sensor-i2c-1.00"; − /* Add known devices: name, slave address (7-bit), number of address bytes, number of data bytes, SCL frequency (kHz) */+ /* Add known devices: name, slave address (7-bit), number of address bytes, number of data bytes, SCL frequency (kHz) */ − elphel393-sensor-i2c,i2c_devices = "mt9f002 0x10 2 2 500",+ elphel393-sensor-i2c,i2c_devices = "mt9f002 0x10 2 2 500", − "mt9p006 0x48 1 2 500",+ "mt9p006 0x48 1 2 500", − "el10359 0x08 1 2 500",+ "el10359 0x08 1 2 500", − "el10359_32 0x08 1 4 500",+ "el10359_32 0x08 1 4 500", − "pca9500_eeprom 0x50 1 1 100",+ "pca9500_eeprom 0x50 1 1 100", − "sensor_eeprom 0x50 1 1 100",+ "sensor_eeprom 0x50 1 1 100", − "sensor_temp 0x18 1 2 100",+ "sensor_temp 0x18 1 2 100", − "cy22393 0x69 1 1 100";+ "cy22393 0x69 1 1 100"; − } ;+ };</font> +* edit detected sensors: + <font size=1>elphel393_detect_sensors: elphel393-detect_sensors@0 { + compatible = "elphel,elphel393-detect_sensors-1.00"; + elphel393-detect_sensors,port-mux = "none none none none"; /* "none", "detect" or "mux10359" */ + elphel393-detect_sensors,sensors = "mt9f002", // Line per port, may contain up to 4 sensors (3 with 10359) + "mt9f002", + "mt9f002", + "mt9f002"; + };</font> −** edit detected sensors:+====Add a proper application==== − elphel393_detect_sensors: elphel393-detect_sensors@0 {+* In '''autocampars.php''' − compatible = "elphel,elphel393-detect_sensors-1.00";+* Set application through 10389's serial or more preferably through /etc/elphel393/default_10389.xml in a 10389-less setup − elphel393-detect_sensors,port-mux = "none none none none"; /* "none", "detect" or "mux10359" */ − elphel393-detect_sensors,sensors = "mt9f002", // Line per port, may contain up to 4 sensors (3 with 10359) − "mt9f002", − "mt9f002", − "mt9f002"; − }; − −* edit '''autocampars.php''' - add a proper application −* set application through 10389's serial or more preferably through /etc/elphel393/default_10389.xml in a 10389-less setup +====Driver code==== * In ''linux-elphel/src/drivers/elphel/'' * In ''linux-elphel/src/drivers/elphel/'' ** Create mt9f002.h and mt9f002.c ** Create mt9f002.h and mt9f002.c ** Add to Makefile: ** Add to Makefile: − obj-$(CONFIG_ELPHEL393) += mt9f002.o+ <font size=1>obj-$(CONFIG_ELPHEL393) += mt9f002.o</font> ** Edit pgm_functions.c ** Edit pgm_functions.c ** mt9f002.h - fill with registers addresses (from sensor's datasheet) and other constants ** mt9f002.h - fill with registers addresses (from sensor's datasheet) and other constants ** mt9f002.c: ** mt9f002.c: − mt9f002_par2addr table+ <font size=1>mt9f002_par2addr table mt9f002_pages table mt9f002_pages table mt9f002_ahead_tab - no need to edit in the beginning mt9f002_ahead_tab - no need to edit in the beginning Line 66: Line 63: mt9f002_pgm_limitfps func mt9f002_pgm_limitfps func mt9f002_pgm_exposure func mt9f002_pgm_exposure func − mt9f002_pgm_triggermode func+ mt9f002_pgm_triggermode func</font> [[Category:393]] [[Category:393]] Oleg10398
Measure frame timing
← Older revision Revision as of 00:42, 17 April 2018 (3 intermediate revisions by the same user not shown)Line 26: Line 26: |[[File:Mt9f002 slave mode.jpeg|700px|thumb|Fig.3 Slave mode]] |[[File:Mt9f002 slave mode.jpeg|700px|thumb|Fig.3 Slave mode]] |} |} + +====Measure frame timing==== + root@elphel393:~# cd /usr/local/verilog/; test_mcntrl.py @hargs-after + + //0x21 + // x393_status_sens_io_t - [22] time_busy + //0x40 + // x393_status_sensor_timing_t - [23:0] quad_cycles + //0x40a + // x393_sensio_jtag_t + // 0s are ok for other bits + // timing_to : 2; // [11:10] (0) Measuring sensor time to: 0 - sof, 1 - eof, 2 - sol, 3 eol + // timing_from : 2; // [13:12] (0) Measuring sensor time from: 0 - sof, 1 - eof, 2 - sol, 3 eol + // lane_num : 2; // [15:14] (0) Measuring sensor time on lane 0..3 + // timing_start: 1; // [ 16] (0) Start sensor timing measurement + + + // measure time from sof to sol, lane 0 + write_control_register 0x40a 0x10800 + // sof to eof + write_control_register 0x40a 0x10400 + // sol to eol + write_control_register 0x40a 0x12c00 + // eof to sof + write_control_register 0x40a 0x11000 + // eol to sol + write_control_register 0x40a 0x13800 + + // sol to sol + write_control_register 0x40a 0x12800 + + // sof to sof + '''write_control_register 0x40a 0x10000''' + + // eof to eof + write_control_register 0x40a 0x11800 + + + // sof to sol + write_control_register 0x40a 0x10800 + + // eol to eof + write_control_register 0x40a 0x13400 + + read_status 0x21 + + read_status 0x40 OlegNew image sensors for 10393
Created page with "==Description== This page describes development and testing of any new sensors for 10393 system boards. It covers a driver-less mode where python scripts are used to get the f..."
New page
==Description==This page describes development and testing of any new sensors for 10393 system boards. It covers a driver-less mode where python scripts are used to get the first images and the sensor driver structure.
==Application notes==
===Driverless mode===
* Read [[Driverless_mode_393|this article]]
===Developing a driver===
{|
|[[File:10393 sensor driver structure.png|thumb|700px|Fig.1 Sensor driver]]
|}
{|
|[[File:10393_cpu_fpga_i2c_records_table.png|thumb|700px|Fig.2 FPGA has a certain 256-line table (for all ports)]]
|}
* In device tree:
** record for sensor, like:
elphel393_mt9f002: elphel393-mt9f002@0 {
compatible = "elphel,elphel393-mt9f002-1.00";
};
** record for sensor i2c address, like:
elphel393_sensor_i2c: elphel393-sensor-i2c@0 {
compatible = "elphel,elphel393-sensor-i2c-1.00";
/* Add known devices: name, slave address (7-bit), number of address bytes, number of data bytes, SCL frequency (kHz) */
elphel393-sensor-i2c,i2c_devices = "mt9f002 0x10 2 2 500",
"mt9p006 0x48 1 2 500",
"el10359 0x08 1 2 500",
"el10359_32 0x08 1 4 500",
"pca9500_eeprom 0x50 1 1 100",
"sensor_eeprom 0x50 1 1 100",
"sensor_temp 0x18 1 2 100",
"cy22393 0x69 1 1 100";
} ;
** edit detected sensors:
elphel393_detect_sensors: elphel393-detect_sensors@0 {
compatible = "elphel,elphel393-detect_sensors-1.00";
elphel393-detect_sensors,port-mux = "none none none none"; /* "none", "detect" or "mux10359" */
elphel393-detect_sensors,sensors = "mt9f002", // Line per port, may contain up to 4 sensors (3 with 10359)
"mt9f002",
"mt9f002",
"mt9f002";
};
* edit '''autocampars.php''' - add a proper application
* set application through 10389's serial or more preferably through /etc/elphel393/default_10389.xml in a 10389-less setup
* In ''linux-elphel/src/drivers/elphel/''
** Create mt9f002.h and mt9f002.c
** Add to Makefile:
obj-$(CONFIG_ELPHEL393) += mt9f002.o
** Edit pgm_functions.c
** mt9f002.h - fill with registers addresses (from sensor's datasheet) and other constants
** mt9f002.c:
mt9f002_par2addr table
mt9f002_pages table
mt9f002_ahead_tab - no need to edit in the beginning
sensor_t structure - some fields are used, some - not
mt9f002_inits - registers that must be initialized
mt9f002_pgm_detectsensor func - remove mrst and read id via i2c, register other functions
mt9f002_pgm_initsensor func - applies init i2c commands, cable phase adjustment, gain table and shadow regs
mt9f002_pgm_sensorin func - this just set MT9F002_VACT_DELAY because of sensor's specifics
mt9f002_pgm_window func - uses mt9f002_pgm_window_common
mt9f002_pgm_window_safe func - uses mt9f002_pgm_window_common
mt9f002_pgm_window_common func - change window, also sets horizontal blanking
mt9f002_pgm_gains func
mt9f002_pgm_limitfps func
mt9f002_pgm_exposure func
mt9f002_pgm_triggermode func
[[Category:393]] Oleg
Tmp manual
Accessing raw pixel values
← Older revision Revision as of 22:59, 16 April 2018 (2 intermediate revisions by the same user not shown)Line 281: Line 281: ==<font color="blue">Firmware images</font>== ==<font color="blue">Firmware images</font>== −* [https://community.elphel.com/files/393/20180406/ '''20180406''']+* [https://community.elphel.com/files/393/20180416/ '''20180416'''] +* [https://community.elphel.com/files/393/20180406/ 20180406] * [https://community.elphel.com/files/393/20180130/ 20180130] * [https://community.elphel.com/files/393/20180130/ 20180130] * [https://community.elphel.com/files/393/20180118/ 20180118] * [https://community.elphel.com/files/393/20180118/ 20180118] −* [https://community.elphel.com/files/393/20180116/ 20180116] ===Changelog=== ===Changelog=== − <font size='1'>==20180406==+ <font size='1'>'''==20180416==''' + * mt9f002: added triggered mode + * mt9f002: added vertical and horizontal flips (mirror) + '''==20180406==''' * added initial support for MT9F002 sensor: no triggered mode, no binning/decimation * added initial support for MT9F002 sensor: no triggered mode, no binning/decimation * display serial number in http://camera-ip:port/meta * display serial number in http://camera-ip:port/meta * decode jp4s on the index page (http://camera-ip) * decode jp4s on the index page (http://camera-ip) * turn off auto wb button for all ports on the index page * turn off auto wb button for all ports on the index page − ==20180130==+ '''==20180130==''' * added photo finish demo * added photo finish demo * fixed fps limit calcs for triggered mode * fixed fps limit calcs for triggered mode − ==20180118==+ '''==20180118==''' * raw.py & raw.php, see wiki.elphel.com * raw.py & raw.php, see wiki.elphel.com * added python3 and python3-opencv * added python3 and python3-opencv − ==20180116==+ '''==20180116==''' * raw pixel data downloading through membridge * raw pixel data downloading through membridge * added gcc,make * added gcc,make − ==20180109==+ '''==20180109==''' * fixed autoexposure * fixed autoexposure − ==20171228==+ '''==20171228==''' * + strace, ltrace, dmsetup * + strace, ltrace, dmsetup * added to drivers: register devs to sysfs - nodes then created by udev * added to drivers: register devs to sysfs - nodes then created by udev − ==20171226==+ '''==20171226==''' * kernel updated to 4.9 (from 4.0) * kernel updated to 4.9 (from 4.0) * lots of drivers is updated to newer versions * lots of drivers is updated to newer versions * +dm-crypt and cryptsetup * +dm-crypt and cryptsetup − ==20171120==+ '''==20171120==''' * bugfix - incorrect displaying of TRIG_PERIOD at init * bugfix - incorrect displaying of TRIG_PERIOD at init − ==20171115==+ '''==20171115==''' * Fixed autocampars to let 10393 work with the mux board - 10359, see wiki.elphel.com for * Fixed autocampars to let 10393 work with the mux board - 10359, see wiki.elphel.com for docs docs − ==20170823==+ '''==20170823==''' * Fixed autocampars for multiple sensors getting desynced at init * Fixed autocampars for multiple sensors getting desynced at init * Fixed Garmin GPS 18x USB driver * Fixed Garmin GPS 18x USB driver − ==20170802==+ '''==20170802==''' * fixed a page for taking snapshots - works in chrome and firefox for bigger images (>2MB) * fixed a page for taking snapshots - works in chrome and firefox for bigger images (>2MB) * enabled "Access-Control-Expose-Headers: Content-Disposition" and CORS * enabled "Access-Control-Expose-Headers: Content-Disposition" and CORS − ==20170627==+ '''==20170627==''' * viewing decoded jp4 format in camvc * viewing decoded jp4 format in camvc − ==20170623==+ '''==20170623==''' * fixed incorrect default setting of the master channel * fixed incorrect default setting of the master channel </font> </font> Line 380: Line 383: [[10393_power#Powering_from_batteries| 12V and 48V power options]] [[10393_power#Powering_from_batteries| 12V and 48V power options]] ===Accessing raw pixel values=== ===Accessing raw pixel values=== −[[Working_with_raw_image_data|Working with raw pixel data]]+[[Working_with_raw_image_data|Working with raw pixel data (how to capture raw images)]] + ===Photo finish (linescan mode)=== ===Photo finish (linescan mode)=== [[Photo-finish|Photo Finish]] (works for JP4 image format) [[Photo-finish|Photo Finish]] (works for JP4 image format) Oleg04/16/18 [linux-elphel][rocko] by Oleg Dzhimiev: mt9f002: vertical and horizontal flips (mirroring)
Oleg Dzhimiev committed changes to the Elphel git project :
mt9f002: vertical and horizontal flips (mirroring)
mt9f002: vertical and horizontal flips (mirroring)
04/15/18 [imagej-elphel][master] by AndreyFilippov: Extracted filter parameters to a class, working on far objects
AndreyFilippov committed changes to the Elphel git project :
Extracted filter parameters to a class, working on far objects
Extracted filter parameters to a class, working on far objects
04/13/18 [linux-elphel][rocko] by Oleg Dzhimiev: removed unneeded check
Oleg Dzhimiev committed changes to the Elphel git project :
removed unneeded check
removed unneeded check
04/13/18 [linux-elphel][rocko] by Oleg Dzhimiev: sensor-individual ahead tabs (latencies)
Oleg Dzhimiev committed changes to the Elphel git project :
sensor-individual ahead tabs (latencies)
sensor-individual ahead tabs (latencies)
04/13/18 [linux-elphel][rocko] by Oleg Dzhimiev: triggered mode. testing. need to update latencies
Oleg Dzhimiev committed changes to the Elphel git project :
triggered mode. testing. need to update latencies
triggered mode. testing. need to update latencies
04/13/18 [linux-elphel][rocko] by Oleg Dzhimiev: fixed zero division
Oleg Dzhimiev committed changes to the Elphel git project :
fixed zero division
fixed zero division
Pages
