{"id":17,"date":"2014-03-08T02:33:14","date_gmt":"2014-03-08T02:33:14","guid":{"rendered":"http:\/\/blog.mtfwalker.com\/?p=17"},"modified":"2014-03-08T02:33:14","modified_gmt":"2014-03-08T02:33:14","slug":"software-or-hardware-problem","status":"publish","type":"post","link":"http:\/\/blog.mtfwalker.com\/?p=17","title":{"rendered":"Software or Hardware problem?"},"content":{"rendered":"<p>There haven&#8217;t been many interesting enquiries this week, so I thought I&#8217;d tell you about an interesting issue I had a few years ago bringing up a customer&#8217;s first prototype board.\u00a0 Whenever a customer starts an embedded design, I like to schedule some time with them as soon as the first boards come back to make sure the hardware comes up alive and ready for the software development to start.<\/p>\n<p>The day before the scheduled bring-up, I had a call from the software engineer to say that they had done some initial hardware tests on the first board and it seemed fine.\u00a0 However, he had tried to run the software he had been developing and the emulator could not connect to the board\u00a0with the debugger reporting an unhelpful error message.<\/p>\n<p>So, first thing to do was to get a scope and look at the reset, address and data signals.\u00a0 The scope was of a certain age; you could tell that by the monochrome orange display; but it had a facility to print the trace on the screen, so we could compare the signals from the evaluation board and the customer&#8217;s board.<\/p>\n<p>On the evaluation board, we could see a nice reset followed by a burst of addresses and data as the code loaded and ran.\u00a0 With the customer&#8217;s board, we got a reset, the start of the addresses as it jumped to the interrupt vector but then nothing.\u00a0 Not many other clues except one of the signals appeared to be about 0.6V below where it should be.<\/p>\n<p>So we dug out the schematic and chased it back to a transistor.\u00a0 Although this was a low power micro with some extremely low power (in the nanoamps) power down modes the hardware engineer had put in a transistor to switch off the battery power if needed.\u00a0 The hardware engineer disappeared for a few minutes to remove it from the board and lo and behold the emulator connected and the code ran happily.<\/p>\n<p>The moral of the story is that although you may be getting error messages from the software debugger (which may or may not be helpful and informative) it could be a hardware issue preventing your code from running.\u00a0 So get a fresh pair of eyes to check your schematic and layout to catch any omissions or errors before you commit to a board.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There haven&#8217;t been many interesting enquiries this week, so I thought I&#8217;d tell you about an interesting issue I had a few years ago bringing up a customer&#8217;s first prototype board.\u00a0 Whenever a customer starts an embedded design, I like to schedule some time with them as soon as the first boards come back to &hellip; <a href=\"http:\/\/blog.mtfwalker.com\/?p=17\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Software or Hardware problem?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-17","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/posts\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17"}],"version-history":[{"count":2,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/posts\/17\/revisions"}],"predecessor-version":[{"id":19,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=\/wp\/v2\/posts\/17\/revisions\/19"}],"wp:attachment":[{"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.mtfwalker.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}