当前位置: 首页 > news >正文

可信赖的商城网站建设施工企业合规风险识别与管理

可信赖的商城网站建设,施工企业合规风险识别与管理,雨蝶直播免费直播,网站站点结构图1. 前言 对于 Cortex-M 内核的微控制器#xff0c;它们都可以支持在 RAM 中执行程序#xff0c;有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序#xff0c;有基于以下几方面的原因#xff1a; 1、所使用的设备可能具有OTP#xff08;One-time Programmable它们都可以支持在 RAM 中执行程序有些非 ARM 的微控制器是不支持的。 在内部 SRAM 执行程序有基于以下几方面的原因 1、所使用的设备可能具有OTPOne-time Programmable一次性可编程ROM区域还没有确定最终代码之前还不会把程序编程到芯片中2、有些MCU内部内部可能没有Flash可能会使用到外部的存储器。但是在软件开发阶段可以下载到SRAM进行开发测试3、对于特定的测试场合Flash已经烧录了程序但是不想擦除。这时可以把测试程序下载到SRAM运行4、对于有些Flash被锁定的芯片可以把代码下载到SRAM然后进行解锁5、Flash写入需要先擦除所以SRAM的写入速度要比Flash快很多如果程序很大的话在开发阶段直接在SRAM运行可以提高效率。 对于程序下载到内部SRAM运行有多种方法 1、配置boot引脚然后下载代码到SRAM使程序从SRAM启动2、不修改boot引脚启动模式借助仿真器进入仿真模式然后强制更改 PC SP 指针从SRAM位置取值开始运行3、程序下载到内部Flash或者外部的SD卡、SPI Flash等存储设备然后上电之后把代码搬运到SRAM运行类似代码的重定位 下面只介绍前面两种方式。 首先在修改程序在SRAM运行之前要先准备好一份可以正常在Flash运行的程序。 2. 修改散列文件 散列文件就是链接脚本指导链接器如何对程序进行链接的。 我们要让代码在SRAM运行首先就要修改散列文件让程序链接地址修改在内部SRAM空间。 我们打开Keil的配置界面然后使用我们自己修改的散列文件。 修改后的散列文件内容如下 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; *************************************************************LR_IROM1 0x20000000 0x00010000 { ; load region size_regionER_IROM1 0x20000000 0x00010000 { ; load address execution address*.o (RESET, First)*(InRoot$$Sections).ANY (RO).ANY (XO)}RW_IRAM1 0x20010000 0x00010000 { ; RW data.ANY (RW ZI)} }我使用的MCU型号是 STM32F407ZG IARM1 的 SRAM 大小有 0x20000 即 128KB。我这里分配的代码区域ER_IROM1大小是 0x1000064KB然后可读可写的数据区域大小是0x1000064KB也就是把他们平均分了。 在实际的项目开发中可根据实际情况改写分配。 3. 修改中断向量表基地址 默认的中断向量表基地址是指向 0x08000000 的地址处的现在我们已经更改了链接地址把程序链接到内部SRAM 0x20000000 区域了。 如果发生中断CPU还是跳到0x08000000开始的地址处执行中断服务函数的话那么肯定是程序崩溃因为现在0x08000000处的地址已经没有代码了。 要想正常使用中断的话就必须修改中断向量表的基地址指向0x20000000地址处。 修改中断向量表基地址只要修改 SCB-VTOR 寄存器的值就行。 具体代码在 system_stm3f4xx.c 的 SystemInit 函数就有。如下 void SystemInit(void) {/* 部分代码省略 ........ *//* Configure the Vector Table location add offset address */#ifdef VECT_TAB_SRAMSCB-VTOR SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */#elseSCB-VTOR FMC_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */#endif }我们只要定义这个 VECT_TAB_SRAM 宏就可以修改中断向量表的基地址指向 0x20000000 的地址处了。 这个宏可以直接在Keil的配置界面 C/C 选项里面的宏定义那里填写当然直接在 system_stm3f4xx.c 这个文件前面自己手动写一下也可以。 4. 修改下载算法的配置 为了把代码下载到SRAM中还需要修改Jlink的下载算法配置只要其实就是更改下载的地址改为 SRAM 的地址。 对于上面的配置简单解释如下 1、由于是下载到SRAMSRAM写入是不需要擦除的所以勾选 DO not Erase 即可2、“Programming Algorithm”一栏的配置由于没有内置的SRAM下载算法所以下载算法选择的还是原来的Flash下载算法。但是下面的起始地址和大小需要更改就改为我们在散列文件定义代码区域的起始地址和大小。2、“RAM for Algorithm”一栏是指“编程算法”(Programming Algorithm)可使用的 RAM 空间下载程序到 FLASH 时运行的编程算法需要使用 RAM 空间在默认配置中它的首地址为 0x20000000即内部 SRAM 的首地址。但是现在我们修改了0x20000000开始处存放的是代码所以这里的起始地址要修改了散列文件设置的 RW 区域的起始地址即 0x20010000 。然后大小默认不用改。 5. 修改boot启动模式 配置到这里其实我们这时如果更改Boot的启动引脚配置为内部SRAM启动然后点击下载按钮程序就可以正常跑了的。 但是如果不修改boot启动模式然后从SRAM启动的话也可以借助仿真器配置进入仿真调试模式然后通过仿真器配置强制 PC SP 指针从 0x20000000 开始处取值这样也能让程序正常从SRAM运行。 6. 通过仿真器配置修改 PC SP 的值 修改boot模式的目的其实就是让MCU上电之后可以从正确的地址处获取到 PC SP 指针的初始值这样代码才可以正常开始运行。 让 PC SP 获取到正确的值有两种方式 修改Boot启动模式让程序从内部SRAM启动不修改启动模式然后通过仿真器配置进入仿真模式强制修改 PC SP 的值。 下面介绍下怎么通过仿真器配置让代码在SRAM运行。 首先我们自己编写一份 .ini 的调试配置文件强制 PC SP 指针的地址值。内容如下 /***********************************************************/ /* Debug_RAM.ini: Initialization File for Debugging from Internal RAM */ /******************************************************/ /* This file is part of the uVision/ARM development tools. */ /* Copyright (c) 2005-2014 Keil Software. All rights reserved.*/ /* This software may only be used under the terms of a valid, current */ /* end user licence from KEIL for a compatible version of KEIL software */ /*development tools. Nothing else gives you the right to use this software ?*/ /***************************************************/FUNC void Setup (void) {SP _RDWORD(0x20000000); // 设置栈指针 SP把 0x20000000 地址中的内容赋值到 SP。PC _RDWORD(0x20000004); // 设置程序指针 PC把 0x20000004 地址中的内容赋值到 PC。// XPSR 0x01000000; // 设置状态寄存器指针 xPSR_WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register}LOAD %L INCREMENTAL // 下载 axf 文件到 RAMSetup(); //调用上面定义的 setup 函数设置运行环境g, main //跳转到 main 函数 然后配置Keil的选项如下 这样通过这种方式不需要修改boot引脚的启动模式点击 debug 调式按钮也一样可以正常在SRAM运行。 缺点就是下载程序必须是点击进入调试界面不能通过下载程序的按钮下载程序。因为这种方式是通过仿真器的配置强制设置 PC SP 指向正确的地址的。
http://www.pierceye.com/news/801305/

