KW45 First Time Programming

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

KW45 First Time Programming

178件の閲覧回数
cnew01
Contributor III

I am trying to program a custom KW45-based PCB for the first time. I tried using MCUXpresso. The J-Link could upload my program over SWD but when I tried entering debug mode the board halts at address 0x14816fdc. Further research has shown that the NBU for the Bluetooth coprocessor needs to be uploaded. I've tried AN13838, but my board cannot be discovered over UART. I've been looking into AN14003, but it's information is out of date with regards to the current SPSDK. What do I do?

0 件の賞賛
返信
6 返答(返信)

142件の閲覧回数
luis_maravilla
NXP Employee
NXP Employee

Hello

 

The memory address you mention refers to ROM-Boot [Table 16 KW45 Reference Manual], On KW45, only boot ROM has access to the NBU flash,

For more information about ROM boot process flow please refer to AN14003 Figure 2

 

As you are using a KW45 chip from fabric for your custom PCB; Could you help us confirm if your KW45 chip from fabric was already fuse burned as the process described in AN14003?

And if there was already fuse burned, Could you confirm if the default KW45B41Z-EVK Keys [SBKDK and RoTKTH] described in Chapter 5.2.1 [AN14003] were used? Or you use custom generated keys for the board.

 

Also for confirmation, Have you done an updating NBU before on the chip?

 

Best Regards

Luis

0 件の賞賛
返信

134件の閲覧回数
cnew01
Contributor III
The fuses had not been burned yet, the KW45 is from fabric. Updating the NBU on the chip has not been done before.
0 件の賞賛
返信

131件の閲覧回数
luis_maravilla
NXP Employee
NXP Employee

Hello,

I need to confirm if your end goal is using the custom KW45-based PCB same as the KW45B41Z-EVK using SDK examples or is intended for custom applications?

As this will interferes on the fuses that are needed to be burn in chip.

For updating the NBU image to a KW45 device two types of keys must be written to KW45 fuse, By default, RoTKTH and SB3KDK are provided for KW45B41Z-EVK board; but in a factory chip the keys in the fuse are null.

Therefore, for Factory chips, the customer needs to burn fuses related for end goal following the instructions in [AN14003 Programming the KW45 flash for Application and Radio firmware via Serial Wire Debug during m...]

If you want to use your board for development same as the KW45B41Z-EVK you could use the same keys values from the KW45B41Z-EVK board directly [Described in AN14003 Chapter 5.2.1 Figure 9]; If you want to use your board for a different end product or custom end application; I would recommend creating your own keys and generating the sb3 file using the .xip file for a new NBU image dedicated to your end product

Then Updating NBU; If you want to use your board for development same as the KW45B41Z-EVK you can use the same sb3 file that its inside SDK folder for updating the NBU, if you want to use your board for a different end product or custom end application you should create your own sb3 file for uploading the NBU image following the instructions described in Chapter 4 in AN14003.

It's important to mention that the method of burning the fuse provided in this document cannot be reversed. The keys programmed to fuses on KW45 cannot be changed anymore. Therefore, it is recommended to modify the fuse with caution.

Best Regards

Luis

78件の閲覧回数
cnew01
Contributor III

Luis:
I'm trying to implement the app note, I will be using the default keys just to validate functionality on this custom board. In an14003,  Test_ota_partition on Page 13 is not defined in the OTAP example or the rest of the code provided. What is this variable supposed to be?

0 件の賞賛
返信

16件の閲覧回数
luis_maravilla
NXP Employee
NXP Employee

Hello,

The test_ota_partition function utilizes the OtaPartition_t structure defined in fwk_platform_ota.h. used to manage OTA operations used in other steps described in AN14003.

This structure describes the characteristics of the Over-the-Air (OTA) update partition, including parameters such as offset, size, sector and page sizes, and whether the flash is internal or external.

 

As outlined in Application Note AN14003 comment where Test_ota_partition is used, indicates to use internal flash so we need to initialize the parameters and true for using internal flash.

This is something every customer would need to implement by their own. Also, I attached the structure with definitions [Taken from fwk_platform_ota.h]

 

typedef struct
{
    uint32_t start_offset; /*!< Offset of firmware update partition in flash device. The physical address is translated
                              by flash driver */
    uint32_t size;         /*! Size of firmware update storage expressed in bytes */
    uint32_t sector_size;  /*! Sector size of flash used for OTA, usually 4kB for external flash but varies for internal
                              flash */
    uint32_t page_size;    /*! Page size of flash device : minimal program size*/
    bool     internal_flash; /*! true if internal flash, false for SPI NOR Flash */
    uint32_t spi_baudrate;   /*! SPI baudrate concerns only external flash if flash config is not used KW45 case */
} OtaPartition_t;

Best Regards

Luis

172件の閲覧回数
cnew01
Contributor III

I will clarify that LPUART0 TX and RX pins are accessible on this custom board through a header.

0 件の賞賛
返信