发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[问答] 为什么引导加载程序不启动应用程序?
126 LED SD卡 bootloader
分享
大家好,我用MPLAB X 3.45,XC 1.42,和声1.0.9NoW我做的Footloader的一部分FW。我知道现在有了它,我配置了Bootloader。连接SD卡,安装带有App.HEX和电源的卡。我的简单应用程序会闪烁一个LED,当我编程时它会工作。但是使用引导加载程序时,我没有看到任何闪烁。在没有SDcard的情况下,一个接一个的程序引导加载程序部分读取了闪烁,在安装卡和加电之后读取了闪烁。但是为什么它不起作用呢?以我最诚挚的问候
0
2019-10-29 10:37:26   评论 分享淘帖 邀请回答

相关问题

16个回答
对于应用程序,我使用默认的链接器脚本。对于引导加载器,我在Harmony Config Tool->Build bootloader中设置。只有引导加载器:020000041D00DDOnlyFF:020000041FC01BProgramdataBootloader部分?Bootloader与APP:020000 041D00 DDLE小程序数据:020000 041FC01BBOToLoad程序数据是否正确?Dmitriy,我向你致以最诚挚的问候。
2019-10-29 10:58:00 评论

举报

应用程序必须使用和声生成的应用程序链接器脚本。
2019-10-29 11:16:59 评论

举报

正如我所理解的。我将打开Bootloader项目,设置BUIL一个应用程序。将新链接器脚本复制到我的眨眼项目。用新的链接器脚本创建眨眼项目。对于Bootloader,使用Bootloader构建。
2019-10-29 11:32:16 评论

举报

2019-10-29 11:47:48 评论

举报

你看了示例引导加载程序吗?PIC32 MX还是MZ?Bootloader对于一个小程序应该是可以的。也许还有MX。
2019-10-29 11:54:42 评论

举报

当然。我看MZ单片机的例子。我的MCU是PIC32MZ2048EFH100 PIM模块,安装在Explorer 16/32中。我在示例中看到如何为启动闪存程序添加强制函数,它工作正常。我在Harmony Guide中发现了一些关于引导加载器的信息。我有一些问题:用特殊的链接器脚本构建应用程序独立工作?因为当我使用特殊链接器脚本闪烁程序在编程后不工作。2。App的链接器脚本有两个部分,比如引导加载程序,用于复位向量,位于0x9D000000上,以及用于程序主要部分,位于0x9D001000上。Bootloader跳到0x990000是否正确?
2019-10-29 12:06:51 评论

举报

1。“和谐”这个程序不可能独立工作。至于正确的链接器脚本,我无法从微芯片得到任何帮助,也没有资格在这个领域提供帮助。
2019-10-29 12:24:56 评论

举报

当我和PIC24一起工作的时候。使用自定义链接器脚本构建应用程序部分作为独立程序没有任何问题。现在我使用默认链接器脚本做一些测试,并用appDefault链接器脚本进行内存映射。但没有奏效。
2019-10-29 12:40:49 评论

举报

也许我发现了发生了什么。我使用WiMeXo的Flash与Footloader和闪存更新后的FW,我看到顶部应用程序的变化。但是在Bootloader区域中,我看到了很多变化。发生什么事了?
2019-10-29 12:58:56 评论

举报

一个合适的链接器脚本是关键。
2019-10-29 13:15:14 评论

举报

因为引导加载程序和应用程序是两个不同的程序,它们必须存在于闪存中的不同位置。使用默认链接器脚本的应用程序将加载和运行良好,因为它将把代码放在正确的位置。但是Harmony生成的应用程序链接器脚本将把应用程序放在不同的位置,假设引导加载程序会在那里。所有的PIC32设备都有两个Flash部分:引导Flash和程序Flash。所有启动快闪记忆体开始于0x1FC0000(物理地址),所有程序闪存开始在0x1D00万。您可能在十六进制文件中看到的是,没有为0x1FC0_0000指定任何内存,但是更多的内存在0x1D00_0000区域中。所有PIC32设备都在0xBFC0_0000开始执行(虚拟地址,KSEG1,匹配0x1FC0_0000)。因此,如果HEX文件不包含该位置的代码,则无法运行。大多数时间调试器在编程HEX文件之前都会擦除所有的闪存。唯一的例外是告诉它不要擦除某些区域。想象一下,在Flash内存中在引导加载程序和程序flash之间(总是在页面边界上)画了一条线。链接器脚本定义了行的位置。大多数时候,引导加载程序可以用默认的链接器脚本做得很好。唯一的原因是确保它不会超过它设置的边界。具有3KB启动闪存的设备的引导加载程序需要一个链接器脚本,因为出于某种原因,默认的链接器脚本将中断向量表放在程序闪存的末尾。安装MPLAB X的Elf Viewer插件。它确实有助于理解东西在哪里着陆。
2019-10-29 13:34:27 评论

举报

“对于具有3KB启动闪存的设备,引导加载程序需要一个链接器脚本,因为出于某种原因,默认的链接器脚本将中断向量表放在程序闪存的末尾。”出于某种原因?引导程序人员和编译器人员为不同的公司工作吗?
2019-10-29 13:44:59 评论

举报

谢谢拉里。是的,我知道启动内存等等。我对KSG0/KSEG1程序闪存有疑问。正如我所看到的,默认的应用程序链接器脚本使用地址0x9D000000,这是kseg0缓存,用于放置到它的应用程序启动部分和主程序部分。Bootloader调用这个地址。但是在一些链接器脚本中,我看到用于应用程序地址0xBD000000的引导部分的kseg1是不可缓存的,引导加载程序调用这个地址。
2019-10-29 13:56:21 评论

举报

最好使用不可缓存的地址,如果使用缓存可先清除缓存。
2019-10-29 14:05:35 评论

举报

我安装了ELF Viewer,看到应用程序FW是为0x990000区域构建的。Bootloader程序部分位于0x990000,主程序部分从0x9D000 0480开始。引导加载程序将该应用程序编程为闪存、关闭文件、禁用IRQ并调用SoftwareReset函数,该函数不会转到BOOTLOADER_RESET_ADDRESS。如何引导Bootloader从软件重置切换到应用程序?
2019-10-29 14:13:27 评论

举报

在禁用SysReSeTySuffARErESETE()之后,FSM切换到BooLoad SeriLexEyDATASRAMM状态和关闭数据流。我从BooLoad SerielEXDATASRAMM状态添加到BooLoad EngEnter应用程序状态。默认的Bootloader。C没有它。随着这些变化,我的应用程序代码开始了。我看见布林克领导了雅虎!但我的意思是,SDcard Bootloader从缺省的生产需要重写和添加许多部件。
2019-10-29 14:24:31 评论

举报

只有小组成员才能发言,加入小组>>

71个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /6 下一条

快速回复 返回顶部 返回列表