装载空间背景代码

空间背景代码  时间:2021-01-27  阅读:()

AN0003:UART引导装载程序本应用说明专供EFM32UART引导装载程序用户使用.
借助该引导装载程序,用户无需调试器即可通过UART对EFM32系列0、EZR32系列0和EFM32系列1设备编程.
除了启动用户应用,EFM32/EZR32引导装载程序还提供破坏性写入模式,允许用户覆盖引导装载程序,以便将整个闪存空间用于用户应用.
在EFM32系列1设备中,引导装载程序驻留在闪存的保留区,因此这些设备的引导装载程序不提供破坏性写入模式.
然而,可以通过设置锁定位页中的位来禁用EFM32系列1设备的引导装载程序.
在所有设备中,可通过CRC校验和来验证闪存内容,并可启用调试锁定以保护IP.
由于引导装载程序使用已建立的XMODEM-CRC协议来上传数据,因此可使用任何串行终端程序与引导装载程序通信.
内容要点所有EFM32设备均使用引导装载程序预编程,实现:可与客户应用同时保留以支持现场升级.
可被覆写以最大程度地增加可用闪存空间(仅针对EFM32系列0和EZR32系列0)或可被锁定位页的锁定位禁用(仅针对EFM32系列1).
使用UART接口进行通信(有关部件特定外围配置和所支持波特率的信息,请参见第1.
2节).
支持单字符命令:对EFM32设备进行编程(上传/覆写)、验证(计算校验和)、保护(写入保护、锁定调试端口)等.
接受使用XMODEM-CRC协议进行文件传输.
在复位以后被调用,同时DBG_SWCLK被拉到高电平.
silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
721.
设备兼容性本应用说明支持多个设备系列,某些功能因设备不同而有所差异.
UART引导装载程序已在所有EFM32Series0设备、所有EZR32Series0设备和部分EFM32Series1设备中预编程.
包含USB的EFM32Series0和EZR32Series0设备还内置了USB引导装载程序.
对于已启用USB的设备,引导装载程序包含在应用说明AN0042:USBUART引导装载程序中,通过SimplicityStudio(www.
silabs.
com/simplicity)或SiliconLabs网站www.
silabs.
com提供.
以下是支持的设备列表:EFM32系列0:EFM32Gecko(EFM32G)EFM32GiantGecko(EFM32GG)EFM32WonderGecko(EFM32WG)EFM32LeopardGecko(EFM32LG)EFM32TinyGecko(EFM32TG)EFM32ZeroGecko(EFM32ZG)EFM32HappyGecko(EFM32HG)EZR32系列0:EZR32WonderGecko(EZR32WG)EZR32LeopardGecko(EZR32LG)EZR32HappyGecko(EZR32HG)EFM32系列1(EFM32xGxx):EFM32PearlGecko(EFM32PG1)EFM32JadeGecko(EFM32JG1)Note:该引导装载程序当前不支持EFM32xG12和EFM32xG13设备.
Note:该引导装载程序目前不支持EFM32GG11设备.
Note:该引导装载程序软件不支持EFM32系列1.
该引导装载程序当前不支持EFR32系列1(EFR32xG1/EFR32xG12/EFR32xG13)设备.
这些设备的引导装载程序包含在协议栈软件中.
这些设备包括:EFR32BlueGecko(EFR32BGxx)EFR32FlexGecko(EFR32FGxx)EFR32MightyGecko(EFR32MGxx)AN0003:UART引导装载程序设备兼容性silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|22.
启动UART引导装载程序2.
1进入引导装载程序模式如果要进入引导装载程序模式,必须将DBG_SWCLK拉到高电平并将EFM32系列0、EZR32系列0或EFM32系列1设备复位.
如果DBG_SWCLK在复位时为低电平,引导装载程序会检查闪存的应用空间.
如果应用空间中包含有效应用并且DBG_SWCLK为低电平,引导装载程序将运行该应用.
如果不存在有效的应用,引导装载程序将处于EM2睡眠模式以节省电力,并会定期检查引导装载程序引脚.
Note:DBG_SWCLK具有内部下拉电阻.
如未连接该引脚,将不会在复位时调用引导装载程序模式.

