以太网

汽车以太网(Automotive Ethernet)是一种用于汽车领域的网络通信技术,它基于以太网标准,将高速数据通信引入了现代汽车的电子体系结构。传统的汽车电子系统通常采用专用的数据总线和通信协议,而汽车以太网通过标准的以太网协议,如Ethernet和TCP/IP,实现了更快速、高带宽和灵活的通信。

4月9日~10日,沁恒携“自主核 中国芯”主题亮相杭州第四十八届中国电工仪器仪表产业发展技术研讨会及展会,依托多层次USB/蓝牙/以太网接口芯片、青稞RISC-V全栈MCU等关键技术自主可控的中国芯,向行业客户展示专业、可靠、丰富的解决方案,助力电力行业智能化,推动国产替代2.0。

热门展品回顾

蓝牙芯片

集成LCD驱动的低功耗蓝牙MCU—CH592

支持2Mbps的BLE5.4,支持20*4段式LCD驱动,支持USB主机及设备功能,提供PWM、SPI、I2C、4组串口、RTC、12位ADC、触摸按键等外设,采用低功耗射频工艺设计,定位于更低功耗、更低成本LCD显示的蓝牙应用。

1.jpg

以太网芯片

TCP/IP网络协议栈芯片—CH395

自带10M/100M以太网MAC+PHY,兼容IEEE802.3规范,内置UDP、TCP、DHCP、ARP等以太网协议栈固件,支持串口、并口和SPI连接,可为MCU、DSP等主控快速拓展以太网通讯功能。

2.jpg

百兆以太网PHY芯片—CH182

工业级10M/100M以太网PHY收发器,支持MII和RMII接口,支持Auto-MDIX。支持独立的I/O接口电源以适应不同电压的处理器或MCU。

USB2.0百兆网卡芯片—CH397

集成USB控制器及收发器PHY,集成符合IEEE802.3规范的10M/100M以太网收发器及控制器。具有高集成度、低功耗、低成本、易于使用等特点,支持各主流操作系统。

USB芯片

7端口工业级HUB控制器芯片—CH338/9

符合USB2.0协议规范,支持高性能MTT模式,部分应用场合可免晶振。部分型号支持上行口交换,集成USB PD功能,支持Type-C功率传输。工业级设计,外围精简。

另有7端口多功能HUB芯片CH339提供以太网、读卡器、PD、转JTAG/UART/SPI/I2C等功能。 

3.jpg

高速USB信号隔离延长芯片—CH318

通过电容耦合或网络变压器耦合实现对USB信号的隔离、实时中转和距离延长。芯片自带USB HUB功能,可用于USB接口高压隔离延长、隔离HUB、延长HUB等。

搭配7端口多功能HUB芯片CH339,可实现USB高速读卡器、USB转SPI、JTAG、I2C等多种接口的隔离。

4.jpg

MCU

工业级RISC-V内核低功耗MCU—CH32L103

采用青稞RISC-V内核,集成PDUSB接口,支持USB数据传输和Type-C功率传输。芯片内置低功耗定时器LPTIM,提供OPA/PGA运放、3组电压比较器、12位ADC、触摸按键、USART串口等丰富外设资源。

5.jpg

蓝牙+以太网 无线型MCU—CH32V208

采用青稞RISC-V内核,最高支持144MHz系统主频,片上集成BLE5.3、10Mbps以太网收发器及控制器、双路USB接口,支持USB主机及设备功能,集成CAN接口、双路OPA运放、4组USART、双路I2C、12位ADC、10路Touchkey等丰富外设资源。

6.jpg

千兆以太网+高速USB 互联型MCU—CH32V307

采用青稞RISC-V内核,支持硬件浮点运算,最高主频144MHz。集成千兆以太网MAC控制器并内置10M PHY;提供USB2.0高速接口,内置480Mbps收发器;集成八串口、四高级定时器、双CAN、DVP、FSMC等丰富外设资源。 

7.jpg

来源:沁恒微电子

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 24

机器学习(ML)和机器人系统等创新技术正推动工业自动化市场不断增长。具有确定性通信功能的嵌入式解决方案对于工业自动化应用中的数据控制、监测和处理至关重要。为了向设计人员提供具有确定性通信功能的可靠、稳健的网络解决方案,Microchip Technology Inc.(微芯科技公司)今日宣布推出新一代LAN969x以太网交换芯片。该系列产品具备时间敏感网络(TSN)、46 Gbps至102 Gbps的可扩展带宽以及强大的1 GHz单核Arm® Cortex®-A53 CPU。

1.jpg

对于需要更大冗余的应用,LAN969x系列以太网交换芯片可配置高可用性无缝冗余(HSR)和并行冗余协议(PRP)。HSR和PRP是在以太网网络中提供零损耗冗余的硬件协议。LAN969x 以太网交换机支持多个HSR和 PRP冗余盒(RedBox)实例,可并行和串行运行,以太网端口速度从10 Mbps到10 Gbps不等。 

LAN969x还可实现QuadBox功能,将两个HSR 网络相互连接。该功能在对高可靠性和零停机时间要求较高的应用中特别适用。QuadBox功能的替代解决方案通常需要多个不同组件,会增加设计复杂性和系统成本。 

Microchip USB和网络业务部副总裁Charles Forni表示:“在Microchip推出LAN969x以太网交换芯片之前,希望实现TSN和HSR/PRP功能的客户需要多个IC。LAN969x是一种单芯片解决方案,可以减少元件数量和系统级成本。这些器件还支持我们的VSC6817SDK IStaX Linux® 应用软件包,可帮助设计人员快速将产品推向市场。” 

LAN969x以太网交换芯片具有高度可配置性,最多可提供 30个端口。以太网端口支持多种接口,包括RGMII、SGMII、QSGMII、USGMII和USXGMII。LAN969x系列交换机特别适用于需要高端口数10M/100M/1G/2.5G/10G 交换链路的安全和安全关键型应用。

LAN969x系列交换芯片可提供安全附加功能,例如基于客户信任根制造流程的安全启动和安全固件执行。通过使用多功能内容感知处理器(VCAP)的基于三元内容可寻址存储器(TCAM)的帧处理、用于快速安全启动的Arm可信固件方法、用于启动和代码加密的加密库和硬件安全加速器以及一次性可编程不可变密钥存储,来实现安全性。 

新推出的LAN969x中端以太网交换芯片系列进一步完善了Microchip的TSN交换机产品组合。SparX-5i 系列支持多达64个端口和200 Gbps的交换带宽,LAN9662和LAN9668支持4至8个端口以及4至11 Gbps的交换带宽。

开发工具

LAN969x 系列以太网交换机支持EV23X71A评估板。其他资源包括支持TSN标准和HSR/PRP冗余的IStaX VSC6817SDK Linux 应用软件包。

供货与定价

