This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Migration to SDK 8.1 from SDK 6.1 File Structure Issues

Hi all,

Due to the updates file structure introduces in SDK 7.0 I'm trying to figure our where everything has been scrambled to. Here are the items I'm struggling with

  1. The SDK is only tested with nRF51422 as evident with nrf51422_xxac_s110 mentioned in the example Makefiles. Can I simply overwrite these to nRF51822_xxaa_s110?

  2. Do I have to used the new Advertising module? I had developed my own on SDK 6.1. Was hoping to port it over, but want to make sure there are no underlying reliance on this module/issues.

  3. Is the new project based nrf_drv_config.h used to set each individual peripheral setting? I ask because my board has a 32MHz crystal which I normal setup the settings for with: NRF_CLOCK->XTALFREQ &= 0xFFFFFF00;

However if this is now supposed to be set in nrf_drv_config.h?

  1. There are alot more compiler and softdevice files integrated into this SDK. I'm using Eclipse to simply compile my application and flash/debug it separately from the SoftDevice is that still possible? Does this new CMSIS affect this?
Parents
  • Hi Dave,

    1. Yes, because there is no difference between nRF51422 and nRF51822 when you use them with Bluetooth stack.

    2. No, you don't have to. The SDK is created as reference code. You can choose to not to use any module. Just to make sure you update the API header files of the new S110 v8.0 and match the API call in your code with any new API introduced.

    3. Yes, you can set it in nrf_drv_config.h, but then you would need to use the clock driver, and call nrf_drv_clock_init(). I would suggest if you don't plan to use any other feature of the clock driver, you can simply keep your code to just calling NRF_CLOCK->XTALFREQ &= 0xFFFFFF00; to set the clock.

    4. The softdevice is pre-compiled. I don't see any problem that you compile your code using Eclipse.

Reply
  • Hi Dave,

    1. Yes, because there is no difference between nRF51422 and nRF51822 when you use them with Bluetooth stack.

    2. No, you don't have to. The SDK is created as reference code. You can choose to not to use any module. Just to make sure you update the API header files of the new S110 v8.0 and match the API call in your code with any new API introduced.

    3. Yes, you can set it in nrf_drv_config.h, but then you would need to use the clock driver, and call nrf_drv_clock_init(). I would suggest if you don't plan to use any other feature of the clock driver, you can simply keep your code to just calling NRF_CLOCK->XTALFREQ &= 0xFFFFFF00; to set the clock.

    4. The softdevice is pre-compiled. I don't see any problem that you compile your code using Eclipse.

Children
  • Thanks Hung,

    Are they any other linking setup issues with the new SDK? I can't seem to get a project to compile at all. I used the ble_template project makefile and edited it for my own project. Then created the project using "Use Existing Makefile". However I keep getting the error: "***** No rule to make target 'release' Stop**"

    It doesn't seem to connect to my pre-existing toolchains I had working with SDK6.1. Are there any new steps regarding this part. I know alot of new compiler stuff is included in the new SDK. Thank you for your help.

    -DC

  • I've tried simply getting the example gcc projects to compiler, however they all return the following error:

    make: *** [all] Error 2

    I'm so confused as all my toolchains work fine with SDK6.1. Has anyone been able to migrate to SDK8.1 and found this error?

  • @Dave: Could you try to compile a normal SDK v8.0 to see if it worked ? In SDK v8.x the target define of "make release", "make debug" is removed.

    You can try to do a "make all" in command line inside the armgcc folder in a project to see if you have any issue. And to have more information when you have an error with make, you can try to call make VERBOSE=1 to have more log.

  • Hi Hung,

    I've been trying to get the ble_app_template working on an old PCA10001 Eval board. It seems to compile. I added setting a few led pins to verify the functionality. But when I program the .hex file to the board (after flash it with S110 V8) nothing happens. The LED's do not turn on. I even hardcode the pins to set at the end of main() with calls:

    ..... nrf_gpio_cfg_output(18);
    nrf_gpio_pin_set(18); //RED LED

    nrf_gpio_cfg_output(19);
    nrf_gpio_pin_set(19);    //GREEN LED
    
    // Enter main loop
    for (;;)
    {
        app_sched_execute();
        power_manage();
    }
    

    }

    However the LEDs do not turn on. I changed all Makefile and preprocessor defines to BOARD_PCA10001. I even tried bypassing the bsp module as I don't need it. I can't get debugging to start at main either so I can't figure out where the failure is occuring. Unfortunately, we may have to scrap the migration to SDK 8 plan if I can't get this working in the next few days. We'd only allocated 2 days to migrate but its taking much longer due to all the changes that have been made.

  • @Dave: I guess you should try to test first with the blinky project (with and without softdevice)

    Note that S110 v8.0 is not made to run on the chip revision 2 (most likely the chip on your PCA10001 board). To make it work on chip revision 2 you would need to follow the instruction in the S110 release note at the "changes" section.

Related