LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Software
User Name
Password
Linux - Software This forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.

Notices


Reply
  Search this Thread
Old 05-10-2008, 09:50 AM   #1
PatM
LQ Newbie
 
Registered: Mar 2008
Posts: 27

Rep: Reputation: 15
Gui App language for embedded platform?


I'm looking for suggestions as to what would be a good language for developing a gui application on a busybox based system. I have just 64mb ram and 64mb flash so its got to be small and not require XWindow. I'll be using jffs2 on NAND flash during development and probably end up using cramfs with a seperate data partition to save data to. I figure that'll make my 60MB of flash (-1.5mb for kernel & ubootscript, -2.5mb for data partition) seem more like 90-100 mb.

The App has to talk to serial ports and to custom devices over ethernet as well as display locally in a framebuffer and take input from touchscreen, keyboard, and mouse.

I'm quite good with basic languages; my favorite is Bascom AVR for Atmel AVR chips. I also used to love Visual Basic until M$ destroyed it by dressing their C++ compiler up as a Basic language and tossing everything that made VB6 a joy to use.

I have done a fair bit of PHP/Web programming in the past (live postgres db on the web kind of thing). I've not done anything with Pearl but I'm thinking Pearl would be both too big and too slow.

I've done a little bit of Java applet programming in the distant past so I could probably manage with Java apps or applets.

I find C fairly easy to understand and I half-way understand pointers (concept is easy but I get lost when I start getting into pointers to pointers etc). Where the C family really loses me is with all the complexity around getting from source to binary. I haven't tried it since about Redhat 6.0 but I couldn't make heads nor tails out of gcc back then. I'd just like to write the code, issue a compile command, then try the binary (like with Bascom AVR).


I'm also thinking of running a basic webserver to show live data and was thinking perhaps a Java App/Applet could serve as both local display/UI as well as remote UI but I don't know how resource heavy Java is or how big it ends up being once all the dependencies are installed. If httpd is too big then I'll have to write a seperate GUI for windows boxes and have that get the information directly from the embedded app.

Googling the topic really only showed Qtopia and Microwindows (forget the new name for it) but didn't go into development packages other than mention C and C++.

So, what would people suggest that I look at?
 
Old 05-10-2008, 11:15 AM   #2
Su-Shee
Member
 
Registered: Sep 2007
Location: Berlin
Distribution: Slackware
Posts: 510

Rep: Reputation: 53
As Linux is used for many, many different kinds of embedded platforms, I suggest you click through http://www.linuxdevices.com - a site strongly recommended to get some inspiration and a broad overview of what is possible.

About Perl (which is anything but slow...) and other programming languages: they usally bring some kind of micro/tiny/embed/younameit version to be used on embedded systems. Example: S-60 based Nokia cell phones support Python as "do your own stuff" programming language.

How well they work with their Qt/Gtk-versions on embedded systems: No idea, never tried.

As a different example for kind-of embedded systems with much GUI stuff involved, check out the open source cell phone "Open Moko" which is based on Gtk as a comparision to Qtopia.

And the C compiling stuff isn't that difficult, check some tutorials, play around a bit and you'll get used to it, really. It's all very well documented. (From source to binary is actually just gcc -o yoursupadupabin yoursource.c as a first step... ) The complex part is do get all your files and dependencies and libraries together and make it a smooth cross compiling environment and - if you like them - make it all work with some IDE, write the make files and configure stuff and so on. But it's managable.

There's also a handful of books on the subject and check out the project "Arduino" which is "programming embedded systems and microcontrollers for the rest of us (seniors, children, artists, people from the humanities department .. " which usally explains all steps involved in an extremely userfriendly way. Because it's an AVR/Atmel-based platform, you'll find some info especially about gcc-avr handling. The app you're describing is exactly the basic stuff discussed around the Arduino - so even if you use something different, you'll find useful introductions.
 
Old 05-10-2008, 11:20 AM   #3
jiml8
Senior Member
 
Registered: Sep 2003
Posts: 3,171

Rep: Reputation: 116Reputation: 116
for what you are describing, your only choice is C and assembler.

You can run apache if you have the room which will let you remotely manage your embedded box, but you can't use it locally because apache expects to output to a web browser and web browsers take X. Of course, there is Lynx, so maybe you could do it that way.

What you describe yourself needing implies programming at a level well below any you appear to have done before. Have fun; it is a whole different world when you start mucking around with the hardware.
 
Old 05-10-2008, 08:11 PM   #4
PatM
LQ Newbie
 
Registered: Mar 2008
Posts: 27

Original Poster
Rep: Reputation: 15
Thanks for the info and good catch jim18... No local web browser without X - of course.

Without X I seem to have oodles of RAM (only about 2 megs used by kernel and system since I don't need udev, hal, dbus, etc). I can just barely run xfce4 under debian and use dillo or smaller utilities from xfce/gpe. One wrong step and I'm toast though. Interestingly, I added a USB HD which eats up 8 megs of ram for a cache (start with 10mb used instead of 2) and a swap partition. I thought swap would make things slower yet allow me to run heavier apps. I was half right - it does allow me to run heavier apps. The strange part being that everything seems faster despite the paging. Unfortunately, the project won't be able to use anything except onboard flash in the end so the HD is just for convenience while developing.

I've heard of Arduino. I think Sparkfun carries some boards.
 
  


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
Simple Cross-Platform programming language? Romanus81 Programming 13 04-07-2008 07:57 PM
LXer: Com One Phoenix Wi-Fi radio rises from embedded Linux platform LXer Syndicated Linux News 0 02-29-2008 04:20 PM
embedded linux for java app lbdgwgt Linux - General 0 10-05-2006 12:53 AM
cross platform calendar app? Face1 Linux - Software 1 08-01-2006 04:14 PM
barcode software for any platform/language nadroj Programming 8 01-16-2006 04:55 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Software

All times are GMT -5. The time now is 07:20 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