LAN9694、LAN9696和LAN9698现已上市。如需了解更多信息并进行购买,请联系Microchip销售代表、全球授权分销商或访问Microchip采购和客户服务网站www.microchipdirect.com

来源:Microchip微芯

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 17

航天工业正将其连接接口从传统专用网络转向以太网解决方案,以提供更多灵活性并简化设计流程。为了简化航空航天和国防客户的以太网部署,Microchip Technology Inc.(美国微芯科技公司)今日宣布推出全新的VSC8574RT PHY,进一步扩展其耐辐射(RT)以太网PHY产品阵容。VSC8574RT PHY支持串行千兆位媒体独立接口(SGMII)和四通道串行千兆位媒体独立接口(QSGMII),可减少设计中的总信号引脚数,降低主机器件所需空间。

1.png

航天应用的运行环境需要增强型辐射技术,以承受极端温度和电磁事件。这些事件会降低天基系统性能并扰乱运行。VSC8574RT以太网PHY基于Microchip广泛的商用现货(COTS)技术器件,允许客户使用COTS版本开发应用,并在最终环节使用RT器件进行替代。 

VSC8574RT PHY同时兼容铜缆和光纤接口,提供了更多可能的新应用用例。尽管目前主流设计仍然使用铜缆,但随着行业对1千兆以上数据速率的需求不断增长,光纤接口是未来航天应用的必然趋势。

 VSC8574RT PHY配备了一个四通道端口,支持10、100和1000BASE-T以太网连接,可根据器件要求实现最佳速度和覆盖范围。高可靠性的VSC8574RT PHY拥有丰富的高级功能,如同步以太网(SyncE)和IEEE® 1588v2精确时间协议(PTP),支持用于高度精确计时应用的网络计时和同步。 

Microchip航空航天和国防业务部副总裁Bob Vampola表示:“VSC8574RT PHY器件具有先进的计时功能,能为客户提供确定性实时应用的连接解决方案。航天应用对以太网解决方案的需求很大,我们的COTS-to-RT器件具备多端口、SGMII和光纤接口,可提供更多功能。” 

VSC8574RT的规格参数包括78 MeV.cm²/mg以上的单事件锁存抗扰度以及高达100 krad的总电离剂量测试。这种多功能的解决方案可以满足从低地轨道(LEO)到深空的广泛应用。 

Microchip基于COTS的千兆位以太网PHY产品系列目前包含新推出的VSC8574RT,以及VSC8541RT和VSC8540RT。

开发工具

VSC8574RT可由VSC8574-EV评估板支持。该评估板使用户能以多种配置对器件进行评估,并提供诸多其他功能。

供货与定价

VSC8574RT以太网PHY器件可根据需求限量提供样片。如需了解其他相关信息,请联系Microchip销售代表。

围观 13

LED大屏显示系统利用发光二极管构成的点阵模块或像素单元组成大面积显示屏显示字符、图像等信息,具有低功耗、低成本、高亮度、长寿命、宽视角等优点,近年来随着LED显示技术的不断更新,广泛应用在各类媒体场合。

LED大屏由无数个LED RGB灯组成,通过实时控制每个LED RGB的亮度及色彩,来显示不同的图案。在LED大屏显示应用中,传统的核心控制芯片选择可谓多种多样,MCU、FPGA或PLD都可以被作为核心控制芯片来进行设计,实现的效果也是各有优劣。

在LED大屏显示应用不断拓展的同时,大屏显示系统对刷新频率和延迟也提出了更严苛的要求:

  • 更高的刷新频率:刷新频率越高,显示的图像越稳定,眼睛感觉到疲劳可能性就越小;

  • 更低的延迟:整个数据链路的延迟进一步降低,减少闪屏或卡顿。

为确保LED大屏高刷新频率和低延迟,避免闪屏或卡顿的情况,就必须通过高速的链路来实时控制这些LED RGB灯。要实现更高刷新频率、更低延迟的LED大屏系统系统设计,主控芯片的选择非常关键。以MCU为核心的LED大屏显示控制系统常常被诟病数据处理速度无法满足实时性要求很高的场合,其实不然。

RISC-V内核的MCU,得益于RISC-V本身的简洁性和模块化设计,CPU能以更高的频率运行,带来更高的性能。因此,基于RISC-V的高主频MCU能让LED大屏显示系统实现更高的驱动频率及更高的实时性。

HPM6750就是上海先楫半导体公司开发的采用RISC-V 内核、具有高主频及创新总线架构的双核高性能MCU。HPM6750拥有两个完全独立的CPU且主频高达816MHz,模拟外设包括4组共32路精度达2.5ns的PWM、3个12位高速ADC以及1个16位高精度ADC,其性能在市场同类产品中居于领先水平。

不仅如此,对于LED大屏显示应用,高性能HPM6750能通过双千兆以太网透传的方案加双核加持完美解决高速的链路设计。HPM6750支持2个以太网控制器ENET,支持标准以太网MAC,支持10/100/1000Mbps数据传输速率,支持RMII和RGMII模式的PHY,ENET以太网控制器自带DMA,因此在数据接收和发送上CPU负载为0。HPM6750通过以太网控制器,将两个PHY收到的以太网数据相互透传,透传速率达780Mb/s。基于高性能HPM6750的LED大屏显示方案在对实时控制要求极高的应用中丝毫不逊色于FPGA方案,不仅成本更低而且进一步降低了开发难度。

< 解决方案分享>

先楫高性能MCU 

LED大屏显示双千兆以太网透传应用

案例为720P 1280x720分辨率的LED大屏显示控制,也就是至少需要实时控制1280x720个LED RGB灯,调整亮度及色彩来显示不同的图案。为确保LED大屏高刷新率及低延迟,避免闪屏或卡顿的情况,就必须通过高速的链路来实时控制这1280x720个LED RGB灯。本案例使用两个RTL8211 RGMII模式的千兆PHY。

通信框图如下:

1.png

LED RGB灯需要通过特定的波形驱动,案例由UCS1903 LED驱动控制器驱动。UCS1903时序波形图如下:

2.png

3.png

整体的应用方案使用高精定时器GPTMR+DMA+GPIO的方案来驱动LED。

DMA:

HPM6750支持2个DMA控制器:XDMA和HDMA,可以实现实时的外设寄存器和内存及内存之间的数据搬移。

支持DMA请求路由器(DMAMUX)。将来自各个外设模块的DMA请求分配到16个输出信号,作为XDMA和HDMA的DMA传输请求源。

DMAMUX 的输出0-7连接到外设总线DMA控制器HDMA,DMAMUX的输出8-15连接到系统总线DMA控制器XDMA。

用户可以通过配置DMAMUX寄存器,把来自特定外设的DMA请求,连接到XDMA或者HDMA的各个通道。

DMA控制器支持8对请求-响应的握手信号,请求信号来自功能模块并经由DMAMUX路由至DMA控制器,DMA控制器根据配置使用某个通道执行改请求,完成长度为SrcBurstSize的数据传输后发送响应信号给DMAMUX,完成硬件握手。

