LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer
User Name
Password
Linux - Embedded & Single-board computer This forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.

Notices


Reply
  Search this Thread
Old 07-23-2015, 01:03 AM   #1
wh33t
Member
 
Registered: Oct 2003
Location: Canada
Posts: 922

Rep: Reputation: 61
Cool Career Talk - Join in and share!


Hey LQ,

I've been reflecting recently how much I've improved with Linux and programming in general over the past few years of my life and I found that kind of strange because I sort of just fell into this career path. I've always been savvy with a PC as I've had one and private tutors since I was 11 and I took a few programming classes in High School and just kept finding work in this field, but I always figured my passion and talents would lie in hardware development. Designing electronic circuits and making robots, that sort of thing.

I bought an Arduino UNO but just can't seem to really allow myself to dump time into it because I could always be spending it programming something. So this all got me thinking, do any of you out there have experience working on the hardware side of embedded devices? What's it like? How would you compare it to programming and software development?

Also curious if any other programmers out there are intrigued by things like Arduino and the Pi but haven't managed to play with them yet?
 
Old 07-23-2015, 01:17 PM   #2
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,882
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930
Yes familiar with the hardware side of things from pure embedded processors which run no OS at all, up to embedded Linux architectures where pseudo real-time data gathering is performed.

I don't know what to tell you as far as advice, but also know volumes to tell.

@ON-Soapbox

What you're really talking about is embedded programming.

There is a forum on LQ covering that. Not much activity, but here it is Linux - Embedded & Single-board computer. Further, there are a few groups on LinkedIn covering embedded, not just for Linux.

My degree is Electrical Engineering. I have always worked on embedded devices which are more lower level software, or firmware, that is very closely coupled to the hardware. We work in a world where we measure signals timing and levels to validate that things are happening or that things are correctly hooked up. For instance an interface may need to be configured properly, it may need to be electrically tied high or low to option something to operate a certain way or allow the interface to operate as intended. The pin or interface may be an input or an output with respect to the CPU or some other chip. For things like I2C or SPI interfaces, we pay attention to the signal levels, the timing (clock) as well as the, signal sequence requirements for that interface. From there you next need to worry about the specification for the particular device you're talking too, which means reading the chip spec. For things like serial communications, we worry over how to derive the baud rate from the clock rate and divide down registers, as well as the voltage level for the serial connection. Same for things like a USB interface, electrical, signals, and then the actual driver to talk to it. Next we may worry about interrupts for TX or RX and the associated buffers we need to establish to clock in or out data. For things like A2D conversion there are issues like controlling the cycle time of signals so that we give the A2D enough time to acquire a measurement, and we may have to worry about the precision of the bits we have and whether or not the input signal needs to be scaled somehow to allow for maximum range of measurements within the bit precision we have available; or we may need more bits to represent a valid measurement. Other things might be controlling direct memory access (DMA) controllers, and just generally designing an architecture to be able to fulfill the design needs but be capable of operating. To couple both of those ideas, we had to control the acquire time for a bank of A2D where they dumped their measurements into a DMA. This involved ensuring that we were not accessing the memory and that electrically all was set for the A2C to perform it's writes. And then service the interrupt that indicated that acquisition was complete. Chips have register configuration settings to control all this, but one needs to read up on their spec and understand how it all works. And there's also the situations where the documentation is slightly incorrect and you have to find out via the web, your own experimentation, or customer support forums. There never seems to be enough resources, due to feature creep, you start with a fully capable processor choice, and then the customer adds tons of added wants and features and suddenly you are out of real-time; meaning you cannot fulfill all these tasks in sufficient time and you do not have enough processing bandwidth.

So ... for experimentation. I say, buy a Raspberry Pi and read up on many of the experimental projects where people do stuff like wire up a real-time clock over the I2C and get that working. Then add stuff like a temperature measurement device or a programmable resistor. Stuff which is analog as well as digital. Add things that you talk to via GPIO, like a keypad or some switches. Be aware that as you get more sophisticated, that you'd be advised to have an Oscilloscope and a multimeter, as well as some savvy with soldering electronic components, or at least breadboarding capabilities to get more deeply involved.

And then pick how far you wish to go. Obviously one can go very far, but it grows increasingly complex, and obviously the normal persons run out of initiative and personal horsepower, as you're advertising in your initial thoughts. Obviously working in that field, being required to produce results, and having a team of peers around to toss ideas with helps immensely, as well as the infrastructure where the company owns many scopes, analyzers, and has the capabilities to create electronic boards and such, or just buy development kids in support of our efforts. That can be done on the cheap, just you'll come close to maxing out at some point either with ideas, initiative, dollars, or some combination thereof. And there are people who have unlimited initiative, ideas, etc and they find ways to do their projects. The rare few continue just playing. Mainly the best eventually end up working in a situation which profits them personally, either via salary or if they develop a product which they sell.

Note that Arduino is a processor, and Raspberry Pi is a System on Module which uses an ARM processor.

Another very important point that I've learned over the years: Sorry CS people!

Those with Computer Science degrees know a TON about algorithms, modeling stack size, Turing machines, etc. They do not have training, in general, to inform them about things like Microprocessor design, or the design of an Arithmetic Logic Unit, and therefore they don't understand how instructions are CREATED in silicone. As a result, they are hobbled somewhat when it comes to hardware understanding. We once discussed a finite state machine design and decided to swap it out from one formulation to another, the EE's got it, the CS's did not. But ... then again we were talking about a set of "terms" Moore versus Mealy. These days one can just google that and get it. And further, it wasn't as if the CS people could not understand it, they could easily. But it highlighted to me the difference in training. And when other subjects came up like the electrical signal levels needed for interfacing to a chip, the CS people became very much hands off. Some liked it and went in that direction. So you have to have an inclination to do that stuff and not let minor setbacks halt you, but instead be tenacious and debug something so you understand it. If that's not you, then likely you're not inclined to be strongly involved with embedded programming, but maybe the periphery where most of the connections are standardized and can easily be set up with minimal debug is OK for you.

@OFF-Soapbox
 
1 members found this post helpful.
Old 07-23-2015, 03:46 PM   #3
onebuck
Moderator
 
Registered: Jan 2005
Location: Central Florida 20 minutes from Disney World
Distribution: Slackware®
Posts: 13,925
Blog Entries: 44

Rep: Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159
Moderator response

Moved: This thread is more suitable in <Linux - Embedded & Single-board computer> and has been moved accordingly to help your thread/question get the exposure it deserves.
 
1 members found this post helpful.
Old 07-23-2015, 05:49 PM   #4
wh33t
Member
 
Registered: Oct 2003
Location: Canada
Posts: 922

Original Poster
Rep: Reputation: 61
rtmistler:

Thank you for such a lengthy reply. I've come to conclude I have no interest what-so-ever in debugging IC or actually dealing with the way a processor works. I'm much more into the plugging in of components and writing a script to make the system function for which Pi and Arduino look ideal.
 
Old 07-24-2015, 07:35 AM   #5
rtmistler
Moderator
 
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,882
Blog Entries: 13

Rep: Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930Reputation: 4930


Sorry if I scared you. Yes, it is a lot of info. Most people are fine with buying stuff like a Pi and then doing similar experiments they find on the web with kits that are mostly assembled.

Have fun. If you do start stuff and there are questions, you can certainly ask in this forum that the moderator has moved it too. Best to say "this is just me playing or experimenting" when you raise the point so that people will understand that you're interested but it's not a situation where you're hyper crazy about every little detail.
 
Old 07-24-2015, 08:22 AM   #6
onebuck
Moderator
 
Registered: Jan 2005
Location: Central Florida 20 minutes from Disney World
Distribution: Slackware®
Posts: 13,925
Blog Entries: 44

Rep: Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159Reputation: 3159
Member response

Hi,

Yes, it can seems as a daunting and tedious field but it is very rewarding to achieve your designs. One must take steps to understand what you actually need to perform when using digital to interface with this analog world. Fun!
Quote:
"Knowledge is of two kinds. We Know a subject ourselves, or we know where we can find information upon it."- Samuel Johnson
Hope this helps.
Have fun & enjoy!
 
Old 07-25-2015, 10:45 PM   #7
wh33t
Member
 
Registered: Oct 2003
Location: Canada
Posts: 922

Original Poster
Rep: Reputation: 61
Great advice guys.

I'm interested in some day making some simple robotic machines. I seem to be drawn into making some kind of machine that makes simple food dishes for me. Quadrotors, rockets and things that control temperature and such. I'm looking forward to it. I have an Arduino UNO, but I think the Pi or even this new board called https://onion.io/omega, apparently you can write scripts for it in PHP which is a language I'm very comfortable with already.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Cant create a folder inside samba share (join in AD2003) micro_xii Linux - Newbie 3 12-07-2011 08:25 PM
Talk Talk to introduce controversial virus alert system Jeebizz Linux - News 0 11-25-2010 10:01 AM
LXer: Open-Xchange and SugarCRM Join Forces to Integrate and Share Data LXer Syndicated Linux News 0 10-20-2009 05:50 PM
Can't join Windows 2000 domain using net ads join The Cat Linux - Networking 2 09-23-2008 11:41 AM
Unable to join domain using Net Join command in FC3 client jeb083079 Linux - Networking 9 07-30-2007 02:41 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer

All times are GMT -5. The time now is 02:57 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration