<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9206484</id><updated>2011-07-31T01:13:32.848-07:00</updated><title type='text'>Digi ConnectMe Notes</title><subtitle type='html'>Development Notes from an experienced engineer's first encounters with NetSilicon, NetOS and the Digi ConnectMe.

This blog is intended for embedded system programmers and CE/EE types who are considering the use of the ConnectMe in a project.
</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>17</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9206484.post-3160103262416983443</id><published>2008-12-28T17:48:00.000-08:00</published><updated>2008-12-28T17:55:46.836-08:00</updated><title type='text'>2007/8 Update</title><content type='html'>I still get inquiries about ConnectMe.  This year, I worked three ConnectMe projects for different customers:&lt;br /&gt;&lt;br /&gt;1.  Rapid application development framework in NetOS 7.4 and ESP.  I set up the AWS web pages and some other tricky stuff, and provided hooks for the client's backend code.&lt;br /&gt;&lt;br /&gt;2.  Socket code debug, in NetOS 7.0 command line.  This customer just needed help getting various examples working together.&lt;br /&gt;&lt;br /&gt;3.  Recovery of loadable modules from multiple unsynchronized source trees in NetOS 6.0f command line, and detailed manufacturing instructions, for a company that had lost touch with its original ConnectMe specialist.&lt;br /&gt;&lt;br /&gt;I post on the Digi support forums as lslarry86.&lt;br /&gt;&lt;br /&gt;Happy New Year to all,&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2008 Larry Martin. All Rights reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-3160103262416983443?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/3160103262416983443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=3160103262416983443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/3160103262416983443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/3160103262416983443'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2008/12/20078-update.html' title='2007/8 Update'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110679383461234096</id><published>2005-01-26T18:30:00.000-08:00</published><updated>2005-01-26T18:43:54.613-08:00</updated><title type='text'>Digi Boot Loader</title><content type='html'>The S-type Digi boot loader is not the same as the one in the NetOS source tree.  Digi has not published the source but, according to Digi tech support, there are two ways to recover bad-download modules using the Digi Boot Loader:&lt;br /&gt;&lt;br /&gt;1. Upon module power up, if the boot loader determines that the application&lt;span style="font-family: monospace;"&gt; &lt;/span&gt;image is missing or corrupted it attempts to retrieve a replacement&lt;span style="font-family: monospace;"&gt; &lt;/span&gt;image, via TFTP, using the TFTP server address of 192.168.0.128 and a&lt;span style="font-family: monospace;"&gt; &lt;/span&gt;filename of 82000856.  I have not observed this behavior.  My Ethereal shows no activity on TFTP port 69; however, there could be a problem with netmask, etc., keeping me from seeing these packets.&lt;br /&gt;&lt;br /&gt;2.  If ConnectMe pin 18 is grounded at powerup, the boot loader puts out a menu at 9600N81 on the normal serial port.  The menu lets you set up IP and netmask, retrieve a file by tftp and load it to Flash.  This system works, I have used it on an S-type module that I know to have had its application erased.&lt;br /&gt;&lt;br /&gt;Notice that neither of these behaviors is described in the "&lt;b&gt;The Digi CM  disaster recovery procedure&lt;/b&gt;" which I described in my last post.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2005 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110679383461234096?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110679383461234096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110679383461234096' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110679383461234096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110679383461234096'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2005/01/digi-boot-loader.html' title='Digi Boot Loader'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110674871486104483</id><published>2005-01-26T06:02:00.000-08:00</published><updated>2005-01-26T06:11:54.860-08:00</updated><title type='text'>Digi Knowledge Base</title><content type='html'>Digi has started building a ConnectMe knowledge base (KB):&lt;br /&gt;&lt;br /&gt;http://www.digi.com/support/knowledgebase.jsp&lt;br /&gt;&lt;br /&gt;This link:&lt;br /&gt;&lt;br /&gt;http://www.digi.com/support/kbaseresultdetl.jsp?id=746&lt;br /&gt;&lt;br /&gt;takes you to an article titled "&lt;b&gt;The Digi CM  disaster recovery procedure&lt;/b&gt;".  I found the article by searching the KB for "boot loader", with the Product ID set for "Any".  When I searched with the product ID set for "ConnectMe" the KB did not show me this article.&lt;br /&gt;&lt;br /&gt;While I can't reprint the article here, the gist is: connect a terminal (9600N81) to the broken ConnectMe and press ESCape within 3 seconds of powerup.  Then you get a recovery menu.  I've heard from Digi tech support that the S-type boot loader is different from the NetOS one.  So, presumably, this procedure is only for S-type ConnectMe.&lt;br /&gt;&lt;br /&gt;Incidentally, I have tried this and it has not yet worked for me.  The problem could still be me.  I'll post again when I know for sure.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110674871486104483?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110674871486104483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110674871486104483' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110674871486104483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110674871486104483'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2005/01/digi-knowledge-base.html' title='Digi Knowledge Base'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110070598744508586</id><published>2004-11-17T07:18:00.000-08:00</published><updated>2008-01-14T11:04:21.075-08:00</updated><title type='text'>The Beginning</title><content type='html'>The Digi ConnectMe is an amazing piece of equipment. In a metal can the size of an RJ45 connector, Digi has packed a NetSilicon/ARM chipset including 2 MB Flash and up to 16 MB RAM. The 100BT version draws 300 mA. It costs around US$40 officially, but I've heard of much lower negotiated bulk prices. There is also a WiFi version.&lt;br /&gt;&lt;br /&gt;The ConnectMe is basically a LAN to serial adapter. Digi seems to intend that companies buy the device, solder it to their circuit boards, and quickly convert RS232 devices to "internet" devices. That works Ok, but with an ARM and all that memory to work with, it's inevitable that guys like me will try to do something more with it.&lt;br /&gt;&lt;br /&gt;Unfortunately, that's where the trouble starts. While Digi has great technical support people, and Ok support forums on their website, I found that their developer support was a bit frustrating. I don't know how other people work, but I need a mental picture of a device before I feel comfortable controlling it. With the ConnectMe, Digi has not provided that. I lost a lot of time going back and forth with their tech support people, trying to figure things out. Finally, the light dawned, and I finished my project.&lt;br /&gt;&lt;br /&gt;Now I'll be going through my "old" notes (6 weeks old) and blogging the day-by-day struggle to understand this unique piece of equipment. I hope my readers, if any, learn something for their trouble and share their own experiences too.&lt;br /&gt;&lt;br /&gt;FYI, you can skip this entire blog and go direct to the official sources of information:&lt;br /&gt;&lt;br /&gt;Digi Connectme website:&lt;br /&gt;&lt;a href="http://www.digi.com/products/embeddeddeviceservers/digiconnectme.jsp"&gt;http://www.digi.com/products/embeddeddeviceservers/digiconnectme.jsp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Digi Support FTP Site:&lt;br /&gt;&lt;a href="ftp://ftp1.digi.com/support/"&gt;ftp://ftp1.digi.com/support/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Digi Developer Forums:&lt;br /&gt;&lt;a href="http://www.digi.com/support/forum/"&gt;http://www.digi.com/support/forum/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;NetSilicon Developer Forums:&lt;br /&gt;&lt;a href="http://www.netsilicon.com/netforums/"&gt;http://www.netsilicon.com/netforums/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin.  All Rights reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110070598744508586?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110070598744508586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110070598744508586' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110070598744508586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110070598744508586'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/11/beginning.html' title='The Beginning'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110075148354375157</id><published>2004-10-06T20:10:00.000-07:00</published><updated>2004-11-17T20:18:03.543-08:00</updated><title type='text'>The End...?</title><content type='html'>It is now two days before my direct customer's ship date, and nine days before their customer's ship date.  I have not begun integration testing, mainly because it took so long to get the code loaded.  Needless to say, we missed ship time (COB Friday 08Oct04), and I ended up hand carrying the product to my customer's customer, and completing integration phase at their site.&lt;br /&gt;&lt;br /&gt;In the end, all the requirements were met and the systems worked pretty well.&lt;br /&gt;&lt;br /&gt;For better or worse, it was a successful project.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110075148354375157?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110075148354375157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110075148354375157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075148354375157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075148354375157'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/10/end.html' title='The End...?'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110075101744139224</id><published>2004-10-06T19:59:00.000-07:00</published><updated>2004-11-18T05:25:44.786-08:00</updated><title type='text'>Updating S Modules</title><content type='html'>Getting to the end now...&lt;br /&gt;&lt;br /&gt;The other thing I learned when I started trying to overwrite S modules was that the Standard firmware's update method does not always work. With both Netscape and Internet Explorer, I failed to upload my image.bin file to the Standard firmware's update page:&lt;br /&gt;&lt;br /&gt;http://w.x.y.z/admin/upgrade_firmware.htm&lt;br /&gt;&lt;br /&gt;Every time, I got the message "Document contains no data"&lt;br /&gt;&lt;br /&gt;Tech Support made me try a few more times, then told me that there is an undocumented code update protocol in addition to ftp, tftp and http (the Standard firmware has no ftp or tftp service). They provided me a Windows command line program that implements the protocol - it's called &lt;span style="font-weight: bold;"&gt;dgdcprog.exe&lt;/span&gt;.  If you have this problem with S modules, request that program from Tech Support.  Here's how to use it:&lt;br /&gt;&lt;br /&gt;dgdcprog /discover&lt;br /&gt;&lt;read&gt;(note MAC address in reply)&lt;br /&gt;dgdcprog /set /firmware=image.bin /mac=(MAC from previous reply)&lt;mac&gt;&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;/mac&gt;&lt;/read&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110075101744139224?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110075101744139224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110075101744139224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075101744139224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075101744139224'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/10/updating-s-modules.html' title='Updating S Modules'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074793672502121</id><published>2004-10-05T19:10:00.000-07:00</published><updated>2004-11-17T21:01:40.723-08:00</updated><title type='text'>Discovery</title><content type='html'>The Discovery protocol used by Digi's GUI is undocumented. Maybe you care and maybe you don't. Here's why I care. My customer is shipping 99% of their systems with the standard ConnectMe firmware. Around 1% of their systems ship with some cute application that I wrote loaded into the ConnectMe. My stuff &lt;span style="font-weight: bold;"&gt;has to&lt;/span&gt; be visible to the same tools as the standard stuff.  But the Discovery protocol is undocumented.&lt;br /&gt;&lt;br /&gt;Digi Tech Support says they're working on the doc and it will be ready Real Soon Now. In the meantime, here is an Ethereal capture of a Discovery session between the GUI and a stock Connectme:&lt;br /&gt;&lt;br /&gt;=======================================&lt;br /&gt;&lt;br /&gt;PC: DHCP IP 192.168.1.103 MAC 00e098:9190ca&lt;br /&gt;&lt;br /&gt;ConnectMe S module: fixed IP 169.254.68.244 MAC 00409D:24A790&lt;br /&gt;&lt;br /&gt;from PC:&lt;br /&gt;&lt;br /&gt;UDP PC port 3326 (0x0cfe) BROADCAST to port 2362 (0x093a)&lt;br /&gt;&lt;br /&gt;0000  01 00 5e 00 05 80 00 e0  98 91 90 ca 08 00 45 00   ..^..... ......E.&lt;br /&gt;0010  00 2a 54 f5 00 00 40 11  7e 3e c0 a8 01 67 e0 00   .*T...@. ~&gt;...g..&lt;br /&gt;0020  05 80 0c fe 09 3a 00 16  b6 60 44 49 47 49 00 01   .....:.. .`DIGI..&lt;br /&gt;0030  00 06 ff ff ff ff ff ff  08 0a 00 00               ........ ....  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;from ConnectMe:&lt;br /&gt;&lt;br /&gt;UDP port 2362 to PC port 3326&lt;br /&gt;&lt;br /&gt;0000  00 e0 98 91 90 ca 00 40  9d 24 a7 90 08 00 45 00   .......@ .$....E.&lt;br /&gt;0010  00 81 00 0e 00 00 3c 11  cd 5c a9 fe 44 f4 c0 a8   ......&lt;. .\..D...&lt;br /&gt;0020  01 67 09 3a 0c fe 00 6d  d7 6e 44 49 47 49 00 02   .g.:...m .nDIGI..&lt;br /&gt;0030  00 5d 01 06 00 40 9d 24  a7 90 02 04 a9 fe 44 f4   .]...@.$ ......D.&lt;br /&gt;0040  03 04 ff ff 00 00 0b 04  00 00 00 00 0d 0f 44 69   ........ ......Di&lt;br /&gt;0050  67 69 20 43 6f 6e 6e 65  63 74 20 4d 45 07 01 00   gi Conne ct ME...&lt;br /&gt;0060  08 1d 56 65 72 73 69 6f  6e 20 38 32 30 30 30 38   ..Versio n 820008&lt;br /&gt;0070  35 36 5f 45 20 30 37 2f  30 31 2f 32 30 30 34 0e   56_E 07/ 01/2004.&lt;br /&gt;0080  04 00 00 03 03 10 01 01  12 01 01 0c 02 00 01      ........ .......&lt;br /&gt;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;I have reversed the protocol based on this and similar experiments, and my application works Ok. If you need the protocol, please pound on Digi for it. If they don't help you, and you don't have any luck reversing it, contact me and we can work something out.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074793672502121?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074793672502121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074793672502121' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074793672502121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074793672502121'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/10/discovery.html' title='Discovery'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110075010942137529</id><published>2004-10-02T19:20:00.000-07:00</published><updated>2004-12-01T05:28:53.613-08:00</updated><title type='text'>Three Faces</title><content type='html'>About now, I'm feeling good.  My core logic is working, I'm updating code via FTP, and there's still a week left to ship time.&lt;br /&gt;&lt;br /&gt;Wrong.&lt;br /&gt;&lt;br /&gt;Til now, I have been working exclusively with the JTAG module that came with the Development Kit. The first time I tried loading code into a non-JTAG module, I found out two things:&lt;br /&gt;&lt;br /&gt;1. The hardware had changed, there were now two versions of the ConnectMe in circulation and both were different from the one on my development board. More about this detail below.&lt;br /&gt;&lt;br /&gt;2. The standard ConnectMe firmware has no FTP service. You are supposed to load new code into those devices via a web page. I could not make that work, and had to get a special command line tool from Digi. This wrinkle is explored in another post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Hardware Changes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am still confused about the evolution of this situation. Here's what I think I know. Before summer 2004, all ConnectMe modules were alike. The NetOS development kit through rev. D works with this hardware and this hardware alone. Call this the Old platform.&lt;br /&gt;&lt;br /&gt;Sometime in the summer of 2004, Digi seems to have done a few things:&lt;br /&gt;&lt;br /&gt;1.  Updated the chipset's physical layer (PHY) and selected a different Flash chip, creating a new hardware platform.&lt;br /&gt;&lt;br /&gt;2. Defined new conventions for usage of the Flash segments, as in which are locked, etc. For example, in the new scheme, the bootloader Flash is no longer locked (some say). NetOS development kit rev. E works exclusively with this new platform. You cannot create apps for the Old platform with the new development kit.&lt;br /&gt;&lt;br /&gt;3. Defined a new part number for a totally blank ConnectMe using the new hardware and new development kit: DC-ME-01T-C where the C stands for Customizable.&lt;br /&gt;&lt;br /&gt;4. Defined another new part number for a ConnectMe module containing a port of their original standard firmware: DC-ME-01T-S where the S stands for Standard as in Standard Plug-and-Play firmware.&lt;br /&gt;&lt;br /&gt;BUT&lt;br /&gt;&lt;br /&gt;5. DC-ME-01T-S uses the OLD convention for flash segment usage, and has "some segments" locked (I think that means the Boot Loader flash, but at least one person has told me that's unlocked even in the S module). The upshot is that you CANNOT create apps for the S module using the standard development kit, and you CANNOT make the S module look like a C module by wiping it clean.&lt;br /&gt;&lt;br /&gt;6. Digi then released a development kit supplement called the Legacy Support Kit (LSK), which you could patch over your rev-E-or-better development kit and gain the ability to write apps for the S module. Despite the name Legacy, it is really for S modules and not for the Old modules as defined above.&lt;br /&gt;&lt;br /&gt;This is all bad, but can be handled if you know it. For some reason, though, Digi seemed to be doing everything possible to keep me from finding out. I had to hit a roadblock (can't load code), try to get past it (am I doing something wrong), exhaust all possibilities (cripes it's 2 AM), send a message explaining myself (%!$#@), negotiate with them that I have already exhausted all possibilities, and then, finally, get an answer that let me progress to the next problem. I am not kidding, this went on for days. I actually had to diff the BSP source between LSK and non-LSK development kits to get to the bottom of it. When I presented my observations to tech support for verification, they said, yeah, that's what we told you last week, what's the big deal?&lt;br /&gt;&lt;br /&gt;I ended up with three development trees on my disk:&lt;br /&gt;Rev D for the Old modules&lt;br /&gt;Rev E for the C modules&lt;br /&gt;Rev E plus LSK for the S modules (not the Old ones despite the fact that the L in LSK stands for Legacy)&lt;br /&gt;&lt;br /&gt;=============================&lt;br /&gt;&lt;br /&gt;Whew - blew off a little steam there. Let me say once again that the Digi tech support folks are very professional and always helped me as much as they could - once I asked the right question. We just didn't seem to be approaching things from the same direction.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110075010942137529?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110075010942137529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110075010942137529' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075010942137529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110075010942137529'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/10/three-faces.html' title='Three Faces'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074699892207609</id><published>2004-09-27T18:43:00.000-07:00</published><updated>2004-11-17T19:07:01.310-08:00</updated><title type='text'>How to Build an Application</title><content type='html'>Digi's implicit assumption is that you will go through the example programs under netos60_gnu/src/examples, find one that approximates your needs, and cut&amp;paste the appropriate code into your own app. If you have any questions, you can always read the source, post to support forums or ask tech support. There is help - quite a big help file - but it is a typical reference document. That is to say, if you already know the answer, you can learn the details, but if you don't even know the question yet, you are SOL.&lt;br /&gt;&lt;br /&gt;In addition to my core logic, my application needed telnet code (from example project natelserl), ftp code (from example project naftpapp) and raw socket access (from example project nafsockapp).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;There is no facility in the standard libraries to reload code.&lt;/span&gt; You must include some method of updating code in your application. I use ftp, but tftp and http are both possibilities. If you ever load code with a dysfunctional update method into a ConnectMe, you have just made that ConnectMe into an OTP device.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;War Story&lt;/span&gt;: After putting all the elements together, the ftp service didn't work. At this point, I really wasn't clear on the memory map so it was tough to know how things were failing. But they were failing. After (only) one sleepless night, I found that the ftp service needs nearly exclusive CPU access. After putting in handshake logic to idle the other threads when FTP was active, the application started working like a champ.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hint:&lt;/span&gt; The FTP service has a nasty quirk. Unless your code ends on a segment boundary, there will always be some bytes left in buffer when the ftp client says "download complete." the ftp library will not write those dangling bytes to Flash until the ftp client disconnects ("&lt;span style="font-weight: bold;"&gt;bye&lt;/span&gt;"). So if you do what comes naturally and cycle power when the PC says "download complete" you will have a ConnectMe with a corrupt Flash image. When updating code via FTP, &lt;span style="font-weight: bold;"&gt;ALWAYS&lt;/span&gt; type "bye" and wait at least 30 seconds before removing power.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074699892207609?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074699892207609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074699892207609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074699892207609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074699892207609'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/how-to-build-application.html' title='How to Build an Application'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074572797360048</id><published>2004-09-22T18:31:00.000-07:00</published><updated>2004-11-17T18:42:28.100-08:00</updated><title type='text'>How ConnectMe Boots</title><content type='html'>When a ConnectMe boots up, it first executes the Boot Loader. I have described that piece of code in another entry. When the Boot Loader executes your application, here's what happens:&lt;br /&gt;&lt;br /&gt;The first code that executes is netos60_gnu/src/bsp/arm7init/INIT.s, which is part of libbsp.a (see "How Stuff is Arranged in Flash" 21Sep04). Branching from there, the BSP sets up the board and all the standard libraries. It finally calls your application's applicationStart() function from netos60_gnu/src/bsp/common/bsproot.c. Your app then sets up its own threads. After applicationStart() returns, execution passes to an idle task, and the ConnectMe is basically dead except for your application's threads.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074572797360048?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074572797360048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074572797360048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074572797360048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074572797360048'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/how-connectme-boots.html' title='How ConnectMe Boots'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074188470501719</id><published>2004-09-22T17:23:00.000-07:00</published><updated>2004-11-17T17:38:04.706-08:00</updated><title type='text'>Embedded Development vs. Linux</title><content type='html'>Since starting my own consulting operation, I've been trying to do everything in Linux.  KDE  and Star Office make it possible to work in Linux at the office and document level (my desktop PC has 512 MB RAM and runs at 1GHz), but embedded tools are distressingly Windows-centric.  I can't even inspect the files on the NetOS development kit CD using Linux because they are packaged as a self-extracting Windows executable.  The exec won't open with wine because it is bigger than my system RAM (haven't tried increasing swap space).&lt;br /&gt;&lt;br /&gt;I solved that by running the tools on my laptop (486, 64MB, Win2kPro).  I loaded the development kit CD onto the laptop, and set up FTP and Telnet servers on the laptop.  I used FileZilla for ftp and CygWin for telnet.  Here's the command to start a telnet server on a cygWin equipped Windows box:&lt;br /&gt;&lt;br /&gt;    /sbin/inetd --install-as-service&lt;br /&gt;&lt;br /&gt;So then I fixed up the Makefile on my Linux desktop system to ftp changed files to the Windows laptop.  With a telnet session still active in another window, I could compile, load and debug from the laptop without losing the context of my desktop, with all the editors, data sheets and explanatory emails I could cram onto the screen.  It really was a nice setup, and I'd recommend it to anyone.&lt;br /&gt;&lt;br /&gt;Another advantage was I could take my laptop out to the field, tweak the code, and synch with the desktop on returning home.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074188470501719?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074188470501719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074188470501719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074188470501719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074188470501719'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/embedded-development-vs-linux.html' title='Embedded Development vs. Linux'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074507115268091</id><published>2004-09-21T17:42:00.000-07:00</published><updated>2004-11-17T18:31:11.153-08:00</updated><title type='text'>How Stuff Is Arranged In Flash</title><content type='html'>It took a while to figure this out.  As far as I know this is not documented by Digi.  I kinda think their tech support guys think it's obvious, but like I say, it took me a while to figure it out.  While I was able to write my source without this knowledge, I could not understand the instructions for loading code into a non-JTAG target until this picture formed in my head.&lt;br /&gt;&lt;br /&gt;=============================================&lt;br /&gt;&lt;br /&gt;Memory Top&lt;br /&gt;    NonVolatile Memory&lt;br /&gt;    Flash File System (if compiled into application)&lt;br /&gt;    User Application (includes BSP)&lt;br /&gt;    -----&lt;br /&gt;    Boot Loader&lt;br /&gt;Memory Bottom&lt;br /&gt;&lt;br /&gt;Maybe someday I'll draw a real picture.  For now, the outline above will do.&lt;br /&gt;&lt;br /&gt;In the &lt;span style="font-weight: bold;"&gt;original&lt;/span&gt; ConnectMe, the Boot Loader was not user accessible.  It is, however, built by the Development Kit (DK) along with the Board Support Package (BSP).  In the latest DK, the boot loader image is linked as:&lt;br /&gt;&lt;br /&gt;    netos60_gnu/src/bsp/bootloader/romImage/rom.bin&lt;br /&gt;&lt;br /&gt;In the &lt;span style="font-weight: bold;"&gt;original&lt;/span&gt; ConnectMe, everything above the dashed line is changeable, but everything below the dashed line is locked.  So, you cannot change the boot loader (or can you...).  Changing the boot loader would be convenient because it kinda sucks.   When the system boots, the boot loader does a sum check of the code in application space.  If good, the boot loader jumps to that code.  If bad, the boot loader attempts DHCP; if &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; works, then it tries to bootp a new image from the DHCP server.  I have not verified this part experimentally, but I have read that the bootp will only be attempted from the successful dhcp server.  There is no way to escape to the boot loader on reset, or from the application; therefore,&lt;span style="font-weight: bold;"&gt; if you load code into the ConnectMe that satisfies the boot loader's sumcheck, but makes the thing continually reset, you have just wasted a ConnectMe.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The BSP source ends up as:&lt;br /&gt;&lt;br /&gt;    netos60_gnu/lib/32b/libbsp.a&lt;br /&gt;&lt;br /&gt;and is linked into the Boot Loader as well as into your application.  That took a while for me to verify - the BSP is linked into my app, as opposed to residing in system Flash like some kind of BIOS.  Again, when I verified this observation with Digi Tech Support, they just said, yeah, how else would it be done?&lt;br /&gt;&lt;br /&gt;Your application is compiled to image.elf (JTAG/gdb image) and image.bin (Flash image).&lt;br /&gt;&lt;br /&gt;If your application requires a Flash File System, you will need to compile and link it into your app.  I have not worked with this yet.&lt;br /&gt;&lt;br /&gt;=============================================&lt;br /&gt;&lt;br /&gt;Once I put together the information above, I was able to understand the procedures for updating firmware at the end of the Programmers' Guide:&lt;br /&gt;&lt;br /&gt;Rebuild BSP, bootloader and application&lt;br /&gt;Use JTAG and gdb to run an FTP server in RAM&lt;br /&gt;Use the RAM based ftp server to load the bootloader with reserved filename rom.bin&lt;br /&gt;Use the RAM based ftp server to load the application with reserved filename image.bin&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074507115268091?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074507115268091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074507115268091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074507115268091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074507115268091'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/how-stuff-is-arranged-in-flash.html' title='How Stuff Is Arranged In Flash'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110074100352445084</id><published>2004-09-21T17:00:00.000-07:00</published><updated>2004-12-01T05:38:08.676-08:00</updated><title type='text'>Command Line GDB</title><content type='html'>The NetOS development kit comes with a Tcl/Tk GUI version of GNU Debugger (gdb). I could not figure out how to drive it, and ended up using command line gdb. While I'd toyed with gdb in the past, mainly doing post mortems on core dumps, this was the first project on which I'd used it seriously. I wish I'd started long ago. This program is phenomenal.&lt;br /&gt;&lt;br /&gt;You can set a breakpoint, then program a bunch of stuff to happen when the breakpoint fires. The last command in that sequence can be a "continue", so you can do printf debugging without changing the executable!&lt;br /&gt;&lt;br /&gt;These are my favorite gdb commands:&lt;br /&gt;&lt;br /&gt;p                 print                  &lt;span style="font-weight: bold;"&gt;p structure.element&lt;/span&gt;&lt;br /&gt;b                 break                &lt;span style="font-weight: bold;"&gt;b file:line&lt;/span&gt;&lt;br /&gt;c                 continue           &lt;span style="font-weight: bold;"&gt;c&lt;/span&gt;&lt;br /&gt;^c               break execution&lt;br /&gt;clear                           clear break     &lt;span style="font-weight: bold;"&gt;clear file:line&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b file:line&lt;/span&gt; gives you a breakpoint number e.g., 1&lt;br /&gt;To set the command sequence for break 1:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;           commands 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;           p structure.element&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;           c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;           end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;this sequence prints the contents of structure.element and continues execution.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110074100352445084?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110074100352445084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110074100352445084' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074100352445084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110074100352445084'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/command-line-gdb.html' title='Command Line GDB'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110071299946580064</id><published>2004-09-20T09:27:00.000-07:00</published><updated>2004-11-17T10:25:45.430-08:00</updated><title type='text'>ConnectMe Dev Kit</title><content type='html'>Digi provides a JTAG development kit (DK) for around $1500 US. The kit includes a development board, a JTAG ConnectMe module, a JTAG interface module, a CD with ThreadX, NetOS and MicroCross/GNU development tools, lots of cables, all the right power supplies, just everything you need to write ConnectMe applications. Except intelligence. You have to provide that. That fact was my first problem.&lt;br /&gt;&lt;br /&gt;The DK came with a printed Programmer's Guide that told you how to hook up the wires, but not why. After reading that manual, and the Hardware Reference, it was not clear to me how the JTAG and the two serial ports were supposed to interact with the processor. Nor was it clear to me where the second serial port was coming from - the non-JTAG ConnectMe has only one.&lt;br /&gt;&lt;br /&gt;As it turned out:&lt;br /&gt;&lt;br /&gt;1. The ConnectMe module has a JTAG variant that is intended for use with this kit. The JTAG signals come out of the metal case on a little wing of circuit board material. So do the second serial port signals. You lose the second serial port when you go to the standard module.&lt;br /&gt;&lt;br /&gt;2.  The Programmer's Guide tells you how to line up the serial ports as stdin/stdout.  It mentions the second serial port, but &lt;span style="font-weight: bold;"&gt;neglects to tell you&lt;/span&gt; that, in order to enable the second serial port, you have to change a Board Support Package (BSP) header file and recompile the BSP. I have the details somewhere, but they will probably change over time. Just be aware that it's a problem and ask Digi tech support before wasting time on it.&lt;br /&gt;&lt;br /&gt;3.  &lt;span style="font-weight: bold;"&gt;DO NOT&lt;/span&gt; use code that has the second serial port enabled on a non-JTAG ConnectMe (i.e. no second serial port). The BSP will hang while initializing the nonexistent port, and your ConnectMe will be &lt;span style="font-weight: bold;"&gt;TRASH&lt;/span&gt; (more on that later). I decided not to use the second serial port, since I hate having code that's different between the emulator and the target.&lt;br /&gt;&lt;br /&gt;4. The JTAG interface takes over the ARM7 (NS7520) processor via debugging logic embedded in the ARM. When you load code through JTAG, you are writing the code to the processor's RAM. When you execute your code, you are forcing the processor to jump directly to your RAM based code. Once the JTAG pod takes over, no FLASH-based code is executed. That includes the boot loader as well as application code. The JTAG does not directly erase Flash, though you can load RAM based code that does so, e.g., sample project naftpapp.&lt;br /&gt;&lt;br /&gt;5. The serial connections are not used to control the debug sessions. They come into play only when your RAM based application code is executing. The language in the Programmer's Guide implies otherwise. It makes more sense my way, but I was not sure what the truth was until I did some experiments.&lt;br /&gt;&lt;br /&gt;6. The second serial connection is intended as a debug console for your debug session. You can line it up as stdin/stdout if you want, then do printf debugging as long as you're using the JTAG module. In fact, you can load your app onto the JTAG module's FLASH using naftpapp running in RAM, then reboot, and do printf debugging without the JTAG pod. If you want to.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin.  All Rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110071299946580064?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110071299946580064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110071299946580064' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110071299946580064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110071299946580064'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/connectme-dev-kit.html' title='ConnectMe Dev Kit'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110071201003287107</id><published>2004-09-15T08:47:00.000-07:00</published><updated>2004-11-17T09:37:11.580-08:00</updated><title type='text'>Second Verse, Same as the First</title><content type='html'>My second brush with the ConnectMe is going to take a while to relate. The month I put on this project was one of the most intense software development experiences of my career. Like my first ConnectMe project, it started out easy, but ended up as a crisis. this time, though, the crisis was partly my fault.&lt;br /&gt;&lt;br /&gt;In early September, my former employer approached me about consulting on a new ConnectMe project. One customer needed some special processing done on the serial command stream, and neither side had time or compute capacity to make the changes in the time available - 6 weeks. I accepted the project, but my wife had just been in a car accident, and I was not able to focus on the project until mid September - T minus 4 weeks.&lt;br /&gt;&lt;br /&gt;The project should have been easy. I expected it to be easy. I wrote a command line program that implemented and tested the core logic in about a day. I think it was a Sunday. Then I tried to port that program to the ConnectMe. Four weeks later, I was still struggling with the ConnectMe platform. I lost so much time struggling with the ConnectMe platform that I ended up traveling to the customer site to finish the software there, on their ship day.&lt;br /&gt;&lt;br /&gt;Lest you think I'm some kind of liberal whiner, be aware that over the past five years I have delivered the software for an entire product line, including 3 different processors as well as Xilinx programmable logic. I designed the communication protocols involved here. The ConnectMe environment kicked my ass. For a while. I finally figured it out, and still believe it was worth the struggle. Even if you pay full price - U$D 40 - you can't beat what this little guy can do.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin.  All Rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110071201003287107?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110071201003287107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110071201003287107' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110071201003287107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110071201003287107'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/09/second-verse-same-as-first.html' title='Second Verse, Same as the First'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110073950787989437</id><published>2004-03-27T22:10:00.000-08:00</published><updated>2009-11-17T18:30:58.295-08:00</updated><title type='text'>ConnectMe Life Support Board</title><content type='html'>An open-source schematic for a minimal ConnectMe life support board is posted on my website:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gluelogix.com/"&gt;http://www.gluelogix.com/ConnectWiMeRS232.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Scroll to the bottom.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin. All Rights reserved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110073950787989437?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110073950787989437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110073950787989437' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110073950787989437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110073950787989437'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/03/connectme-life-support-board.html' title='ConnectMe Life Support Board'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9206484.post-110070974047663649</id><published>2004-03-01T17:00:00.000-08:00</published><updated>2004-11-17T09:36:55.473-08:00</updated><title type='text'>First Encounter</title><content type='html'>My First Encounter with the Digi ConnectMe came in Feb2004 when my employer found a customer who refused to consider our equipment unless it had an Ethernet jack. Bit of background: the last five years of my life have been spent with an RF startup. We got the baseband interfaces defined and implemented early on, giving our early customers something stable to work with. Then we concentrated on the RF for a few years. The problem was, the baseband world changed on us. In 1999, "internet devices" were hokey dialup things like the ATM at your local squishy-mart. At that time, it was still reasonable to field a device with an RS232 interface. Even in multidrop networks, it was easier at that time to get electricians to pull RS485 than Ethernet. No more. Now that 10BaseT and 100BaseT and God-knows-whats-next has taken over, you can't compete unless you have Ethernet too.&lt;br /&gt;&lt;br /&gt;So we got Ethernet.  It took around two weeks.&lt;br /&gt;&lt;br /&gt;We had already noticed the ConnectMe, and were waiting for an excuse to use it in something (there was one other small Ethernet-to-serial filter device available at the time, but it was based on the 80186 and had a fraction of the ConnectMe's memory).&lt;br /&gt;&lt;br /&gt;When the customer delivered their ultimatum, there was actually plenty of time to do a deliberate development. But by the time management took the ultimatum seriously (i.e. it became a crisis) we were around 3 weeks away from a make-or-break demo. As it turned out, we were able to put together a couple of prototypes with days to spare.&lt;br /&gt;&lt;br /&gt;Since there was no longer time to respin our main circuit card with the ConnectMe on board, I designed a very simple and small circuit card that could be wedged into an underused corner of the enclosure. All it really needed was an LM-series voltage converter, the ConnectMe itself, and a place to land jumper wires. Our tech cut the square hole in the case and ran jumpers from the ConnectMe to the main board. Plug in, turn on, and fugedaboudit.&lt;br /&gt;&lt;br /&gt;But even at that there were some problems.&lt;br /&gt;&lt;br /&gt;Our first ConnectMe that was actually soldered into a circuit communicated very intermittently. It sometimes took minutes to boot up, sometimes never booted up at all. Its brother, on the JTAG development board, never had a bit of trouble.&lt;br /&gt;&lt;br /&gt;The problem turned out to be my reset circuit. I had put a couple of bells on the interface board, like 3.3 to 5 volt translation and a nice RC reset circuit. Turned out, the ConnectMe has an internal RC network on the Reset pin. They expected people to implement Reset with a simple switch to ground, no debounce, etc., but as far as I can tell, that fact is undocumented in the Hardware Reference. In any case, when we removed &lt;span style="font-weight: bold;"&gt;my&lt;/span&gt; RC network, we fixed the problem. The Ethernet prototypes shipped and the customer checked off the Ethernet square on their acceptance test.&lt;br /&gt;&lt;br /&gt;Two weeks calendar time, probably a man-month spread between me, another software guy and two techs, plus the cost of creating the interface board. One guy on the team said he told a friend what we'd pulled off. The friend, probably a big-company expert on these matters, said "That's impossible." Sorry.&lt;br /&gt;&lt;br /&gt;Larry Martin&lt;br /&gt;www.GlueLogix.com&lt;br /&gt;Copyright (c) 2004 Larry Martin.  All Rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9206484-110070974047663649?l=digiconnectmenotes.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://digiconnectmenotes.blogspot.com/feeds/110070974047663649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9206484&amp;postID=110070974047663649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110070974047663649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9206484/posts/default/110070974047663649'/><link rel='alternate' type='text/html' href='http://digiconnectmenotes.blogspot.com/2004/03/first-encounter.html' title='First Encounter'/><author><name>Larry Martin</name><uri>http://www.blogger.com/profile/04470345288899172958</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_K397gjxY05U/SVhE3KLGvjI/AAAAAAAAAEk/3amQWcJMd8s/S220/Larry5.JPG'/></author><thr:total>0</thr:total></entry></feed>
