Semidrive E3210 ssdk xip 休眠唤醒代码移植

关键字 :SemidriveE3210

一、目的

       已知客户问题:基于 SSDK3.0 使用 sleep_gpio_wakeup demo 可以正常休眠唤醒,将 sleep_gpio_wakeup demo 中休眠唤醒相关的代码移植到 XIP 的 sf demo 工程中,可以休眠但是无法正常唤醒。板卡:E3104。代码:


图 (1)


串口:


图 (2)

要做什么:将 sleep_gpio_wakeup 中休眠唤醒相关代码移植到 XIP 的 sf demo 工程中,并解决问题。

二、过程

过程(板卡:E3210):

1. 跑通 E3210 Sleep_gpio_wakeup demo: 

1.1 使用 JLINK 下载镜像到 e3_176_ref 开发板,并启动调试;拨码 1110,选择 flashloader 下载。

        1.2 本 Demo 执行完成后,因为芯片进入休眠模式,此时 Jlink 会断开连接,此时不要尝试重新链接;拨码 0000,log 打印 enter sleep。

        1.3 拨动 GPIO_A0 拨码开关,产生上升沿脉冲,唤醒芯片;拨码 1000,唤醒成功。



图 (1)


1.4 然后使用 Jlink attach 上芯片, 确认芯片已被唤醒  project->attach to runing targe


图 (2)

udelay.h 放在头文件里;middleware 中加入 udelay.c 文件;路径:D:\Semidrive\train\internaltrain\ssdktrain\ssdktrain\project\E3_RTG3.0\ssdk\middleware\udelay


图 (3)

debug 后一直循环,一直打印 SSDK E3 Sleep gpio wakeup Demo Success!



图 (4)

       
      单步执行,还在死循环里,单次打印 SSDK E3 Sleep gpio wakeup Demo Success。确认芯片已被唤醒。

     
      2. 跑通 xip demo:

      2.1 使用 JLINK 连接到开发板,拨码到 0b1110 调试模式启动开发板(或者 0b0000,保证此时 Jlink 可以连接即可。)

      2.2 打开 sf XIP 工程,并编译;

      2.3 打开 bootloader 工程并切换到 FlashDebug 配置;

      0)点击编译,此时 IAR 会把 SFS + bootloader 程序 + sf XIP 程序整体编译为一个 elf 文件;路径:D:\Semidrive\train\internaltrain\ssdktrain\ssdktrain\project\E3_3.0\ssdk\boards\e3_176_ref\app_demo\xip\bootloader\IAR\FlashDebug\Exe

      1)点击 Erase memory 先擦除 flash(推荐但非必须)

      2)点击 Download active application 按钮,IAR flashloader 下载上述 elf 到 flash 中


图 (5)

3)以 0b0000 模式启动开发板,UART 打印输出;

SSDK E3 Bootloader Success!

       SSDK E3 XIP Demo, SF Boot Success;


图 (6)

        2.4 将bootloade r工程切换到 Debug 配置,点击 Download and Debug 按钮,即可对 bootloader 工程进行调试(此时由于没有配置 flashloader, download and Debug 仅下载 bootloader 程序至 iram)

2.5  在 bootloade r程序启动 sf 之后, 打开 sf 的 XIP 程序

选择 Attach to Running Target, attach 到 sf 的 XIP 程序进行调试;此步后移植代码;



图 (7)

反复启动,串口打印如图。

        2.6 如果需要修改 sf 的 XIP 程序,可以直接使用 debug and download 进行下载调试。移植代码的过程即修改到 sf 的 XIP 程序,修改后直接使用 debug and download 下载调试。

       
       3. 移植E3210 Sleep_gpio_wakeup demo 的休眠唤醒代码到 xip 的 sf demo:

xip sf 重新移植代码后 down and debug,此时拨码仍是 0000,在 flash 中启动,已经 attach 到 sf 的 xip 程序;


图 (8)

逐句移植;加入调用到的头文件;头文件相关见附件(1);将 power_cfg.c 与 pinmux_cfg.c 重新配置,并加入到 IDE boards 文件下;根据错误提示,将 IDE drives 加入和 sleep_sleep_gpio_wakeup 一样的 source 文件:

Add sdrv_power.c                     40个错误;

Add sdrv_power_core_context.c         37个错误;

Add sdrv_pmu.c                      19 个错误;

Add sdrv_scr.c                        19 个错误;

Add sdrv_smc.c                       无错误;




图 (9)

此时 down and debug 后无错误,进入 debug,点击 run,串口打印进入睡眠;


图 (10)

使 GPIO_A0 上升沿脉冲,没有唤醒成功,串口保持原样。复现问题。完整 sf 代码见附件(2)。


4.  解决问题

       将原厂释放的 E3-SSDK-PTG3.0-NewFeature-6753543-Hibernate 进行解压缩,我们来大致了解一下此 patch 中的相关思路:

  • E3104/E3106/E3205/E3206 XIP 模式支持 Hibernate 睡眠唤醒。

       2)上述四款芯片在 sf 下电时会将 XSPI 模块(Flash 控制器)同时下电,而 XIP 模式运行依赖 XSPI。因此需要把睡眠唤醒后的初始化相关代码放到 IRAM 里,XSPI 重新初始化完成后,再 XIP运行。

       4.1 将 patch 中 new 文件夹中的文件覆盖 E3_SSDK_PTG3.0/ssdk 对应的路径,通过 IAR 编译。

       patch 内提供了 e3_176_ref/app_demo/power-xip (E3104/E3106/E3106)和 e3_144_ref/app_demo/power-xip(E3205)两个board的demo,测试这两个 demo 运行正常即可,运行方法参考 demo 目录下的 readme.txt。我们来观察一下 “new”文件夹中的

内容:


图 (11)

boards->


图 (12)


devices->


图 (13)

remap->

图 (14)


依次替换至 ssdk3.0;注意 power-xip 要更改名称为 xip。


5.  证明问题已解决:

5.1  使用 JLINK 连接到开发板,拨码到 0b1110 调试模式启动开发板(或者 0b0000,保证此时 Jlink 可以连接即可);

5.2  打开 bootloader 工程,使用 Debug 配置进行编译;

5.3 打开 wakeuploader 工程,使用 Debug 配置进行编译;

5.4、 打开 sf 工程,使用 FlashDebug 配置进行编译

0)点击编译,此时 IAR 会把 SFS + bootloader + sf + wakeuploader 整体编译为一个 elf 文件;

1)点击 Erase memory 先擦除 flash(推荐但非必须);

2)点击 Download active application 按钮,IAR flashloader 下载上述 elf 到 flash 中;

3)以 0b0000 模式启动开发板,UART 打印输出;

SSDK E3 Bootloader Success!

然后执行 APP 程序,立刻进入休眠

4)拨动 BOOT_PIN1 (GPIO_A0) 唤醒,UART 打印输出:

SSDK E3 Hib gpio wakeup Demo Success!


图 (15)


图 (16)

 

附件:

        头文件相关附件(1): power_cfg.h:


图 (17)

power_cfg.c:


图 (18)

pinmux_cfg.h:


图 (19)

 

图 (20)

 

完整 sf 代码附件(2):


图 (21)

 

三、 参考资料:

《SemiDrive_E3_SSDK_User_Guide_Rev01.04》

《AppNote_E3_Boot_and_OTA_Rev01.06》



欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com

作者:Rita Liu / 刘倩

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论