1

I'm trying to understand the difference between programming Arduino hardware (Atel/ARM based) versus 'normal C-based ARM programming'.

My understanding is that the Arduino language is cross-compiled into C-compatible binary, and the Arduino EEPROM libraries are used to effectively 'flash' your Arduino code onto the Atel/ARM chip, which is running DuinOS. Your Arduino 'app' (software) can then take advantage of DuinOS utilities, such as scheduling, semaphores, events, critical sections, etc.

My understanding is that if I wanted to program an ARM chip myself from scratch, I would have to use something called an ISP programmer to 'flash' an embedded RTOS onto the chip first. Then, I would have to write C code, compile it, and again use the ISP programmer to deploy the compiled binary to the ARM chip, which is already setup to boot the RTOS when powered on.

I'm sure I'm mucking up a few things here, but this is my general understanding: can someone correct/clarify these things for me?

1 Answer 1

3

My understanding is that the Arduino language is cross-compiled into C-compatible binary,

There is no "Arduino language". Programs are written in C++ or C, and the IDE mangles them in certain ways in order to ease development by beginners (and on occasion frustrate development by veterans).

and the Arduino EEPROM libraries are used to effectively 'flash' your Arduino code onto the Atel/ARM chip,

No. The uploading of the compiled code is done using a separate program, usually AVRDUDE or bossac, and the code is uploaded into flash. Data can be optionally uploaded into EEPROM via the same program, but this is not required.

which is running DuinOS. Your Arduino 'app' (software) can then take advantage of DuinOS utilities, such as scheduling, semaphores, events, critical sections, etc.

Not by default. If you want to use DuinOS then you will need to download, compile, and upload it yourself.

My understanding is that if I wanted to program an ARM chip myself from scratch, I would have to use something called an ISP programmer to 'flash' an embedded RTOS onto the chip first. Then, I would have to write C code, compile it, and again use the ISP programmer to deploy the compiled binary to the ARM chip, which is already setup to boot the RTOS when powered on.

Nope. Any system can be run without an OS.

3
  • Thanks @Ignacio Vazquez-Abrams (+1) - I follow your first two answers 100%, but have a few quick followups on the last two. (1) Regarding DuinOS, if I don't use DuinOS, then what is running on the Arduino chip at the OS layer? And if I do use DuinOS, do I install it ahead of time on the chip, and then install my application, or do I bundle/compile them together ahead of time, and deploy them to the chip (via AVRDUDE, etc.) at the same time? And (2) Regarding my understanding of "normal C/ARM programming", is what I said about using the ISP programmer correct or am I way off?
    – smeeb
    May 5, 2015 at 15:34
  • ^ I understand you don't need on OS, but if I want to use one, how do I deploy my app/RTOS to an ARM (basic, 30,000 ft view of the procedures)? Thanks again!
    – smeeb
    May 5, 2015 at 15:35
  • 1
    1. There is no OS layer. There is only your code. You will need to see the OS documentation to learn how to deploy it and applications. 2. Low-level ARM programming usually uses JTAG, but many ARM MCUs support programming via UART or USB via a bootloader. May 5, 2015 at 15:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.