Can SEGGER Embedded Studio support MKS22?

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Hi,

    In general Embedded Studio supports all ARM devices.
    The Support Packages only add extra files like specific system initialization or peripheral vectors.

    Without a Support Package you can always choose to create "A C/C++ executable for a Cortex-M processor" or "A C/C++ executable for a ARM/Cortex-A/R processor",
    which sets up a generic project where you can add your system initialization and all other required files.

    Best regards
  • I haven't used this processor but I have some experience customizing SES. Here are a few things to look out for:

    You'll need to define a memory map and section placement file for your device. SES uses .xml files for this. They are pretty easy to edit and you can start with one for another processor. A nice feature of SES is that when you right-click a project to edit you can type in a partial search phrase. So searching for "map" of "placment" will narrow down the properties so you can see which are required to tell SES where these files are located.

    If the manufacturer supports CMSIS you can copy those files to your project. Or just copy the headers provided. I do this even though my processor is supported by an SES package because I want to capture my exact build in my version control system. Use the search feature to find "includes" to add these search files.

    For the debugger you'll want a register definition file. There are two formats: .xml and .svd. The latter is a CMSIS thing and your manufacture may have provided these. It's not difficult to create your own if you start from an existing file. Search for "register" to find this in the project options.

    I believe the default project will give you a crt0.s, vectors.s, and a startup.s that you can tweak to get you to main. I typically define SystemInit to bring up my GPIO and clocks before the C run-time initialization and main() are called.

    The basic boot process (for those who may not have been through this):
    • vectors.s defines the initial stack pointer and Reset_Handler as the first two vectors.
    • Reset_Handler is defined in startup.s. You can configure this a bit but it will call SystemInit() which is normally defined in the system.c but you can define your own. There are other optional things (like copying vectors to RAM) but eventually it calls _start.
    • _start is defined in crt0.s. It will initialize the C run-time environment (things like initializing variables) and call main().

    SES will give you a good starting point but you need to make sure all these pieces go together correctly which can be a little work.

    I have used IAR, Keil, and Eclipse in anger (as my friend would say) and I have found SES to be a preferable solution. It does sometimes give me fits but not as much as the others. YMMV.

    The post was edited 1 time, last by Kenny ().