Note:引导装载程序的早期版本使用DBG_SWDIO和DBG_SWCLK引脚进入引导装载程序.
您仍可通过将DBG_SWDIO线拉至低电平来进入引导装载程序,但调试锁定将不起作用.
2.
2利用UART引导装载程序初始化通信有对于EFM32系列0和EZR32系列0设备,UART引导装载程序通常使用GPIO引脚PE11(RX)和PE10(TX)进行UART通信(例外情况请参见以下注释).
有关引脚位置,请查看具体设备数据表.
Note:对于EFM32G、EFM32GG、EFM32LG和大多数EFM32TG部件,引导装载程序使用位置0处的USART0进行通信.
然而,一些设备没有USART0外围设备,另一些设备有USART0外围设备但不包含位置0选项.
出于上述及其他原因,EFM32ZG、EFM32HG及一些EFM32TG(尤其是EFM32TG108Fxx和EFM32TG110Fxx)部件均使用LEUART0、位置3.
请注意,该位置与常规SWD端口重叠,如上所述,该端口用于进入引导装载程序.
因此,在使用这些部件时,应在DBG_SWCLK上使用4k上拉电阻.
对于EFM32系列1设备,引导装载程序在端口F0(DBG_SWCLK)和F1(DBG_SWDIO)上使用USART连接.
这些设备也应在DBG_SWCLK上使用4k上拉电阻.
UART使用1个停止位、8个数据位、无校验位.
此外,引导装载程序还使用自动波特率来启用各种不同终端.
自动波特率功能通过终端程序感应所用的波特率并进行相应调节.
打开设备串行连接后立即向引导装载程序发送大写字母"U",完成初始化.
引导装载程序可感应位之间的时序,并调节其自己的预分频器来匹配所感应的波特率.
引导装载程序适用于范围从57600到460800的波特率.
AN0003:UART引导装载程序启动UART引导装载程序silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|3Figure2.
1.
在Windows7上的TeraTerm中配置UART引导装载程序的串行端口.
引导装载程序成功初始化之后,即会打印引导装载程序版本和芯片唯一ID:1.
40ChipID:F08AB6000B153525Note:1.
40版之前的引导装载程序版本不能打印引导装载程序版本,只能打印芯片唯一ID.
AN0003:UART引导装载程序启动UART引导装载程序silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|42.
3命令行接口命令行接口使用单个字母字符作为命令.
支持下列命令:u上传应用.
EFM32系列0和EZR32系列0:该命令允许用户将应用上传到闪存,同时保持引导装载程序完好无损.
为了使应用正常工作,必须使用将EFM32G、EFM32TG、EFM32ZG和EFM32HGF部件的应用起始地址放在0x800以及将EFM32GG、EFM32LG和EFM32WG部件的应用起始地址放在0x1000的链接器文件.
使用XMODEM-CRC协议传输应用.
EFM32系列1:该命令允许用户将应用上传到闪存.
无需对用户应用进行特殊修改,因为引导装载程序驻留在闪存保留区,无法覆写.
使用XMODEM-CRC协议传输应用.
d破坏性上传(仅针对EFM32系列0和EZR32系列0).
该命令允许用户将应用上传到闪存,从而覆写引导装载程序.
无需修改用户应用的起始地址.
使用XMODEM-CRC协议传输应用.
EFM32系列1设备上没有破坏性上传选项.
t上传到用户页.
该命令允许用户写入用户信息页.
使用XMODEM-CRC协议上传数据.
p上传到锁定页.
该命令允许用户写入锁定位信息页.
使用XMODEM-CRC协议上传数据.
b启动应用.
该命令将启动已上传的应用.
l调试锁定.
该命令用于设置锁定页的调试锁定位.
EFM32系列0、EZR32系列0或EFM32系列1将被锁定以进行调试.
v验证闪存校验和.
该命令将计算整个闪存的CRC-16校验和并打印.
该命令适合与[d]命令(EFM32系列0和EZR32系列0)或[u]命令(EFM32系列1)结合使用.
请注意,对于EFM32系列1设备,[v]命令和[c]命令得到同样的结果.
c验证应用校验和.
该命令将计算应用的CRC-16校验和并打印.
该命令适合与[u]命令结合使用.
请注意,对于EFM32系列1设备,[c]命令和[v]命令得到同样的结果.
n验证用户页校验和.
该命令将计算用户页的CRC-16校验和并打印.
该命令适合与[t]命令结合使用.
m验证锁定页校验和.
该命令将计算锁定页的CRC-16校验和并打印.
该命令适合与[p]命令结合使用.
r复位EFM32系列0、EZR32系列0或EFM32系列1设备.
AN0003:UART引导装载程序启动UART引导装载程序silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|53.
上传应用如果要将应用上传到EFM32系列0、EZR32系列0和EFM32系列1,必须使用[u](所有设备)或[d](仅针对EFM32系列0和EZR32系列0)命令.
按下键以后,使用内置支持XMODEM-CRC的终端软件传输文件.
可以使用支持XMODEM-CRC传输的任何终端软件.
下图所示为使用支持内置传输的TeraTerm传输文件的示例.
Figure3.
1.
通过TeraTerm使用XMODEM-CRC传输文件3.
1创建适用于引导装载程序-EFM32系列0和EZR32系列0的应用Note:有关创建适用于EFM32系列1设备的应用的信息,请参见3.
2创建适用于引导装载程序-EFM32系列1的应用.
使用适用于EFM32系列0和EZR32系列0设备的引导装载程序上传应用时,存在破坏性和定期上传两种可能.
破坏性上传会覆写引导装载程序.
在本例中,创建应用时无需采取额外的步骤.
定期上传会保留引导装载程序,从而允许未来使用引导装载程序进行升级.
不过,必须对应用进行设置,才能实现这一功能.
为了使应用适用于引导装载程序,对于EFM32G、EFM32TG、EFM32ZG和EFM32HG部件,必须使用起始地址0x800创建应用;对于EFM32GG、EFM32LG和EFM32WG部件,必须使用起始地址0x1000创建应用.
原因在于,引导装载程序本身分别占用0x0与0x7FF或0x0FFF之间的闪存区.
为了使应用与引导装载程序共存,必须更改应用链接器文件的默认闪存起始地址0x0.
Note:如果在使用任一链接器文件时需要调试应用,则必须在代码中明确设定矢量表的位置.
可通过以下方式完成:SCB->VTOR=0x800;//EFM32G,EFM32TG,EFM32ZGandEFM32HGparts或者SCB->VTOR=0x1000;//EFM32GG,EFM32LGandEFM32WGparts在发布的应用中,没有必要如此,因为在应用启动之前,VTOR由引导装载程序本身设定.
有关详情,请参见Boot.
c.
3.
1.
1使用IAR创建应用如果要使用IAR创建应用,请使用项目包含的链接器文件.
这将为二进制文件设置正确的起始地址.
在项目选项菜单中,选择[输出转换器]和[生成额外输出].
选择[二进制文件]输出格式.
所得的二进制文件可用于UART引导装载程序.
AN0003:UART引导装载程序上传应用silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|63.
1.
2使用KeiluVision4/MDK-ARM创建应用如果要使用KeiluVision4/MDK-ARM创建应用,必须先更改项目的目标设置.
在选项对话框中,将IROM1更改为起始于0x800或0x1000并从大小字段中减去0x800或0x1000.
(为0x800还是0x1000取决于使用哪个部件).
如果要生成二进制输出文件,可使用命令行实用工具"fromelf.
exe",该实用工具通常安装在C:\Keil\ARM\BIN40\fromelf.
exe下.
有关详情,请参见"uVision帮助"中的Realview实用工具指南.
Figure3.
2.
设置KeiluVision4/MDK-ARMAN0003:UART引导装载程序上传应用silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|73.
1.
3使用Eclipse/GCC/SourceryCodeBench创建应用如果要使用与引导装载程序同时运行的Eclipse、GCC或SourceryCodeBench创建应用,需要修改链接器文件.
对于应用说明和示例项目,链接器文件在软件项目包含的生成文件中指定.
在链接器文件的MEMORY命令中,将ROMORIGIN更改为0x00000800或0x00001000,并对长度作相应更改,如下图所示.
Figure3.
3.
Eclipse/gcc/cs链接器文件中的应用起始地址Note:如果在使用任一链接器文件时需要调试应用,则必须在代码中明确设定矢量表的位置.
可通过以下方式完成:SCB->VTOR=0x800;//EFM32G、EFM32TG、EFM32ZG和EFM32HG部件或SCB->VTOR=0x1000;//EFM32GG、EFM32LG和EFM32WG部件在发布的应用中,没有必要如此,因为在应用启动之前,VTOR由引导装载程序本身设定(有关详情,请参见Boot.
c).
AN0003:UART引导装载程序上传应用silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|83.
1.
4使用SimplicityStudio创建应用如果要使用与EFM32系列0或EZR32系列0引导装载程序同时运行的SimplicityStudio创建应用,必须更改项目属性,告知链接器在内存中哪个位置锁定应用.
如果要从SimplicityStudioIDE执行此项操作,则点击"项目>属性".
在"属性"窗口中,选择"工具设置"选项卡,然后选择"内存布局".
选择"覆盖默认闪存选项",然后在"原始字段"输入0x800(EFM32G、EFM32TG、EFM32ZG和EFM32HG)或0x1000(EFM32GG、EFM32LG和EFM32WG),相应调整长度值(即分别从原始长度中减去0x800或0x1000),如Figure3.
4在SimplicityStudio中更改应用起始地址和内存长度onpage9中所述.
由于链接器文件由SimplicityStudio自动生成,因此无需手动更改链接器文件中的这些内存设置,您的更改将在下次构建时被覆写.

