<?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:blogger='http://schemas.google.com/blogger/2008' 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-12950249</id><updated>2025-06-01T00:11:32.166-07:00</updated><category term="LabVIEW"/><category term="SoftwareDefinedRadio"/><category term="CodingStyle"/><category term="Hardware Test"/><category term="JTRS"/><category term="ParallelProgramming"/><category term="Software Development"/><category term="Software Test"/><category term="hardware in the loop"/><category term="Graphical Tools"/><category term="Modem"/><category term="MultiCore"/><category term="Profiling"/><category term="SNMP"/><category term="Supercomputing"/><category term="Test"/><title type='text'>Ideas in Wiring</title><subtitle type='html'>This is my storehouse of information that might be useful to the LabVIEW community. It&#39;s the stuff that falls somewhere between &quot;documentation&quot; and &quot;hallway conversation&quot; that you might find useful, entertaining, or just a way to kill some time. As with any personal Blog, I don&#39;t speak for NI, that would be way more pressure than I want to deal with. I like hearing from you. &lt;br&gt;Email me your thoughts, ideas, or tips at joel.sumner(AT)ni.com.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default?alt=atom&amp;start-index=26&amp;max-results=25'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12950249.post-6291433719866850566</id><published>2008-06-18T12:49:00.000-07:00</published><updated>2008-06-18T13:32:29.534-07:00</updated><title type='text'>Engineering our future</title><content type='html'>As engineers and scientists, we&#39;re trying to make the world a better place.  In addition to our day jobs, there are things we can do off-hours too.  If you can take two hours a week from whatever else you are doing and instead continue to be an engineer, I have a suggestion for you.  Please be a mentor.  You can be the inspiration to an entire classroom of elementary school students to become engineers and scientists when they grow up.  In addition, you get a chance to be a kid and even play with toys - engineering toys.&lt;br /&gt;&lt;br /&gt;One way is to be a mentor for a &lt;a href=&quot;http://usfirst.org/what/fll/default.aspx?id=390&quot;&gt;FIRST Lego League&lt;/a&gt; (FLL) team.  Every fall, teams of 4-10 elementary and middle school students get a big box of LEGO pieces and a &lt;a href=&quot;http://www.firstlegoleague.org/default.aspx?pid=29550&quot;&gt;challenge&lt;/a&gt;. By December, they need to have built a fully autonomous robot that will complete as many challenges as possible as well as a presentation on the challenge topic.  This year, over 2000 teams participated in regional, national, and international competitions culminating in the &lt;a href=&quot;http://www.usfirst.org/community/fll/content.aspx?id=766&quot;&gt;FIRST World Festival&lt;/a&gt; in Atlanta, Georgia. It&#39;s fun to watch how the kids grow through their participation. The shy learn to speak up, the dominant learn to share, and they all get to experience some fun that they may not normally get in their school day.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;javascript:ShowVideo(&#39;1st_overview.flv&#39;)&quot; id=&quot;heroImageLink&quot;&gt;&lt;img id=&quot;heroTextImg&quot; src=&quot;http://www.usfirst.org/images/hero_f8.jpg&quot; alt=&quot;&quot; width=&quot;390&quot; border=&quot;0&quot; height=&quot;237&quot; /&gt;&lt;/a&gt;&lt;br /&gt;(image taken from usfirst.org website - yes, the trophy is made of LEGO pieces)&lt;br /&gt;&lt;br /&gt;If you want to work with high-schoolers, FIRST also has two other competitions: &lt;a href=&quot;http://www.usfirst.org/what/fvc/default.aspx?id=380&quot;&gt;FIRST Tech Challenge&lt;/a&gt; and &lt;a href=&quot;http://www.usfirst.org/what/frc/default.aspx?id=366&quot;&gt;FIRST Robotics Competition&lt;/a&gt;. While the FLL robots are small and plastic, the FTC  and FRC robots get heavier and more powerful.  FTC robots are around 24&quot; cubes that weigh 5 pounds and the FRC robots get up to 120 pounds and the size of a refrigerator.&lt;br /&gt;&lt;br /&gt;&lt;span id=&quot;ctl00_ContentPlaceHolder1_ListSummary1&quot;&gt;&lt;img title=&quot;hero_frc_02&quot; alt=&quot;hero_frc_02&quot; src=&quot;http://www.usfirst.org/uploadedImages/What_We_Do/FIRST_Robotics_Competition/Hero_Assets/hero_frc_02.jpg&quot; border=&quot;0&quot; /&gt;&lt;/span&gt;&lt;br /&gt;(image from usfirst.org website)&lt;br /&gt;&lt;br /&gt;40% of FRC participants end up going to engineering school in college. At the FRC finals in Atlanta, I saw 20 colleges with information booths. Athletes aren&#39;t the only way to get scholarships now - some schools are giving them out to FRC participants.&lt;br /&gt;&lt;br /&gt;Inspire an engineer - get involved. You won&#39;t regret it.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/6291433719866850566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/6291433719866850566' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6291433719866850566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6291433719866850566'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2008/06/engineering-our-future.html' title='Engineering our future'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-6423693604785755998</id><published>2007-10-04T08:28:00.001-07:00</published><updated>2007-10-04T08:28:49.006-07:00</updated><title type='text'>Some days you just have to shake your head</title><content type='html'>&lt;p&gt;The Power.org organization just met in Austin and one of their conversations was on multi-core programming.&amp;nbsp; Some days, I just feel sorry for programmers stuck in the traditional embedded world. This is from an &lt;a href=&quot;http://www.embedded.com/design/multicore/202102615?_requestid=647620&quot;&gt;EE-times article&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&quot;The inability of C/C++ code to parallelize coupled with its ubiquity throughout the embedded market is a major issue for multi-core going forward,&quot; Heikkila wrote in a follow up email to EE Times. &quot;Any alternative parallel programming languages certainly won&#39;t materialize in the embedded market, but instead will more likely gain momentum in a more mainstream computing market before making its way into embedded applications,&quot; he added.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;And more bad news for current developers&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;So far, engineers are giving embedded software a low grade of just 2.06 out of five in terms of its readiness for multi-core.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;One day, they&#39;ll use LabVIEW....&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/6423693604785755998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/6423693604785755998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6423693604785755998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6423693604785755998'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/10/some-days-you-just-have-to-shake-your.html' title='Some days you just have to shake your head'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-3460233044328055972</id><published>2007-07-31T14:18:00.000-07:00</published><updated>2008-12-13T05:15:31.905-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><category scheme="http://www.blogger.com/atom/ns#" term="MultiCore"/><category scheme="http://www.blogger.com/atom/ns#" term="ParallelProgramming"/><category scheme="http://www.blogger.com/atom/ns#" term="Profiling"/><title type='text'>Profiling Multi-Core Applications</title><content type='html'>&lt;p&gt;A while ago, I wrote an article about &lt;a href=&quot;http://ideasinwiring.blogspot.com/2005/06/writing-parallel-programs-in-labview.html&quot;&gt;writing parallel programs&lt;/a&gt;.  The next question is: how do you optimize them? &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Note: if you are writing multi-core programs and are coming to &lt;a href=&quot;http://www.ni.com/niweek/&quot;&gt;NIWeek&lt;/a&gt;, please email me (email address on the right). I&#39;d like to talk to you about this topic further.  But I digress...&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Typically, when optimizing an application, you are trying to make it faster. &quot;Faster&quot; usually means &quot;reduce the time the user observes the task to take&quot;.  We sometimes call that &quot;&lt;a href=&quot;http://whatis.techtarget.com/definition/0,,sid9_gci826109,00.html&quot;&gt;wall clock time&lt;/a&gt;&quot;.  Occasionally, there is no outside observer. Instead, you want your task to be less of a disruption on other applications. In that case, you are purely concerned with how much of the resources of the computer, typically the CPU, are being consumed.  This consumption could be called &quot;&lt;a href=&quot;http://www.webopedia.com/TERM/C/CPU_time.html&quot;&gt;CPU time&lt;/a&gt;&quot;.&lt;/p&gt;&lt;p&gt;When optimizing for wall clock time, you quickly run into some difficulties.&lt;/p&gt;&lt;p&gt;1) Most profilers give you time of operation in CPU time.  A function that goes to sleep for 10 minutes has a CPU time of nearly nothing but a wall clock time of 10 minutes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For example, if you run this VI with the LabVIEW profiler enabled, it will show that it uses a whopping 46.9 milliseconds&lt;/p&gt;&lt;p&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl48bMfnjeuV0XP9-styQoHlF_O8ZzhTLR8hgb81tODcETASvzdeX6tfior059m5yNky_ReFasWbDnThfRH2STIiCr0sMdNvAbfx-455KSG7epOpi5zKyXtvSlGuRmIAtyGoaf/s1600-h/VI1.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl48bMfnjeuV0XP9-styQoHlF_O8ZzhTLR8hgb81tODcETASvzdeX6tfior059m5yNky_ReFasWbDnThfRH2STIiCr0sMdNvAbfx-455KSG7epOpi5zKyXtvSlGuRmIAtyGoaf/s320/VI1.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5093474696292077554&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;So, you think. Wow, my application took 10 seconds and this function only took 47 milliseconds, I guess my slowdown is elsewhere.  And, of course, you would be wrong.  Now, this example is pretty silly. No one just adds a sleep for the heck of it.  Normally, you&#39;ll find &quot;sleep time&quot; in a couple of different places&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pausing because you need to synchronize with other event. Maybe you go to sleep for 1 second until some external piece of hardware has responded.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Calls into the OS.  Reading from disk and writing from disk occurs in the OS. The CPU time returned by the profiler doesn&#39;t normally show time spent in the OS, even though it is consuming CPU cycles.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Calls into a driver.  Some driver calls do their work inside the OS so they are a case of #2. Or, sometimes they get implemented as a LabVIEW sleep, and so they also don&#39;t get counted.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Task swaps.  The OS might decide to give some other application some time. This hurts the wall clock time of your application but your profiler won&#39;t tell you.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If you want wall to measure wall clock time, you should instead get the tick count of the machine before and after the operation occurs. A tick count uses wall clock time to give you the results.  My &lt;a href=&quot;http://ideasinwiring.blogspot.com/2005/05/benchmarking-labview-operation.html&quot;&gt;profiling article&lt;/a&gt; shows you how to get the tick count to profile an operation. &lt;/p&gt;&lt;p&gt;2) Things get a bit weirder when you want to try and optimize on a multi-core computer.  On a single core machine, you can make your program run faster by either reducing wait time like you saw in #1 or by reducing the CPU time.  On a multi core machine, a task can have a shorter wall clock time even though the CPU time and wait time are the same.  If you split the CPU work (i.e. CPU time) evenly across two processors, your wall clock time goes down by a factor of 2 but your CPU time is the same.&lt;/p&gt;&lt;p&gt;You can observe this with the Windows task manager.  If you have two cores, the task manager will show two graphs of CPU utilization, one for each CPU.  You can also use the windows application &quot;perfmon&quot; which gives you a bit more flexible way to observe this.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNjJawH8MWmtOJtVfcWaBL0vGZmzvl_lV8ouFOjeBF6VLLUqkBroyJC30HxYSSe4hKOfJToLln5ilKIZ5IMgBu2B9QhrZ4DgOjQVTvtIpQruXSLpJzeubbituOK58GPxFVSzQ/s1600-h/taskman.JPG&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNjJawH8MWmtOJtVfcWaBL0vGZmzvl_lV8ouFOjeBF6VLLUqkBroyJC30HxYSSe4hKOfJToLln5ilKIZ5IMgBu2B9QhrZ4DgOjQVTvtIpQruXSLpJzeubbituOK58GPxFVSzQ/s320/taskman.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5093474868090769410&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;(the CPU Usage History shows 2 graphs, one for each processor)&lt;/p&gt;&lt;p&gt;So, to optimize your application, the trick is to max out both processors.  In effect, you are trying to INCREASE the CPU time for the second processor by shifting the processing from CPU 1 to CPU2.  It&#39;s odd to think of optimizing as increasing processor time, but that&#39;s what you are doing.&lt;/p&gt;&lt;p&gt;The problem with using this approach is that increasing the CPU time on the second processor doesn&#39;t necessarily reduce wall clock time.  Your efforts to make your application more parallel might add CPU work, such as forcing memory copies, that negate the benefit of parallelism.  &lt;/p&gt;&lt;p&gt;As an example, the old LabVIEW queue primitives &lt;em&gt;used to&lt;/em&gt; copy data into and out of the queues. If you put a big array in a queue, it would spend a lot of time copying the array into the queue and then a lot of time copying it out.  To make my application more parallel, I split it into loops and used queues to pass the data between the loops.  My CPU utilization was great, 100% on both cores, but my wall clock time was slower because it spent a long time simply copying data around.  Fortunately, we learned from that experience and the primitives don&#39;t make copies of arrays &amp;amp; clusters any more.&lt;/p&gt;&lt;p&gt;Unfortunately, there&#39;s not a really good way to look at this effect right now.  Use tick counts to measure your wall clock time and use the profiler to establish a baseline. Then, as you are making changes, make sure the wall clock time is going down and the CPU time is remaining at least constant or only going up slightly.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/3460233044328055972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/3460233044328055972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3460233044328055972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3460233044328055972'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/07/profiling-multi-core-applications.html' title='Profiling Multi-Core Applications'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl48bMfnjeuV0XP9-styQoHlF_O8ZzhTLR8hgb81tODcETASvzdeX6tfior059m5yNky_ReFasWbDnThfRH2STIiCr0sMdNvAbfx-455KSG7epOpi5zKyXtvSlGuRmIAtyGoaf/s72-c/VI1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-7716973106444787069</id><published>2007-07-28T19:49:00.001-07:00</published><updated>2007-07-28T19:50:24.231-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SoftwareDefinedRadio"/><title type='text'>Physics of a Radar System</title><content type='html'>&lt;p&gt;If you ever wanted to know how a military radar transmission works, there&#39;s a pretty good overview that you can find in this &lt;a href=&quot;http://www.rfglobalnet.com/Content/news/article.asp?Bucket=Article&amp;amp;DocID=%7B180306F2-5435-47D7-A673-A8FFDDEDB189%7D&quot;&gt;Tektronix Application Note&lt;/a&gt;&amp;nbsp;on pages 2-6&amp;nbsp;It talks about what a radar pulse looks like and why you might modulate the pulse in order to get better performance. &lt;/p&gt; &lt;p&gt;They skipped the most basic type of radar system but Mattel has utilized it to make a really &lt;a href=&quot;http://www.wirelessnetdesignline.com/200001080?cid=RSSfeed_wirelessnetdesignline_wndlRSS&quot;&gt;neat and cheap radar gun&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;You can use &lt;a href=&quot;http://en.wikipedia.org/wiki/Radar&quot;&gt;RADAR&lt;/a&gt; (technically it&#39;s an acronym so it&amp;nbsp;should be capitalized) to tell a number of things about object it&#39;s aimed at. The Mattel radar gun gives you the most basic information, speed.&amp;nbsp; It transmits a &lt;a href=&quot;http://en.wikipedia.org/wiki/Microwave&quot;&gt;microwave signal&lt;/a&gt; and observes the reflections (if any) that come back from the object.&amp;nbsp; If the object is moving toward or away from the gun, the reflected signal will have a &lt;a href=&quot;http://en.wikipedia.org/wiki/Doppler_effect&quot;&gt;Doppler shift&lt;/a&gt;.&amp;nbsp; The amount of frequency shift is proportional to the speed.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Now if you remember your music theory, when you mix two waves of slightly different frequencies together, you get a signal with both frequencies as well as a &quot;&lt;a href=&quot;http://hyperphysics.phy-astr.gsu.edu/hbase/sound/beat.html&quot;&gt;beat&lt;/a&gt;&quot;. The frequency of the beat is the frequency difference between the signals.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Taking advantage of this, the Mattel gun combines the signal it sends and the signal it receives to get the resultant signal, filters out the microwave signals and is left with the beat signal.&amp;nbsp; Get the frequency of the beat signal and&amp;nbsp;it&#39;s some &lt;a href=&quot;http://en.wikipedia.org/wiki/Doppler_effect#General&quot;&gt;simple math&lt;/a&gt; to get the velocity of the object.&lt;/p&gt; &lt;p&gt;All this for $30 retail.&lt;/p&gt; &lt;p&gt;Now, notice that the gun doesn&#39;t give you position.&amp;nbsp;Radar systems figure out how far the target is away by measuring how long it takes for the signal to reach the target and come back. To do this, they send a pulse and wait for the return and then time the return.&amp;nbsp; The Mattel gun sends a continuous signal rather than a pulse so it has no way of measuring time of flight.&amp;nbsp; That processing would probably also cost a bit more to implement.&lt;/p&gt; &lt;p&gt;Why did I even bother to read this article?&amp;nbsp; Well, I&#39;m seeing some of our customers testing radar systems by simulating return pulses with hardware such as the &lt;a href=&quot;http://sine.ni.com/nips/cds/view/p/lang/en/nid/13566&quot;&gt;R-series plug in boards&lt;/a&gt; or our &lt;a href=&quot;http://sine.ni.com/nips/cds/view/p/lang/en/nid/13491&quot;&gt;Vector Signal Generators&lt;/a&gt; and wanted to know a little more about what they were really doing.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/7716973106444787069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/7716973106444787069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/7716973106444787069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/7716973106444787069'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/07/physics-of-radar-system.html' title='Physics of a Radar System'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-6270176260615158338</id><published>2007-07-23T19:46:00.001-07:00</published><updated>2007-07-23T19:46:11.034-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hardware in the loop"/><category scheme="http://www.blogger.com/atom/ns#" term="Hardware Test"/><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><category scheme="http://www.blogger.com/atom/ns#" term="SoftwareDefinedRadio"/><title type='text'>Streaming Processing</title><content type='html'>&lt;p&gt;A device such as a digital oscilloscope uses a high speed a/d converter to acquire the desired signal for some very short duration of time at a very high sampling rate, this acquired data is then transferred through a signal processing engine that may perform some sort of analysis on the data at that point such as an RMS calculation, and then&amp;nbsp;the data is&amp;nbsp;transferred to the main display engine for more math (such as calculating a cursor value) and finally displayed on the screen. So the flow is simple, acquire the data, analyze it to make the measurement, and present the result to the user. For 20 years, NI has used the phrase &quot;acquire, analyze, present&quot; to describe &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_instrumentation&quot;&gt;virtual instrumentation&lt;/a&gt;. A&amp;nbsp;virtual instrumentation system allowed you to create that oscilloscope yourself out of a PC, a digitizer, and LabVIEW and allowed you to write your own measurement.&lt;/p&gt; &lt;p&gt;However, the phrase &quot;acquire, analyze, present&quot; may misleadingly imply that the phases are discrete when in fact they can be continuous. Why might this be continuous? One example is the processing to perform a trigger. If a scope is going to trigger when the signal exceeds a voltage level, acquisition and analysis must run continuously to digitize the signal and perform some very simple math (comparison) to look for the threshold to be met. &lt;/p&gt; &lt;p&gt;As with all engineering problems, the devil is taking the simple concept and applying it to a need that our customers have.&amp;nbsp; Creating that trigger is subject to two fundamental limitations: the speed at which the trigger criteria can be evaluated and the rate at which the data can be sent from the a/d unit to the trigger computation circuitry.&amp;nbsp;Triggering&amp;nbsp;is typically a hardware operation because it needs to run at a megasample or gigasample rate and it is performed &quot;close&quot; to the&amp;nbsp;a/d converter&amp;nbsp;to handle the&amp;nbsp;data rate of hundreds of megabytes or multiple gigabytes per second being generated.&lt;/p&gt; &lt;p&gt;The march of technology provides some interesting opportunities on the horizon that have been alluded to in past posts. The architecture of a &lt;a href=&quot;http://ideasinwiring.blogspot.com/2007/01/whats-software-defined-radio.html&quot;&gt;software defined radio&lt;/a&gt;&amp;nbsp;(SDR) and an oscilloscope are not that different. The FPGA technology and wideband A/D technology driving SDR is beneficial in T&amp;amp;M applications. The biggest&amp;nbsp;difference is the audience. Whereas the SDR design team consists of C and VHDL programmers working for 12 months on a highly specified design in a high process development environment, the T&amp;amp;M system design team is a few people who know LabVIEW trying to keep up with the changing specs being thrown over the wall and trying to avoid the end product being late&amp;nbsp;even when&amp;nbsp;the design team is late.&lt;/p&gt; &lt;p&gt;The next generation of test equipment will be leveraging the technological power available in the SDR architecture but the ease of use you expect from a T&amp;amp;M instrument to get those difficult measurements made.&amp;nbsp; Imagine the possibilities:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Write your own math computation for that trigger, compile it, and have it run at the full rate of the hardware.&lt;/li&gt; &lt;li&gt;Perform calculations on the data at full speed.&amp;nbsp; Need a hundred kilohertz RMS calculation to decode a &lt;a href=&quot;http://zone.ni.com/devzone/cda/tut/p/id/4101&quot;&gt;LVDT&lt;/a&gt;? You&#39;ve got it.&amp;nbsp;Filter or &lt;a href=&quot;http://zone.ni.com/devzone/cda/tut/p/id/3293&quot;&gt;demodulate&lt;/a&gt; a 20 MHz communication signal? No problem. &lt;/li&gt; &lt;li&gt;Take that test that you wrote but have part of it run on an FPGA to speed it up.&amp;nbsp; When that&#39;s not good enough, take the whole thing and move it down to the FPGA.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All of these tasks are possible today but some aren&#39;t as easy as they could be. The technology is there to accomplish the task, the trick is to expose that power to you.&amp;nbsp; &lt;a href=&quot;http://www.ni.com/niweek/&quot;&gt;NIWeek&lt;/a&gt; is coming up in just over two weeks. I look forward to discussing the possibilities with you there.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/6270176260615158338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/6270176260615158338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6270176260615158338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6270176260615158338'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/07/streaming-processing.html' title='Streaming Processing'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-3616419916746035453</id><published>2007-06-28T19:12:00.000-07:00</published><updated>2007-06-28T19:44:35.476-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><category scheme="http://www.blogger.com/atom/ns#" term="ParallelProgramming"/><category scheme="http://www.blogger.com/atom/ns#" term="Supercomputing"/><title type='text'>University of Maryland&#39;s PRAM Computer</title><content type='html'>In breathless language, the University of Maryland announced &lt;a href=&quot;http://www.eng.umd.edu/media/pressreleases/pr062607_supercomputer.html&quot;&gt;&quot;New Era of &quot;Desktop Supercomputing&quot; Made Possible &lt;br /&gt;with Parallel Processing Power on a Single Chip&quot;&lt;/a&gt;. If you read the article, you will find no hint of substance whatsoever about why this is so revolutionary and that&#39;s a shame because they might actually have something.&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://www.umiacs.umd.edu/users/vishkin/XMT/spaa07paper.pdf&quot;&gt;presentation they made&lt;/a&gt; at the Symposium on Parallelism in Algorithms and Architectures is similarly light on detail except for one term I was unfamiliar with so I googled it, a &lt;a href=&quot;http://www.google.com/search?hl=en&amp;q=pram+machine&amp;btnG=Google+Search&quot;&gt;&quot;PRAM Machine&quot;&lt;/a&gt;.  This machine appears to be a simple (but ill-documented) concept&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;(&lt;a href=&quot;http://www.wellesley.edu/CS/courses/CS331/notes/notes_models.pdf&quot;&gt;From Wellesley CS331 Notes&lt;/a&gt;)&lt;br /&gt;A PRAM uses p identical processors ... and [is] able to perform the usual computation of [a typical processor] that is equipped &lt;br /&gt;with a finite amount of local memory. The processors communicate through some shared global memory to which all are connected. The shared memory contains a finite number of memory cells. There is a global clock that sets the pace of the machine executon. In one time-unit period each processor can perform, if so wishes, any or all of the following three &lt;br /&gt;steps: &lt;br /&gt;1. Read from a memory location, global or local; &lt;br /&gt;2. Execute a single RAM operation, and &lt;br /&gt;3. Write to a memory location, global or local.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So really, the only difference between it and a multicore Pentium is that there are probably more than 4 CPUs and that all of the CPUs share a global clock. Interesting but I think the better question is - why did they build it?&lt;br /&gt;&lt;br /&gt;It looks like there&#39;s a whole set of theory that goes into how to extract parallelism out of algorithms and a PRAM execution model &lt;a href=&quot;http://www.cs.cmu.edu/~scandal/cacm/cacm2.html&quot;&gt;allows the task to be expressed simply&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;For example, suppose you wanted to increment the contents of every element of an array by 1.  This type of machine would simply have every processor load one element, increment it, and store it back. If you had the same number of processors as array elements, that operation would take place in exactly one time unit.  Perfect parallelization.  That particular operation is also found in &lt;a href=&quot;http://arstechnica.com/articles/paedia/cpu/simd.ars&quot;&gt;&quot;SIMD&quot; machines&lt;/a&gt;. Again, the importance is not that a PRAM can implement this operation, it&#39;s because there have been languages developed that allow all of this business of scheduling all of the instructions across processors to be abstracted from the programmer.&lt;br /&gt;&lt;br /&gt;Interestingly, it looks like we could use these same concepts to schedule LabVIEW code without having to change the diagram at all.  Hmm.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/3616419916746035453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/3616419916746035453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3616419916746035453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3616419916746035453'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/06/university-of-marylands-pram-computer.html' title='University of Maryland&#39;s PRAM Computer'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-3636704178161282926</id><published>2007-06-19T15:18:00.001-07:00</published><updated>2007-06-19T15:18:07.270-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CodingStyle"/><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Reasons for personal source code control</title><content type='html'>&lt;p&gt;In Jim Kring&#39;s &lt;a href=&quot;http://feeds.feedburner.com/~r/ThinkingInG/~3/125506116/&quot;&gt;top 5 bad excuses for not using source code control&lt;/a&gt; post, someone commented&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Perhaps another top five is needed - “reasons a single LabVIEW developer should use scc software” - then we could decide for ourselves how our manual methods stack up.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So here&#39;s my top 5&lt;/p&gt; &lt;p&gt;1. It forces you to document what you changed&lt;/p&gt; &lt;p&gt;Each time I &lt;a href=&quot;http://www.perforce.com/perforce/doc.052/manuals/cmdref/submit.html&quot;&gt;check in&lt;/a&gt;/&lt;a href=&quot;http://svnbook.red-bean.com/en/1.1/re06.html&quot;&gt;commit&lt;/a&gt; a set of VIs, the SCC program (+ LabVIEW if I enable it) asks me to describe my changes.&amp;nbsp; It&#39;s invaluable to have a running history of the changes you made to your code, both what you said you changed and&amp;nbsp;what VIs actually were different. Here&#39;s an example from one of my personal projects&lt;/p&gt; &lt;ul&gt; &lt;li&gt;#1 - &quot;Initial version&quot;&lt;/li&gt; &lt;li&gt;#2 - &quot;Fixed link to Open URL in Browser. It isn&#39;t in vi.lib so the paths get all messed up as soon as you move this llb somewhere else&quot;&lt;/li&gt; &lt;li&gt;#3 - &quot;Changed name of LLB and help directory. Added quoting to the URL sent to OpenURL&quot;&lt;/li&gt; &lt;li&gt;#4 - &quot;Added flashing of dots on refresh. Enhanced the help slightly. Will add to the help in the next changelist&quot;&lt;/li&gt; &lt;li&gt;#5 - &quot;Added examples and 2 more pictures to the docs&quot;&lt;/li&gt; &lt;li&gt;#6 - &quot;Completed help and examples - pre final review&quot;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;That code was written in November 2001 and by looking at that brief history, it takes me back through what I was doing.&lt;/p&gt; &lt;p&gt;2. It tracks code in multiple areas with ease&lt;/p&gt; &lt;p&gt;Code&amp;nbsp;that&amp;nbsp;spans multiple folder hierarchies on disk can be a problem for the &quot;make a copy as a backup&quot; technique.&amp;nbsp; Good source code management systems can track code spread across your disk.&amp;nbsp; Did you put code in user.lib and in your documents &amp;amp; settings area? No problem. As soon as you have code in more than one directory, I question how meticulous you will be about copying &quot;everything&quot;.&amp;nbsp; Instead, you&#39;ll start getting lazy which takes us to #3.&lt;/p&gt; &lt;p&gt;3. You can always revert to a good (or at least known) state&lt;/p&gt; &lt;p&gt;If something goes horribly wrong, I do a &quot;save&quot; rather than &quot;save as...&quot; and nuke a VI, I can always recover to something known.&amp;nbsp; It can be accomplished in 3 mouse clicks rather than searching around on the hard drive.&amp;nbsp; For SCM systems that are &quot;changelist&quot; based (such as CVS, Subversion, and Perforce), you can pull from a particular known good state.&amp;nbsp; &quot;Give me what I submitted on 5/21/2007&quot; and you know those VIs actually work together. That&#39;s why one of the &quot;good scm practices&quot; is to put EVERYTHING that could change under SCM.&amp;nbsp; &lt;/p&gt; &lt;p&gt;4. You can get everything back 6 months from now&lt;/p&gt; &lt;p&gt;This is another version of #2 &amp;amp; #3. Suppose your nifty user.lib extension changes 4 months from now.&amp;nbsp; Can you rebuild your nice little utility that used an older version?&amp;nbsp; Do you even have that older version of the extension any more?&amp;nbsp; Keep everything that could change under SCM, including the OpenG tools that you get from Jim and you can always roll your environment back to the way it was 6 months ago and have a clean rebuild.&amp;nbsp; We put our C++ compiler&amp;nbsp;under SCM here at NI so if we need to rebuild LabVIEW 8.0.1 for some reason, we can make sure we are using the exact same build environment as when we first built it.&lt;/p&gt; &lt;p&gt;5. Allows you to track your components&lt;/p&gt; &lt;p&gt;You got those nifty OpenG tools and you (gasp) modified a VI!&amp;nbsp; How do you keep track of those changes?&amp;nbsp; What happens when they upgrade those components? How do you make sure you go re-modify the source with your changes? Manual record-keeping is not your friend here.&lt;/p&gt; &lt;p&gt;6. More disk efficient&lt;/p&gt; &lt;p&gt;Maybe in this age of big hard drives, this isn&#39;t an issue.&amp;nbsp; But how many times are you going to make a duplicate of a 30 meg folder hierarchy because you changed one VI.&amp;nbsp; Do you stop and say &quot;maybe not, I&#39;ll do it later&quot;. That goes through my head.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/3636704178161282926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/3636704178161282926' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3636704178161282926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3636704178161282926'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/06/reasons-for-personal-source-code.html' title='Reasons for personal source code control'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-3470724574854597787</id><published>2007-06-13T10:16:00.001-07:00</published><updated>2007-06-13T10:16:34.328-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Graphical Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Hear me on a TechOnline roundtable with respected experts</title><content type='html'>&lt;p&gt;Embedded systems are getting more complicated and harder to program. What can be done about it? You can come hear a panel of experts (+ me) &lt;a href=&quot;http://seminar2.techonline.com/registration/distrib.cgi?s=1095&amp;amp;d=1032&quot;&gt;talk about the challenges&lt;/a&gt; of embedded systems programming and a risk of programmer shortage in the future.&lt;/p&gt; &lt;p&gt;The round table participants are all current or former editors of &lt;a href=&quot;http://www.embedded.com/&quot;&gt;Embedded Systems Design magazine&lt;/a&gt;&amp;nbsp;and are folks I&#39;ve read for a long time.&amp;nbsp; I&#39;ve been reading &lt;a href=&quot;http://www.embedded.com/columns/ep/&quot;&gt;Jack Ganssle&#39;s column&lt;/a&gt; since 1994 when I was at Motorola Semiconductor and &lt;a href=&quot;http://www.embedded.com/columns/pp/&quot;&gt;Dan Saks&#39;s articles&lt;/a&gt; when I was still programming in C++ on LabVIEW so it&#39;s neat to share the virtual stage with them.&lt;/p&gt; &lt;p&gt;This web-cast came about because the current editor in chief of Embedded Systems Design magazine, Rich Nash, wrote an article postulating that there was an &lt;a href=&quot;http://www.embedded.com/showArticle.jhtml?articleID=199202706&quot;&gt;emerging coding crisis&lt;/a&gt;. It generated more letters to the editor than anything else he had done. You can see them in the online comments to the article as well as a &lt;a href=&quot;http://www.embedded.com/showArticle.jhtml?articleID=199601573&quot;&gt;follow up reader response article&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;So, if you&#39;re not going to be busy on June 19th, please &lt;a href=&quot;http://seminar2.techonline.com/registration/distrib.cgi?s=1095&amp;amp;d=1032 &quot;&gt;sign up and listen in&lt;/a&gt;. There will be a Q&amp;amp;A section at the end if you want to ask follow-ups or you can post questions to me here if you want.&lt;/p&gt; &lt;p&gt;There are some trends I&#39;m especially interested in discussing such as high level programming tool adoption, &lt;a href=&quot;http://ideasinwiring.blogspot.com/2005/06/end-of-free-lunch.html&quot;&gt;difficulties programming multicore processors&lt;/a&gt;, and how &lt;a href=&quot;http://ideasinwiring.blogspot.com/2006/03/how-does-data-flow-execution-work.html&quot;&gt;FPGAs might change things&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/3470724574854597787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/3470724574854597787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3470724574854597787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3470724574854597787'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/06/hear-me-on-techonline-roundtable-with.html' title='Hear me on a TechOnline roundtable with respected experts'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-3279891982653905845</id><published>2007-05-10T08:32:00.000-07:00</published><updated>2007-06-13T10:49:49.600-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><title type='text'>Code Reviews</title><content type='html'>A recent post on Embedded.com about &lt;a href=&quot;http://www.embedded.com/showArticle.jhtml?articleID=199204097&quot;&gt;Peer Code Reviews&lt;/a&gt; got me thinking about the process we use in the LabVIEW team for checking in code. It came about many many years ago and is, in my opinion, the most effective process I&#39;ve seen.  We call it &quot;buddying&quot;, but a lightweight peer code review is probably the technical term.  &lt;br /&gt;&lt;br /&gt;It can be summarized quickly as: No code gets checked into the main branch unless the changes have been reviewed by a second person.&lt;br /&gt;&lt;br /&gt;The practical process is&lt;br /&gt;1) The programmer makes the code changes.  These changes may be checked in to a private branch in source control or may be just sitting on his/her hard drive. &lt;br /&gt;2) If the changes are in the 100-line or fewer area (which is a majority of submissions), the programmer goes and &quot;gets a buddy&quot;.  The buddy is typically a senior level programmer who is already familiar with that code area but that&#39;s not a hard rule.&lt;br /&gt;3) The author walks through each line of the changes with the buddy and explains the changes.  The buddy points out any stylistic problems, double checks for off-by-zero or null pointer handling code, and reminds the author about any gotchas that may be in that area.&lt;br /&gt;4) If the buddy is satisfied with the code, it gets checked in to the source code control system and the author &amp; buddy&#39;s names are noted.  &lt;br /&gt;&lt;br /&gt;That&#39;s it.  It adds about 10 minutes to each code submission and keeps a lot of &quot;doh!&quot; errors out of the code.  If you don&#39;t have a system like this now, I recommend you try it.  We find it invaluable.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/3279891982653905845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/3279891982653905845' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3279891982653905845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/3279891982653905845'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/05/code-reviews.html' title='Code Reviews'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-5653389119985153758</id><published>2007-04-26T11:15:00.000-07:00</published><updated>2007-04-26T11:16:54.929-07:00</updated><title type='text'>Manipulating Data Files</title><content type='html'>&lt;p&gt;Jim Kring posted techniques in his blog&amp;nbsp;future-proofing data files by adding schema and version information to the file.&amp;nbsp;Over the years, we’ve &lt;a href=&quot;http://ideasinwiring.blogspot.com/2005/11/storing-and-retrieving-data.html&quot;&gt;added some file formats to LabVIEW&lt;/a&gt; that make it hard for customers to follow his rules and that can cause problems. &lt;br /&gt;&lt;p&gt;I’ve seen folks hang themselves with the &lt;a href=&quot;http://www.kip.uni-heidelberg.de/fp-computer/LabVIEW/FP_LabView/html/Writing_Datalog_Files.html&quot;&gt;Datalog file&lt;/a&gt; by writing a file with one particular type definition (i.e. cluster) and then can’t read the file any more when they change clusters without understanding it will affect backward compatibility.&lt;br /&gt;&lt;p&gt;The newer file formats in LabVIEW like &lt;a href=&quot;http://zone.ni.com/devzone/cda/tut/p/id/3542&quot;&gt;.TDM datalog files&lt;/a&gt;&amp;nbsp;are much more maintainable because they store the type definition (typically called a ’schema’) in the data file so you can’t lose it and so it can be browsed by an external application. &lt;br /&gt;&lt;br /&gt;&lt;small&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/LabVIEW&quot; rel=&quot;tag&quot;&gt;LabVIEW&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/DataStorage&quot; rel=&quot;tag&quot;&gt;DataStorage&lt;/a&gt;&lt;/small&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/5653389119985153758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/5653389119985153758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/5653389119985153758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/5653389119985153758'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/04/manipulating-data-files.html' title='Manipulating Data Files'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-2854002662963244153</id><published>2007-04-25T11:42:00.000-07:00</published><updated>2007-06-13T10:50:27.839-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CodingStyle"/><category scheme="http://www.blogger.com/atom/ns#" term="LabVIEW"/><title type='text'>Writing Stylish Code</title><content type='html'>&lt;p&gt;Working on a codebase that is authored by a lot of people has given me a new appreciation for writing consistently styled code.&amp;nbsp; Even having 10 programmers all writing in a different way makes it hard to go in and modify or fix code written by someone else.&amp;nbsp; In the C/C++ community, there are constant wars &lt;a href=&quot;http://www.jwz.org/doc/tabs-vs-spaces.html&quot;&gt;about indention&lt;/a&gt; or &lt;a href=&quot;http://blogs.msdn.com/ericlippert/archive/2003/09/12/52989.aspx&quot;&gt;variable naming&lt;/a&gt;. In the end, it&#39;s not really important which convention you pick, it&#39;s more important that you pick one and stick to it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;LabVIEW is no different and it may be a bit more difficult because we give you 2 dimensions (X and Y) in which to place your code rather than just one.&amp;nbsp; I just saw an announcement for a new LabVIEW book and thought I&#39;d pass it along.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.bloomy.com/lvstyle/&quot;&gt;The LabVIEW Style Book - Peter A Blume&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Best-Practice Style Rules and Standards for Developing Quality LabVIEW Software&lt;/strong&gt;&lt;br&gt;Drawing on the experiences of a world-class LabVIEW development organization, The LabVIEW Style Book is the definitive guide to best practices in LabVIEW development. &lt;br&gt;Leading LabVIEW development manager Peter A. Blume presents practical guidelines or &quot;rules&quot; for optimizing every facet of your applications: ease of use, efficiency, readability, simplicity, performance, maintainability, and robustness. Blume explains each style rule thoroughly, presenting realistic examples and illustrations. He even presents &quot;nonconforming&quot; examples that show what not to do-and why not. &lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;I like that he mentions a tool that we release and use internally for our own G code reviews&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;Code reviews: Enforcing a style convention using a checklist, the LabVIEW VI Analyzer Toolkit, and peer reviews&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;Check it out.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:05a8c89b-51ac-405c-854c-2c3effb95807&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/LabVIEW&quot; rel=&quot;tag&quot;&gt;LabVIEW&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/CodingStyle&quot; rel=&quot;tag&quot;&gt;CodingStyle&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://technorati.com/tag/CodingStyle&quot; rel=&quot;tag&quot;&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/2854002662963244153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/2854002662963244153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/2854002662963244153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/2854002662963244153'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/04/writing-stylish-code.html' title='Writing Stylish Code'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-5469588381920064577</id><published>2007-02-15T09:00:00.000-08:00</published><updated>2007-02-15T09:11:32.922-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="hardware in the loop"/><category scheme="http://www.blogger.com/atom/ns#" term="Hardware Test"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Test"/><category scheme="http://www.blogger.com/atom/ns#" term="SoftwareDefinedRadio"/><title type='text'>Tracing Software During Hardware Test</title><content type='html'>In my &lt;a href=&quot;http://ideasinwiring.blogspot.com/2007/02/testing-software-radios.html&quot;&gt;last post&lt;/a&gt;, I mentioned a need to find software faults in microprocessor-controlled embedded systems. Since I&#39;m a software guy, I&#39;m curious about this angle and started doing some reasearch.&lt;br /&gt;&lt;br /&gt;1) The faults that were mentioned (timing, memory leaks, crashes) are basically software domain problems but they may only be triggered by certain I/O inputs the system receives (and the sw ends up dealing with).  So, it looks like the main tools to diagnose the fault will need to be ones that deal with the software domain but the system may need to be driven from the hardware I/O domain.&lt;br /&gt;&lt;br /&gt;2) These challenges are similar to those found in other applications that use microprocessor-driven control systems.  For example, NI makes hardware that can be used for real-time process control (such as controlling valves in a paper mill).  The controllers need to run 24x7, just like a radio, and the entire system is controlled by the microprocessor.  NI needs to make those controllers robust and therefore we need to test them extensively.&lt;br /&gt;&lt;br /&gt;3) The automotive industry also uses microprocessor-based high speed control systems, especially to control the &quot;powertrain&quot; (engine &amp; transmission).  They use a technique called &lt;a href=&quot;http://www.embedded.com/story/OEG20011129S0054&quot;&gt;Hardware in the loop testing&lt;/a&gt;.  The real controller (ECM) that is to be mounted in the car is hooked to a &quot;simulator&quot;.  The ECM sends out real output signals using a real wiring harness to the simulator, the simulator then looks at the outputs from the ECM and calculates what the real engine would do and then sends signals back to the ECM that make it think it is talking to a real engine.  You then &quot;drive&quot; the ECM as if you were driving the car through various scenarios and the simulator checks to make sure all of the outputs from the ECM are valid.  At the same time as the simulator is running, they monitor the software running on the ECM to verify that it is operating properly.  If the ECM crashes, they have tools to tell them what happened in the software.  It would seem like you could do exactly the same thing with software defined radio test.&lt;br /&gt;&lt;br /&gt;4) In the auto industry, they typically don&#39;t have an OS and they do the tracing at a low level.  In the old days, this was done with a chip emulator. The emulator (or logic analyzer) would snoop the address and data bus to monitor execution.  Now that caches are so prevalent, the external bus is not a good place to monitor. Chips that Freescale makes for automotive such as the MPC565 have a port called &lt;a href=&quot;http://www.ashling.com/technicalarticles/APB179-NexusBooklet.pdf&quot;&gt;NEXUS&lt;/a&gt;.  This port works in conjunction with information coming out on the address/data bus to spit out information while the processor is running that gives visibility into the processor pipeline. You can tell that a branch was taken, not taken, etc.. even if the instruction stream is all in the cache.  There are boxes such as the &lt;a href=&quot;http://www.lauterbach.com/frames.html?nexlist.html&quot;&gt;Lauterbach ICD Trace&lt;/a&gt; that hook up to the chip for this purpose. Their tools can then show the full execution history, what led up to the processor crash, etc.  &lt;a href=&quot;http://www.windriver.com/products/OCD/wind_river_trace/&quot;&gt;WindRiver&lt;/a&gt;, &lt;a href=&quot;http://www.ghs.com/products/timemachine.html&quot;&gt;GreenHills&lt;/a&gt;, and other emulator vendors also have this capability.&lt;br /&gt;&lt;br /&gt;It would seem like this concept could be applied to Software Defined Radio.  A Radio Emulator could drive the radio under test while the radio is being monitored with a tool like this. In the automotive case, I don&#39;t know how much this trace data ends up getting synchronized to the operation of the HIL emulator.  It might be critical to share control or timing information between the radio emulator and the trace tool so that you can correlate the waveform signals precisely to the line of code being executed.  This is where I think LabVIEW would come in.  HIL simulators provided by &lt;a href=&quot;http://www.ni.com/labview/test/hil_test.htm&quot;&gt;NI partners&lt;/a&gt; use LabVIEW as their base and are open to be modified by the end user. LabVIEW has the ability  to work with other software tools via ActiveX and other interfaces. It should be relatively easy to get LabVIEW to control both the HIL simulator and the trace tool.&lt;br /&gt;&lt;br /&gt;5) Since SDRs typically run high function OSes like GreenHills Integrity or WindRiver VxWorks, there are some additional tools that would be useful during debug. WindRiver has a tool called &lt;a href=&quot;http://linuxdevices.com/news/NS8955223434.html&quot;&gt;MemScope&lt;/a&gt; that will monitor the heap so you can see memory leaks.  LabVIEW could control this tool also.  GreenHills &lt;a href=&quot;http://www.ghs.com/SlashMemoryUsage.html&quot;&gt;has a leak checker&lt;/a&gt; but I haven&#39;t had any luck finding out more details on what it does. &lt;br /&gt;&lt;br /&gt;I&#39;m looking into setting up this type of system in our lab.  We have a reliability lab here for testing our real time controllers and we&#39;re looking at adding a tool like MemScope (since we use VxWorks in our controllers) to our testing arsenal. We may add on a trace tool as the next step after that.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/5469588381920064577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/5469588381920064577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/5469588381920064577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/5469588381920064577'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/02/tracing-software-during-hardware-test.html' title='Tracing Software During Hardware Test'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-1360286227047026408</id><published>2007-02-06T13:27:00.000-08:00</published><updated>2007-02-06T13:44:53.995-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JTRS"/><category scheme="http://www.blogger.com/atom/ns#" term="SNMP"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Test"/><category scheme="http://www.blogger.com/atom/ns#" term="SoftwareDefinedRadio"/><title type='text'>Testing Software Radios</title><content type='html'>In my visit to the SDR Forum Test Workshop, I observed something interesting.  The presentations given by instrumentation vendors focused on verifying the analog and digital performance of the RF subsystem. These vendors all have very nice equipment, such as spectrum analyzers, to do this testing.&lt;br /&gt;&lt;br /&gt;However, some of the questions from the audience during the round-table discussion asked about issues that had nothing to do with the RF subsystem.  Those questions were about frustrations in testing the software in a software-based electronic system.  One question was on how to get a PC to talk to the radio over the Ethernet interface. JTRS radios are typically controlled via SNMP and a user was looking for a toolkit (&lt;a href=&quot;http://www.snmptoolkit.com/&quot;&gt;I found one here&lt;/a&gt;) to talk to their radio.&lt;br /&gt;&lt;br /&gt;Two other attendees needed to trace a device failure to a software condition such as a stack overflow or a priority inversion, both software bugs that expose themselves as if they are hardware failures.  The worst part about these bugs is that they are typically hard to reproduce and can take a long time to track down.  This makes them expensive to track down because in test, time is money.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/1360286227047026408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/1360286227047026408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/1360286227047026408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/1360286227047026408'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/02/testing-software-radios.html' title='Testing Software Radios'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-6782621355879829639</id><published>2007-01-17T16:27:00.000-08:00</published><updated>2007-02-06T13:44:27.401-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JTRS"/><category scheme="http://www.blogger.com/atom/ns#" term="Modem"/><category scheme="http://www.blogger.com/atom/ns#" term="SoftwareDefinedRadio"/><category scheme="http://www.blogger.com/atom/ns#" term="Test"/><title type='text'>What&#39;s A Software Defined Radio?</title><content type='html'>RF Test is one of the largest areas of the test market. Somewhere around 1/3rd of all test equipment purchases are for RF test. I&#39;ve been looking into this market for the past 6 months or so to see we need to be doing in LabVIEW (Desktop, RT, Embedded, FPGA) to better serve people testing RF with the NI platform.&lt;br /&gt;&lt;br /&gt;One interesting area of RF development is in &lt;a href=&quot;http://en.wikipedia.org/wiki/Software_radio&quot;&gt;&quot;Software Defined Radio&quot;&lt;/a&gt;. The term is most specifically applied to the &lt;a href=&quot;http://enterprise.spawar.navy.mil/body.cfm?type=c&amp;category=27&amp;subcat=60&quot;&gt;JTRS&lt;/a&gt; (Joint Tactical Radio System) program in the military but really applies to the way in which radio design is changing. Historically, radios were implemented in &quot;hardware&quot;: either in chips from various silicon vendors or in discrete components on a board. You may have bought a science kit when you were 10 to make an AM radio that consisted of a transistor or vacuum tube and some other electronic components. &lt;br /&gt;&lt;br /&gt;The design of radios is changing. The first migration was moving the signal manipulations that used to take place in the analog domain to the digital domain. A &lt;a href=&quot;http://electronics.howstuffworks.com/dsl.htm&quot;&gt;DSL modem&lt;/a&gt; has chips inside that use digital signal processing to convert the analog signal that travels down the copper wire into bits that become Ethernet packets.&lt;br /&gt;&lt;br /&gt;The second migration was to perform these signal processing operations in a re-programmable device. When the 33.6 KBit modems came out, they were implemented using &quot;standard&quot; digital signal processors from &lt;a href=&quot;http://www.freescale.com/files/dsp/doc/app_note/AN3114.pdf&quot;&gt;Motorola Semiconductor&lt;/a&gt; (now Freescale), &lt;a href=&quot;http://www.modemsite.com/56k/rockacf.asp&quot;&gt;Rockwell&lt;/a&gt;, or others. Using a reprogrammable processor allowed the device to support multiple standards or to be upgradeable when new versions of the standard were released. Now, you are seeing the same thing happen with more &#39;exotic&#39; radios that broadcast in the RF range rather than just ones that transmit over phone lines.  The JTRS program envisions a radio that can run &lt;a href=&quot;http://jitc.fhu.disa.mil/jtrs/index.html&quot;&gt;more than 30 different standards&lt;/a&gt; with the same hardware. These radios use a combination of processors and FPGAs to perform the signal processing needed to pull this off. There is still some very complex analog circuitry in the radio to pull this all off but, as some attendees of a conference I just went to noted, &quot;the bits are getting much closer to the antenna&quot;.&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/SoftwareDefinedRadio&quot; rel=&quot;tag&quot;&gt;SoftwareDefinedRadio&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Modem&quot; rel=&quot;tag&quot;&gt;Modem&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Test&quot; rel=&quot;tag&quot;&gt;Test&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/JTRS&quot; rel=&quot;tag&quot;&gt;JTRS&lt;/a&gt;&lt;/small&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/6782621355879829639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/6782621355879829639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6782621355879829639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/6782621355879829639'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2007/01/whats-software-defined-radio.html' title='What&#39;s A Software Defined Radio?'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115749821517332803</id><published>2006-09-05T16:16:00.000-07:00</published><updated>2006-09-05T16:19:15.656-07:00</updated><title type='text'>Asynchronous versus Synchronous Nodes</title><content type='html'>Earlier this year, I wrote an entry about &lt;a href=&quot;http://ideasinwiring.blogspot.com/2006/03/how-does-data-flow-execution-work.html&quot;&gt;how LabVIEW&#39;s data-flow execution semantics works&lt;/a&gt;. There&#39;s an additional aspect of parallelism in LabVIEW that I didn&#39;t talk about: synchronous versus asynchronous nodes. A LabVIEW diagram that has parallelism in it can still appear to run in parallel on a single processor machine. The &lt;a href=&quot;http://ideasinwiring.blogspot.com/2005/05/55ms.html&quot;&gt;55ms ping-pong&lt;/a&gt; was an example of that. Here&#39;s another example:&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://photos1.blogger.com/blogger/6985/26/1600/pingpong.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;&quot; src=&quot;http://photos1.blogger.com/blogger/6985/26/320/pingpong.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;p&gt;The top loop will run and update the indicator with the value of the loop counter while waiting for 100ms, and then repeat. The bottom loop will run and update the indicator with the value of the loop counter while waiting for 50ms, and then repeat. &lt;/p&gt; &lt;p&gt;The LabVIEW diagram used cooperative multithreading. LabVIEW itself didn&#39;t go to &quot;sleep&quot; when the top loop tried to wait for 100ms.&lt;/p&gt; &lt;p&gt;Instead, LabVIEW would execute the top wait for 100ms by setting a timer to go off in 100ms. Then, it would look for other parts of the diagram that could still run (like the bottom loop) and run it until that 100ms timer alarmed. When the timer went off, LabVIEW would take control back and finish executing the top diagram. The wait node was called &quot;asynchronous&quot; because it would let the execution system continue even though an operation (the wait) wasn&#39;t finished yet. &lt;/p&gt; &lt;p&gt;Well, operating systems have grown up and now we can spawn &lt;a href=&quot;http://en.wikipedia.org/wiki/Thread_%28computer_science%29&quot;&gt;&quot;threads&quot;&lt;/a&gt;. Rather than having the LabVIEW execution system use just one thread, we could allow it to use multiple threads. So when LabVIEW tried to execute a node that did block the execution system (we call those, &quot;synchronous&quot;), there might be another OS thread available to get work done. &lt;/p&gt; &lt;p&gt;You may see this when you call some C code that uses the &quot;sleep()&quot; call. The DLL doesn&#39;t return so the current thread is blocked but the CPU should be free to do other things. Since LabVIEW has other threads available to it, it will keep executing in the other threads.&lt;/p&gt; &lt;p&gt;So why continue to have asynchronous nodes at all? If you put 500 wait nodes on the diagram, we would in theory have to allocate 500 threads. Operating systems don&#39;t like that very much so we don&#39;t do that. Instead, we keep the old cooperative multitasking system but augment it by &lt;a href=&quot;http://digital.ni.com/public.nsf/websearch/84ECA015AA496B23862565BC006C0F19?OpenDocument&quot;&gt;having each diagram use 4 threads&lt;/a&gt;. This gives LabVIEW the ability to work with external code that blocks and still have efficient execution for primtives LabVIEW knows about.&lt;/p&gt; &lt;p&gt;Why talk about all of this? Because sometimes we expose this to you and ask you to pick. The VISA read and VISA write nodes expose a property that let you decide whether they are synchronous or not. We even wrote &lt;a href=&quot;http://digital.ni.com/public.nsf/allkb/ECCAC3C8B9A2A31186256F0B005EEEF7&quot;&gt;an appnote on it&lt;/a&gt;. But, you can&#39;t read the appnote without understanding the stuff above, otherwise you&#39;ll think that asynchronous means that the node itself will return early. It won&#39;t. The setting only affects how LabVIEW internally chooses to execute the node. So why would you pick? In the words of one of our very experienced LabVIEW developers:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Frequently, VISA is used for serial I/O. If you know the instrument has data ready (e.g., you just asked for the number of bytes waiting to be read), a synchronous read will be much faster, since it won&#39;t use LabVIEW&#39;s execution scheduling mechanisms to poll the I/O.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There you have it.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115749821517332803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115749821517332803' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115749821517332803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115749821517332803'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/09/asynchronous-versus-synchronous-nodes.html' title='Asynchronous versus Synchronous Nodes'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115627572646761920</id><published>2006-08-22T12:42:00.000-07:00</published><updated>2006-08-22T12:43:53.870-07:00</updated><title type='text'>Dr. T&#39;s Identity Management Method</title><content type='html'>&lt;p&gt;I&#39;ve never seen it written down before, but this article from Joel on Software, &quot;&lt;a href=&quot;http://www.joelonsoftware.com/items/2006/08/10.html&quot;&gt;The Identity Management Method&lt;/a&gt;&quot; really captures what it means to work at NI.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Joel says:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;To be an Identity Method manager, you have to summon all the social skills you have to make your employees identify with the goals of the organization, so that they are highly motivated, then you need to give them the information they need to steer in the right direction.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Those of you who came to NIWeek probably heard &lt;a href=&quot;http://www.ni.com/niweek/keynote_videos.htm&quot;&gt;Dr. T&#39;s keynote&lt;/a&gt;. Every year, he lays out for our customers where he thinks NI is going.&amp;nbsp; Well, he doesn&#39;t just do that at the keynote. He does that pretty much every day.&amp;nbsp; No matter who he&#39;s talking to and no matter what the audience, he explains his vision. Sometimes, its the very technical roadmap of the future and sometimes it&#39;s the more personal view of the various stakeholders in NI (the employees, our suppliers, our shareholders, our customers). &quot;Sharing the vision&quot; is &lt;a href=&quot;http://www.ni.com/anniversary/culture.htm&quot;&gt;an important part of our culture&lt;/a&gt;. It&#39;s nice to see a third party validation of it.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115627572646761920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115627572646761920' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115627572646761920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115627572646761920'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/dr-ts-identity-management-method.html' title='Dr. T&#39;s Identity Management Method'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115592399756698866</id><published>2006-08-18T10:59:00.000-07:00</published><updated>2006-08-18T11:08:46.443-07:00</updated><title type='text'>Well I said I wanted feedback...</title><content type='html'>&lt;p&gt;So now I know what it&#39;s like to be a musician, having to see a review of one of your performances broadcast widely for the whole city/state/world to see.&amp;nbsp; I got mentioned in a Design News &lt;a href=&quot;http://www.designnews.com/article/CA6363430.html?nid=2332&amp;amp;rid=1072503902&quot;&gt;article about podcasts&lt;/a&gt;. &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The first podcast, titled “&lt;a href=&quot;http://www.ni.com/podcast/&quot;&gt;What is Embedded&lt;/a&gt;?” was produced by National Instruments. It featured an interview with Joel Sumner of the LabVIEW Embedded Group. Overall I think the 16:58 minute interview fulfilled its promise, but I found my attention straying at times. Conversely, I found Sumner giving short shrift to some of the more potentially interesting topics.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The title of the post was even worse: &quot;Listen to This Boring Podcast&quot;.&amp;nbsp; Ouch.&amp;nbsp;The other podcast she reviewed in the article (from another company) also got panned so at least I&#39;m not alone.&lt;/p&gt; &lt;p&gt;Oh well, that was the first one I had ever done and it was part of the first 4 NI had ever done. I guess I/we have a bit of learning to do before we&#39;re the NPR of the T&amp;amp;M podcast world.&lt;/p&gt; &lt;p&gt;So, give it to me straight guys, did it suck?&amp;nbsp; Too long? Right level of detail?&amp;nbsp; Wrong level of detail?&amp;nbsp; We&#39;ve got a tremendous amount of knowledge locked up in these walls and we&#39;re willing to share, we just don&#39;t want to put you to sleep.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/Podcast&quot; rel=&quot;tag&quot;&gt;Podcast&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115592399756698866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115592399756698866' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115592399756698866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115592399756698866'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/well-i-said-i-wanted-feedback.html' title='Well I said I wanted feedback...'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115582291817801511</id><published>2006-08-17T06:55:00.000-07:00</published><updated>2006-08-18T11:09:24.410-07:00</updated><title type='text'>NIWeek Recap</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;NIWeek is over. Ok, it ended a whole week ago but I haven&#39;t made it to the end of my &quot;to do list&quot; so it won&#39;t really be over for another week or two. Last year, my team&#39;s big project, LV Embedded, launched to great fanfare.&amp;nbsp; This year, another project that I was involved with, the Lego NXT, made it&#39;s NIWeek splash. I can&#39;t tell you how cool it is to see something you&amp;nbsp;worked on sitting on the shelves of Best Buy or Frys.&amp;nbsp; &lt;/p&gt; &lt;p&gt;You can see a picture of some of the main developers of the software at &lt;a href=&quot;http://nxtasy.org/2006/08/11/ni-week-trip-report/&quot;&gt;Dick Swan&#39;s blog&lt;/a&gt;. He&#39;s also got pictures of some custom sensors he&#39;s created or run across for the NXT such as&amp;nbsp;a video camera, a Sony Playstation controller, and probes from Vernier. You can see the Lego NXT demo in the &lt;a href=&quot;http://www.ni.com/niweek/keynote_videos.htm&quot;&gt;keynote videos&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Brian Tyler did a &lt;a href=&quot;http://detritus.blogs.com/niweek/&quot;&gt;video-blog&lt;/a&gt;&amp;nbsp;on the whole NIWeek Experience. I think the most amusing video was an interview with Diya on what it&#39;s like to be up on stage in front of 3,000 people doing the keynote.&amp;nbsp; I love the way we throw engineers who actually worked on the products they are demoing up there.&amp;nbsp; It also helps if the demo doesn&#39;t quite go as planned...&lt;/p&gt; &lt;p&gt;You have to admit, a DAQ board isn&#39;t much of a visual treat. It just sits there like a rock. Not even blinking lights. I think that&#39;s caused us to be a bit more creative when it comes to demos. One of the demos this year involved getting a volunteer from the audience to try out a version of the game &lt;a href=&quot;http://en.wikipedia.org/wiki/Dance_Dance_Revolution&quot;&gt;&quot;Dance Dance Revolution&quot;&lt;/a&gt; that had been completely reimplemented in NI hardware and reprogrammed in LabVIEW.&amp;nbsp; The designer of the demo is Roger Dickey, a guy who loves DDR and is in the LabVIEW FPGA team.&amp;nbsp; Here&#39;s &lt;a href=&quot;http://forums.lavag.org/index.php?act=module&amp;amp;module=gallery&amp;amp;cmd=si&amp;amp;img=813&quot;&gt;the video of him competing&lt;/a&gt; with the, ahem, victim. &lt;/p&gt; &lt;p&gt;Finally, to all of the people I pestered at NIWeek, I wanted to say thanks. I know all of us at NI get a lot of satisfaction hearing how our products affect what you do every day. &lt;/p&gt; &lt;p&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/LabVIEW&quot; rel=&quot;tag&quot;&gt;LabVIEW&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/NIWeek&quot; rel=&quot;tag&quot;&gt;NIWeek&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/DanceDanceRevolution&quot; rel=&quot;tag&quot;&gt;DanceDanceRevolution&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Mindstorms&quot; rel=&quot;tag&quot;&gt;Mindstorms&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Lego&quot; rel=&quot;tag&quot;&gt;LEGO&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115582291817801511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115582291817801511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115582291817801511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115582291817801511'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/niweek-recap.html' title='NIWeek Recap'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115582141400100188</id><published>2006-08-17T06:30:00.000-07:00</published><updated>2006-08-17T06:30:14.090-07:00</updated><title type='text'>Traditions and Testing</title><content type='html'>&lt;p&gt;On the LabVIEW team, we love sweet stuff. Heck, all programmers probably do. &quot;The official food of the LabVIEW team&quot; (tm) used to be Oreos but somewhere in the last few years, it became donuts - specifically Krispie Kreme donuts.&amp;nbsp; Every anniversary, birthday, or just for the heck of it yields a &quot;donuts in (some location)&quot; email.&amp;nbsp; A sugar fix is nearly guaranteed every morning.&lt;/p&gt; &lt;p&gt;Another tradition is to do a coding challenge as we enter final testing. LabVIEW is pretty stable at that point and we&#39;ve gone through the entire testing database a few times. A coding challenge is a good way to make sure everyone is using the product in a &quot;real way&quot; rather than running through some script. We let a developer or group of developers write something, anything they want, in LabVIEW. There are awards given for the program that uses the most new features, coolest, most annoying, etc..&amp;nbsp; I think I won most annoying a few years ago for using the &quot;new&quot; (at the time) Datasocket feature along with the state machine editor to create a distributed music playing program. Every person who loaded the VI could enter some musical notes which would then be played on every other person&#39;s machine.&amp;nbsp; Can you say noisy?&amp;nbsp; &quot;Annoying&quot; was an apt title for that one.&lt;/p&gt; &lt;p&gt;Anyway, my favorite entry was from the LabVIEW 8.0 release. A couple folks got together and wrote a client-server application that would not only notify you of any new donuts but also show a map on the floor of where they were sitting and map a route through the cubes to show you the shortest way to get to the donuts. It had a nice installer and ran in the system tray.&amp;nbsp; Of course it was all programmed in LabVIEW.&lt;/p&gt; &lt;p&gt;So, what are you going to build with LabVIEW 8.2?&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115582141400100188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115582141400100188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115582141400100188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115582141400100188'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/traditions-and-testing.html' title='Traditions and Testing'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115445594790234132</id><published>2006-08-01T11:10:00.000-07:00</published><updated>2006-08-01T11:12:27.903-07:00</updated><title type='text'>NIWeek Sessions</title><content type='html'>There are a lot of good NIWeek sessions on LabVIEW Embedded technology.  Here&#39;s my cheat-sheet&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;LabVIEW Embedded Birds of a Feather Session - Tuesday 1pm Mezzanine 7 - hosted by me and the LV Embedded engineering team - &lt;span style=&quot;font-weight: bold;&quot;&gt;NOTE&lt;/span&gt; - &lt;span style=&quot;font-style: italic;&quot;&gt;this is not in the conference program&lt;/span&gt;&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Hands-On: NI LabVIEW Embedded Module for ADI Blackfin Processors - Tuesday 2:15pm, 4:45pm and Wednesday at 1pm&lt;/li&gt;   &lt;li&gt;Introduction to the LabVIEW Embedded Development Module - Tuesday 2:15pm&lt;/li&gt;   &lt;li&gt;Graphical Design for Multicore Processors - Tuesday 4pm&lt;/li&gt;   &lt;li&gt;Design of the New Handy Board for Robotics - Tuesday 4:45pm&lt;/li&gt;&lt;li&gt;Develop Embedded Systems without Embedded Expertise - Wednesday 3:30pm&lt;/li&gt;   &lt;li&gt;Prototype to Custom Deployment in Hours - Wednesday 4pm&lt;/li&gt;   &lt;li&gt;Developing Optimized LabVIEW Embedded Applications - Thursday 10:30am&lt;/li&gt;   &lt;li&gt;Developing LabVIEW Embedded Applications - Thursday 10:30am&lt;/li&gt;  &lt;/ul&gt;I hope to run into some of you at those sessions.&lt;br /&gt; &lt;ul&gt; &lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115445594790234132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115445594790234132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445594790234132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445594790234132'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/niweek-sessions.html' title='NIWeek Sessions'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115445582215839113</id><published>2006-08-01T11:09:00.000-07:00</published><updated>2006-08-01T11:15:55.146-07:00</updated><title type='text'>LabVIEW Embedded Chips</title><content type='html'>The LabVIEW Embedded Development Module continues to win awards. A demo with the LabVIEW running on a Freescale ColdFire processor at the &lt;a href=&quot;http://www.freescale.com/ftf&quot;&gt;Freescale Technology Forum&lt;/a&gt; won &quot;&lt;a href=&quot;http://www.freescale.com/webapp/sps/site/homepage.jsp?nodeId=0525779036&quot;&gt;Best In Class Development Tools&lt;/a&gt;&quot; by a panel of 4 industry folks.  Wow.&lt;br /&gt;&lt;br /&gt;So that brings me to some interesting trivia. I made a list of the various places that the LabVIEW EDM has run on (that I know about). Some are silly, some are amazing, but I find all of it cool&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;     &lt;div&gt;A &lt;a href=&quot;http://en.wikipedia.org/wiki/WRT54G&quot;&gt;Linksys WRT54G&lt;/a&gt; Router (Broadcom MIPS/Linux) - my first little project. It did everything, build, run, debug and even TCP/IP I/O. I got it to control a GPIB-Enet box and a scope.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;   &lt;li&gt; Intel &lt;a href=&quot;http://www.intel.com/design/network/products/npfamily/ixdp425.htm&quot;&gt;IXP425 Eval Board&lt;/a&gt; (Intel XScale 425/VxWorks) - one of the shipping examples   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD565 (Freescale PowerPC 565/eCos)  - one of the shipping examples&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD565 (Freescale PowerPC 565/VxWorks) - one of the shipping examples&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD566 (PowerPC 566/VxWorks) - This board has Ethernet so we use it for training&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Xilinx &lt;a href=&quot;http://www.xilinx.com/products/boards/ml403/reference_designs.htm&quot;&gt;ML403 Eval Board&lt;/a&gt; - (PowerPC/VxWorks) - This was demoed at NIWeek last year. It uses the PowerPC hard core inside a Xilinx Virtex II Pro.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Embedded Planet &lt;a href=&quot;http://www.embeddedplanet.com/products/ep405.asp&quot;&gt;EP405 board&lt;/a&gt; - (PowerPC405/Linux) - This was in the embedded planet booth at NIWeek last year&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.freescale.com/&quot;&gt;Freescale &lt;/a&gt;HC08 Eval Board (HC08/no os) - One of our engineers did a power window controller for a car door. He integrated the Freescale ProcessorExpert for I/O and had it all working in a couple k of code (2k?). It didn&#39;t debug, do any arrays, or anything fancy but it was neat to see how small we could go.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.freescale.com/&quot;&gt;Freescale&lt;/a&gt; HC12 Eval Board (HC12/no os) - Look for this at NIWeek this year. Get some M&amp;Ms in the process&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;   &lt;li&gt;&lt;a href=&quot;http://www.altera.com/products/devkits/altera/kit-Nios-2c35.html&quot;&gt;Altera NIOS II Dev Kit&lt;/a&gt; - (NIOS/eCos) - NIOS is a soft processor that runs in an Altera FPGA&lt;/li&gt;   &lt;li&gt;&lt;a href=&quot;http://www.phytec.com/products/sbc/ARM-XScale/phyCORE-ARM7-LPC229x.html&quot;&gt;Phytec LPC229x&lt;/a&gt; (ARM7/eCos) - A new example target   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://focus.ti.com/docs/toolsw/folders/print/tmdsdsk6713.html&quot;&gt;TI DSK6713&lt;/a&gt; (TI TMS320C6713/DSP BIOS) - A university professor tried it first but we went and did it again as a new example target for those of you who want to program a DSP&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;      &lt;div&gt;Nintendo Gameboy (Linux) - this was the robot from &lt;a href=&quot;http://www.charmedlabs.com/&quot;&gt;Charmed Labs&lt;/a&gt; that you saw on stage at NIWeek two years ago.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;PC Motherboard (80486/QNX) - your standard PC, but running the QNX operating system. It even can support an M-series DAQ card. Look for it in an NIWeek presentation.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;     &lt;div&gt;A &lt;a href=&quot;http://en.wikipedia.org/wiki/WRT54G&quot;&gt;Linksys WRT54G&lt;/a&gt; Router (Broadcom MIPS/Linux) - my first little project. It did everything, build, run, debug and even TCP/IP I/O. I got it to control a GPIB-Enet box and a scope.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;          &lt;div&gt;Intel &lt;a href=&quot;http://www.intel.com/design/network/products/npfamily/ixdp425.htm&quot;&gt;IXP425 Eval Board&lt;/a&gt; (Intel XScale 425/VxWorks) - one of the shipping examples&lt;/div&gt; &lt;/li&gt;&lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD565 (Freescale PowerPC 565/eCos)  - one of the shipping examples&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD565 (Freescale PowerPC 565/VxWorks) - one of the shipping examples&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.axman.com/&quot;&gt;Axiom&lt;/a&gt; CMD566 (PowerPC 566/VxWorks) - This board has Ethernet so we use it for training&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;EP405 (PowerPC405/MontaVista Linux) - Same board as before but running MontaVista Hard Hat Linux rather than the non-deterministic standard Linux distro.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;PC Motherboard (80486/MontaVista Linux) - Once you have Linux running, LV Embedded works pretty well on any CPU. &lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Freescale MCF523x (Coldfire/no os) - A customer wanted to give this a try &lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;&lt;a href=&quot;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF5329&amp;amp;nodeId=0162468rH3YTLC00M99287&quot;&gt;Freescale MCF5329&lt;/a&gt; Eval Board (ColdFire 5329/uCLinux) - The &lt;a href=&quot;www.freescale.com/ftf&quot;&gt;winning demo&lt;/a&gt; at Freescale Technology Forum.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Freescale 5200LITE (PowerPC/Linux) - A customer had one of these kicking around to try. &lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Renesas SH7751 (SH4/QNX) - another experiment with our friends at QNX &lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;     &lt;div&gt;Atmel ATMega 128/no os - Details are sketchy but an academic customer put this together and is writing a paper on it.&lt;/div&gt;   &lt;/li&gt;   &lt;li&gt;The &lt;a href=&quot;http://www.bluetechnix.com/rainbow2006/site/software/blackfin/labview_embedded/362/labview_embedded.aspx&quot;&gt;Bluetechnix&lt;/a&gt; tinyboard, the &lt;a href=&quot;http://www.cs.uml.edu/blackfin/index.php?n=LabVIEW.LabVIEWEmbedded&quot;&gt;HandyBoard&lt;/a&gt;, Scmidt Engineering &lt;a href=&quot;http://zone.ni.com/devzone/conceptd.nsf/webmain/68A45F1A6A817EF3862571810064A996#3&quot;&gt;Z-Brain&lt;/a&gt;, and the &lt;a href=&quot;http://www.ni.com/labview/blackfin/&quot;&gt;ADI EZ Kits&lt;/a&gt; using the LabVIEW Embedded Blackfin module.&lt;/li&gt;   &lt;/ul&gt;Whew.  I&#39;ll bet there are others kicking around that I forgot or I don&#39;t yet know about.  The breadth is fantastic, from 8-bit to 32-bit.  From no-os to Linux.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115445582215839113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115445582215839113' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445582215839113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445582215839113'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/labview-embedded-chips.html' title='LabVIEW Embedded Chips'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115445577468390281</id><published>2006-08-01T10:23:00.000-07:00</published><updated>2006-08-01T11:09:34.736-07:00</updated><title type='text'>Doings</title><content type='html'>I know I&#39;ve been a bad blogger and left you hanging for the last three weeks. It&#39;s only two weeks in work time due to a week long vacation in &lt;a href=&quot;http://www.prague.cz/&quot;&gt;Prague&lt;/a&gt; in the Czech Republic. Prague is a beautiful city that was not bombed during World War II. You see interesting adornments on the building wherever you go. Everything is cheap by European standards. It was easily half the price of a vacation in London.&lt;br /&gt;&lt;br /&gt;But I digress.. Last week was the &lt;a href=&quot;http://www.dac.com/43rd/index.html&quot;&gt;Design Automation Conference&lt;/a&gt;. That conference is for people who make computer chips, the kind that take 10 weeks to bake in the fab before you get them back. It&#39;s a completely different world where they have to simulate everything up front because there is no possibility of even doing a component level prototype in the real world. Imagine it costing you a million dollars to fix a bug that you found in your code after your first build. That&#39;s the world they live in. However, it is an analog world at the bottom of it and LabVIEW does provide ways to help validate those designs, both in the simulation world and once the chip comes out.</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115445577468390281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115445577468390281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445577468390281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115445577468390281'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/08/doings.html' title='Doings'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115264372182496682</id><published>2006-07-11T11:03:00.000-07:00</published><updated>2006-07-11T11:48:41.876-07:00</updated><title type='text'>NIWeek is coming</title><content type='html'>In four weeks, &lt;a href=&quot;http://ni.com/niweek&quot;&gt;NIWeek&lt;/a&gt; will be here. A post on the LAVA blogs has some good ideas on &lt;a href=&quot;http://forums.lavag.org/blog/champions/index.php?showentry=92&quot;&gt;how to get the best out of NIWeek&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you spot me at NIWeek, stop by and say hi. I&#39;d love to chat about Embedded, FPGA, PDA, DSP, and other LabVIEW stuff (assuming I&#39;m not already late to something). If you want to play &quot;where&#39;s Joel&quot;, I&#39;m publishing &lt;a href=&quot;http://calendar.yahoo.com/jsumnertx&quot;&gt;my NIWeek Calendar&lt;/a&gt;. Drop me an email if you want to chat and I&#39;ll try and set something up as my schedule firms.&lt;br /&gt;&lt;br /&gt;See you there</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115264372182496682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115264372182496682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115264372182496682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115264372182496682'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/07/niweek-is-coming.html' title='NIWeek is coming'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115256491900867523</id><published>2006-07-10T13:45:00.000-07:00</published><updated>2006-07-10T13:55:19.023-07:00</updated><title type='text'>Mourning the passing of LabVIEW Technical Resource</title><content type='html'>This isn&#39;t particularly timely but I wanted to belatedly express my gratitude to Karen Pape from the &quot;LabVIEW Technical Resource&quot; magazine.  They closed their doors last year and their site no longer works.   It was a great, no advertisements, periodical jam-packed with LabVIEW techniques from experienced LabVIEW developers. If you ever run across a copy laying on someone&#39;s desk, pick it up. You&#39;ll probably learn something.&lt;br /&gt;&lt;br /&gt;You can still find some of the articles floating around the Internet.&lt;br /&gt;    * NI&#39;s site has some articles. Go to &lt;a href=&quot;http://zone.ni.com/zone/jsp/zone.jsp&quot;&gt;DeveloperZone&lt;/a&gt; and search for &quot;labview technical resource&quot;&lt;br /&gt;    * There is a &lt;a href=&quot;http://software.idealo.com/prices/P20012724662K3.html&quot;&gt;CD for sale&lt;/a&gt; with 9 years of articles&lt;br /&gt;    * Many articles have been mirrored on the &lt;a href=&quot;http://www.google.com/search?q=%22labview+technical+resource%22&amp;sourceid=mozilla-search&amp;amp;start=0&amp;start=0&amp;amp;ie=utf-8&amp;oe=utf-8&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla:en-US:official&quot;&gt;sites of their representative authors&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115256491900867523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115256491900867523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115256491900867523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115256491900867523'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/07/mourning-passing-of-labview-technical.html' title='Mourning the passing of LabVIEW Technical Resource'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12950249.post-115023776798125993</id><published>2006-06-13T15:26:00.000-07:00</published><updated>2006-06-13T15:31:08.026-07:00</updated><title type='text'>Language Challenges for Multi-Core Processors</title><content type='html'>In Jim Turley&#39;s recent Silicon Insider, he talked about &lt;a href=&quot;http://www.jimturley.com/si/current.htm#link3&quot;&gt;multi-core processors&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;But new compilers and debuggers won&#39;t be enough. We&#39;re facing a change to new programming languages. Current languages like C don&#39;t express parallelism well. Compilers can identify threads of execution or independent constructs and extract some small amounts of parallelism here and there, but the language itself prevents large-scale parallelism. If we&#39;re to exploit these new multi-processor chips, we&#39;re going to have to swallow hard, roll up our sleeves, and tackle a truly Herculean task.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Hmm. Languages that express parallelism well. I wonder where &lt;a href=&quot;http://ni.com/labview&quot;&gt;I can find one of those&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;&lt;small&gt;Technorati Tags: &lt;a href=&quot;http://technorati.com/tag/Parallelism&quot; rel=&quot;tag&quot;&gt;Parallelism &lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tag/Multicore&quot; rel=&quot;tag&quot;&gt;Multicore&lt;/a&gt;&lt;/small&gt;</content><link rel='replies' type='application/atom+xml' href='http://ideasinwiring.blogspot.com/feeds/115023776798125993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12950249/115023776798125993' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115023776798125993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12950249/posts/default/115023776798125993'/><link rel='alternate' type='text/html' href='http://ideasinwiring.blogspot.com/2006/06/language-challenges-for-multi-core.html' title='Language Challenges for Multi-Core Processors'/><author><name>Joel</name><uri>http://www.blogger.com/profile/01098518591695123037</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://homepage.mac.com/jsumnertx/Misc/Fry.jpg'/></author><thr:total>2</thr:total></entry></feed>