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.
For 3D printing to make the jump from rapid prototyping to manufacturing, engineers will need to find easier ways to move products from their CAD screens to their printers.
Gigabit and PoE are two networking technologies moving ahead in tandem as industrial users power remote Ethernet devices such as IP security cameras at 1,000 Mbps over existing CAT5 cable.
New versions of BASF's Ecovio line are both compostable and designed for either injection molding or thermoforming. These combinations are becoming more common for the single-use bioplastics used in food service and food packaging applications, but are still not widely available.
From Dell / Intel® New Paradigms in Design Work Scott Hamilton, vertical market strategist for Dell Precision workstations, 5/2/2013 5
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 ...
For industrial control applications, or even a simple assembly line, that machine can go almost 24/7 without a break. But what happens when the task is a little more complex? That’s where the “smart” machine would come in. The smart machine is one that has some simple (or complex in some cases) processing capability to be able to adapt to changing conditions. Such machines are suited for a host of applications, including automotive, aerospace, defense, medical, computers and electronics, telecommunications, consumer goods, and so on. This radio show will show what’s possible with smart machines, and what tradeoffs need to be made to implement such a solution.
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.