深入探索SemiDrive E3系列的MCU SSDK

SemiDrive E3 系列 MCU SSDK : XIP 模式

一、 前言

本文介绍基于 SSDK3.0 调试 XIP 运行模式。

硬件平台:芯驰 E3_LQFP176_E3200_A03_048 开发板

软件平台:SemiDrive SSDK3.0

二、 模式简介

SF Core 的程序 XIP 运行在 FLASH 上,XIP 程序启动前,需先在 IRAM 中运行 SF Core 的 BootLoader 程序,对 XSPI 以及 FLASH 进行初始化,然后启动 SF Core 的 XIP 程序;通常客户会有使用 CAN 进行 OTA 升级的需求,这时可以参考 XIP 例程,在 BootLoader 程序中接收升级文件,写入 FLASH 中,升级完成后跳转至 FLASH XIP 模式运行。

三、 测试过程

1. BootLoader 程序分析

例程路径:E3_SSDK_PTG3.0_Source_Code\ssdk\boards\e3_176_ref\app_demo\xip\bootloader

BootLoader 中做了时钟、IO、FLASH 的初始化,以及跳转命令。跳转地址为

SF_MEM_BASE 0x10140000,与 iar_flashboardcfg_bootloader.board 文件中描述的 sf.flash 文件地址一样。在跳转前会输出 log:SSDK E3 Bootloader Success!

2. Sf 程序分析

Sf 程序初始化时钟、PIN 脚、输出 log:SSDK E3 XIP Demo, SF Boot Success。

3. 编译

首先在 debug 模式编译 sf 程序,并配置生成 sf.bin 文件。

然后在 flashdebug 模式编译 BootLoader 程序,Linker 文件会把 BootLoader、SFS、sf.bin 一起合并成一个 .out 文件。

下载到板子中,重新启动,可以看到 log

说明程序先从 bootloader 启动,然后跳转至 flash XIP 运行。

四、 参考文档

  • 《AppNote_E3_Boot_and_OTA_Rev01.03.pdf》
  • 《SemiDrive_E3_SSDK_User_Guide_Rev103.pdf》

SemiDrive E3 系列 MCU SSDK : bootloader

一、 前言

本文介绍基于 SSDK3.0 调试 XIP 运行模式。

硬件平台:芯驰 E3_LQFP176_E3200_A03_048 开发板

软件平台:SemiDrive SSDK3.0

二、 应用简介

客户在实际应用中通常都会用到 OTA 升级功能,通常都是由 bootloader + app 程序组成,bootloader 程序运行在 RAM 中,对 FLASH 程序进行升级,芯驰已经提供 Demo 程序,本文就 Demo 程序进行分析,并测试把升级标志位写在 RAM 内。

三、 测试过程

1. BootLoader 程序分析

例程路径:E3_SSDK_PTG3.0_Source_Code\ssdk\boards\e3_176_ref\app_demo\xip\bootloader

BootLoader 中做了时钟、IO、FLASH 的初始化,以及跳转命令。跳转地址为

SF_MEM_BASE 0x10140000,与 iar_flashboardcfg_bootloader.board 文件中描述的 sf.flash 文件地址一样。在跳转前会输出 log:SSDK E3 Bootloader Success!

2. Sf 程序分析

Sf 程序初始化时钟、PIN 脚、输出 log:SSDK E3 XIP Demo, SF Boot Success。

3. 编译

首先在 debug 模式编译 sf 程序,并配置生成 sf.bin 文件。

然后在 flashdebug 模式编译 BootLoader 程序,Linker 文件会把 BootLoader、SFS、sf.bin 一起合并成一个 .out 文件。

下载到板子中,重新启动,可以看到 log

说明程序先从 bootloader 启动,然后跳转至 flash XIP 运行。

4. 参考例程

增加 sdrv_rstgen_write_general(&reset_genral_reg_test,4);函数,参考 ssdk\boards\e3_gateway\app_demo\boot_core\sf 例程可以向寄存器写入变量,且使用 reboot_global();进行复位时不会丢失。

5. 程序 log 分析

(1) SSDK E3 Bootloader Success!//进入 bootloader

(2) bootloader read flag: 0//读取寄存器中值为 0

(3) SSDK E3 XIP Demo, SF Boot Success//进入 sf 程序

(4) sf read flag: 0//读取寄存器中值为 0

(5) sf write-->read flag: 4//写入寄存器中值为 4

(6) SSDK E3 Bootloader Success!//跳转回 bootloader

(7) bootloader read flag: 4//读取寄存器中值为 4

(8) ota mode!!!!!//进入 OTA 模式,并写入寄存器为 8

(9) global reset!!!!!//假设 OTA 完成,复位

(10) SSDK E3 Bootloader Success!//进入 bootloader

(11) bootloader read flag: 8//读取寄存器值 8

(12) SSDK E3 XIP Demo, SF Boot Success//跳转到 sf

(13) sf read flag: 8//读取寄存器值 8

(14) sf write-->read flag: 4//写入寄存器中值为 4

(15) SSDK E3 Global Reset Demo Success!//复位

(16) SSDK E3 Bootloader Success!//进入 bootloader

(17) bootloader read flag: 4//读取寄存器中值为 4

(18) ota mode!!!!! //进入 OTA 模式,并写入寄存器为 8

(19) global reset!!!!! //进入 OTA 模式,并写入寄存器为 8

(20) SSDK E3 Bootloader Success! //进入 bootloader

(21) bootloader read flag: 8//读取寄存器值 8

(22) SSDK E3 XIP Demo, SF Boot Success//进入 sf

(23) sf read flag: 8//读取寄存器值 8

(24) sf write-->read flag: 4//写入寄存器中值为 4

(25) SSDK E3 Global Reset Demo Success!//复位

四、 总结

经过以上步骤可以验证出,reboot_global 进行复位,通用寄存器并不会丢失,客户可以根据此特性把升级标志位写在寄存器中。

五、 参考文档

  • 《AppNote_E3_Boot_and_OTA_Rev01.03.pdf》
  • 《SemiDrive_E3_SSDK_User_Guide_Rev1.03.pdf》

SemiDrive E3 系列 MCU SSDK : ota_eth

一、 前言

本文介绍基于 SSDK3.0 调试以太网并通过以太网进行升级

硬件平台:芯驰 E3640 Gateway 开发板

软件平台:SemiDrive SSDK3.0

二、 应用简介

客户在实际应用中会用到以太网功能,Gateway 开发板板载 3 路以太网接口,本文介绍如何调试以太网接口及做 OTA 升级。

测试例程:

ssdk\boards\e3_gateway\app_demo\eth-xip\eth_freertos_tcp_client

ssdk\boards\e3_gateway\app_demo\ota_eth

三、 测试过程

1. Eth 初始化

通过程序可以看出 eth2 使用的是 RJ45 接口,IP 配置如下:

2. 电脑端设置 IP

PC 端 IP 地址设置,需要与板端同一网段

3. PC 测试

电脑端 ping 板子,可以 ping 通

4. 测试 TCPServer 功能

SSCOM 设置成 TCPServer,配置如下,本地 IP 与

static void tcp_echo(void *pvParameters) 函数、PC 端 IP 设置一致,则通过 SSCOM 软件给开发板发送数据,开发板会将收到的数通过 ETH 原样发送出来,SSCOM 软件窗口可以查看接收到的数据。

串口会打印成功 log

5. 测试 ota_eth

测试例程 ssdk\boards\e3_gateway\app_demo\ota_eth

Main 函数中添加 log 用来区分 ota 后的程序

烧录到开发板,观察开机 log

6. 制作升级文件

6.1 修改输出 log ,用来区分升级文件

6.2 使用打包命令进行打包

E:\E3_SSDK_PTG3.0_Source_Code\ssdk>prebuilts\windows\python-3.7.0\python.exe tools\genpac.py -b e3_gateway -p ota_eth -v IAR -c Debug -f devices\E3640\pacconfig\pac_config_sf.json --chipid=E3640 -d Flashloader

6.3 使用 SDToolBox 工具提取出 boot0.bin,并修改名字为 boot0.img

6.4 参考 《SemiDrive_9_Series_Boot 与升级指南》 文档,修改 boot0.img 文件的 PSN 号

6.5 网线连接电脑和开发板 RJ45 接口,PC 安装 Tftp64 软件,设置 IP 及 boot0.img 文件路径

6.6 开发板上电,通过串口输入命令 ota -d flash1 -f eth0:boot0.img -b 开始升级,升级完成后,再次上电开发板,观察 log 可以看出运行的是升级后的程序。

四、 总结

调试以太网 OTA 升级,首先要确认以太网功能正常,可以和电脑 ping 通,然后再调试 OTA 功能。E3640 DEV_KIT 开发板测试 ota_eth 升级时需要移植 Gateway 路径下的例程,因为硬件上的差异需要修改 pinmux.c 以及 eth_cfg.c,则可以正常实现升级。

五、 参考文档

  • 《SemiDrive_E3系列_Boot_and_OTA_开发指南.pdf》
  • 《SemiDrive_E3_SSDK_User_Guid.pdf》

欢迎登录大大通,在该博文下方提问,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com 作者:Chelsea Tong / 佟强

作者:大大通特邀博主:汽车大牛

登录大大通,了解更多详情

相关推荐
hairenjing11235 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
模拟IC攻城狮7 小时前
华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
嵌入式硬件·华为·硬件架构·芯片
IT B业生7 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨7 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生8 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
做网站建设制作设计小程序推广8 小时前
如何建购物网站提升用户体验
经验分享
程思扬9 小时前
为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
linux·服务器·网络·经验分享·后端·网络协议·1024程序员节
海绵波波10710 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫10 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
白狐欧莱雅10 小时前
使用python中的pygame简单实现飞机大战游戏
经验分享·python·游戏·pygame