RELEASE NOTES ============================================================================ SRV-1 firmware build for Blackfin - 16 December 2007 http://www.surveyor.com/blackfin/srv-blackfin-121607.zip * reorganized code structure for easier maintenance and extension - this work was actually done by the Transterpreter development group - http://www.transterpreter.org - who are in process of porting the Transterpreter Virtual Machine and OccamPi programming language to the SRV-1 Blackfin. a source code repository has been created for svn access to the SRV-1 code - access is currently private, but public checkout access is planned. * added vision functions to firmware: vc = set colors vg = grab color sample vs = scan each pixel column until color mismatch vf = search each pixel column until color is found vn = count number of pixels that match color in each pixel column vb = find blobs vr = recall colors parameters are now decimal instead of hex (as in ARM7 version), this is less compact but a lot easier to read. the functions are still based on an 80-column model, but are independent of capture resolution. note that with higher resolutions, we are just sub-sampling pixels, so more consistent results will be achieved by reducing capture resolution, since the camera averages rather than subsamples when scaling. syntax definition for these commands is found at http://www.surveyor.com/SRV_protocol_bf.html * added a couple of color functions to the C interpreter: scan(color) - divides field of view into 3 overlapping groups of 40 columns, returned in _x, _y, _z blob(color) - searches for blob by color, returns center point _x, _y and width _z * changed the motor settings so sufficient power is provided to motors during cw/ccw rotation commands. * tested new version of ldr-utils that support Blackfin UART boot mode via the Matchport. to boot the Blackfin via UART, set Matchport serial 1 to 115200 8N1 with no flow control and jumper 7-8 on J1 needs to be removed (this jumper sets SPI flash boot mode), and ldr command is issued - ldr -l srv1.ldr 192.168.0.15:10001 (SRV-1 IP address) when ldr indicates autoboot, the Blackfin is reset by briefly shorting pins 1-2 of J1, and program should load. note that this only puts a running version of firmware into program memory, but does not store anything to boot flash. this requires another step, using the X command for XMODEM transfer and the 'zZ' command to write the boot image to flash * linux - though on a separate development track from this firmware, code has been checked into the official uClinux code repository - svn co svn://firewall-sources.blackfin.uclinux.org:80/svn/uclinux-dist/trunk uclinux-dist make menuconfig, select Surveyor/SRV1 make * zigbee - discovered that XBee modules are not compatible with Blackfin at 115kbps. this is a problem on XBee side - their 115k is actually 112k, the Blackfin UART does not tolerate the difference (the ARM7 was more forgiving). solution is to run the Blackfin and XBee at 57600 baud * work items: range finder - if the robot isn't moving, we can look at difference between consecutive frames with lasers turned on or off. if the robot is moving, we have to search for the laser reflections. to support this, we will likely add some frame storage commands along with supporting operations back-emf - the current robot motor control boards have circuits to measure motor rotation speed, but no firmware support has yet been added for speed control serial port passthrough - we need to add protocol support for UART1 communication ============================================================================ SRV-1 firmware build for Blackfin - 5 November 2007 http://www.surveyor.com/blackfin/srv-blackfin-110707.zip * changed definition of 'zd' flash dump command - zd now dumps the contents of the flash buffer in SDRAM, not the flash sector in SPI flash. to dump the flash sector, use 'zr' to read the sector into the buffer, and then 'zd' to dump the contents. this is useful because the 'X' command transfers data from the host to the flash buffer, and the contents of the flash buffer can be confirmed before the data is committed to flash storage * added zZ command to write flash boot sectors (0-1) from flash buffer. also added srv1.ldr, a version of srv1.bin that loads without u-boot. ldr-utils for building srv1.ldr are downloaded from http://www.surveyor.com/blackfin/ldr-utils.zip srv1.ldr.115k and srv1.ldr.921k version of srv1.ldr are included with this distribution * tested XMODEM file transfer using lsz and sx commands on Linux and OS/X, mxOSX on OS/X, and ShamCom (www.shamrock.de) on Windows. The syntax for using sx or lsz to send srv1.ldr is sx -X -k -b --tcp-client 192.168.0.15:10001 srv1.ldr sx has a -c option to send a command, so ideally, we could issue sx -c "X" -X -k -b --tcp-client 192.168.0.15:10001 srv1.ldr in order to start the X command to receive a file via XMODEM, but we haven't been able to get that to work, so we have to use telnet to send the 'X' command, then exit to start the sx command. If someone knows a better way to do this, we would appreciate the guidance. unfortunately, c-kermit doesn't support 8-bit data in file transfers within a telnet session * added 'l' and 'L' commands to the SRV protocol to turn lasers on and off on SRV-1 robot * fixed problem in C interpreter with processing of ^Z ============================================================================ SRV-1 firmware build for Blackfin - 31 October 2007 http://www.surveyor.com/blackfin/srv-blackfin-103107.zip * two versions of firmware built - srv1.bin.115k and srv1.bin.921k * numerous improvements to camera code - double-buffering now supported (eliminates "image tearing" artifacts), problem with camera sync when changing resolution is resolved, and colors are a lot more stable * boot image (srv1.bin) can now be transferred via xmodem and written to flash with the new "zz" command * caption overlay function added - currently displays frame count, but can easily be modified. turned off with 'O', on with 'o' * Work items: - WLAN throughput is only 600kbps with 921kbps setting - need to try higher baud rate on Matchport - need to add adjustment for shutter speed to reduce motion blurring - no image processing functions yet added (blob, scan, etc) - still need to add back-emf speed control and laser ranging - add character scaling, position and color to caption overlay function ============================================================================ SRV-1 firmware build for Blackfin - 16 October 2007 http://www.surveyor.com/blackfin/srv-blackfin-101607.zip * Makefile has compiler optimizations (-O2) enabled * UART0 baud rate set to 921600 in config.h * OV9655 hardware scaling now works - support for on-the-fly resolution change. note that at higher resolutions, SRV1Console will timeout on transfers taking more than 1 second or requiring more than 100kbytes. this can be fixed in SRV1Console, but should be noted if testing with a low UART speed * memory pointers are now #define'd instead of hardwired * flash memory and xmodem commands all work with same memory buffer - it's possible to transfer a file from the host with xmodem-1k (up to 1 flash sector = 65536 bytes) with 'X', write the file to the user flash segment (0x00040000) with 'zw', read the flash segment back into memory with 'zr', and dump the buffer contents to the console with 'zd' * C interpreter also runs from the flash buffer, so a C program can be transferred from the host, written to flash, read from flash, and/or executed * Work items: - need to tweak the automatic gain control settings for the OV9655 - "image tearing" solution is currently disabled - looking at alternatives - C interpreter error handling isn't quite right and can cause crashes - no image processing functions yet added (blob, scan, etc) - still room for JPEG speedups - DCT is optimized, but huffman isn't - still need to add back-emf speed control and laser ranging ============================================================================ SRV-1 firmware build for Blackfin - 14 October 2007 - http://www.surveyor.com/blackfin/srv-blackfin-101407.zip This is work-in-progress - most core functions have been added but are not fully integrated into SRV_protocol command structure ... * Makefile has compiler optimizations (-O2) disabled, and includes -g gdb debug symbols * works with SRV1Console, though some buttons need to be redefined in srv.config to test various functions (e.g. lasers). * supports UYVY image capture at 1280x1024 with software scaling in even multiples to lower resolution. default scaling to 320x256. hardware scaling in OV9655 not yet implemented. * UART0 baud rate is set to 115200 in config.h. runs at 921600 baud. haven't tested higher rates (requires other firmware in Matchport/Wiport). * C interpreter works, but generates some error messages on set() and get() commands when using const values in place of pointers. * motor commands work, but back-emf speed control hasn't been added. * lasers can be switched on and off, but laser ranging function hasn't been added. * no image processing functions yet supported (e.g. blob, scan) besides JPEG compression. * Xmodem-1k file transfer and flash read/write are implemented, but not fully integrated into the command structure.