GPTMR:

HPM6750支持11个通用定时器,每个通用定时器支持4个通道,每个通道支持32位计数器,重载寄存器和一个输入捕获/输出比较通道,支持通用计时,输入捕获,输出比较,PWM 生成,以及产生中断和DMA请求。

其中:

  • 8 个定时器位于系统电源域称为通用定时器 GPTMR0∼7

  • 2 个定时器位于系统电源域的 CONN 子系统,称为网络定时器 NTMR0, NTMR1

  • 1 个定时器位于电源管理域,称为电源管理域定时器 PTMR。 

GPIO:

HPM6750支持2个GPIO控制器和

2个快速GPIO控制器。快速GPIO控制器IO翻转速率可达到主频的一半400Mhz。GPIO控制器IO翻转速率在10Mhz左右。

快速GPIO控制器FGPIO是CPU私有,外设无法直接访问。

本案例中波形频率是800khz,使用GPIO控制器速率完全足够。

< 应用细节 >

为获得高刷新帧率,结合HPM6750双核加持,一个核专门用来触发ENET DMA 做网络数据透传,另一个核用来解析、转换、触发HDMA,HDMA结合GPTMR拉取波形。故网络透传、数据转换处理、拉取波形三者并发执行。

案例中使用HDMA和GPTMR硬件握手来驱动GPIO高低生成指定的波形,CPU完全不参与,CPU的工作仅仅是解析网络数据包和触发DMA,故CPU在波形产生上,负载为0。因为使用了HDMA访问,因此要强调的是HDMA访问地址必须连续,需要使用的PIN管脚必须是同一组管脚,如:PA0~31/PB0~31/PC0~31/PD0~31等。

LED控制器UCS1903波形周期为800Khz,即一个周期1250ns。一个周期分为5段,即GPTMR定时器的频率为4x800Khz=4Mhz,每段1250/5=250ns(频率及分段情况,根据实际项目调整)。1码前4高后1低(高电平时长:250x4=1000ns);0码前2高后2低(高电平时长:250x2=500ns)。每路灯驱动点亮延时(每路第一个灯珠)在4ns左右,且完全的并发。

4.png

本方案最大支持32路,以32路计算占用RAM,4(32路32bit,4byte)×5(每个周期分为5段)×24(每个灯占用24个周期)×720(每路720个灯) 为338k,。为提升执行速率,源数据建议放到DLM或SRAM中,SDRAM速率相对较慢,SRAM读写时间短,静态功耗更低,总线利用率高,更适合性能要求较高的应用。

5.png

LED大屏幕刷新频率(帧率)则和LED大屏分辨率以及LED灯组合方式相关。本案例为1280x720的分辨率,每路串联720个灯驱动需耗时21.6ms(该耗时为UCS1903物理特性,和MCU性能无关),需要1280/32=40个MCU通过千兆串联。

一帧图像的数据大小为1280x720x3(RGB三种颜色值)=2700KByte=21.1Mbit,HPM6750千兆透传速率780Mb/s, 所以一帧图片传输耗时27.05ms。

每帧数据解析后将32(每个32路)x720x3图像数据转换成指定格式并触发HDMA,实测耗时26.03ms。以上拉波形耗时21.6ms、网络传输耗时27.05ms、数据转换处理耗时26.03ms均为并行执行,故1280x720分辨率的刷新一帧耗时为27.05ms,刷新帧率36.97帧/s fps。

双千兆以太网透传速率实测可达780Mb/s,通过上面计算可以看到,HPM6750双核加持下的高速链路完全能满足实时控制需求,确保了LED大屏显示的高刷新率及低延迟。

6.png

高性能驱动

HPM6750芯片介绍

HPM6750采用双RISC-V内核,主频达816MHz,凭借先楫半导体的创新总线架构、高效的L1缓存和本地存储器,创下了高达9220CoreMark和高达4651 DMIPS 的MCU性能新纪录。与ARM Cortex-M家族中性能领先的M7相比,HPM6750的 Coremark/MHz 跑分高出约10%。

除了高算力RISC-V CPU,HPM6700系列产品还创造性地整合了一系列高性能外设,包括支持2D图形加速的显示系统、高速USB、千兆以太网、CAN FD等通讯接口,高速12位和高精度16位模数转换器,面向高性能电机控制和数字电源的运动控制系统。

来源:先楫半导体HPMicro

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 406

前言

1.jpg

作者——宋兰中

随着自动化、智能化、网联化的发展及其在汽车中越来越广泛的应用,行业对各个汽车控制单元安全高效的更新数据提出了越来越高的要求。本文作者通过研究汽车领域对ECU更新需求和英飞凌AURIX™ TC3xx系列A/B SWAP功能,以AURIX™ TC3xx千兆以太网为媒介,TC387为载体研究如何实现OTA,并使用英飞凌AURIX™ TC3xx HSM模块有效提高OTA安全,验证了当前热门OTA技术。

什么是OTA

OTA:Over-the-Air Technology,即空中下载技术。

OTA升级:通过OTA方式实现固件或软件的升级。通过无线通信方式实现软件升级,都可以叫OTA升级,比如无线以太网/蓝牙等。

HSM:Hardware Security Module 模块保证刷写的安全可靠。

OTA 系统功能示意如图1所示:

2.png

图1 系统功能示意图

几种常见的OTA实现方式比较及优势分析

在进行SOTA更新时,需要把旧的应用程序擦除,把新的应用程序写入。常规的实现方式需要分别开发BootLoader程序和APP程序,MCU上电先运行BootLoader,BootLoader根据情况选择是否跳转到APP和是否进行程序更新。具体来说有以下几种方式:

1、方案一

BootLoader中内置通讯协议栈,更新时,先向MCU发送指令使其跳转到BootLoader,之后先擦除旧APP,在接收新APP的同时直接将其写入Flash的APP运行地址处。该方案的优点是不需要额外的Flash暂存数据,缺点是BootLoader代码更复杂,且如果数据传输发生中断,旧的APP将不能被恢复。该方案更适合Flash容量较小的MCU。

2、方案二

更新程序时,由APP接收更新数据并暂存于Flash,再将APP更新标志位置位;MCU重启时,BootLoader检查更新标志位,如有效,则擦除旧的APP,再将暂存于Flash的新APP数据写入APP运行地址处。该方案的优点是更新数据的接收由APP完成,BootLoader不需要通讯协议栈,代码量更小,且数据传输中断时,原有APP不损坏。缺点是需要额外的Flash空间暂存更新数据。

3、方案三

在Flash中划分出两块相同大小的区域,分为A区和B区,都用来存放APP,但同一时间下只有一个区的APP是有效的,分别设置一个标志位标识其有效性。初始状态下先将APP写入A区,更新的时候,将新的APP写入B区,再把A区的APP擦除,同时更新两个区的有效性标志位状态。BootLoader中判断哪个区的APP有效,就跳转到哪个区运行。这种方法不需要重复拷贝APP数据,但最大的一个缺陷是AB区的APP程序运行地址不同,需要分别编译,从而使得可应用性大大降低。

