求教Tiva 解锁bootloader教程r

width:100%">
远看是美景,近看想报警。
width:100%">
看了这么多帖子,第一次看看到这么有内涵的!
width:100%">
胆子不小啊,居然让我抢到了沙发!
width:100%">
帮不上什么忙,把帖子顶上去吧!
width:100%">
雨下╰っ拥吻加油,看好你哦!
width:100%">
以后就跟雨下╰っ拥吻混了!
width:100%">
是爷们的娘们的都帮顶!大力支持
width:100%">
内练一口气,外练一口屁。&&
width:100%">
叮铃叮铃,楼主开门,我是送快递的!
width:100%">
12345678910
打开手机扫一扫
Comsenz Inc. Design: Dean. DiscuzFans.论坛 - TM4C 微控制器 - TM4C 微控制器 - 德州仪器在线技术支持社区
发表于2年前
<input type="hidden" id="hGroupID" value="41"
手头上有一块Tiva LanuchPad的板子,这两天一直在调试BootLoader的功能。参考TivaWare_C_Series-2.1.0.12573\examples\boards\&a href=&.cn/tool/cn/dk-tm4c123g& target=&extwin&>dk-tm4c123g&/a>下的boot_serial,boot_demo1,boot_demo2进行了实现,现有如下问题:&/p>
&p>1、通过CCS把boot_serial和boot_demo1按先后顺序下载到芯片上,可以通过LM Flash Progarmmer进行串口更新,但是我把系统断电或复位后,就无法进行串口更新了,不知道这是为什么。为了看到程序的状态,我在boot_serial中启用了BL_HW_INIT_FN_HOOK宏,编写了MyHwInitFunc这个函数,让LauchPad上Led点亮延迟熄灭;在boot_demo1在点亮了另外一只LED,把这两个程序先后下载后,均运行正常,灯正常显示,串口可更新,但断电后上电没有任何灯点亮。这时候我再烧写一变boot_demo1,boot_demo1程序上的灯点亮了,串口又能更新,说明boot_serial没有被刷写掉。按照手册,我认为系统上电后应调用boot_serial,由于这时不需要更新,就会去运行boot_demo1,然后由boot_demo1将系统强制进入到更新状态。不知道我这样理解是否正确,刷写boot_demo1的flash偏移地址是0x。&/p>
&p>2、能够自己编写一个类似LM Flash Progarmmer的程序,ti是否有相关的参考程序。&/p>
&p>3、boot_serial这类程序如何调试,我看英文论坛上有说明,但尝试后不正确。&/p>
&p>谢谢!其实前面发了一个帖子,修改了一下,居然要去找版主认证,第一次看到论坛有这样设定。再重新发了一遍。&/p>&div style=&clear:&>&/div>" />
求教Tiva BootLoader
此问题已被解答
All Replies
进士5430分
非常好的经验分享,顶一下!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元27635分
和usb转TTL也有关系的。但是使用UART直接下载仅限于第一次下载的时候,以后的话必须自己烧写boot了。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
Wellin Zhang您好,能否求一份的bootloader,我的ccs下载安装失败,我只需要一份bootloader,所以能不能麻烦您给我一份bootloader的bin文件。谢谢!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.君,已阅读到文档的结尾了呢~~
Tiva&#x5f;C&#x5f;Series&#x5f;LaunchPadC,Tiva,TIVA
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Tiva_C_Series_LaunchPad
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口序(Application);其次是与其它设备建立标准通信通路,并从该设备上加载新的系统软件来更新(Update)原有的系统。更新的过程通过对固件(Firmware)的烧写来实现。烧写固件也是那些经常更新手机系统的用户比较熟悉的术语。系统上电后BootLoader内的启动代码(Start-up Code)将先被执行,进行一系列的初始化操作后,根据预先设定的条件,选择执行用户应用程序或更新控制程序(Updater)。
我们在PC上安装新系统时会通常要从光盘或者U盘把这个新系统加载到系统的硬盘上。Tiva BootLoader的Updater在升级的过程中,是通过某种通信方式联接到别的设备上,把那个设备上的系统加载到Tiva的Flash中。Tiva C系列的芯片它可能采用的通信有UART0,SSI0,I2C0, CAN, USB或以太网端口。数据通信必须确保无差错,为了保证数据的无差错传输,BootLoader采用了控制传输的通信协议。当采用UART0,SSI0,I2C0和CAN这些端口通信时,BootLoader要求用户自定义串行通信协议,来确保更新过程中的通信可靠性,将要更新到Flash上的系统软件集合也叫固件映像(Firmware Image),为了减少数据通信量,Firmware Image通常某种数据压缩形式被压缩成一个包)。而采用以太网或USB时,因为这两种接口都有现成的支持更新功能的协议,所以无需用户自定义协议。用以太网为接口时采用了标准BOOTP(Standard Bootstrap Protocol);而USB接口则采用标准DFU(Standard Device Firmware Upgrade)。对接收到的格式正确且校验成功的数据包,Updater能够将其解包,并将得到的加载命令转化为对Flash底层寄存器的操作。
由于TivaWare提供了BootLoader的全部源代码,用户也可自行修改通信端口、通信协议等相关组件,使其更好地符合用户需求。
注意:没有BootLoader时,系统也能执行用户应用程序。详见下一小节的内容。
(3) Tiva C系列的存储空间分布和启动机制
为了使同一系列的处理器有更好的兼容性,Cortex M4F的内核存储器映射是按表2-1固定分配的。
Cortex M4F的地址空间中,0~0.5G之间的空间被分配(一般称为映射)为Flash空间, 0.5G~1G被映射为SRAM。因为SRAM是易失性存储器,系统刚上电时,SRAM中没有内容,因此系统必须从Flash开始启动。
Flash空间起始地址处必须存放异常向量表(ExceptionVector)。异常向量表与其它单片机中的中断向量表功能类同,只是异常比中断的含义更广。向量表是在内存指定位置上的一张由多个单元组成的表,表中的每个单元都对应着某一种异常,也事先按约定的顺序
排好,这样,每个异常对应的向量表的位置在硬件上是固定的。当某个异常产生时,我们需要程序自动跳转到异常处理程序所在的位置。但系统不知道这个位置,所以我们将这个地址放在异常向量表里,系统知道异常的类型,根据类型找到向量表中与此类型对应的异常向量单元。向量单元在Tiva中由4个字节组成,用来存放程序地址信息。
表2-1Cortex M4F存储器映射表 系统复位时,向量表的地址是固定在0x的,具有系统级权限的软件可以在程序代码开始运行后修改向量表的起始地址。修改的方式是通过软件设置NVIC中的向量表偏移寄存器(NVIC_VTABLE,0xE000ED08),向量表的地址可以修改为0x到0x3FFF.FC00之间的位置。
注意:修改后的起始地址是4的倍数,用于32位齐,同时留下1024字节的表空间。 Cortex M4F系列单片机硬件启动原理如下:硬件复位时,NVIC_VTABLE复位为0,向量表默认位于Flash空间起始地址处(0x)。内核读取向量表第1个单元设置主堆栈(SP_main),读取第2个单元设置PC指针,之后跳转到复位处理函数中运行。复位处理函数获得系统的控制权,复位处理函数通常就是系统的用户应用程序。这就是没有BootLoader时系统的调用应用程序的方式。
(4) BootLoader的启动代码(Startup Code)
BootLoader的启动代码是一小段精简代码,它要完成(1)配置向量表;(2)初始化存储空间的分布;(3)复制BootLoader代码到SRAM;(4)从SRAM中执行代码等一系列操作。
由于配置向量表和初始化存储空间的分布与用户使用的开发工具的编译器和链接器有关,所以每种工具都有它自己对应的启动代码实现和链接配置文档。与CCS相关的启动代码和链接配置脚本分别在:
配置完向量表并初始存储空间后,启动代码复制BootLoader代码到SRAM。由于BootLoader的作用之一,是提供运行时修改Flash的功能。而由于Tiva系列单片机具有单周期的Flash读写能力,因此默认的代码段本身就位于Flash中。这样,如果内核直接从Flash中加载修改其自身的指令,则既容易造成时序上的混乱,又有可能因Flash中某些关键指令被修改而导致整个系统崩溃。针对这个问题,Tiva系列单片机采取的方案为:在SRAM中建立BootLoader的映像,即把BootLoader复制到SRAM中,然后从SRAM运行代码来修改在Flash中的代码。图2-2所示。
初始化时用零填充升级控制程序位于其中
BootLoader加载区BootLoader执行区
图2-2BootLoader内存示意图
这样,执行代码的位置(SRAM)与修改操作的目标(Flash)相分离,一定程度上保证了软件升级的可靠性和安全性。这样的存储器映射允许修改Flash的全部代码。此外,BootLoader也提供了保护机制,用于保护Flash中的BootLoader代码本身,以及Flash空间顶部的一段存储区(保存即使Flash升级也不需要擦除的代码)。除非相应的配置选项使能,否则,这两段代码不可随意修改。
在SRAM中映像建立完毕并开始执行后,BootLoader将调用CheckForceUpdate()来决定运行Application还是Updater。CheckForceUpdate()会检测应用程序是否有效并检测用户配置的专用于升级的GPIO端口是否出现规定的电平特性。应用程序是否有效的判断依据是:(1)堆栈指针是否指向一个有效的位置(这个位置应当在SRAM里,即指针值应当是0x2xxx.xxxx);(2)复位处理程序的地址是否是一个有效位置(这个位置应当在Flash里,地址应当是0x000x.xxxx,而且必需是偶数)。上述两个条件都满足,表示应用程序有效。如果用户没有在BootLoader的配置文件bl_config.h里配置检测GPIO管脚(通过

我要回帖

更多关于 解锁bootloader教程 的文章

 

随机推荐