Research & Development Engineering

I was born with "The Knack", per Dilbert, and have been programming and designing Embedded Systems ever since. I am a American Society for Quality - Certified Quality Software Engineer, with background in Analog/Digital hardware system design and layout. I worked for many years in a electronic Contract Manufacturing (CM) environment. I know what it takes to have a idea come in on the back of a napkin, and get a finished product out the door, from BOM to PCB. See my blog on the subject: http://blog.designer-iii.com/contract_manufacturer/20090616-211514-Is-there-a-rule-of-thumb-for-estimating-the-cost-of-getting-circuit-boards-assembled My particular interests are in the area of requirements management and Software Safety. See my award winning web site on the subject at http://www.softwaresafety.net , and my blog http://blog.softwaresafety.net .


's contributions
    • I never saw any value in Facebook until my wife's suicide. From 9,437 Facebook messages, some moments before her death, I reconstructed her life with the medical world, in her own words. See http://www.kpaddoc.com In some of the Facebook groups there is more collected wisdom and medical knowledge than in medical schools. These groups are mostly populated by the people that The System has left behind. They can tell you what works, what doesn't, who can help you and whom to avoid. The point here is that Facebook can have value if you do not allow it to be a time sink. I did not understand that myself until Karen died.

    • My concern is that with things being easy, doing things correctly may never happen. Far to easy for the inexperienced, especially in management, to say: "It looks like it works. Ship it." Where does the motivation to improve come from? I agree that you must keep control of the tools, I said similar things last year: http://www.embedded.com/electronics-blogs/break-points/4400698/mbed--A-strange-IDE NOV 7, 2012 9:43 AM EST The problem with any web based tool is that A) It assumes you have a fast reliable Internet. B) Will that web site work in five years when the customer wants a code change? How do you archive the tools with the project? [Will the site in five years produce the same code it does today?] C) It assumes your IT department is not run by Mordac.

    • Jack, I find using 'platforms' like this to be a scary thought. Lets take this real bug, that has gone unfixed since I reported it in July, in the MBed Freedom Board USB support for our collective future: http://mbed.org/users/mbed_official/code/USBDevice/file/354942d2fa38/USBDevice/USBHAL_KL25Z.cpp [I know the comment system here is going to hose the code formating. :-(] bool USBHAL::realiseEndpoint(uint8_t endpoint, uint32_t maxPacket, uint32_t flags) { ... if ((flags & ISOCHRONOUS) == 0) { handshake_flag = USB_ENDPT_EPHSHK_MASK; if (IN_EP(endpoint)) { endpoint_buffer[EP_BDT_IDX(log_endpoint, TX, ODD )] = (uint8_t *) malloc (64*2); } ... } } void USBHAL::usbisr(void) { ... // reset interrupt if (istat & USB_ISTAT_USBRST_MASK) { // enable control endpoint realiseEndpoint(EP0OUT, MAX_PACKET_SIZE_EP0, 0); ... } } The problem here is the malloc. Not allowed by MISRA et.al for the exact reason this code shows. Windows is going to issue at least *two* USB resets, and in my bus monitoring can issue many more than that. Each one of them doing a malloc that is going to suck away all of the RAM in the heap during USB enumeration. As I lack trust in code I've not looked at for my safety applications, I was working on my own version of HID code when my wife commited suicide. I posted, working but unfinished, code in the Freescale community form: https://community.freescale.com/thread/312026 I'm getting back into that code now to complete the To Do items listed there.

    • To MBed as a whole, and other platforms like it, how many other bugs lurk waiting to injure someone that wanted to be quick to market with tools that are being promoted to be simple and rapid rather than safe and reliable? Also while the Freedom board is a nice platform, that I'm using many of, Freescale's documentation and support leaves a lot to be desired. Simple questions that the datasheet, or Freescale should answer when asked, like are the I2C lines 5V tolerant go unanswered: https://community.freescale.com/message/327309#327309

    • Here is some real world code, been using it for years: https://github.com/dhylands/TimerUART/blob/master/CBUF.h " A simple and efficient set of circular buffer manipulations. * * These macros implement a circular buffer which employs get and put * pointers, in such a way that mutual exclusion is not required * (assumes one reader & one writer)." Simply avoid any queue that involves a 'count'. Nice to have but they are rarely implemented correctly as I've explained in my blog in the past: http://blog.softwaresafety.net/2012/02/even-design-patterns-still-have-bugs.html

    • Don't over look flux that is trapped under the parts. The 2006 paper in 2.3 is talking more about wave soldering than modern QFN's. Make sure there is a clear path for water flow (cleaning fluids) for ingress and egress of the flux. "Make it smaller" does not always go well with "make it manufactureable" when hard to clean parts (BGA/QFN/LCC/LGA) are surrounded by things like bypass caps for example. :-( Also do not over look Triboelectric Noise in your test setup when dealing with such low currents.

    • We have known collectively for years that a knob with indents, and physical buttons are easy to use on instruments or dashboards. Yet we see TV ads for new cars that do nothing but show the fancy center console touch screen, that is impossible to use without looking at it, to sell to the "Ooo Shinny" crowed. The Human Factors Interdisciplinary Research in Simulation and Transportation (HumanFIRST) project at http://www.humanfirst.umn.edu Studies this kind of stuff, yet the manufacturers ignore the data to sell more cars (based on TV commercials at least). "The HumanFIRST Program employs the tools and methods of psychology and human factors engineering to improve scientific understanding of driver performance and cognitive functions."

    • "Law makers are not data driven." I've covered distracted Drivers, Doctors, Pilots and the government regulations being pushed to stop them in my blog: http://blog.softwaresafety.net/2012/02/government-releases-phase-i-anti.html Something that is being overlooked is this: "In the Law of Unintended Consequences the site Insurance Institute for Highway Safety, Highway Loss Data Institute, tells us in their September 28th, 2010 report that, Texting bans don't reduce crashes; effects are slight crash increases because the *Texter is trying harder to hide what they are doing*, becoming even more distracted."

    • "The manual warns that the unit is unfused, and the shunt resistors are teeny little SMT things that will fry easily so one has to be careful not zap it with too much current." Place a silicon diode across the uCurrent terminals. High current (relative to the uCurrent range) will cause the diode to conduct, bypassing the uCurrent, preventing fried fuse. Diode will not conduct during the low uCurrent usage. Need to do tricks like this if you are testing a sleeping transmitter that could wake up and go from 20 nA sleep to +1A transmit with no notice.

    • The problem with any web based tool is that A) It assumes you have a fast reliable Internet. B) Will that web site work in five years when the customer wants a code change? How do you archive the tools with the project? C) It assumes your IT department is not run by Mordac.

    • A) "What is the conductivity of the solder flux residue? Does the board cleaner leave low-impedance swarf behind?" Bad cleaning will kill a battery. Getting all of the flux out from under a QFN package is not fun. I try to avoid them when I can in any battery circuit. B) A very common misconception is that Conformal Coating is a Hermetic Seal. As Conformal Coating is not a Hermetic Seal, what real happens is the impurities in the water are kept away from the circuit, but the water itself reaches the traces. Since the water is now fairly devoid of contaminates, the water acts more like a dielectric insulator. You never notice it in a low impedance digital circuit, but unless debugging is an obsession don't let it get near a RF tuning circuit or a high impedance sensor. For example Analog Devices for their electrostatic grade OpAmps say to "expose to air" rather than coat.

    • "In the Law of Unintended Consequences the site Insurance Institute for Highway Safety, Highway Loss Data Institute, tells us in their September 28th, 2010 report that, Texting bans don't reduce crashes; effects are slight crash *increases* because the Texter is trying harder to hide what they are doing, becoming even more distracted." -- http://blog.softwaresafety.net/2010/11/emergency-broadcast-alerts-coming-to.html http://www.iihs.org/news/rss/pr092810.html Any reason to believe same won't happen with a Cell Phone ban?

    • Take a look at the Congressional Record pages S1790 to S1810 to see how little the politicians understand about GPS technology they are making laws for: "On the committee, we decided we were going to get into it in a very big way. The Next Generation Air Transportation System, called NextGen that is what we call it-will save our economy billions by creating additional capacity and more direct routes, allowing aircraft to move more efficiently. Why? Because it will be GPS, it will be digitalized, and it will be real-time streaming of where airplanes are. It will help the ground controllers." More quotes from CR on getting yet more people dependent on GPS, in dangerous applications for the technology, can be found here: http://blog.softwaresafety.net/2010/03/politicians-replace-air-traffic-control.html If there is ever a repeat of the Carrington Event, the super solar storm of 1859, in our modern technical society, it will be devastating. We return to at least the Steam Age if not the Stone Age. "Are we to reliant on GPS/GNSS? Royal Academy of Engineering says we are." http://blog.softwaresafety.net/2011/03/are-we-to-reliant-on-gpsgnss-royal.html "Scientists, Politicians Take Electromagnetic Pulse (EMP) Threat Seriously." http://blog.softwaresafety.net/2010/11/scientists-politicians-take.html Do we really want to be so dependent on a technology that is so venerable to man and nature?

    • Literate Programming is one of those things that sounds great in theory but I've personally seen it fall apart in practice. In a nutshell Literate Programming is where you write the documentation for the program, and that documentation is then transformed into executable code. The Open Source schematic capture package gEDA http://www.gpleda.org/ was originally written in NOWEB (which has nothing to do with the Internet Web). Many people wanted to contribute to the gEDA project, but few wanted to be bothered to learn this obscure language. Only after NOWEB was abandoned in favor of straight C, and Scheme, code did the project start to advance significantly. I covered this a while ago in my Blog were I go into a bit more background of Andrew Koenig classic paper "C Traps and Pitfalls", to be found at the Literate Programming site. http://blog.softwaresafety.net/2011/01/always-fully-specify-requirements.html