注释:同时也可以将方案一和方案二相结合,即先采用方案一在BootLoader程序中内置通讯协议栈,更新时,先向MCU发送指令使其跳转到BootLoader。之后接收更新数据的时候,采用方案二的方法,先将数据暂存于Flash,待数据全部接收完成后再擦除旧的APP,写入新的APP。结合方案一和方案二的优点,且能在没有APP或APP损坏的状态下实现程序更新。缺点是BootLoader代码量更大,Flash空间占用更大。

英飞凌AURIX™ TC3xx实现上述SOTA方案拓扑图,如图2 所示:

3.png

图2  TC3xx实现SOTA方案常见拓扑图

经过上面的分析,可以看到几种常见方案都有其优缺点。但对于TC3xx这一类的MCU来说,Flash容量通常都很大,足够用,所以通常可以先把APP暂存下来再进行更新,防止数据传输中断导致APP不可用。

同时AURIX™ TC3xx也支持AB SWAP功能。以方案三为例:TC3xx系列如果使能SOTA功能,它的AB Bank Flash物理地址支持两种不同物理地址映射到同一个逻辑地址方式(MCU自动从两种物理地址映射一个虚拟地址),从而使得APP编译时不需要区分AB区,使用相同的逻辑地址即可,从而避免了方案三的硬伤,为我们提供了一种最佳的SOTA方案。接下来,我们将以方案三作为基础,结合实例详细讲解使用英飞凌AURIX™ TC3xx如何实现更优的SOTA。

推荐的OTA实现方式详解

TC3xx的Flash地址映射方式

首先, TC33x和TC33xED不支持AB SWAP功能,其他TC3xx设备都能够通过AB SWAP功能实现SOTA软件更新。

TC3xx 如果使能了AB SWAP功能,Flash大小实际能用的最少减半,TC3xx各系列AB SWAP能力如图3所示。

4.png

图3  TC3xx支持AB SWAP功能芯片系列及映射关系

启用SOTA功能时,通过将PFLASH拆分为两A和B两个Bank的能力,其中一组可以读取和执行BANK组,而另一组可以写入新代码。因此虽然单个物理PFLASH Bank中不支持同时读写(RWW)功能,但是通过AB分组支持未使用的BANK组提供安全可靠地对数据执行写入和擦除操作的能力来实现SOTA功能。

举例TC387 AB SWAP特性

为了方便理解英飞凌TC3xx  SOTA 功能,我们以TC387为例进行分析。TC387 PFLASH 10M空间映射关系,使能了AB  SWAP后,实际使用大小为4M,如图4所示:

5.png

图4 TC387 PFLASH 映射关系以及可用PFLASH大小

TC387的4M PFlash地址空间无论是A Bank还是B Bank, 对于用户来说,统一为虚拟地址0X80000000-0x803FFFFF 4M地址空间。但是刷写过程中, A bank实际操作物理地址0X80000000-0x803FFFFF 4M空间,B Bank 实际操作物理地址0X8060 0000-0x80AF FFFF 4M空间。

注意,如果使能了AB SWAP功能,TC3xx PFLASH就没有所谓Local PFLASH和Global PFLASH概念,统一理解为Global PFLASH。CPU访问PFLASH由之前的CPUx可以通过Local总线访问本PFLASHx提高访问速度,变为CPUx访问PFLASH只能通过Global总线从而稍微增加了CPU访问PFLASH时间。具体参考图5所示。

6.png

图5  SOTA功能使能后只能通过Global总线访问PFLASH

TC3xx的SOTA功能描述

当TC387 SOTA功能激活时,PFLash被划分为两部分A Bank和B Bank,一部分用来存储读取可执行代码(active bank),另一部分可用来写入(inactive bank)即刷写。当APP更新完毕后,两个部分互换,即切换上面两种地址映射方式。在标准模式下使用PF0-1作为active bank,后文称作组A,在Alternate模式下使用PF2-3作为active bank,后文称作组B,就可以实现第二章节所述方案三,且能写入完全相同的APP程序,以相同的地址(逻辑地址)进行运行。

需要注意的是,所有NVM操作都是通过DMU使用PFLASH的物理系统地址执行的,也就是说,NVM操作总是使用标准的地址映射,而不管选择使用哪种地址映射。“NVM操作”是一个术语,用于任何针对FLASH的命令,如程序、擦除等,但不包括读取代码。有关SOTA地址映射的参数在Flash中的UCB(User Configuration Block)中进行配置,在UCB中配置后,只有当下次MCU复位的时候才会更新配置,后文会有详细解释。

TC3xx的SOTA功能实现详解

实现SOTA功能所需关注配置项

英飞凌AURIX™ TC3xx实现SOTA功能主要需要配置如图6所示:

7.png

图6 SOTA功能所需关注配置项

1、SOTA模式使能UCB_OTP.PROCONTP.SWAPEN,该参数决定是否开启SOTA模式,在寄存器Tuning Protection Configuration中的SWAPEN进行配置,对应UCB定义如下:

使能AB SWAP功能的UCB定义(UCB32-39是ORIG, 40-47 COPY,建议全部都需要配置,内容可以一样。)如下:

8.png9.png

10.png

11.png

2、配置UCB_SWAP_ORIG/UCB_SWAP_COPY中的UCB_SWAP_ORIG_MARKERLx/UCB_SWAP_COPY_MARKERLx,激活下一次reset需要运行的标准(0x00000055)还是备选(0x000000AA)地址。在寄存器SCU_SWAPCTRL中,可以查看当前激活的是标准还是备选地址。

我们参考下面关于SOTA功能实现的UCB,内容定义:

12.png


13.png

14.png

15.png

16.png

3、同1描述UCB块,只要使能了SOTA就会自动禁止CPU通过本地总线访问PFLASH功能,红色方框中寄存器值自动为1,即禁止。

17.png

18.png

19.png

SOTA功能实现时SWAP配置及流程

SOTA功能应用时:分系统刚启动时SWAP配置和系统运行时SWAP配置。

系统启动时SWAP配置:

如果SOTA功能使能,那么代码生成的文件至少需要刷进Active Bank。为了信息安全,建议通过UCB_PFLASH设置相应的sectors读写保护。

起始地址需要在UCB_BMHD配置好。

如果当前选择的是标准地址,那么0x00000055H需要写入UCB_SWAP的MARKERL0.SWAP这个域。然后通过把MARKERL0.SWAP的地址写入MARKERH0.ADDR予以确认;同时,将CONFIRMATIONL0.CODE的地址写入CONFIRMATIONH0.ADDR;同时,将57B5327FH写入57B5327FH予以确认。

