Some powerful imagery here, Jack. I am sure that more than one viewer is going to be using some images like these in future meetings when being backed into a corner with deadlines! (I know I intend to!)
Good presentation again, very good series on Microcontroller Fundamentals from both courses. One of the comments mentioned 'homework'. I was going to suggest a ten question 'for thought' listing (ok, call it a quiz) or for further research. Jack (and the work) is going to India ...
Which RTOS is preffered in Automotive Industry. I want to do work in embedded systems for Automotives. Thanks to DesignNews and DigiKey for such courses.
Great idea to use GPIO pins as debug outputs to be analyzed with oscilloscope... I'm used to timestamped debug prints - this is something new to me... (may be obvious for an experienced embedded eng).
Mr. E: I'd interpret that data as you said, too. "some bugs slip through" and the first customer finds one during the first seconds of using the device.
On the far right of slide 4 "Benchmarking Your Group" it seems to say that less than 1% of projects achieve >99% Defect Removal Efficiency, but even when they do, they leave 66 bugs/KLOC on average. Is that right?
Error retention: Seems that storing a failure sequence in flash is the only way to go. Then the customer can sent the unit back to you to perform forensics...much better than having him complaign on the phone, and possibly the only way to capture real world failures you didn't find during development.
You could; I prefer to use an IF in case the asserts are turned off for shipping. Malloc failures are unpredictable and you may not catch them all in the lab.
When is seeding to catch bugs best done....while writing every few lines of code or after writing a few hundred lines, personally reviewing work you have done?
I put them in as I go along. Promising to go back and do work generally means the work doesn't get done.
When is seeding to catch bugs best done....while writing every few lines of code or after writing a few hundred lines, personally reviewing work you have done?
Thanks, Jack per the scope recommendation. I had a problem determining the amplitude of voltage spikes in a system, and only after I checked a digital scope out of the tool crib was I able to capture that info - plus the rise time
I mean, frankly, how preconditions and postconditions are dealt with should probably be part of a function's interface...
Sure, but to handle a lot of these may take a ton of code. And often no one knows what to do when a certain error happens. Asserts are cheap - you can sprinkly them around like Johny Appleseed!
Jack, are there any languages that might replace C that address the issues with C you've talked about? The preconditions, postconditions, malloc, exc.?
My favorite is Ada, and Ada has a free compiler and has been used on tons of embedded systems, even 8 bitters.
If the MCU project does not have a fancy GUI, what is the best way of alerting the user that an error has occured in code execution? We had Motorola products where the error code could be read only with a laptop, but when you powered the unit off, the error code was erased, and there was no way to recover what happened. (Some error codes covered multiple failures.)
I've done lots of things, even blinking an LED, like five blinks for error 5x, pause, and 3 for error x3, for a complete error of 53. Or put to LEDs, or store in flash memory.
Jack, are there any languages that might replace C that address the issues with C you've talked about? The preconditions, postconditions, malloc, exc.?
When is seeding to catch bugs best done....while writing every few lines of code or after writing a few hundred lines, personally reviewing work you have done?
The reason I ask is that while construction code not all can immeadiately look critically at few lines of code just written....... so seeding might best be handled as a recursive exercise as a programmer re-assesses the composed logical paths written.
If the MCU project does not have a fancy GUI, what is the best way of alerting the user that an error has occured in code execution? We had Motorola products where the error code could be read only with a laptop, but when you powered the unit off, the error code was erased, and there was no way to recover what happened. (Some error codes covered multiple failures.)
Slide 23: the scope trace for debug IO's ... Considering the current speeed of MCU's what speed in MHZ does the scope need to be. And how much more useful is a digital memory scope? Thanks.
Oh, say 100 MHz for most CPUs. My main scope is 500 MHz and has been great. Today I HIGHLY recommend a digital scope. They do so much for you!
Jack, does the hardware partitioning discussed earlier this week add complexity to debugging and embedded system due to the communications between the hardware modules versus a non-partitioned system?
Sure, but in the example I used, I showed that even with a 10% overhead for comm, the schedule is much shorter than a single CPU.
Slide 23: the scope trace for debug IO's ... Considering the current speeed of MCU's what speed in MHZ does the scope need to be. And how much more useful is a digital memory scope? Thanks.
Jack, does the hardware partitioning discussed earlier this week add complexity to debugging and embedded system due to the communications between the hardware modules versus a non-partitioned system?
I remember a project that used address states to generate xy vectors on a scope. low 8 bits on one axis, high 8 bits on the other and you could watch the code execution for problems. It gererated a signature.
I like writing assembly but I have found writing large applications in assembly is VERY painful. There are things compilers do that are non trivial that you have to do yourself if you don't use one.
Slide 14 - Don't check for correct inputs from error prone soirces, such as people...
What about situations like multiple button pushes, or improper value inputs - two decimal points in a number, for example. Don't these need to be addressed?
Thank you Jack, Alex, and Digikey for this great concept of continuing education. Any place we can give you 5 stars? If not, I am giving it here. Thanks a bunch!
jack21: Let's assume that you have enough code space to leave assertions in the production code. What should do assert do in production? Trigger a special interrupt?
we use "RESET" instruction to fill memory in production code, often other instruction when developing. this way things should continue to run for the application but it is easy to detect the restart
Back in the 80's, when I was designing keyboards, we would look at the keycode table to make sure there were no unknown code loops that the processor could get stuck running.
@slk, remember your roots. I learned how computers worked at the bit and machine language level, some time ago. That level of detail doesn't leave easily.
@danlafleur : what is strange is how people are looking at you when you say that you are doing your code in asm. C is all over, and asm for some is forgotten completely.
Another "gotcha" that leads to hard to find errors is the fact that that digial numbers don't convert exactly to binary! Go from decimal to binary and back to decimal and you may get things like 3.00000 turns into 2.999999999.
I missed alot of the previous lessons so I need to go to archive...But one comment that I have now is that sometimes both the engineer and programmer agree on the what the anwser is...it is getting there that sometimes creates bugs...elsewhere
romanw, I am in Colorado Springs - the front range got hit last night and today with about a foot or so of snow. We need the moisture but it cancelled a Jazz competition that my daughter was looking forward to.
@jack21: Today's session looks like some really heavy-duty information. I may not understand it all today, but I appreciate your exposing me to the new info. Seems like we should have homework assignments to drive the info home. 8-)
Oooh... just noticed that in my calender, today's session is called "Professional Bugging II", which should be a nice counterpoint to yesterday's "Professional DEbugging" :-D
The streaming audio player will appear on this web page when the show starts at 2pm eastern today. Note however that some companies block live audio streams. If when the show starts you don't hear any audio, try refreshing your browser.
By experimenting with the photovoltaic reaction in solar cells, researchers at MIT have made a breakthrough in energy efficiency that significantly pushes the boundaries of current commercial cells on the market.
In a world that's going green, industrial operations have a problem: Their processes involve materials that are potentially toxic, flammable, corrosive, or reactive. If improperly managed, this can precipitate dangerous health and environmental consequences.
With LEDs dropping in price virtually every year, automakers have begun employing them, not only on luxury vehicles, but on entry-level models, as well.
From Dell / Intel® New Paradigms in Design Work Scott Hamilton, vertical market strategist for Dell Precision workstations, 5/2/2013 4
Early in my career, I worked as a draftsman and remember the days of drawing on vellum with numbered pencils and Mylar with plastic lead. This was a fun experience in the sense that I ...
I've been using workstations for more than 10 years and love finding ways to get more performance from my system. With demanding professional applications that require more power each ...
A lasting memory from my first job as an engineer in an auto assembly plant is standing on hard concrete at six in the morning, vending-machine coffee clutched in hand, listening to ...
A quick look into the merger of two powerhouse 3D printing OEMs and the new leader in rapid prototyping solutions, Stratasys. The industrial revolution is now led by 3D printing and engineers are given the opportunity to fully maximize their design capabilities, reduce their time-to-market and functionally test prototypes cheaper, faster and easier. Bruce Bradshaw, Director of Marketing in North America, will explore the large product offering and variety of materials that will help CAD designers articulate their product design with actual, physical prototypes. This broadcast will dive deep into technical information including application specific stories from real world customers and their experiences with 3D printing. 3D Printing is
To save this item to your list of favorite Design News content so you can find it later in your Profile page, click the "Save It" button next to the item.
If you found this interesting or useful, please use the links to the services below to share it with other readers. You will need a free account with each service to share an item via that service.