深入探索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 / 佟强

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

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

相关推荐
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
一个人旅程~4 天前
如何用命令行把win10/win11设置为长期暂停更新?
linux·windows·经验分享·电脑
Lester_11014 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元4 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133974 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315204 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Factory_Audit4 天前
亚马逊社会责任验厂审核标准及注意事项
大数据·经验分享
江南小书生4 天前
制造业系统赋能成熟度自测表(实操版)
经验分享·非标制造
Alaso_shuang4 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
三流架构师4 天前
述职报告资源合集
经验分享