Figure3.
4.
在SimplicityStudio中更改应用起始地址和内存长度Note:如果在更改以后需要调试应用,则必须在代码中明确设定矢量表的位置.
可通过以下方式完成:SCB->VTOR=0x800;//EFM32G、EFM32TG、EFM32ZG和EFM32HG部件或SCB->VTOR=0x1000;//EFM32GG、EFM32LG和EFM32WG部件在发布的应用中,没有必要如此,因为在应用启动之前,VTOR由引导装载程序本身设定(有关详情,请参见Boot.
c).
AN0003:UART引导装载程序上传应用silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|93.
2创建适用于引导装载程序-EFM32系列1的应用由于EFM32系列1的引导装载程序驻留在闪存保留区且无法覆写,因此为这些设备创建用户应用时无需采取额外的步骤.
可通过清除锁定位页中的位122(CLW0)来禁用这些设备上的引导装载程序.
有关锁定位页配置的更多信息,请参见设备参考手册.

3.
3上传应用[u]命令将上传应用.
使用终端软件将应用二进制文件传输至芯片.
上传完成之后,您可能希望通过计算已上传二进制文件的CRC-16来验证正确性.
可通过"验证应用校验和"命令来完成(参见4.
1验证应用校验和).
如果要从引导装载程序启动应用,则使用"启动"命令([b—]参见5.
1启动应用).
3.
4破坏性上传-仅针对EFM32系列0和EZR32系列0[d]命令将在EFM32系列0和EZR32系列0设备上启动破坏性上传.
EFM32系列1设备不提供此选项.
使用终端软件将二进制文件传输至芯片.
破坏性上传与定期上传的不同之处在于其会覆写引导装载程序,从而允许上传另一引导装载程序;或者,如果不需要引导装载程序,则回收引导装载程序占用的闪存.
上传完成之后,您可能希望通过计算CRC-16校验和来验证正确性.
可通过"验证闪存内容"命令来完成(参见4.
2验证闪存内容).
如果要启动应用,可使用"复位"命令([r]—参见5.
2复位设备).
3.
5写入用户信息页[t]命令允许将数据写入用户信息页.
使用终端软件将用户数据传输到用户信息页.

