Driverless mode 393

From ElphelWiki
Revision as of 00:18, 26 June 2018 by Oleg (talk | contribs) (pre)
Jump to navigation Jump to search

Description

Instructions on how to disable sensor driver and get images from image sensor (for MT9F002 sensor)


Instructions

pre (editing files on the boot SD card)

  • Remove 10389 board if installed (otherwise will have to rewrite eeprom)
  • To load bitstream for MT9F002 appropriate changes need to be made to:
    • device tree
set sensors to mt9f002 in elphel393-detect_sensors,sensors entry
    • /etc/elphel393/default_10389.xml for setup w/o 10389 or 10389's eeprom otherwise write MT9F002 as application
Application name must be already added to /usr/local/autocampars.php
  • Disable driver
root@elphel393~# touch /etc/elphel393/disable_driver
# then reboot

init

  • start python session:
root@elphel393~# cd /usr/local/verilog/; test_mcntrl.py @hargs-after
  • init (if the driver is not disabled the i2c writes will not work):
setup_all_sensors True None 0x1 False 4384 3280

write_sensor_i2c 0 1 0 0x31c08000 # hispi timing
write_sensor_i2c 0 1 0 0x030600b4 # pll multiplier
write_sensor_i2c 0 1 0 0x31c68400 # hispi control status
write_sensor_i2c 0 1 0 0x306e9280 # datapath select
write_sensor_i2c 0 1 0 0x301a001c # reset and start streaming

hispi_phases_adjust 0

write_sensor_i2c 0 1 0 0x301a001c # reset and start streaming

setup_all_sensors True None 0x1 False 4384 3280
compressor_control all None None None None None 2
program_gamma all 0 0.57 0.04

write_sensor_i2c 0 1 0 0x3028000a # global gain
write_sensor_i2c 0 1 0 0x302c000d # some gain
write_sensor_i2c 0 1 0 0x302e0010 # some gain
write_sensor_i2c 0 1 0 0x30120080 # coarse exposure

jpeg_acquire_write

#write_sensor_i2c 0 1 0 0x301a0018 # put to standby
  • inspect image:
http://192.168.0.9/img.jpeg

Example: 1600x1200 window

8-bit compress to jpeg

  • setup:
write_sensor_i2c 0 1 0 0x3002001e
write_sensor_i2c 0 1 0 0x300604f5
write_sensor_i2c 0 1 0 0x034e04d8
write_sensor_i2c 0 1 0 0x300a056a
write_sensor_i2c 0 1 0 0x30040090
write_sensor_i2c 0 1 0 0x300806cf
write_sensor_i2c 0 1 0 0x034c0640
write_sensor_i2c 0 1 0 0x300c04c8

setup_all_sensors True None 0x1 False 1600 1200
compressor_control all None None None None None 2

write_sensor_i2c 0 1 0 0x301a001c
# wait
write_sensor_i2c 0 1 0 0x301a0018

jpeg_acquire_write
  • inspect:
refresh http://192.168.0.9/img.jpeg

8-bit raw

  • setup
same as above, no need to repeat if already done
  • capture (copy-pasting the code below with comments will work)
setup_all_sensors True None 0x1 False 1600 1200

write_sensor_i2c 0 1 0 0x301a001c
# wait
write_sensor_i2c 0 1 0 0x301a0018

# notice membridge_start (under Setting membridge for sensor 0)
# it can be different: 0x2e000000 or 0x2dc00000

membridge_start
mem_save "/usr/local/verilog/sensor_dump" 0x2e000000 0x400000
  • copy (from an ssh session in another terminal)
scp /usr/local/verilog/sensor_dump ip@host:/path/1600x1200_8bit.raw
  • open:
Use imagej: File > Import > Raw...

16-bit raw

  • setup
same as above, no need to repeat if already done
  • capture (copy-pasting the code below with comments will work)
# Notice that the window width in 16 bit mode is 2x
setup_all_sensors True 18 0x1 False 3200 1200
set_sensor_mode 0 1 1 True True
enable_memcntrl_en_dis 12 True

write_sensor_i2c 0 1 0 0x301a001c
# wait
write_sensor_i2c 0 1 0 0x301a0018
 
# notice membridge_start (under Setting membridge for sensor 0)
# it can be different: 0x2e000000 or 0x2dc00000

membridge_start
mem_save "/usr/local/verilog/sensor_dump" 0x2e000000 0x400000
  • copy (from an ssh session in another terminal)
scp /usr/local/verilog/sensor_dump ip@host:/path/1600x1200_16bit.raw
  • open:
Use imagej: File > Import > Raw...

Example: other window sizes

  • Download and run mt9f002_window_generator.py
  • Then edit the code snippets for 1600x1200 according to the new window size
  • If getting raw sensor data 8-bit and 16-bit the membridge buffer is 4MB, so calculate accordingly:
for 8-bit : WxH < 4M
for 16-bit: WxH < 2M
If not then - the buffer is circular which will result in overwriting of the beginning of the image