UCB_ OTP一次性刷写保护以设置所需的OTP、WOP和标定保护。请注意,任何受OTP或WOP保护的扇区都不能使用新映像重新编程。

如果使能了HSM,主核代码和HSM代码需要同时刷入到AB bank的PFLASH S0-S39。

任何受OTP保护的HSM扇区都不能使用新映像重新编程。

最后,由于SWAPEN是在UCB_OTP里面设置的,所以要在下一个重启后SOTA的使能才有效。具体流程,参考图7所示:

20.png

图7 系统刚启动时SWAP配置及流程

系统运行时SWAP配置:

下面是程序正在运行时,需要实现软件SWAP到新程序的配置流程。

为了可以正确切换到新程序中,首先新的程序需要刷到对应的非激活的PFLASH Bank,如果非激活的BANK中对应的sectors使能了读写保护,那么刷写之前要先解保护。

切记:由于NVM特性,PFLASH 和DFLASH不能同时操作。因此,在应用程序中运行的EEPROM驱动程序和执行BOOT刷写之间需要进行一些协调。确保要写入的新程序所用的的PFLASH正确无误。例如:如果在PFLASH的SOTA重新编程/擦除期间出现硬故障,可以使用替换逻辑扇区功能(有关更多详细信息,请参阅DMU章节)。此功能允许用户使用“替换逻辑扇区”命令序列将故障逻辑扇区映射到冗余扇区。

由于UCB刷写次数的限制(100次),我们可以通过16 个SWAP配置依次使用来增加SWAP的次数(100*16=1600次)。方式流程如下图8所示:

注意:上一次用过的配置,CONFIRMATIONL(x-1) ) 和CONFIRMATIONH(x-1) 全写为1。

增加SWAP次数,可以通过UCB_SWAP_ORIG/UCB_SWAP_COPY配置如下寄存器:

21.png

22.png

23.png

24.png

25.png

增加SWAP次数方法流程如图8所示:

26.png

图8 增加SWAP次数方法流程

新的配置写好后,选择下一次要激活的程序,等下一次重启即运行新刷写的程序。详细流程如图9所示:

27.png

图9 系统运行时SWAP配置

总结

TC3xx  SWAP特性实现OTA功能后,特别注意以下五点:

  1. Flash大小实际能用的最少减半,详情参考图3。

  2. CPU访问Flash只能通过Global总线从而稍微增加了访问时间,参考图5。详细参数请查相应的数据手册。

  3. PFLASH的prefetch功能被禁止,同样会稍微影响整个系统的性能。

  4. 功能安全方面:Active Bank 的safety_endinit保护依旧存在,但是Inactive Bank的safety_endinit保护无效。

  5. 信息安全方面:Active Bank 和Inactive Bank同样受信息安全相关寄存器的保护。

至此,TC3xx  SWAP特性实现SOTA功能的配置和流程介绍完毕。

关于以太网、HSM为媒介、对SOTA功能研究与实现介绍,请关注后续更新。

来源:英飞凌汽车电子生态圈(作者:宋兰中)

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 467

IAP概述

工作原理

在应用中编程(IAP)是一种在现场通过MCU通信接口(例如USART、USB、CAN和以太网)进行固件升级的方式。

启动微控制器时,可以选择让其在以下任一模式运行:

  • IAP模式,用于执行IAP代码

  • 正常模式,用于执行应用程序代码

无论是IAP代码还是应用程序代码都位于微控制器的内置FLASH中,IAP代码通常存储在MCU FLASH的第一页,而用户应用程序代码则占据剩余的FLASH区域。

图1介绍了IAP操作流程

1.png

图1 IAP操作流程

使用MCU以太网接口实现IAP

如果有以太网可用,则它通常是嵌入式系统中实现IAP功能的首选接口,其优势包含:

  • 高速通信接口(10/100 Mbps)

  • 通过网络(LAN或WAN)进行远程编程

  • 可以使用FTP、TFTP、HTTP等基于TCP/IP栈的标准应用协议实现IAP

通过以太网在AT32F437上实现IAP

本应用笔记将介绍两种使用以太网通信外设在AT32F437上实现IAP的解决方案:

  • 使用TFTP(简单文件传输协议)的IAP

  • 使用HTTP(超文本传输协议)的IAP

这两种解决方案均基于LwIP栈(2.1.2),它是轻量级的TCP/IP协议栈

使用TFTP实现IAP方法

使用TFTP实现IAP的方法广泛应用于需要具有固件升级功能的嵌入式系统应用中(例如,嵌入式Linux bootloader中)。

TFTP是一种在UDP传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。

为实现IAP,需要在LwIP协议栈上实现一个简单的TFTP服务器,服务器只须处理来自PC的TFTP客户端的写入请求即可。

使用HTTP实现IAP方法

使用HTTP协议进行固件升级没有使用TFTP常见,但是在需要通过Internet进行远程编程时,这种解决方案就显得极为有用。这时,需要使用TCP传输协议来实现HTTP服务。

HTTP基于TCP协议运行,它提供了一个一种以HTML表单形式从Web客户端(Mozilla Firefox或Microsoft Internet Explorer)发送一个二进制文件的方式。这称为HTTP文件上传(RFC1867)。

本文档中的后续章节将详细介绍这两种IAP方法的实现,并会对如何使用软件进行说明。

使用TFTP实现IAP

TFTP概述

TFTP是一种基于UDP的简单文件传输协议。文件传输由TFTP客户端发起,会向TFTP服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块尽情发送(例如每块含512个字节)。

必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的编块号来实现。数据块小于固定块大小表示文件传输的结束。

图2描述了各种TFTP数据包的格式:

2.png

图2 TFTP数据包

表1列出了TFTP操作码。

3.png

表1 TFTP操作码

使用TFTP为AT32F437实现IAP

此IAP实现由基于LwIP TCP/IP栈的TFTP服务器组成。此服务器会对远程TFTP客户端(PC)发来的写请求做出响应。TFTP读请求会被忽略。TFTP通常会将接收到的文件写入到文件系统,但是该服务器却并非如此,它会将接受到的数据块写入到MCU FLASH(用户FLASH区域中)。注:在这个实现过程中,数据块大小固定为512个字节。

图3 概述了使用TFTP实现IAP操作的过程。

4.png

图3 使用TFTP实现IAP流程图

使用软件

要通过TFTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消USE_IAP_TFTP选项的注释。

2. 重新编译软件。使用生成的映射文件,确保IAP代码区域之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要在按住开发版上的USER Key。

5. 分配完IP后(可以是静态或动态地址),用户即可启动IAP流程。

6. 在PC侧,打开TFTP客户端(例如Tftpd64),然后配置TFTP服务器地址(Tftpd64中的主机地址)

7. 单击Tftpd64实用程序中的Put(写入)按钮,启动文件写请求

8. 在IAP操作结束时,可以复位开发板并在AT32 FLASH中运行刚刚编写的应用程序

5.png


