EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

New to Embedded Software

Started by Scott November 9, 2008
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
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.
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.
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
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 &ndash; 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

On Nov 9, 10:55=A0am, "FreeRTOS.org" <noem...@given.com> wrote:
> C is still king in the lower end embedded market. =A0
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. Best Wishes
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.
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.. ********************************************************************
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
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.

The 2024 Embedded Online Conference