On 2008-11-09, Scott <ScottDSellers@googlemail.com> wrote:> > 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.I see a lot of people are already talking about specific evaluation boards which are good advice for the first foray into embedded programming but for me that is missing an intermediate step. If you only know Delphi then you are right - you need to learn more about general software software development. What languages did you learn at Uni? I was taught four - C, SML, Java and MIPS assembler. All those languages are fundamentally different in nature and require you to think in different ways. One you are competent with a range of languages such as these, switching to another language is annoying and inconvenient, but nothing more than that because you can put e.g. your SML hat on while getting to grips with Haskell or whatever. Even my four doesn't cover all eventualities, since e.g. stack based languages like Forth and PostScript are different again, but I found I had sufficient background to easily get to grips with PostScript at least, when I needed it. The language of choice for most embedded work these days is C (not C++) so I suggest learning that if you are not already competent in C. Learn it well and I'd recommend a particular focus on low-level implementation of various data structures, since that is the biggest culture shock compared to higher level languages. A knowledge of assembler is also useful background - it doesn't really matter for what chip (although x86 is probably the wrong place to start) and it needn't be particulary thorough - just enough that you know what is happening under the hood. Once you know C well, and roughly how C language structures correspond to machine instruction sequences then you will have a much deeper understanding and at a lower level. Then is the time to start thinking about eval boards. -- Andrew Smallshaw andrews@sdf.lonestar.org
New to Embedded Software
Started by ●November 9, 2008
Reply by ●November 10, 20082008-11-10
Reply by ●November 10, 20082008-11-10
Rich Webb wrote:>... snip ...> > 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.I assume you are talking about the display interface. You can't use the busy signal until after initialization is complete, so you will have to depend on local delays, such as counting instructions. After initialization is complete you can use the busy bit. Read the docs - it is quite straight forward. -- [mail]: Chuck F (cbfalconer at maineline dot net) [page]: <http://cbfalconer.home.att.net> Try the download section.
Reply by ●November 10, 20082008-11-10
Scott wrote:>... snip ...> > 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.You need to know about hardware, C, assembly language, and most important, be able to think. With luck you will get into systems that use better languages, such as Pascal and Ada, but don't count on it. -- [mail]: Chuck F (cbfalconer at maineline dot net) [page]: <http://cbfalconer.home.att.net> Try the download section.
Reply by ●November 10, 20082008-11-10
On Mon, 10 Nov 2008 16:47:11 -0500, CBFalconer <cbfalconer@yahoo.com> wrote:>Rich Webb wrote: >> >... snip ... >> >> 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. > >I assume you are talking about the display interface. You can't >use the busy signal until after initialization is complete, so you >will have to depend on local delays, such as counting >instructions. After initialization is complete you can use the >busy bit. Read the docs - it is quite straight forward.Thanks, CB, but I'm well aware of the HD44780 init sequence, having done one in C or assembler for several processor families. The reason that I suggested that task to the guy wanting to get his feet wet in embedded development is that the docs are probably NOT going to be straightforward to somebody not accustomed to bit-twiddling, setup/hold requirements, and the like. The "questions" above were some, not all, of the things the OP might need to think about. -- Rich Webb Norfolk, VA
Reply by ●November 10, 20082008-11-10
Keil do good compilers etc and you can get limited evaluation versions. Their Demo / prototyping boards are good value and there are lots of example projects. A few key things - multi threaded – you must master this. If you have a motor that must be controlled then that must be controlled all the time, and can't wait for user input, so user your Delphi to gain experience of Multi Threaded applications and how to ensure they never give a wrong result. This is fairly new on the desktop - but in the embedded world everything is multi-threaded. In the embedded world crashes are not permitted, so worry about how your multi threaded applications guarantee that the data is never corrupted. Also how would you detect a failure and gracefully recover from it. Peter Eden Electronics The embedded system Specialists www.eden-electronics.co.uk
Reply by ●November 11, 20082008-11-11
On Nov 9, 10:55=A0am, "FreeRTOS.org" <noem...@given.com> wrote:> C is still king in the lower end embedded market. =A0When I think of lower end embedded market I think mostly of 4-bit and 8-bit, <$0.10, <256bytes RAM. C hasn't been king there as far as I know. Best Wishes
Reply by ●November 12, 20082008-11-12
On Nov 11, 2:21 pm, Jeff Fox <f...@ultratechnology.com> wrote:> On Nov 9, 10:55 am, "FreeRTOS.org" <noem...@given.com> wrote: > > > C is still king in the lower end embedded market. > > When I think of lower end embedded market I think mostly of 4-bit > and 8-bit, <$0.10, <256bytes RAM. C hasn't been king there as > far as I know.RAM is irrelevant with choice of language. You need same amount of RAM for data structures in C or ASM. Program code is more of an issue with C. But with 16K of 8 bits code space for $0.25 (including LCD controller), who cares about code inefficiency.
Reply by ●November 12, 20082008-11-12
linnix wrote:> On Nov 11, 2:21 pm, Jeff Fox <f...@ultratechnology.com> wrote: >> On Nov 9, 10:55 am, "FreeRTOS.org" <noem...@given.com> wrote: >> >> > C is still king in the lower end embedded market. >> >> When I think of lower end embedded market I think mostly of 4-bit >> and 8-bit, <$0.10, <256bytes RAM. C hasn't been king there as >> far as I know. > > RAM is irrelevant with choice of language. You need same amount of > RAM for data structures in C or ASM. Program code is more of an issue > with C. But with 16K of 8 bits code space for $0.25 (including LCD > controller), who cares about code inefficiency.When all the resource you have is 256 bytes RAM and 4k Code space then you do tend to need to pay very close attention to what is assembled or compiled and what data-structures are being used and when. ;> -- ******************************************************************** Paul E. Bennett...............<email://Paul_E.Bennett@topmail.co.uk> Forth based HIDECS Consultancy Mob: +44 (0)7811-639972 Tel: +44 (0)1235-811095 Going Forth Safely ..... EBA. www.electric-boat-association.org.uk.. ********************************************************************
Reply by ●November 12, 20082008-11-12
Jeff Fox wrote:> When I think of lower end embedded market I think mostly of 4-bit > and 8-bit, <$0.10, <256bytes RAM. C hasn't been king there as > far as I know.Do you have an example of a microcontroller for <$0.10? How many do you need to buy for this price? One of the cheapest microcontroller I've found, but still with some nice features, is this one, for $0.36, if you buy 7,500: http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=MC9RS08KA1CSCRTR-ND But maybe it costs even less, if you order a million of it. -- Frank Buss, fb@frank-buss.de http://www.frank-buss.de, http://www.it4-systems.de
Reply by ●November 12, 20082008-11-12
On Nov 12, 11:02 am, Frank Buss <f...@frank-buss.de> wrote:> Jeff Fox wrote: > > When I think of lower end embedded market I think mostly of 4-bit > > and 8-bit, <$0.10, <256bytes RAM. C hasn't been king there as > > far as I know. > > Do you have an example of a microcontroller for <$0.10? How many do you > need to buy for this price? > > One of the cheapest microcontroller I've found, but still with some nice > features, is this one,1K flash is quite useless.> for $0.36, if you buy 7,500:We found one with 16K ROM for $0.25 at 25,000 pcs. Our C compiled app is around 8K, so plenty of room to grow.> http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail?name=MC9R...You have to search outside digikey, if you are serious about cost.