如何实现KL17远程更新? bootloader怎么写?

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

如何实现KL17远程更新? bootloader怎么写?

2,963 Views
sagajun
Contributor I

我们选择了KL17作为公司主用芯片,目前有5个产品都是用这颗在做开发。

产品需要实现无线远距离更新程序。

现在问题描述如下:

  1.        产品上有无线模块,还接了一片SPI接口的外置flash
  2.        我们已经在产品appAPP A)中实现了如下功能:

通过无线模块,把需要更新的MCU程序(APP B)接收并保存进外置flash中。且更新了flash中的标志位。

  1.        要如何操作,才能实现用新的APP B来替代现有的APP A?并且自动运行APP B
  2.        尝试了在系统启动后(SystemInit之后),先跳转到自己写的boot代码,从外置flash中读取APP B,并写到KL17flash中。但跳转运行失败。 可能和boot代码的scf文件、APP Bscf文件配置不当有关,也和跳转运行不当有关。

 

之前发邮件问过工程师。工程师建议参考KBOOTKL25例程,但KL25startup.s文件和KL17startup.s文件差别比较大。

 

不知道有没有KL17的例程可以参考?或者有尽量具体一些的操作步骤建议?

非常感谢

Labels (1)
0 Kudos
5 Replies

2,410 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

你好,

KL17芯片自带ROM Bootloader,客户可以在KL17应用代码中调用ROM Bootloader进行固件升级。

等升级结束后,调用软件复位代码运行新固件。

关于如何调用ROM Bootloader可以参考这篇文章


Have a great day,
Mike

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,410 Views
sagajun
Contributor I

你好,

      多谢回复!

      自带的ROM Bootloader可以读取外部flash的程序内容吗?

0 Kudos

2,410 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

你好,

KL17自带的ROM Bootloader是不能读取外部SPI Flash里面内容的。

所以,还是需要KL17烧入支持读片外spi flash 的bootloader,其实你往片外Flash中写入的固件文件可以是bin文件,这样KL17 就可以讲代码直接读取并烧写到片内Flash中。


Have a great day,
Mike

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

2,410 Views
sagajun
Contributor I

Hi Mike,

是的,我写入片外flash中的固件文件就是bin文件。

我也写了支持读取片外spi flash的bootloader。但写的不对,主要是:

1. 我写的bootloader的scf文件要如何配置?

2. 存在片外flash中的固件bin文件的,编译时的scf文件又要如何配置?

3. bootloader将代码从片外flash中读取并烧写到片内flash后,要如何跳转到新的固件并运行?

我现在尝试先用KBOOT中的KL25例程在板子上运行,然后在这个基础上来修改我自己的代码。但KL25的例程在我的板子上运行不正常(已经选择了device为MKL17Z128VLH4,修改了IO配置来闪烁LED)。

非常感谢。

0 Kudos

2,410 Views
Hui_Ma
NXP TechSupport
NXP TechSupport

Hi,

1. 请访问MCUBOOT网址,选择下载【MKL28Z512xxx7】芯片带MCUBOOT的SDK软件包。

你可以在 ..\boards\frdmkl28z\bootloader_examples\freedom_bootloader\mdk文件夹中找到<MKL28Z512xxx7_application_0x0000.scf>文件作为参考。

pastedImage_1.png

2. 应用代码scf文件可以参考<MKL28Z512xxx7_application_0xa000.scf>文件,位于..\boards\frdmkl28z\bootloader_examples\demo_apps\led_demo_freedom_a000\mdk文件夹中。

3. 通常调用jump_to_application()函数跳转到应用代码。


Have a great day,
Mike

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos