From: Wayne Radochonski [rawa@mbari.org] Sent: Wednesday, February 20, 2013 10:02 AM To: Andy Hamilton; Gene Massion Cc: Jim Birch; Ken Johnson Subject: Wayne's Status Report for February Andy, et. al History PC-104 Carrier Board for ESP A design review was held for the PC-104 carrier board. The reviewers decided that the design was ready for fabrication. As a group, we also decided to add Brent's much requested audio interface. Due to my vacation and the request for audio, fabrication of the PC-104 will start on April 1st. This will give the PCB layout contractor enough time to finish the layout. First article is expected mid April. I won't start bring up until after the last Power Buoy deployment. Coastal Profiling Float Embedded Controller UART interrupts now appear to be working correctly. The last two weeks have been extremely frustrating dealing with C/C++ library size and stack overflow issues. Although the GNU tools are very capable (and free!) for software development, their C/C++ libraries assume that you are running on Linux (and have plenty of storage). NewLib and ucLibC are GNU libraries intended for use on Linux and embedded systems, respectively. ucLibC has not been ported to the STM32F407 and Code Red. Nearly all of the devices used in the buoyancy engine prototype are driven by character strings through a serial port. The WiFi driver, in particular, makes heavy use of the C library functions "sscanf" and "sprintf". Using any "printf" related library functions pulls up almost 500K of code (95% unused) into the image. Given that the processor has1MB of flash, the code bloat isn't of much short term concern. However, under certain circumstances use of these library functions will cause a stack overflow on the STM32F407 processor. Tracking down the stack overflow problem took several days to diagnose as I was left with a CPU with its paws to the sky and not many breadcrumbs left to determine why the CPU was executing some strange code in the middle of an unrelated and not even called member function. Given that NewLib is 200K lines of code, fixing it seemed futile. Porting ucLibC (60K lines of code) to our tool chain and testing it in a reasonable amount of time also seemed like a daunting task. I punted on fixing NewLib or porting ucLibC (for now, at least) and wrote my own routines for "sscanf" and "sprintf" as well as a simple C++ string class. I am just about to start testing the WiFi driver with my own "string library". Total code size is about 20K for all of the Coastal Profiler code. Power Buoy Team Power Buoy decided that I should re-enable the software that drives the make up pump in the "downstairs" PTO software. We also discussed how to check and re-work some soldering issues on the PTO controllers for chips with exposed ground pads. Mystery I'm still investigating tools and processes for code testing and inspection. Hopefully, we can find a middle path between increasing the development effort and quality. The LRAUV project licensed Coverity's static code inspection tools. I am investigating, if those tools could be used on the Coastl Profiler project without violating the terms of our license. Ballast I attended a "free" (as in vacation rental pitch "free") ORCAD training in Milpitas. I learned about all of Cadence schematic capture and PCB layout tools (not needed). I even managed to hook up a few library components with ORCAD schematic capture. I have much more to learn before I am even 10% as productive with ORCAD as I am with DesignWorks. I will be on vacation from 2/25 through 3/8. *** Start of the statement for the group *** Wayne held a design review for the PC1-104 carrier board to be used by ESP. The reviewers approved fabricating the board. Wayne continues to develop "bare metal" software to support a WiFi spigot or the Coastal Profiler. *** End of the statement for the group *** Wayne "The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell