LinuxQuestions.org
View the Most Wanted LQ Wiki articles.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
Search this Thread
Old 11-20-2012, 11:44 AM   #1
fifer253
LQ Newbie
 
Registered: Nov 2012
Posts: 4

Rep: Reputation: Disabled
Finding a development enviroment and language for Slacko Puppy with physical I/O


Hello All, I am working on a robot project using a solid state computer as the main brain. here is a link to my build blog http://letsmakerobots.com/node/34827
anyway, I am totally new at this, I haven't ever created a functional program that runs on a computer, only microcontrolers. I sucessfully installed Slacko Puppy on my computer, and I was wondering what would be a good development enviroment to install, and what language you would suggest for a total beginner. I need to have serial, parallel and possibly USB I/O support, and would also really rather program in a procedural language than an object oreinted one. I have a little (very limited) experiance programing with basic and C type languages for microcontrolers.
any help would be appreciated.
 
Old 11-20-2012, 02:30 PM   #2
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,395
Blog Entries: 2

Rep: Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903
Will your target host use an OS (if so, which?) or will you be programming bare metal? If you are using a Linux OS with a kernel similar (better, identical) to the development host, then you can just use the native compiler and libraries of your Linux development host. If programming bare metal, then you will need a cross development toolchain. There are a number of tools avaialable for building cross toolchains; my preference is Croostool-NG. I'm not sure what other OS's are supported by crosstool-ng, perhaps RTEMS. vxWorks and other commercial OSs will come with their own cross toolchain to run on your development host.

--- rod.
 
Old 11-20-2012, 03:32 PM   #3
fifer253
LQ Newbie
 
Registered: Nov 2012
Posts: 4

Original Poster
Rep: Reputation: Disabled
Quote:
Originally Posted by theNbomr View Post
Will your target host use an OS (if so, which?) or will you be programming bare metal? If you are using a Linux OS with a kernel similar (better, identical) to the development host, then you can just use the native compiler and libraries of your Linux development host. If programming bare metal, then you will need a cross development toolchain. There are a number of tools avaialable for building cross toolchains; my preference is Croostool-NG. I'm not sure what other OS's are supported by crosstool-ng, perhaps RTEMS. vxWorks and other commercial OSs will come with their own cross toolchain to run on your development host.

--- rod.
What do you mean by target host and development host? if you mean the computers I will be developing code on, I am using the same computer for both. running Slacko Puppy linux.
 
Old 11-20-2012, 05:01 PM   #4
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,395
Blog Entries: 2

Rep: Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903
Then I don't understand the question. Is there not a native toolchain on your development host? If not, it should be simple enough to put one there. If not that, then use a distro that makes it easy to do so.
Software development for embedded systems is most often done with a development environment that includes the full range of compilers, linkers, and sundry other tools, with the target host being rather more spartan and resource thrifty. It is not unheard of to use the target as the development platform, if it is sufficiently equipped with CPU/memory/disk resources, which sounds like your circumstance.

--- rod.
 
Old 11-20-2012, 06:06 PM   #5
fifer253
LQ Newbie
 
Registered: Nov 2012
Posts: 4

Original Poster
Rep: Reputation: Disabled
Quote:
Originally Posted by theNbomr View Post
Then I don't understand the question. Is there not a native toolchain on your development host? If not, it should be simple enough to put one there. If not that, then use a distro that makes it easy to do so.
Software development for embedded systems is most often done with a development environment that includes the full range of compilers, linkers, and sundry other tools, with the target host being rather more spartan and resource thrifty. It is not unheard of to use the target as the development platform, if it is sufficiently equipped with CPU/memory/disk resources, which sounds like your circumstance.

--- rod.
I did post this in the newbie section, so, altho maybe I ought to, I do not know really what you are saying, as one learning another language might say, speak sloowwwlllyyyy please. a native toolchain is what? keep in mind I am very new at this. if I am frustrating you with my lack of knoledge, I applogise, but we all have to start somewhere.

To clarify, I have a small computer running puppy linux which will be mounted on my robot when it is compleate, the computer has a 1.8 GHz intel processer on it, with sufficiant ram and program space to act as an, as you say development host, and still run the programs I write on it as a target host. I will be writing/developing code and then running it on the same computer. what I am asking, is does anyone know of a fairly beginner frendly enviroment that I can develop, debug, compile etc in, and being a total beginner, I am open to suggestions of any language that might be a good place to start with.
 
Old 11-21-2012, 11:19 AM   #6
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,395
Blog Entries: 2

Rep: Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903Reputation: 903
Programming embedded systems has mostly been done in C, although other languages are certainly in play, particularly Java in more recent times. Most embedded systems developers don't use GUI/IDE thingies. In Linux, the two most prominent of those are Eclipse and Netbeans. I suggest not using either of them, especially if you are just starting out. Learn the basics of how to write C/C++ source code, build it into object code, and write Makefiles to codify your build recipes. Find an editor you like, and just use that to write your code. After you understand what mechanisms are used to build programs, then perhaps migrate your project to a GUI IDE.

In Linux, most distros include a full set of language compilers and interpreters. The 'native toolchain' is a suite of mostly C/C++ compilers, as well as linkers, assemblers, debuggers, etc. This is known as the Gnu cc toolchain. It is used to build software that will run on the same host architecture as the toolchain. It is possible to use a toolchain that will create object code that runs on one or more other host architectures (cross toolchains for cross development). There will normally be installed or at least freely available, a wide range of other programming languages: Perl, Python, Ruby, Java to name a few.

As well as programming languages, there is an abundance of ready-to-use code that is distributed as object code libraries. These are normally callable from C/C++, but usually have bindings to a number of popular languages such as the ones I mentioned above. These are intended to do the heavy lifting for special purposes that may take special expertise or considerable effort to develop. Examples include libraries for decoding & encoding specific file formats, scientific and engineering functions, access to special system services and hardware, networking, graphics, etc.

You say you have done microcontroller programming before. What programming language(s) did you use for that? What was your development environment for that? Choosing a language that allows you to build on you previous experience seems to make sense to me. It will also be generally useful to learn some bash or other shell scripting if you are going to use Linux for software development.

--- rod.

Last edited by theNbomr; 11-21-2012 at 11:23 AM.
 
2 members found this post helpful.
Old 11-21-2012, 07:45 PM   #7
fifer253
LQ Newbie
 
Registered: Nov 2012
Posts: 4

Original Poster
Rep: Reputation: Disabled
Quote:
Originally Posted by theNbomr View Post
Programming embedded systems has mostly been done in C, although other languages are certainly in play, particularly Java in more recent times. Most embedded systems developers don't use GUI/IDE thingies. In Linux, the two most prominent of those are Eclipse and Netbeans. I suggest not using either of them, especially if you are just starting out. Learn the basics of how to write C/C++ source code, build it into object code, and write Makefiles to codify your build recipes. Find an editor you like, and just use that to write your code. After you understand what mechanisms are used to build programs, then perhaps migrate your project to a GUI IDE.

In Linux, most distros include a full set of language compilers and interpreters. The 'native toolchain' is a suite of mostly C/C++ compilers, as well as linkers, assemblers, debuggers, etc. This is known as the Gnu cc toolchain. It is used to build software that will run on the same host architecture as the toolchain. It is possible to use a toolchain that will create object code that runs on one or more other host architectures (cross toolchains for cross development). There will normally be installed or at least freely available, a wide range of other programming languages: Perl, Python, Ruby, Java to name a few.

As well as programming languages, there is an abundance of ready-to-use code that is distributed as object code libraries. These are normally callable from C/C++, but usually have bindings to a number of popular languages such as the ones I mentioned above. These are intended to do the heavy lifting for special purposes that may take special expertise or considerable effort to develop. Examples include libraries for decoding & encoding specific file formats, scientific and engineering functions, access to special system services and hardware, networking, graphics, etc.

You say you have done microcontroller programming before. What programming language(s) did you use for that? What was your development environment for that? Choosing a language that allows you to build on you previous experience seems to make sense to me. It will also be generally useful to learn some bash or other shell scripting if you are going to use Linux for software development.

--- rod.
The programing I have done is just a little psudo "picaxe basic" used for programing picaxe chips, and some programing in arduino. I think I will give python a try, start there, then learn more complex languages from there
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

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
Installing Puppy slacko 5.3.3 to or Icy Slacko 5.3.2.4 to my laptop sevenjen Puppy 1 07-12-2012 09:05 PM
LXer: Puppy Slacko's no slouch LXer Syndicated Linux News 0 07-01-2012 05:50 PM
LXer: Puppy Slacko: different, but the same LXer Syndicated Linux News 0 05-15-2012 03:50 PM
puppy linux slacko robertbarikana Linux - Newbie 2 03-16-2012 05:15 PM


All times are GMT -5. The time now is 10:26 PM.

Main Menu
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
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration