How to manage MCUXpresso SDK versions in git?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to manage MCUXpresso SDK versions in git?

1,961 Views
gregbanderet
Contributor I

Hi,

I'm starting to work with MCUXpresso for a K66 platform. I was able to request and download a SDK for that target, import it into MCUXpresso IDE and build a "hello world" example.

We are a team of engineers working on that project and we want to use git for version control. I'm wondering what's the best way to manage the SDK sources.

What should I put in git? The complete SDK sources? Then, how is it integrated with the IDE, is it still possible to select the SDK components for people who cloned the git repo (and not imported the SDK archive)?

How are the SDK sources versioned?  What's the best step by step process to update the SDK sources in the future?

Also, how can we manage several SDK versions for "stable" release branches in git, i.e. having different versions of the SDK for different firmware releases? It is supported in the IDE?

Thank you for your help,

Greg

Labels (1)
1 Reply

1,428 Views
Jmart
NXP Employee
NXP Employee

Greg,

I'll make the assumption that you have some level of professional git version control server, whether BitBucket or github; this will be the easiest way to share a git repository with your co-workers. Without some sort of web hosted, you'd need to make your local git repo available to them. 

Onto some of your questions.

What should I put in git? The complete SDK sources? 

As I'm assuming that you'll be building your application against the SDK, I'd recommend thinking through what is important to you and your team. If you're in more of an exploratory stage of your product development, I'd recommend adding the entire SDK to your git repository. This will make it easy for you to utilize all of the provided bits and pieces of the SDK without having to worry about adding pieces later in your development efforts.

Then, how is it integrated with the IDE, is it still possible to select the SDK components for people who cloned the git repo (and not imported the SDK archive)?

It sounds like you're referring to MCUXpresso IDE. I'm not sure which components you're looking to select. Is this on a per project basis? Or are you referring to the components as they are expressed through http://mcuxpresso.nxp.com during the SDK configuration process?

How are the SDK sources versioned?

The MCUXpresso SDK is versioned when a new release is published to http://mcuxpresso.nxp.com. This happens in one of two ways, we currently operate on a 6 month cadence a standard release train that will update SDKs to include driver fixes, middleware updates, etc. This will automatically bump the SDK version. There's also the opportunity to release an SDK between these 6 month releases, and this will take on a new version as well. You can find the version number in the <partnumber>_manifest.xml and it will look like this:

<ksdk id="KSDK230" name="KSDK230" version="2.3.0"/>

What's the best step by step process to update the SDK sources in the future?

You've chosen a fairly mature platform in the K66, so you shouldn't see a lot of changes in the drivers as new SDK releases are made available. I'd first recommend diffing the existing SDK that you've version controlled with the new version you've downloaded. I use Beyond Compare, which is a fairly strong Windows based diff tool. This will give you an idea of what has changed (in a bit more detail than reading of the release notes would). You can then determine if there's anything important in those deltas that you see as a must have for your project. Higher version does not always mean it's better for you, especially if things are working well; if it's not broke, don't fix it.

If you feel as though you need to update to the latest SDK, you could create a branch for the new SDK and compile your project against the new SDK. Once you've verified the fact that old SDK functionality meets the new SDK functionality, merge back the SDK (or pieces of the SDK) that are relevant.

Also, how can we manage several SDK versions for "stable" release branches in git, i.e. having different versions of the SDK for different firmware releases? It is supported in the IDE?

The IDE doesn't provide facilities to align a given git commit id with your project. Interesting concept, but not a feature that is currently supported. Instead, I think you'd be well served by having multiple branches and tagging those branches appropriately. A more manageable approach may be to create SDK libraries and version control a /lib in your SDK that you could place your k66_mcuxpresso_sdk_v2.3.0.a and k66_mcuxpresso_sdk_v2.4.0.a, etc. At that point, you'd only need to worry about changing your library target in your application and point to that new version of the library. Your source would be kept on branches inside of the repo, but you wouldn't need to worry about recompiling it all of the time.

Jason