图4 TFTP64对话框

使用HTTP实现IAP

HTTP文件上传概述

RFC1867中定义了使用HTTP进行文件上传。此文件上传方法是基于HTTP表单。发送原始二进制数据时,要使用HTTP POST方法而不是GET方法。

以下是一个HTML代码示例,用于实现基于表单的文件上传:

6.png

图5 文件上传HTML表单的浏览器画面

注:在发送文件数据前,Web客户端会首先发送HTTP头文件数据,其中包含诸如文件名称和内容长度等信息,Web服务器必须对其中的一些信息进行解析。

Web客户端使用的HTTP头文件格式并不总是相同。图6显示的是Internet Explorer在POST请求中的HTTP头文件格式。图7显示的是Mozilla Firefox的HTTP头文件格式。

HTTP Web服务器必须能够处理这些不同的格式。

7.png

图6 IE11 HTTP头文件格式

8.png

图7 Mozilla Firefox HTTP头文件格式


使用HTTP在AT32F437上实现IAP

此IAP实现由基于LwIP栈的HTTP Web服务器组成。

在浏览器中输入的AT32的IP地址后,将显示登录Web页面(图8)。此登录Web页面只有已获授权的用户才能使用IAP文件上传功能。

9.png

图8 登录web页面

注:

1. 默认的User ID(用户ID)为user, Password(密码)为at32

2. 如果User ID(用户ID)或Password(密码)不正确,登录Web页面会重新加载。

登录成功后,浏览并选择要上传到AT32 FLASH的二进制文件

注:确保二进制文件大小不超过AT32用户FLASH区域的总容量。

单击Upload(上传)按钮后(参见图x),将向服务器发出POST请求。这时,服务器开始擦除用户FLASH区域的全部内容,等待接受二进制文件原始数据。然后将街收到的数据写入用户FLASH区域。

注意,要接收的数据总长度信息将从传输开始时发出的HTTP头文件数据中提取。

在IAP操作结束后,Web页面将只是IAP操作成功,同时显示一个可用于复位MCU的按钮。

10.png

图9 文件上传完成web页面

图10对使用HTTP实现IAP方法进行了总结

11.png

图10 使用HTTP实现IAP的流程图

使用软件

要使用HTTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消选项USE_IAP_HTTP的注释。

2. 重新编译软件,使用生成的映射文件,确保IAP区域代码之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要再按住开发板上的USER Key。

5. 分配完IP地址后(可以是静态或动态地址),用户即可启动IAP流程

6. 打开Web客户端(Mozilla Firefox或Internet Explorer),输入AT32 IP地址

7. 会显示登录Web页面。在User ID(用户ID)字段中输入”user”,在Password(密码)字段中输入”at32”,然后按下Login(登录)按钮。

8. IP操作结束后,将加载新的Web页面,只是文件上传操作已经成功完成。

9. 可以按下Reset MCU(复位MCU)按钮复位MCU,然后在AT32 FLASH中运行刚刚编写的应用程序。

注:使用以下Web客户端对软件进行测试:Microsoft Internet Explorer 11和Mozilla Firefox 80.0

已知限制

二进制文件中添加的额外字节

Internet浏览器(Microsoft Internet Explorere或Mozilla Firefox)会在上传的二进制文件的末尾添加一个随机边界标记(根据RFC1521规定,此标记不得超过72个字节)。在最新的IAP软件版本中,并没有删除此边界标记,而是在空间足够的情况下将其存储在FLASH中。如果没有足够空间,则不会在FLASH中写入额外字节,也不会返回错误。

环境

硬件配置

1、DM9162以太网模块

2、AT-START-F407开发板

3、以太网线

软件源码

  • utilities\AT32F437_emac_iap_demo\source_code\bootloader, emac iap源程序,运行iap升级程序

MAC地址和IP地址设置

在netconf.h文件中对MAC地址进行了定义。

默认的MAC地址固定为:00:00:44:45:56:01。

在netconf.h文件中对IP地址进行了定义。

IP地址可以设置为静态地址,也可以设置为由DHCP服务器分配的动态地址。默认的静态地址为:192.168.81.37。

可以通过在lwipopts.h文件中使能LWIP_DHCP来选择DHCP模式。

软件文件组成

12.png

表2 介绍了项目源文件

注:表格中没有列出标准固件库和 LwIP 栈中所使用的文件。

构建IAP映像

为了构建IAP映像(将会使用IAP软件加载),应确保以下几点:

1. 编译/链接的软件必须从用户FLASH区域的起始地址开始运行(此地址应与iap.h的APP_START_SECTOR_ADDR中所定义的地址相同)。

2. 将向量表的起始地址配置为用户FLASH区域的起始地址:

A. 在应用程序代码中,使用misc.h/.c驱动程序的NVIC_SetVectorTable函数来重新定位应用程序加载地址的向量表。

例如,将向量表基本位置设置为0x08010000:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);

B. 通过修改system_at32f4xx.c文件中定义的VECT_TAB_OFFSET常量的值。

例如,将向量表基本位置设置为0x08010000:

#define VECT_TAB_OFFSET 0x10000

3. 编译后的软件大小不超过用户FLASH区域的总容量。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 108

IAP概述

工作原理

在应用中编程(IAP)是一种在现场通过 MCU 通信接口(例如 USART、USB、CAN 和以太网)进行固件升级的方式。

启动微控制器时,可以选择让其在以下任一模式运行:

  • IAP模式,用于执行IAP代码

  • 正常模式,用于执行应用程序代码

无论是IAP代码还是应用程序代码都位于微控制器的内置FLASH中,IAP代码通常存储在MCU FLASH的第一页,而用户应用程序代码则占据剩余的FLASH区域。

图1介绍了IAP操作流程

“图1

使用MCU以太网接口实现IAP

如果有以太网可用,则它通常是嵌入式系统中实现IAP功能的首选接口,其优势包含:

  • 高速通信接口(10/100 Mbps)

  • 通过网络(LAN或WAN)进行远程编程

  • 可以使用FTP、TFTP、HTTP等基于TCP/IP栈的标准应用协议实现IAP

通过以太网在AT32F407上实现IAP

本应用笔记将介绍两种使用以太网通信外设在AT32F407上实现IAP的解决方案:

  • 使用TFTP(简单文件传输协议)的IAP

  • 使用HTTP(超文本传输协议)的IAP

这两种解决方案均基于LwIP栈(2.1.2), 它是轻量级的TCP/IP协议栈

使用TFTP实现IAP方法

使用TFTP实现IAP的方法广泛应用于需要具有固件升级功能的嵌入式系统应用中(例如,嵌入式Linux bootloader中)。

TFTP是一种在UDP传输层上执行的简单文件传输协议。此协议非常适合在局域网环境中使用。它基于客户端/服务器架构,在这种架构中,客户端会向服务器发出文件传输请求(读取或写入操作)。为实现IAP,需要在LwIP协议栈上实现一个简单的TFTP服务器,服务器只须处理来自PC的TFTP客户端的写入请求即可。

使用HTTP实现IAP方法

使用HTTP协议进行固件升级没有使用TFTP常见,但是在需要通过Internet进行远程编程时,这种解决方案就显得极为有用。这时,需要使用TCP传输协议来实现HTTP服务。

HTTP基于TCP协议运行,它提供了一个一种以HTML表单形式从Web客户端(Mozilla Firefox或Microsoft Internet Explorer)发送一个二进制文件的方式。这称为HTTP文件上传(RFC1867)。

本文档中的后续章节将详细介绍这两种IAP方法的实现,并会对如何使用软件进行说明。

使用TFTP实现IAP

TFTP概述

TFTP是一种基于UDP的简单文件传输协议。文件传输由TFTP客户端发起,会向TFTP服务器发送读取或写入请求。服务器确认请求后,即开始进行文件数据传输。数据将以固定大小的块尽情发送(例如每块含512个字节)。

必须在每个发出的数据块都得到接收方确认后,才可以发送下一个数据块。这种确认机制通过随各个数据块一同发送的编块号来实现。数据块小于固定块大小表示文件传输的结束。

图2描述了各种TFTP数据包的格式:

“图2
图2 TFTP数据包

表1列出了TFTP操作码。

“表1
表1 TFTP操作码

使用TFTP为AT32F407实现IAP

此IAP实现由基于LwIP TCP/IP栈的TFTP服务器组成。

此服务器会对远程TFTP客户端(PC)发来的写请求做出响应。

TFTP读请求会被忽略。

TFTP通常会将接收到的文件写入到文件系统,但是该服务器却并非如此,它会将接受到的数据块写入到MCU FLASH(用户FLASH区域中)。

注:在这个实现过程中,数据块大小固定为512个字节。

图3概述了使用TFTP实现IAP操作的过程。

“图3
图3 使用TFTP实现IAP流程图

使用软件

要通过TFTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消USE_IAP_TFTP选项的注释。

2. 重新编译软件。使用生成的映射文件,确保IAP代码区域之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要在按住开发版上的USER Key。

5. 分配完IP后(可以是静态或动态地址),用户即可启动IAP流程。

6. 在PC侧,打开TFTP客户端(例如Tftpd64),然后配置TFTP服务器地址(Tftpd64中的主机地址)

7. 单击Tftpd64实用程序中的Put(写入)按钮,启动文件写请求

8. 在IAP操作结束时,可以复位开发板并在AT32 FLASH中运行刚刚编写的应用程序

“图4
图4 TFTP64对话框

使用HTTP实现IAP

HTTP文件上传概述

RFC1867中定义了使用HTTP进行文件上传。此文件上传方法是基于HTTP表单。发送原始二进制数据时,要使用HTTP POST方法而不是GET方法。

以下是一个HTML代码示例,用于实现基于表单的文件上传:

“图5
图5 文件上传HTML表单的浏览器画面

注:在发送文件数据前,Web客户端会首先发送HTTP头文件数据,其中包含诸如文件名称和内容长度等信息,Web 服务器必须对其中的一些信息进行解析。

Web客户端使用的HTTP头文件格式并不总是相同。图6显示的是Internet Explorer在POST请求中的HTTP头文件格式。图7显示的是Mozilla Firefox的HTTP头文件格式。

HTTP Web服务器必须能够处理这些不同的格式。

“图6
图6 IE11 HTTP头文件格式

“图7
图7 Mozilla Firefox HTTP头文件格式

使用HTTP在AT32F407上实现IAP

此IAP实现由基于LwIP栈的HTTP Web服务器组成。

在浏览器中输入的AT32的IP地址后,将显示登录Web页面(图8)。此登录Web页面只有已获授权的用户才能使用IAP文件上传功能。

“图8
图8 登录web页面

注:1. 默认的User ID(用户ID)为user, Password(密码)为at32
2. 如果User ID(用户ID)或Password(密码)不正确,登录Web页面会重新加载。

登录成功后,浏览并选择要上传到AT32 FLASH的二进制文件

注:确保二进制文件大小不超过AT32用户FLASH区域的总容量。
单击Upload(上传)按钮后(参见图x),将向服务器发出POST请求。这时,服务器开始擦除用户FLASH区域的全部内容,等待接受二进制文件原始数据。然后将街收到的数据写入用户FLASH区域。

注意,要接收的数据总长度信息将从传输开始时发出的HTTP头文件数据中提取。

在IAP操作结束后,Web页面将只是IAP操作成功,同时显示一个可用于复位MCU的按钮。

“图9
图9 文件上传完成web页面

图10对使用HTTP实现IAP方法进行了总结

“图10
图10 使用HTTP实现IAP的流程图

使用软体

要使用HTTP对IAP进行测试,需执行以下步骤:

1. 在iap.h文件中,取消选项USE_IAP_HTTP的注释。

2. 重新编译软件,使用生成的映射文件,确保IAP区域代码之间没有重叠(从地址0x0开始),而且用户FLASH区域从以下地址开始:APP_START_SECTOR_ADDR(在iap.h中定义)。

3. 在AT32 FLASH中编写并运行软件程序。

4. 要进入IAP模式,需要再按住开发版上的USER Key。

5. 分配完IP地址后(可以是静态或动态地址),用户即可启动IAP流程

6. 打开Web客户端(Mozilla Firefox或Internet Explorer),输入AT32 IP地址

7. 会显示登录Web页面。在User ID(用户ID)字段中输入”user”,在Password(密码)字段中输入”at32”,然后按下Login(登录)按钮。

8. IP操作结束后,将加载新的Web页面,只是文件上传操作已经成功完成。

9. 可以按下Reset MCU(复位MCU)按钮复位MCU,然后在AT32 FLASH中运行刚刚编写的应用程序。

注:使用以下Web客户端对软件进行测试:Microsoft Internet Explorer 11和Mozilla Firefox 80.0

已知限制

二进制文件中添加的额外字节

Internet浏览器(Microsoft Internet Explorere或Mozilla Firefox)会在上传的二进制文件的末尾添加一个随机边界标记(根据RFC1521规定,此标记不得超过72个字节)。在最新的IAP软件版本中,并没有删除此边界标记,而是在空间足够的情况下将其存储在FLASH中。如果没有足够空间,则不会在FLASH中写入额外字节,也不会返回错误。

环境

硬件配置

1. DM9162以太网模块

2. AT-START-F407开发板

3. 以太网线

软件源码

utilities\at32f407_emac_iap_demo\source_code\bootloader, emac iap源程序,运行iap升级程序

MAC地址和IP地址设置

在netconf.h文件中对MAC地址进行了定义。

默认的MAC地址固定为:00:00:44:45:56:01。

在netconf.h文件中对IP地址进行了定义。

