- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为基于 ARM Cortex m0 的微 Controller 做一个引导加载程序,为此我已经浏览了 github 中的一些项目,但我不明白以下代码中的一些行。以下代码中的行 *(__IO uint32_t*)APP_ADDRESS) & ~(RAM_SIZE-1)
的含义是什么?如果有人解释这一点那就太好了。提前致谢。
#define APP_ADDRESS (uint32_t)0x08008000
#define RAM_SIZE (uint32_t)0x00040000
uint8_t Bootloader_CheckForApplication(void)
{
return ( ((*(__IO uint32_t*)APP_ADDRESS) & ~(RAM_SIZE-1)) == 0x20000000 ) ? BL_OK : BL_NO_APP;
}
最佳答案
我相信您指的是这个项目 https://github.com/akospasztor/stm32-bootloader
Bootloader_CheckForApplication()
的用途是确定有效的应用程序是否位于 APP_ADDRESS
或 0x0800 8000
。该应用程序镜像的开头实际上是 vector table ,因此值 *(__IO uint32_t*)APP_ADDRESS
是堆栈指针 (SP) 的初始值。 (该链接讨论了 Cortex-M3,但 vector 表的前两个条目对于所有 Cortex-M 处理器都是相同的)
您可以在同一源文件 https://github.com/akospasztor/stm32-bootloader/blob/master/Src/bootloader.c 的函数 Bootloader_JumpToApplication()
中看到此初始 SP 和重置 vector 的使用。
注意,作者使用的是STM32L4,RAM的起始地址为0x2000 0000
,最后地址为0x2003 FFFF
,RAM大小为 >0x0004 0000
。在本例中,Bootloader_CheckForApplication()
正在检查存储的初始 SP 是否在 RAM 区域内。
但是,如果初始 SP 恰好是 0x2004 0000
(在这种情况下是最高有效值),则此检查将不正确。 (请注意,Cortex-M 处理器使用 full descending stack)
关于c - 如何检查引导加载程序项目中找到的应用程序请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51010255/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!