3.
6写入锁定位信息页[p]命令允许将数据写入锁定位信息页.
使用终端软件将用户数据传输到用户信息页.
该命令允许锁定闪存中的页,使其无法写入和擦除,但不能保护内容.
有关锁定位详情,请参见参考手册.
AN0003:UART引导装载程序上传应用silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|104.
验证上传Note:XMODEM-CRC传输128字节的数据块.
如果二进制文件大小不是128字节的倍数,终端程序将填补剩余字节.
有关详情,请参见终端程序的文档.
Figure4.
1.
使用引导装载程序校验和命令的示例TeraTerm会话(未显示起始字符"U").
4.
1验证应用校验和[c]命令将计算并打印从基本0x800或0x1000(应用起点)到闪存空间末端的闪存的CRC-16校验和.
4.
2验证闪存内容[v]命令将计算并打印从基本0x0(闪存空间起点)到闪存空间末端的闪存的CRC-16校验和.
4.
3验证用户页校验和[n]命令将计算并打印用户数据(UD)页(信息闪存块的第0页)的CRC-16校验和.
4.
4验证锁定页校验和[m]命令将计算并打印锁定位(LB)页(信息闪存块的第1页)的CRC-16校验和.
AN0003:UART引导装载程序验证上传silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|115.
其他命令5.
1启动应用[b]命令将启动已上传的应用,其方式类似于不通过拉高调试引脚电平来启用引导装载程序.
引导装载程序的工作方式为首先将Cortex-M3矢量表设置为应用基础.
然后读出新矢量表中的首字,对SP进行相应设置.
最后将PC设置为复位矢量定义的值,执行矢量复位.
Note:引导装载程序在正常运行中配置TIMER、USART、CMU和GPIO.
使用该命令启动应用时这些设置将保留.
然而,如果不是通过使引导装载程序引脚有效而进入引导装载程序,这些寄存器将不会更改.
这是典型的情况.

