I'm an Undergrad student studyin Electronics Engg. As part of my course I've sudies 8051 and PIC microcontrollers. I find that I'm greatly interested in Embedded Systems design. However, the flood of info. on the net has me confused. Where should I begin? I've done (or doing) the following :-
1) Studied Assembly Language Programming of 8051/PIC micros
2) Learning Linux with Redhat
3) Got hold of a list of Embedded Linux books that I'm gonna buy this weekend
Anything i can do more? What are the companies working on Embedded Sys? Is there any Ametuer resource for guys like me? (I'm also searchin Google right now, not happy with the results).
Grateful if any of you can take time of to post a reply.
Devyn, how about starting with a small project? Check out
formatting link
, for example, for proto boards, projects, etc. For me, it is the combination of understanding/designing/building stuff that makes electronics interesting. -- Mike
Time to start building stuff. Snag yourself a cheap scope and logic analyzer off of ebay and design something. Start with some simple blinkenlights and go from there. Nothing impresses me more in an entry-level job candidate than them being able to pull out a piece of working hardware software that they built themselves.
Hi! Yeah. I realized that sometime ago. I've built 2 small applications :-
1) Light Guided Rover - 8051 based rover that goes straight or takes left/right turn based on light stimulus (such as a flashlight on the left/right sensor)
2) Keypad Interfaced PIC Clock - A simple app. Takes in time set from user, displays real time on 7 segment LED disp. I'm working to include an alarm and somehow try and bring in the watchdog timer to good use.
I felt that these were too amateur and needed a linux based project. Am i right in thinking so?
Well, if you're into Linux, then sure! But there are a lot of other directions.
I think your idea of going through books is a good idea, but you should take a look at what is out on the Internet, too. Check out the piclist (piclist.com). Microchip.com has a ton of application notes and sample projects. Those two URL's I mentioned earlier are a good resouce. You can also see a lot of interesting things people in this group have done if you search the archives on google.
The last project I did had a Rabbit Semiconductor based control board, which gave my project the ability to communicate through LAN systems and the Internet. I don't have much info online right this second, but you can check it out,
formatting link
.
Oh, there you go. Check out rabbitsemiconductor.com . They have a pretty good product line. Maybe your next project can be something like a motor control (garage door opener?) that you can operate over the Internet.
The eight bit processors are far too small for Linux. However, it does not mean that they could not be applied to something useful. A full-blown operating system (e.g. Linux) is far too heavy for the microcontroller-size embedded projects.
What you need: - understanding of the electronics of an embedded system, - understanding of the machine code of the target processor, - plenty of patience, and - a real project.
The electronic understanding is a basic requirement: in most embedded systems the processor is an essential part of the electronics, and a good balance has to be found what to implement in hardware and what in software (in this environment often called firmware). Often it's possible to simplify the hardware to trivial by pushing the complex items to software.
The machine code understanding is essential after something does not work as intended and you have to roll up your sleeves and dig into the dirty basics. It's also very enlightening to read through the assembly code produced by a compiler - there are often surprising differences between what you intended to code and what the compiler has done. You can often tweak the source code and evade the need to use an assembler module instead.
The need for patience is self-evident. I just have fresh experience after three days of EMC testing and repairs (both electronic and software) for an embedded system.
The real project will give you an opportunity to excercise the above skills.
IMHO, if you need something more than an eight-bit processor, I'd pick a flavour of ARM.
This sounds like fun, but I'm too practical for this kind of thing.
I like clocks, so this seems a better pick to me.
As a student, you might not fully appreciate this but a clock idea I've had is a "meeting clock." A meeting's attendees enter their hourly rate and the clock accumulates the cost of the meeting as time elapses.
I don't think so. Embedded programming is as much about hardware as it is software, and you'll learn a bunch building these. Hint: As you're designing and building these, consider what you might need to do differently if you were going to manufacture 10,000 of them rather than just one!
--
========================================================================
Michael Kesti | "And like, one and one don't make
| two, one and one make one."
mkesti@gv.net | - The Who, Bargain
Thank you for the replies. Most of my profs. have been telling me to avoid linux because its uneccessary for the kind of projects I do. Well, I couldnt agree more. But the thing is, as with my other projects, I realise that there's no better way to learn about a device than to actually work on it. Books and the net cant take you as far as projects will. My other projects may seem pointless, but the fact is that they helped me know the devices inside out, program optimizing (esp. the rover; its ALP was marvelous), cross compilers and the like.
So, here's what I'll do :-
Stick to C and cross compilers, tweaking the assembly they generate. Work on a better project. In fact, I was already on it. I got this idea from a micro-controller site. These guys controlled a stepper motor over the net. I thought I could use a PIC (for starters; ARMs are something i'm just beginnig to understand. I'm more confident with PIC) as a Data Aquisition sys. for a comp. online and implement an actuator elswhere. All controlled over the net. It'll take some time before I can come with application that I can really put on paper, but anyhow, I've made start.
The vast majority of embedded systems do not use an OS mush less something like Linux with is NOT an RTOS. I would not bother with Linux unless you are looking at 32 bit systems and that is not the place to start if you want to do the HW as well.
BTW about 1 in 3 embedded systems in the world is an 8051, About 80% are
8 bit systems in general. It depends where you want to go.
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ \/\/\/\/\ Chris Hills Staffs England /\/\/\/\/\ /\/\/ snipped-for-privacy@phaedsys.org
Linux won't help a bit with embedded micros, move on to the three or four main languages used, Basic, Assembler and Forth. Secondly I suggest that you discover your field of interest for that should determine both the micro and tools used. Only then should you delve into detail.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.