相关文章:

  • 大连网站制作优选ls15227微信公众号小程序搭建
  • 个人空间网站建设报告网站建设培训哪个好
  • wap微信网站模板在线网络培训平台
  • asp网站怎么做三语网络推广计划书格式
  • 徽州网站建设企业网站备案域名信息
  • 广州建设信息网官方网站火车头采集wordpress发布
  • 易记域名网站大全火车票网站建设多少
  • 怎么将网站权重提上去怎样在网站图片做超级链接
  • 网站建设需求分析报告功能百度官方电话24小时
  • 扬州市城市建设监察支队网站做空比特币网站
  • 石家庄做网站 vtkj网站空间怎样设置用户名和密码
  • 自考网页制作与网站建设网站虚拟主机建设
  • 手机网站建站视频教程阿里云虚拟主机与网站吗
  • 孝感做招聘信息的网站鹏翔科技 网站建设
  • 阿里云 建设网站怎么样长春网站建设翻译
  • 网站空间位置是什么枝江企业网站
  • 网站到期查询固定ip做网站和域名区别
  • 北京专业网站制作大概费用红色网站建设的比较好的高校
  • 廊坊网站的优化html5网站地址
  • 少儿图书销售网站开发背景网络个性化定制
  • 网站制作价格情况微信输入法使用方法
  • 首饰网站建设策划案我的主页制作代码
  • 网站专题页面模板科技有限公司可以做网站建设吗
  • 物流企业网站建设特色吉林智能网站建设价格
  • 安徽省教育基本建设学会网站光明新区建设网站
  • 图片无法显示wordpress我是seo关键词
  • 设计商标的网站最新的电商资讯有哪些
  • 烟台开发区网站建设做家教中介网站赚钱吗
  • 商洛市建设工程造价管理站网站网站无障碍建设报告
  • 网站如何做原创广州网站优化关键词公司