Hi, Sorry in advance if this is the wrong place for this question. I am a 24 year old, Software Developer who has a 2.1 in BSc (Hons) Software Development. I have been working solely on CRUD applications during the 3 years I have been working and I have decided its time for a change of direction in my career. I would really like to begin working with Embedded/Real Time systems, but my programming experience is with Delphi which is really a programming language for RAD applications and I doubt it would be suited to Embedded/Real Time systems. I guess what I would really like to know is how to go about changing the direction of my career, what programming languages do I need to know, which operating systems is it best to use etc. Any help is really welcome. Thanks Scott
New to Embedded Software
Started by ●November 9, 2008
Reply by ●November 9, 20082008-11-09
"Scott" <ScottDSellers@googlemail.com> wrote in message news:914183aa-24fc-4db0-ba0d-4b274ab37bf6@c36g2000prc.googlegroups.com...> Hi, > > Sorry in advance if this is the wrong place for this question. > > I am a 24 year old, Software Developer who has a 2.1 in BSc (Hons) > Software Development. I have been working solely on CRUD applications > during the 3 years I have been working and I have decided its time for > a change of direction in my career. > > I would really like to begin working with Embedded/Real Time systems, > but my programming experience is with Delphi which is really a > programming language for RAD applications and I doubt it would be > suited to Embedded/Real Time systems. > > I guess what I would really like to know is how to go about changing > the direction of my career, what programming languages do I need to > know, which operating systems is it best to use etc. > > Any help is really welcome. > > Thanks >Embedded systems is itself a huge topic with a vary wide scope - talking toys to UAV's all come under the real time banner. Did you have a narrower idea of where you wanted to fit into the spectrum? C is still king in the lower end embedded market. I would suggest buying yourself some cheap hardware that comes with good demos that you can get your teeth into. Demo and eval hardware is now often sold at what must be cost price, so you can buy a selection. You can download free and evaluation versions of compilers too so can get up and running for very little cost. The Demos section of the FreeRTOS.org WEB site provides plenty of example low cost tool chains and hardware. -- Regards, Richard. + http://www.FreeRTOS.org & http://www.FreeRTOS.org/shop 17 official architecture ports, more than 6000 downloads per month. + http://www.SafeRTOS.com Certified by T�V as meeting the requirements for safety related systems.
Reply by ●November 9, 20082008-11-09
> Did you have a narrower idea of where you wanted to fit into the spectrum?I guess I would like to work on projects with a real scientic twist, during my university work placement I go to write software that interacted with a time domain reflectrometry probe to measure oil levels in water coolant pumps in Nuclear reactors. Something similar in nature would be great but I am open minded.
Reply by ●November 9, 20082008-11-09
On Sun, 9 Nov 2008 10:41:49 -0800 (PST), Scott <ScottDSellers@googlemail.com> wrote:>Hi, > >Sorry in advance if this is the wrong place for this question. > >I am a 24 year old, Software Developer who has a 2.1 in BSc (Hons) >Software Development. I have been working solely on CRUD applications >during the 3 years I have been working and I have decided its time for >a change of direction in my career. > >I would really like to begin working with Embedded/Real Time systems, >but my programming experience is with Delphi which is really a >programming language for RAD applications and I doubt it would be >suited to Embedded/Real Time systems. > >I guess what I would really like to know is how to go about changing >the direction of my career, what programming languages do I need to >know, which operating systems is it best to use etc. > >Any help is really welcome.Buy a few development boards and compilers and then build things. If these things won't be on your work-related resume, perhaps put up a "things I built and how I built them" web page to show prospective employers that you're not "just" a Delphi developer. Languages: C and assembler. Operating systems. None. This is work at the bare metal level. Know your way around an oscilloscope and logic analyzer. Be able to design and build your own interface circuits and read/understand the schematics for the things to which you'll be interfacing. Sparkfun has a lot of dev boards and project ideas. A good "get your feet wet" project could be to read the voltage at an A/D port and display the results on a generic HD44780-based character LCD display (these are widely available as inexpensive "surplus" if you're not overly particular about the size of the display). For chips, my own preference in the 8/16/32 bit categories are Atmel AVR, TI MSP 430, and NXP LPC2000 ARM7s. Your mileage may vary. I like Imagecraft compilers for all of these but there are many other options, including flavors of gcc. http://www.sparkfun.com/commerce/categories.php http://www.imagecraft.com/ http://www.avrfreaks.net/ http://www.embeddedrelated.com/ -- Rich Webb Norfolk, VA
Reply by ●November 9, 20082008-11-09
On Nov 9, 1:41=A0pm, Scott <ScottDSell...@googlemail.com> wrote:> Hi, > > Sorry in advance if this is the wrong place for this question. > > I am a 24 year old, Software Developer who has a 2.1 in BSc (Hons) > Software Development. I have been working solely on CRUD applications > during the 3 years I have been working and I have decided its time for > a change of direction in my career. > > I would really like to begin working with Embedded/Real Time systems, > but my programming experience is with Delphi which is really a > programming language for RAD applications and I doubt it would be > suited to Embedded/Real Time systems. > > I guess what I would really like to know is how to go about changing > the direction of my career, what programming languages do I need to > know, which operating systems is it best to use etc. > > Any help is really welcome. > > Thanks > > ScottYou'll probably get lots of advice, much of it conflicting. With that warning, what I'd do is to start with two uC families, an 8-bit (suggest 80C51 or AVR) and a 32-bit (suggest ARM7). Get a simple development board for each family, one with buttons, leds, an LCD character display, and whatever else catches your fancy). Find suitable software tools (the board mfgr can point you in the right direction) and start writing simple programs - you can find lots of ideas on the net. As was mentioned, C is the primary language you will need to learn because it is ubiquitous in the embedded field. Having said that, you should also learn enough about the assembly languages of your chosen families to be able to at least understand the code produced by the compiler. I'd even recommend you write a couple of small programs in assembly, because I think you'll get a better sense of what's happening under the hood. Others may disagree. One critical skill you will need to learn is how to use interrupts. Become comfortable using interrupts for timing, communications and other events. Get a feel for doing the time-critical work inside the interrupt while leaving additional work to be done in the background. Learn how to access interrupt-read and interrupt-written data safely. Learn about "volatile". Finally, install an RTOS on one of your boards (the ARM board would be my choice), and learn how to write responsive embedded software on top of an RTOS. Responsiveness is one of the keys in the embedded world, RTOS or no RTOS. Being frugal with limited system resources is another - things like not filling up your limited RAM with strings that could live in flash, making judicious use of 8-bit variables (and even bit variables) on 8-bit devices, etc. It's a fun and interesting field. Good luck! Mike
Reply by ●November 9, 20082008-11-09
On Nov 9, 2:40=A0pm, Rich Webb <bbew...@mapson.nozirev.ten> wrote:> Sparkfun has a lot of dev boards and project ideas. A good "get your > feet wet" project could be to read the voltage at an A/D port and > display the results on a generic HD44780-based character LCD display > (these are widely available as inexpensive "surplus" if you're not > overly particular about the size of the display).Funny you should suggest that. I just wired up a little comms test unit with an AVR ATmega48, 3 slide pots and an LCD display, to send out test commands and data over an RS485 line. The LCD display comes from a batch I must have bought 20 years ago, and then forgot I had them. It works just fine. The linear slide pots I just bought from Mouser, OTOH, turn out to be audio taper. Oh well, not a big deal for my purposes. Mike
Reply by ●November 9, 20082008-11-09
On Sun, 9 Nov 2008 12:30:55 -0800 (PST), Mike Silva <snarflemike@yahoo.com> wrote:>On Nov 9, 2:40�pm, Rich Webb <bbew...@mapson.nozirev.ten> wrote: > >> Sparkfun has a lot of dev boards and project ideas. A good "get your >> feet wet" project could be to read the voltage at an A/D port and >> display the results on a generic HD44780-based character LCD display >> (these are widely available as inexpensive "surplus" if you're not >> overly particular about the size of the display). > >Funny you should suggest that. I just wired up a little comms test >unit with an AVR ATmega48, 3 slide pots and an LCD display, to send >out test commands and data over an RS485 line. The LCD display comes >from a batch I must have bought 20 years ago, and then forgot I had >them. It works just fine. The linear slide pots I just bought from >Mouser, OTOH, turn out to be audio taper. Oh well, not a big deal for >my purposes.Yup. I agree with your earlier post that one of the first things to learn is how to properly interact with a chip's interrupt structure. My generic Hello, World for a new microcontroller (and, I suspect, many other folks do this too) is to toggle a selected I/O pin at a 1 Hz rate based on a timer interrupt. That gets most of the kinks out of the tool chain and gives a basic understanding of the chip and its peripherals. The HD44780 interface, though, is a good learning tool. RS, R/W* and E do what? How does the crazy initialization work? Read the busy bit or do fixed intervals? If the busy bit, what to do if the display is unplugged and not-busy never occurs? Embedded development means it's embedded in or with something else and understanding the incomplete, incorrect, or contradictory documentation for that something else, and often building a benchtop model of parts of it, is a big part of the game. -- Rich Webb Norfolk, VA
Reply by ●November 9, 20082008-11-09
On Nov 9, 6:01=A0pm, Rich Webb <bbew...@mapson.nozirev.ten> wrote:> > The HD44780 interface, though, is a good learning tool. RS, R/W* and E > do what? How does the crazy initialization work? Read the busy bit or do > fixed intervals? If the busy bit, what to do if the display is unplugged > and not-busy never occurs? Embedded development means it's embedded in > or with something else and understanding the incomplete, incorrect, or > contradictory documentation for that something else, and often building > a benchtop model of parts of it, is a big part of the game.Right, and if doing fixed intervals, how do you wait 40us between chars? For that matter, how do you generate a 500ns E pulse on a 20 or 60 or 100 MHz processor? It actually takes a bit of thinking. But once you've got the display running you've got a great debugging aid. And if you (the newbie) can create an HH:MM:SS display that keeps correct time using a timer interrupt, and only updates the display when a change occurs, and can do other processing in the background, you're well on your way. Mike
Reply by ●November 10, 20082008-11-10
On Sun, 9 Nov 2008 11:00:25 -0800, Scott wrote (in article <370c19d5-c226-4318-a8c3-9829c8a2cd28@35g2000pry.googlegroups.com>):>> Did you have a narrower idea of where you wanted to fit into the spectrum? > I guess I would like to work on projects with a real scientic twist, > during my university work placement I go to write software that > interacted with a time domain reflectrometry probe to measure oil > levels in water coolant pumps in Nuclear reactors. Something similar > in nature would be great but I am open minded. > > >Get any little development board with a PIC or AVR from Sparkfun. The PIC folks used to have a board that has a nice little compiler and all the goodies. You don't want to get frustrated setting up and debugging a GCC environment. Get one with a TFT display and an A/D converter. Assign yourself the task of making it into a digital oscilloscope and a voltmeter and a frequency meter. Switch modes by pushing a button. If you are really starting from scratch and are out of touch with working with bits and hex and shifting and all the little machine code tricks and logic manipulations, I would suggest something quite different. Forget the worries about hardware and compilers. Get a development kit from Rabbit Semiconductor (ZWorld). It is a grown up Z80 at about 50 MHz (all those TI calculators the schools use are Z80 -- the HP's are ARM7) but it doesn't matter. They have a very nice mature C variant called Dynamic C and good documentation and sample code and interrupt handling examples plus phone support. Yes the C is a little eccentric, but it is easier to get started with and much easier to manage and use. The processor is not one of the currently popular types, but that doesn't matter. You solve the same problems the same way. There is a demand for experienced Rabbit programmers. I used it once in a legacy 4MHz Z80 based plywood mill moisture controller and bumped it to 48 MHz with one of ZWorld's modules, then did a few other new jobs for the same company using the same hardware module. They were able to get buying volume up and the modules were very inexpensive. I had never touched a Z80 before the project, and aside from rejuvenating S-100 systems, never will again. I would have used an ARM7 but the managers were uncomfortable with the change and saw it as a risk. No big deal. It is all ones and zeros. In fact, I have an unopened development system if you want to buy one cheap. I have been saving it for an occasion where I need to start from scratch with no design and a laptop with no compilers, etc. (and no internet access if need be) and get something going very quickly. But I think you need a display so you can do the oscilloscope and similar products. -- Charlie Springer
Reply by ●November 10, 20082008-11-10
On Sun, 09 Nov 2008 18:01:03 -0500, in comp.arch.embedded Rich Webb <bbew.ar@mapson.nozirev.ten> wrote:>On Sun, 9 Nov 2008 12:30:55 -0800 (PST), Mike Silva ><snarflemike@yahoo.com> wrote: > >>On Nov 9, 2:40�pm, Rich Webb <bbew...@mapson.nozirev.ten> wrote: >> >>> Sparkfun has a lot of dev boards and project ideas. A good "get your >>> feet wet" project could be to read the voltage at an A/D port and >>> display the results on a generic HD44780-based character LCD display >>> (these are widely available as inexpensive "surplus" if you're not >>> overly particular about the size of the display). >> >>Funny you should suggest that. I just wired up a little comms test >>unit with an AVR ATmega48, 3 slide pots and an LCD display, to send >>out test commands and data over an RS485 line. The LCD display comes >>from a batch I must have bought 20 years ago, and then forgot I had >>them. It works just fine. The linear slide pots I just bought from >>Mouser, OTOH, turn out to be audio taper. Oh well, not a big deal for >>my purposes. > >Yup. I agree with your earlier post that one of the first things to >learn is how to properly interact with a chip's interrupt structure. My >generic Hello, World for a new microcontroller (and, I suspect, many >other folks do this too) is to toggle a selected I/O pin at a 1 Hz rate >based on a timer interrupt. That gets most of the kinks out of the tool >chain and gives a basic understanding of the chip and its peripherals. > >The HD44780 interface, though, is a good learning tool. RS, R/W* and E >do what? How does the crazy initialization work? Read the busy bit or do >fixed intervals? If the busy bit, what to do if the display is unplugged >and not-busy never occurs? Embedded development means it's embedded in >or with something else and understanding the incomplete, incorrect, or >contradictory documentation for that something else, and often building >a benchtop model of parts of it, is a big part of the game.FYI I'm just doing my first 44780 LCD/AVR project, and I found this software http://homepage.hispeed.ch/peterfleury/avr-software.html#libs which seems quite comprehensive. It compiles OK with WinAVR and Atmel Studio4 martin