This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

kernel from ROM configuration?

Other Parts Discussed in Thread: CC2650

In some of the example .cfg files is see ROM configuration while in other examples i don't. What is the explanation for this and how do i know if this is something i need to configure or not?



/*
 * use the kernel in the ROM
 */
var ROM = xdc.useModule('ti.sysbios.rom.ROM');
if (Program.cpu.deviceName.match(/CC26/)) {
    ROM.romName = ROM.CC2650;
}
else if (Program.cpu.deviceName.match(/CC13/)) {
    ROM.romName = ROM.CC1350;
}

  • Hello,

    Using the kernel ROM is optional. In some cases, configured RTOS features may not be present in the kernel ROM, hence the RTOS must be built and reside in flash.

    Best wishes
  • Thank you. Can you give some examples where a kernel would have to build for flash? Just trying to understand all the moving parts.
  • Hi,

    You'll encounter a build error that will clearly state that the requested feature is not available in the ROM. One example is some of the EVENT modules, those are not built in the ROM kernel.

    Best wishes
  • You can use the ROM module to save flash space by using a set of generic TI RTOS modules put in ROM. What including this will do is to force the linker to place a set of module descriptors and pointers (RCFG) to flash in a fixed location. On CC13XX this is placed in page 1 (0x1000->) and on CC26XX this is placed in page 0(0x0000>).

    Several of the TI projects on CC26XX does not use the ROM module due to OAD support since the application reset vectors are also located on page 0. If you were to lose power while those were erased the device would be bricked if it was out in the field.
    On CC13XX this is no longer an issue with OAD so you could have the TI RTOS application start at 0x1000 and put a boot loader manager in page 0. The cfg file parameter M3Hwi.resetVectorAddress + corresponding changes to linker file is used to achieve this.

    If you need access to other modules in TI RTOS while using the ROM you simply include them in your .cfg and rebuild the kernel.

    Note that on IAR we have seen issue with IAR not understanding it needs to kick off a new kernel build. This can be done be deleted the old kernel build by deleting the two folders (SensorTag used as example):
    Projects\ble\SensorTag\CC26xx\IAR\Config\src
    Projects\ble\SensorTag\CC26xx\IAR\Application\CC2650\configPkg

    Regards,
    svend

  • Thank you for the detailed answer(s).