We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, Sorry if this is a long thread but i'm really confused.
I program for AVR MCUs and also know about Arduino, I can program for different ATMEL MCUs with looking at datasheets, And i also programmed a few basic stuff on Cortex-M3 LPC1768, without any os, when i came across the OTG and NET example, it freaked me out ! made me think about using an OS As i am aware of an OS like linux can save me so much trouble!, so i bought Raspberry pi , but realized that stuff written for Rpi only works for Rpi, it uses special libraries, What im looking for is to learn how to write program for ARM SoCs with custom boards or any other boards like Raspberry pi, If i for example want to make a smart lcd for a fridge, i can't include the whole raspberry pi board into fridge, because its big and has unnecessary features(usb etc)! So i want to be able to make my own board specially for that fridge (i know its not that simple)
stuff like Arduino and Raspberry pi sound like hobby stuff, and im not looking for hobby stuff !
What im asking is How can i start with Embedded ARM Linux(maybe OS or RTOS?) programming? i know absolutely nothing but how to program a AVR or Cortex M3 about embedded stuff! where can i start learning? im not looking to just make stuff for hobby and only make my project work!
I can say that i want to learn to make products similliar to these examples they don't use raspberry but Linux with an ARM SoC:
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=10&cad=rja&uact=8&ved=0CFQQFjAJ&url=http%3A%2F%2Fen.wikipe…
Nest Labs - Wikipedia, the free encyclopedia
Im not sure if nest one uses ARM SoC, also sphero uses ARM Cortex-M4 but im not sure if its bare-metal or has any kind of helping OS ! but i want to make stuff like that !
Ar.drone uses Parrot 6 ARM9 468 MHz processor (the old one)
EDIT: i also heard about android, i thought android is a OS like Ubuntu meant for User devices ! how can i use that for embedded 0_0?
kamhagh, Apologies if this is offending but I senses a lot of confusion in your post.
Basically, there are various ways you can develop a product - Developing your own SOC or developing a MCU based product using either no OS or using some RTOS (like FreeRTOS or RTX) or using a high-end processor like the Cortex-A and developing a generic OS based solution (Like using Linux or even Android) or you take some generic board like Raspberry Pi, Beagleboard, beaglebone and develop your application on that.
It depends on your product specifications which include the cost, size, power, features, volume (prototype or mass production) and so on...
If you just want to develop your product faster and are not bothered about the underlying hardware, then projects like mbed, Raspberry Pi, Beagleboard, Beaglebone, ODROID, Juno etc. should help.
All of these are based on ARM processors in different ways. For e.g. the mbed uses mostly the ARM Cortex-M based MCUs either the M0 or M3 or M4. It is very good way to develop prototype and prove your concept as the ecosystem supporting various add-on boards, the online compiler, examples and the forums, all only help in getting things done quicker. Once your concept is proved, you have a choice to design your own hardware in a different form factor or even using different compiler tools. This concept is almost similar to the Ardunio which uses the AVR you are familiar with.
mbed can be programmed without any OS knowledge but they are also coming up now with the mbed OS.
If you want to use your own hardware from the start, then there are some development kits as well like the STM32F4 Discovery for instance. These kits will give you a starting platform to work on and establish your development tools, programming environment and debugging. You can either develop bare metal code i.e. without an OS or use some OS like FreeRTOS or the Keil RTX. In the former case, there are various examples available from the vendor (again using ST Micro as example, search for the STM32F cube). Usually the vendor will provide the HAL (Hardware Abstraction Layer) which will make things easier to program the MCU and access the hardware. The CMSIS is also very helpful.
For RTOS based projects as well you can get a number of examples from the RTOS website or just google for it.
Whether to use an RTOS or not really depends on your requirements (and your choice). If you want to have IP connectivity, USB, and many other features, it is recommended to use RTOS as it will save your time to code the much lower level calls and will make your application a bit faster. Keep in mind that learning an RTOS is not very difficult though it may be so initially if you have never read about it.
The products you referred to, like the Sphero may or may not be using an OS (It doesn't matter for the end user, does it?)
Projects like Raspberry pi Beagleboard use high end ARM processors which are application processors (and not the MCUs which are more inclined towards control applications). These are in most cases used with a generic OS like Linux. I don't understand why you are saying that 'Program developed for Raspberry Pi' only works on the Raspberry Pi. Making a program generic depends on your skills and which libraries you use etc. Raspberry Pi uses the Debian flavour of Linux so the program should work on Debian based Linux distribution. But these boards are good choice for learning embedded Linux. Remember that embedded Linux is really just Linux but constrained to a smaller hardware than the desktop and is more application specific than being generic. So in other words, you should learn and get a feel of Linux first to become comfortable on 'Embedded Linux'.
Coming back to your project (or product) of a smart LCD for fridge, I guess any Cortex M3 or M4 should be able to do this job but again let me iterate that it depends on your needs and what do you want to show on the display?
Here are some links to help you get started.
STM32F4 Discovery
Beagleboard
mbed
Book for Embedded Linux - But there are hundreds of such books and free training material on the web. Just google for it.
FreeRTOS
Keil RTX
Software Development Tools
STMicroelectronics
An Overview of Juno
ODROID-C1 with Quad-core 1.5GHz ARM Cortex-A5 CPU: What will you build?
Book: The Definitive Guide to the Cortex-M3 and Cortex-M4 Processors
Featured ARMflix Videos
CMSIS
The list could be endless...
Hope this doesn't add to your confusion.
Good luck !!
Actually i was going to say it in thread, i got extremely confused so i made this, as you can see i have no knowledge about Embedded OS(or basically embeded other than Cortex-M bare-metal).
I Already program Bare-metal but i wanted to go one step a head and use an RTOS or an generic OS, the main reason for me to do this was using USB, and its not like i only want to make my project work.and
So in other words, you should learn and get a feel of Linux first to become comfortable on 'Embedded Linux'.
that was exactly what i was looking for I have no idea where to start. I want to be an Embedded programmer and ARM sounds like the best thing for me.
Im reading the links you gave me !
thanks!
EDIT: I can't buy any books in my country Do you know any Online tutorials or free PDFs?
kamhagh wrote: So in other words, you should learn and get a feel of Linux first to become comfortable on 'Embedded Linux'. that was exactly what i was looking for I have no idea where to start. I want to be an Embedded programmer and ARM sounds like the best thing for me.
kamhagh wrote:
Usually the embedded Linux programs would be either C or C++ programs and Shell scripts or scripts in any scripting language. But what makes the embedded Linux development different is dealing with the Linux Kernel. At times, you may need to write device drivers where knowledge of Kernel and the System calls is important. The Linux kernel uses its own system of building and executing thought it is pretty much standard C language.
kamhagh wrote: EDIT: I can't buy any books in my country Do you know any Online tutorials or free PDFs?
Look at this one - http://free-electrons.com/doc/training/embedded-linux/
Or this one - http://www.embedded.com/electronics-blogs/open-mike/4420567/Learning-Linux-for-embedded-systems
Or this one - http://training.linuxfoundation.org/free-linux-training/download-training-materials/10-ways-to-get-started-in-embedded-linux
(p.s. Which country you can't buy books in??? )
I don't have accesses too Paypal or anything,
I live in middle east ! (i don't think i need to say more )
I think i understood the whole Embedded thing wrong, So as i now understand , Even my home Desktop PC when programmed to run only a specific task even in windows 8 or Ubuntu is considered a embedded device ?! (although a terrible option for some stuff) and stuff Like ARM Cortex-A or -M are specialized for embedded stuff or, am i wrong?
Its difficult to describe the difference but look at this: http://simple.wikipedia.org/wiki/Embedded_system
BTW, my problem with Raspberry pi is that its an small general-purpose computer not something like my cortex-M board! (im reading that)
Oh and also for the fridge thing, i wanted simple stuff like telling how much water i exactly want (like 1/4 cup etc) and a interface like a 5inch or 4.3inch touch display ! i am mainly a computer programmer (i self study im a beginner) and i know in computers i can easily use stuff Like Qt or anything to show the interface on monitor or even use OpenGL to draw graphics or simply get my fuction called with exact touch coords in android ! or simply get the function called for me when button is touched ! but in embedded im not sure how i should do that with my lpc1768 or etc ! i saw a baremetal example for lcp1768 and keil it sounded ridicules to make each pixel color in a .h file !
Ok, now i understand thanks a lot But first im gonna try and see if i understand the LPC1768 net example, i want to do the 2 last thing i wanted with M3 and than start using OS on A series!