STM32启动文件详解:Start.S

(一)STM32启动文件详解:Start.S

链接1: STM32启动文件详解
链接2: STM32 startup.s启动文件分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(二)IAP 升级文件

一、IAP升级的主要功能
(1)读取升级状态flag
(2)数据拷贝、搬移
(3)运行跳转到异常向量表
(4)NVIC_SystemReset

stm32F10x

stm32f0xx

  int ret;
  int retry = 2;
  
  uint32_t flash_flag = IAP_ReadFlag();
  if (flash_flag == UPDATE_FLAG_DATA) { 
      while (retry--) {
          ret = cp_back_to_app();
          if (ret < 0) {
  
          } else {
              break;
          }
      }
  }

  ret = IAP_run_APP();        // 向量表跳转
  // uart_close();
  if (ret) {                  // 重启reboot
      NVIC_SystemReset();
      HAL_Delay(1000);
      NVIC_SystemReset();
      HAL_Delay(1000);
  }
/**------------------
-------------- 向量表跳转 --------------------------------------
 * @ STM32F09x系列:0x20000000 - 0x20007FFF, SRAM = 32 KB 
 * @ 0x20007FFF的对立:0x2FFF8000
 * @ *(__IO uint32_t*)ApplicationAddress:堆栈指针(SP) 必须在 0x2000 0000 -- 0x2000 7FFF 这块Region开辟堆栈
*/
pFunction Jump_To_Application;
uint32_t JumpAddress;

int IAP_run_APP(void)
{
    if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFF8000) == 0x20000000) {   // & 0x2FFE0000用于判断SRAM
        JumpAddress = *(__IO uint32_t*)(ApplicationAddress + 4);                // JumpAddress = reset重复位向量地址
        Jump_To_Application = (pFunction)JumpAddress;                           // Jump_To_Application函数指针:指向reset中断向量地址
        __set_MSP(*(__IO uint32_t*)ApplicationAddress);                         // 设置栈顶指针:指向ApplicationAddress
        Jump_To_Application();                                                  // 进入reset设置
        return 0;
    } else {
        return -1;
    }
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您在使用CubeIDE进行编译时遇到了一个错误,错误信息显示为:stat: ../core/startup/startup_stm32f103c8tx.s: permission denied(无法获取权限)。这个错误通常表示无法在指定的路径中读取或写入文件。 这个问题可能是由于以下几个原因引起的: 1. 权限设置不正确:请确保您有权限读取和写入文件。您可以检查文件的权限设置并确保您拥有足够的权限来进行读取和写入。 2. 文件被占用:如果其他进程正在使用这个文件,您可能无法访问它。您可以尝试关闭其他使用该文件的进程,然后再尝试编译。 3. 文件不存在:如果指定的路径中不存在startup_stm32f103c8tx.s文件,那么就会出现权限被拒绝的错误。请确保文件确实存在于指定的路径中。 4. 文件系统错误:如果文件所在的文件系统出现错误,可能会导致无法访问文件。您可以尝试重启计算机或重新挂载文件系统来解决该问题。 如果您已经尝试了以上的方法但仍然无法解决问题,建议您查阅CubeIDE的官方文档或寻求相关技术支持,以获取更详细的解决方案。 ### 回答2: 这个错误表示执行CubeIDE时,无法在文件“../core/startup/startup_stm32f103c8tx.s”上获取权限。通常情况下,这可能是操作系统或文件系统权限设置的问题。 要解决这个问题,可以尝试以下步骤: 1. 确保你有足够的权限来访问该文件。这意味着你需要是文件的所有者或具有足够的读/写权限。你可以使用操作系统的文件管理工具或命令来检查和更改文件权限。 2. 检查文件路径是否正确。确保文件在指定的位置存在,并且路径是正确的。如果路径错误,CubeIDE将无法找到文件并执行操作。 3. 检查文件是否被其他进程或程序占用。如果该文件正在被其他程序使用,CubeIDE将无法访问它。关闭其他可能使用该文件的程序,然后重新执行操作。 4. 如果你正在使用共享文件系统或网络驱动器,确保你有足够的权限来访问共享文件。有时在使用网络驱动器时,权限设置可能会导致访问问题。联系系统管理员或网络管理员检查和解决权限问题。 如果以上步骤都没有解决问题,你可能需要考虑重新安装CubeIDE或与CubeIDE的开发团队联系以获取更多支持。 ### 回答3: 这个错误信息是在CubeIDE软件中使用make命令时出现的。错误的原因是,软件无法对../core/startup/startup_stm32f103c8tx.s文件进行操作,因为没有权限。这可能是由于以下几个原因导致的。 首先,检查一下../core/startup/startup_stm32f103c8tx.s文件的属性和权限设置是否正确。确保该文件的属性设置为可读写,并且对于当前用户具有足够的权限。 其次,尝试以管理员身份运行CubeIDE软件。在某些情况下,权限问题可能是由于当前用户的权限不足导致的。通过以管理员身份运行软件,你可能会获得对该文件的足够权限。 第三,确保该文件没有被其他程序或进程占用。在使用make命令之前,关闭任何可能占用该文件的程序。这样可以确保软件能够正确读取和写入该文件,避免权限被拒绝的问题。 最后,尝试重新安装CubeIDE软件。有时候,软件的安装过程中可能会出现一些错误,导致权限设置不正确。通过重新安装软件,可以解决这些问题,并恢复对所有文件和目录的正确权限。 总之,要解决这个CubeIDE软件的错误,你需要确保相关文件的属性和权限设置正确,以及尝试以管理员身份运行软件。如果问题仍然存在,可以尝试重新安装软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值