IP地址可以设置为静态地址,也可以设置为由DHCP服务器分配的动态地址。默认的静态地址为:192.168.81.37。

可以通过在lwipopts.h文件中使能LWIP_DHCP来选择DHCP模式。

软件文件组成

“表2
表2 介绍了项目源文件

注:表格中没有列出标准固件库和LwIP栈中所使用的文件。

构建IAP映像

为了构建IAP映像(将会使用IAP软件加载),应确保以下几点:

1. 编译/链接的软件必须从用户FLASH区域的起始地址开始运行(此地址应与iap.h的
APP_START_SECTOR_ADDR 中所定义的地址相同)。

2. 将向量表的起始地址配置为用户FLASH区域的起始地址:
A. 在应用程序代码中,使用misc.h/.c驱动程序的NVIC_SetVectorTable函数来重新定位应用程序加载地址的向量表。

例如,将向量表基本位置设置为0x08010000:

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);

B. 通过修改system_at32f4xx.c文件中定义的VECT_TAB_OFFSET常量的值。

例如,将向量表基本位置设置为0x08010000:

#define VECT_TAB_OFFSET 0x10000

3. 编译后的软件大小不超过用户FLASH区域的总容量。

来源:AT32 MCU 雅特力科技
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 52

1、前言

STM32H7 以太网的 MMC(MAC management counter)中断是个有点特别的中断。特殊之处在于它是默认使能。如果我们在代码里不针对 MMC 进行相关处理,就会造成一些异常现象。我们先来看一个真实的客户案例。

2、客户案例

客户使用 STM32H750 作为主控,与其他设备之间进行以太网通讯。

客户在压力测试中发现:

• 设备从第一次通讯开始,累计 7 到 8 天,就会发现 STM32H750 不再响应用户的请求。

• 客户通过使用 IDE 和添加辅助代码可以发现,STM32H750 会不停地进入以太网中断,导致所使用的操作系统无法进行有效的系统调度。

• 问题发生后,客户无论拔下网线或者再次连上网线,STM32H750 依然会不停的进入以太网中断。

• 客户尝试使用 IDE 查看所有以太网寄存器,会发现有时侯能够让系统恢复正常。

3、分析

系统不停的进入以太网中断,说明某个中断在被某种条件下被不停的触发,或者中断触发后没有被处理。进一步,当系统出现异常状况后,拔掉网线,中断依然不断的进入,说明该异常并不需要外界不停的输入,也就说明可能是中断没有被处理所导致。所以,客户首先想到的是补全所有使能的以太网中断的清除代码。然而,客户再次测试,却发现累计 7 到 8 天,问题再次发生。

在这种情况下,为了深刻了解该状况的原因,我们建议客户,抓取异常时的寄存器现场,然后和正常状态时的寄存器进行对比。我们在设备未发生异常前,抓取了以太网的三组寄存器 DMA、 MTL 和 MAC。同时,我们在发生异常后,在同一设备再次进行这三组寄存器的抓取。然后,我们使用文本比较工具,对两次的寄存器进行比较。我们很快就可以发现,MAC 寄存器存在值得关注的差异。MAC 寄存器对比如下:

“STM32H7

我们可以看到在系统异常情况下下,MMCRXIS 和 MMCIS 被置位了。

我们从参考手册 RM0433 (STM32H742, STM32H743/753 and STM32H750 Value line advanced Arm®-based 32-bit MCUs)(直接搜索关键子 MMCRXIS)中可以看到 MMCRXIS 和 MMCIS 表示系统收到了 MMC 接收中断。

“STM32H7

在两次三组寄存器的比较中,我们看到系统生成了 MMC 接收中断(MMC_RX_INTERRUPT 中 RXUCGPIS)。这个符合前文的 MMCRXIS 和 MMCIS 的状态。

“STM32H7

从参考手册 RM0433 中我们可以看到,只要 MMC 选项使能,该中断标志就为有效。但是我们并没有使能 MMC 选项,甚至我们都没有使能 MMC 中断,为什么还是有中断产生呢?

4、MMC 中断的特点

MMC 选项其实是默认使能。我们可以从参考手册 RM0433 中看到这一点。

“STM32H7

在 MMC 默认使能的情况下,什么情况下会产生中断呢?

让我们在 RM0433 里搜索下两次寄存器比较发现的 RXUCGPIS 寄存器:

“STM32H7

综合这两点,我们可以认为,在长时间以太网收发包之后,MMC 中断几乎一定会发生。这符合客户案例的场景,例如,重现这个问题需要 7 到 8 天。当然从这里我们也可以推断出,我们如果加快测试数据包收发的发送,MMC 中断会发生更早。那么,如何避免在产品应用中这种问题发生呢?

5、解决方案

1.1. 使用 MMC 中断

MMC 中断是个有用的功能。如果我们要使用的话,可以参考 MMC Rx interrupt register (ETH_MMC_RX_INTERRUPT)和 MMC Tx interrupt register (ETH_MMC_TX_INTERRUPT)的描述。我们需要对 MMC 进行一个读的操作。

“STM32H7

“STM32H7

这也解释了,客户为什么发现,通过调试器一个一个去读取以太网寄存器,会在某个操作时让异常状态恢复到正常。

1.2. 关闭 MMC 中断

在很多情况下,MMC 中断对实际产品没有意义。例如,在这个案例中,我们可以选择关闭 MMC中断。这就需要用到 MMC 中断的 mask 寄存器:

• MMC Rx interrupt mask register (ETH_MMC_RX_INTERRUPT_MASK)

• MMC Tx interrupt mask register (ETH_MMC_TX_INTERRUPT_MASK)

我们可以添加以下代码到我们的应用代码里

“STM32H7

客户反馈找不到 ETH 的定义。其实在 STM32H7 的例程里,我们可以很容易发现 ETH 定义在

STM32Cube\Repository\STM32Cube_FW_H7_V1.8.0\Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h750xx.h:

“STM32H7

也就是说,如果你的工程代码源自 STM32Cube 例程,你应该能够加入以上代码并且能够成功运行。

在加入上述代码或者类似操作后,客户反馈,再次进行超过 7 天以上的压力测试,系统运行正常。

6、总结

STM32H7 的 MMC 中断需要加以注意,如果不使用 MMC,需要确保它已经关闭;否则在经过长时间网络收发后,系统会产生并非用户所期望的中断,导致系统假死。另外,我们也看到了调试STM32 以太网的常规方式,也就是借助工具而不需要写代码就可以进行寄存器的比较。这种方法值得使用 STM32 以太网的用户进行调试时参考。

来源:STM32单片机
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 36

STM32H7 以太网的MMC(MAC management counter)中断是个有点特别的中断。特殊之处在于它是默认使能。如果我们在代码里不针对MMC 进行相关处理,就会造成一些异常现象。我们先来看一个真实的客户案例。

详阅请点击下载《STM32H7以太网的MMC中断》

来源:ST
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 29

页面

订阅 RSS - 以太网