5.
2复位设备[r]命令将复位设备.
如果在破坏性上传以后发出该命令,将启动新的二进制文件.
如果在定期上传以后发出该命令并且未将调试引脚拉到高电平,应用将启动.
否则,引导装载程序将重新启动.
5.
3调试锁定[l]命令将锁定调试接口.
锁定之后,将无法访问定期调试工具;仅能通过调试接口进行设备擦除.

Note:在锁定调试接口之前,必须将设备复位.
如果锁定成功,该命令将返回"确定",否则将返回"失败".
如果调试锁定失败,请确保DBG_SWDIO未连接并且DBG_SWCLK处于高电平.
AN0003:UART引导装载程序其他命令silabs.
com|Buildingamoreconnectedworld.
Rev.
1.
72|126.
编译引导装载程序除了本应用说明,还随附引导装载程序自身的源代码.
可以使用该源代码编译您自己的引导装载程序.
使用该源代码时需要特别注意几个方面.
编译后的引导装载程序必须适合闪存配置区的大小.
对于Gecko、TinyGecko、ZeroGecko和HappyGecko,大小为0x800字节.
对于LeopardGecko、GiantGecko和WonderGecko,大小为0x1000字节.
源项目仅适用于IAR.
可将源文件用于其他IDE,但必须确保编译后的引导装载程序适合分配的大小.
在IAR中,必须在发布配置中编译源代码.
如果在调试配置中编译,编译后的程序可能过大.
勾选"大小高度优化"并启用"多文件编译".
"放弃使用的公共区"也是非常有用的功能,但要先通过在发布配置中编译来启用.

HostYun 新增美国三网CN2 GIA VPS主机 采用美国原生IP低至月15元

在之前几个月中也有陆续提到两次HostYun主机商,这个商家前身是我们可能有些网友熟悉的主机分享团队的,后来改名称的。目前这个品牌主营低价便宜VPS主机,这次有可以看到推出廉价版本的美国CN2 GIA VPS主机,月费地址15元,适合有需要入门级且需要便宜的用户。第一、廉价版美国CN2 GIA VPS主机方案我们可看到这个类型的VPS目前三网都走CN2 GIA网络,而且是原生IP。根据信息可能后续...

[6.18]DogYun:充100送10元,态云7折,经典云8折,独立服务器月省100元,幸运大转盘最高5折

DogYun是一家2019年成立的国人主机商,提供VPS和独立服务器租用等,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等,其中VPS包括常规VPS(经典云)和按小时计费VPS(动态云),使用自行开发的面板和管理系统,支持自定义配置,动态云各个硬件独立按小时计费,带宽按照用户使用量计费(不使用不计费)或者购买流量包,线路也可以自行切换。目前商家发布了6.18促销方案,新购动态云7折,经...

.asia域名是否适合做个人网站及.asia域名注册和续费成本

今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...

空间背景代码为你推荐
金士顿内存真假金士顿内存的真假判断方法软银收购wework校内网被软银收购后会泄露我国几千万大学生的资料给日本吗???软银收购wework如何看待腾讯收购 Supercell唐人社美国10次啦急!我和我老公都是第一次.我们有十次左右性生活;为什么我每次都没什么感觉;也没高潮(他有高潮)而且感觉好像没进去;怎么办?涡轮增压和自然吸气哪个好本田车自然吸气和涡轮增压哪个好闪迪和金士顿哪个好闪迪和金士顿哪个好浮动利率和固定利率哪个好对于企业来说固定利率贷款与浮动利率贷款优缺点各是什么?谢谢了。录音软件哪个好有什么录音软件好用??网校哪个好初中网校哪个好?dnf魔枪士转职哪个好DNF魔枪士转职转哪个好 决战者征战者转职
域名服务器 域名注册使用godaddy 台湾服务器租用 绍兴服务器租用 最新代理服务器地址 已经备案域名 便宜服务器 回程路由 好玩的桌面 长沙服务器 北京主机 河南服务器 dd444 创梦 ftp教程 100m空间 股票老左 ntfs格式分区 共享主机 域名接入 更多