NXP ARM Toolchain suggestion - Page 1
Forum section: electronics / general

author: arhi
author_rank: Contributor
timestamp: August 18, 2021, 09:03:09 pm
content: need to write a firmware for a client for FS32K144HFT0MLHR. I mostly used STM so far so I'm not too experienced with NXP specific toolchains (like STM made specific toolchain from ATOLIC and BOX). I'd like to get some suggestion from more experienced members, what's the most common toolchain for the NXP ARM M4 mcu?Also I would love to have STM BOX way of generating configuration for all the periphery but is not requiredHost OS is not a problem, I have Win10 (7 can be there if required), MACOS and Linux.Debugging tools, I have busblaster, black magic probe, olimex jtag (few versions), segger jlink v8, segger jlink plus v13, st-link v2...I will be using freertos (or segger embOS if I go with toolchain that supports it)Is S32 Design Studio for Arm solution or maybe is MCUXpresso Integrated Development Environment that? I'm not sure the differences about them, but that's what I see NXP suggeststhanksEDIT: MCUXpresso does not support S32K144 mcu, so S32 studio is what is free from NXP to use this, dunno what are the other options and suggestions but MCUXpresso is out of the picture

author: dgtl
author_rank: Regular Contributor
timestamp: August 19, 2021, 08:05:22 am
content: On ARM Cortex-M microcontrollers, it is always possible to go vendor-independent route. You can use whatever gcc-arm-none-eabi toolchain to compile. You can use gdb for debugging with whatever supported debug probe (some provide their own gdbserver to interface with gdb, some work through openocd). You can then take your favorite IDE (the unbranded original version), ie Eclipse (it is used in a lot of the vendor IDEs) and set up your project and debugging there. The only manufacturer-specific things needed are MCU header file, svd file and some HAL libraries if you want to use them, these sometimes can be obtained with "packs" feature in eclipse. Then you'll need to write your Makefile, linker script and c runtime initialization code (these can be obtained from some example projects in the web).First time it may be a bit difficult to set up everything from scratch, but in the long run all the microcontrollers can be used the same way and you'll be much more platform-independent in your development flow.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 19, 2021, 04:58:37 pm
content: Quote from: dgtl on August 19, 2021, 08:05:22 amYep.Note that it's a small detail, but you absolutely don't need the SVD file if the vendor provides support C header files. SVD files are a description of the MCU registers (and additional capabilities) in XML format. You only need them if you want to generate support files yourself - for instance for languages other than C. For people adventurous to use ADA, for instance, there's a 'svd2ada' tool that generates ADA code from SVD files:https://github.com/AdaCore/svd2adaBut if you stick to C, no need for SVD files.

author: arhi
author_rank: Contributor
timestamp: August 21, 2021, 04:58:18 pm
content: Thanks, I do have experience in both making eclipse work for arm mcu development and visual studio code too, did bunch of projects that way, but I have zero experience with S32 MCU's (till few days ago did not know that type of arm's even exist, let alone that most NXP tools do not support them but they have a separate line of tools for S32) and I don't have time to learn bits and bobs of it, so I'm looking for the safest way to get the job done.

author: janoc
author_rank: Super Contributor
timestamp: August 21, 2021, 05:02:06 pm
content: Quote from: SiliconWizard on August 19, 2021, 04:58:37 pmHaving the SVD file around is also useful for debugging - e.g. there are scripts for GDB that will parse the SVD and then allow you to display the various peripheral registers, even including the names of the individual bits. Without that you can only inspect the registers by dumping memory locations, which is not exactly user friendly ...

author: mac.6
author_rank: Regular Contributor
timestamp: August 22, 2021, 09:54:09 am
content: S32 is from the automotive line, that's why it's not (and will never be) handled by industrial and consumer MCUXpresso and Config Tools.So you are stuck with S32 design studio. You can probably install it to use the toolchain only (like you can do with MCUX).Same for SDK, no need to use the IDE to be able to use it.

author: dgtl
author_rank: Regular Contributor
timestamp: August 24, 2021, 11:42:22 am
content: Quote from: janoc on August 21, 2021, 05:02:06 pmExactly. I'm using the vendor-generated header file, but SVD is useful to show registers in Eclipse. Makes debugging much better.

author: arhi
author_rank: Contributor
timestamp: August 24, 2021, 03:54:56 pm
content: Quote from: mac.6 on August 22, 2021, 09:54:09 amThanks, I did not know why is S32 so special... NXP site is not very clear / easy to browseQuote from: mac.6 on August 22, 2021, 09:54:09 amActually I gave up on the project, client is requesting firmware be written in GO. While I do know go, there's no way I'm writing firmware in it.