Search FAQs on the left to see if your question has been answered. Click on the dropdown to view all of the documents associated with the product. If you can't find your question, click on Ask a Question

How to - ADuCM3029 with simple and free Open Source Tools?

For those who are interested in Bare Metal Programming - as myself - or simply starting to develop Embedded Applications, in my opinion the high sophisticated tool-chains (i.e. Eclipse based) and commercial available tool-chains (I.e. IAR EWARM or Keil ARM) are sometimes more complicated to use than simple tools available for free and Open Source.

Also we get from time to time questions on how to get started with free of charge tools without limitations - i.e. code-size or time-limits.

So I made some investigations on Windows and Linux about IDEs and tools to be used with our Analog Microcontrollers or CM4xx Mixed-Signal Control Processors, which are based on ARM cores. Most of the Evaluation-Kits we provide come with J-Link Debugger-Dongles for programming and debugging, so the main interest was about Software which works with those.

On Windows I discovered already some time ago emIDE - this is a lightweight simple to use IDE with some basic Bare Metal Code examples and some nice features. In another thread I attached a very, very basic example project for the ADuCM3029 done on emIDE - Not working after HW-Reset or Power-Cycle.

Also there are other tool-chains which can be used for this purpose available for Windows, i.e. Code::Blocks (emIDE is based on this), CodeLite, emBlocks (also based on Code::Blocks) and maybe more.

Nowadays we also get more and more questions about tools running on Linux systems.
I used Code::Blocks now for test on Linux to do an bit more enhance version of the ADuCM3029 example project. This is attached here with a more comprehensive header-file, linker-control-file and Interrupt-Vectors for all peripherals included in the startup.s file.

In all cases the key is the GDB-server support for the J-Link Debugger-Dongles from Segger.
Other tool-chains besides Code::Blocks are also CodeLite and a complete different, but very interesting approach ddd (DataDisplayDebugger) working perfectly on Linux systems.
All those are free of charge and in combination with the GNU C Compilers for ARM have no limitations.

The J-Link GDB-server is also available for small, lightweight and low-power ARM-Linux-systems like a Raspberry Pi.
I tried running Code::Blocks on a Raspberry PI 2 and below a screen-shot where I did develop the attached example project on an Orange PI Plus - which has a quad-core running up to 1.56GHz. With a Debian 8 Jessie Linux Distribution it works reliable fast and can be used to develop Embedded Applications for Analog Microcontrollers like the ADuCM3029.

  • Interesting article! Thanks!

    For Cortex-M (ADuCM360, ADuCM3029 and ADuCM4050), you can now use CrossCore Embedded Studio (CCES) and Eclipse-based IDE which comes with GCC ARM Embedded (v6) and tools such as OpenOCD with support for J-Link Lite, CMSIS-DAP and ICE-1000/2000.

    Included in the set-up instructions and how to guide on using the CMSIS Packs is also an serial number to fully activate your Cortex-M support.

    Hopefully the following articles prove useful:

    EVAL-ADICUP3029 Tool Chain [Analog Devices Wiki] 

    EVAL-ADICUP360 Tool Chain [Analog Devices Wiki] 

  • Hi MMA: the following is the key point to build a free IDE for one new analog devices ARM processor:

    1. GUI, eclipse CDT recommend Eclipse Downloads
    2. complier, GNU tools for ARM processor, if you laborious to make it from source code, you can download gcc eabi from:
    3. C/C++ run time library and GDB for ARM and GNU binutils tools for ARM, this is contained in complier, the library is newlib than glib
    4. eclipse  GNU ARM C/C++ support plugin, this is important to make eclipse support GNU ARM tools, please check with: GNU ARM Eclipse | Eclipse Plugins, Bundles and Products - Eclipse Marketplace
    5. EMBedded SYStems REGister VIEW eclipse plugin, this is important for your low level bare mental software debug, but the processor description file is rare, you can copy the register description file from keil (file format internally is xml), but some processor can only find the register description file in IAR, then you need to write a little tool to comvert the ddf file to xml file. EmbSysRegView | Eclipse Plugins, Bundles and Products - Eclipse Marketplace
    6. Debug cable, you can choose j-link, it support most of ARM processor, but it is commercial cable. also you can build your OpenOCD cable, but for the new ARM processor you need to write your driver, key point is the flash read/write driver and OpenOCD script file. Open On-Chip Debugger
    7. startup file, and processor register head file: you can copy the startup file and head file from keil or IAR, but some of them is not support GCC, you need to modify it by yourself.
    8. other issue: Some of analog devices ARM processor have internal boot code, this maybe conflict with your OpenOCD driver, you need to care deal with it.
    9. other issue: the OpenOCD some times can't connect to processor even by reset, this maybe caused by the crash firmware running in the CPU, but the OpenOCD reset and halt can't take over the CPU. You need to erase the ARM by other tools or cable.
    10. other issue: Some of analog devices ARM processor have discontinuous RAM/flash space, you can't join them into bunch of section by GNU ld script file, you need to place your sections manually.
    11. other issue: Some of analog devices ARM processor have internal boot code, the code mandatory verify the checksum before startup your code, so you need to write the script file or a little tool to inject the checksum into source code and complie again.
  • Thank you for the information R.L.

    This is a nice overview about how to adapt micros to eclipse.

    But sometimes eclipse is simply a overkill for a quick small project or students.

    So I did search for other, simpler to use open-source tools.

    The pretty nice thing with ADI ARM micros so far is that they are supported from Segger with the  J-Link GDB-server.

    The found tools are using remote GDB-Server for flash programming and debugging.

    So with a J-Link it is easy to program flash on the parts and debug - all is handled by the GDB-Server correctly.

  • Very interesting information.

    Thank you!