This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Help me jump into ARM world !(I know nothing but AVR)

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?

Parents
  • 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 !!

Reply
  • 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 !!

Children