搞了一天才发现 在MDK设置选项中有个"linker"选项卡 , 需要在Project->Options->Linker中将Use Memory Layout from Target Dialog前面的复选框勾上  一切就正常了

Use Memory Layout from Target Dialog这个选项有个“分散加载文件”的概念。

下边的三段话是我从网上摘抄的(MDK程序下载到flash--分散加载文件scatter),大概了解了一下,以后如果会用到这方面的知识再来深入研究。

前边三个分散加载文件是从别的地方拷过来的,用在自己的程序中可能会有问题,因为如果不修改它的话就固定了加载地址和运行地址,如果程序简单又比较小的话可能不会有问题,但是如果不修改它的话就固定了加载地址和运行地址,如果程序简单又比较小的话可能不会有问题,但是如果程序代码比较大,超出了那三个加载文件的定义大小可能就会出问题,解决办法很简单,直接修改.sct文件直到适合你的代码。

更好的办法是自己定义一个分散加载文件,在MDK中勾选Use Memory Layout from Target  Dialog,那么加载文件就是从你定义的ROM和RAM等地址得到的,如果不勾选的话就是通过你自己指定的加载文件来加载。

如果分散加载文件不对的话,可能出现的问题就是明明是在SRAM中调试程序(我想我找到困惑自己很久的问题了,就是是用Jlink调试程序的时候,程序下载到SRAM,而不是SDRAM!!),但是却能神奇的通过flash downloader下载到Flash中去,刚开始也是不解,后来才发现是加载文件有错误,我使用了一个指定的flash.sct文件,这样的话我设置的irom和iram都无效了,编译器直接根据我指定的flash.sct来分布代码和加载代码,又查看了一下flash.sct文件是加代码加载到flash笛子空间的,这就是为什么在工程中也能通过Flash Downloader工具烧写代码带Flash中去的原因。

STM32 IAP 在线更新程序 为什么有时行 有时又不行 感觉不可靠 问题解决的更多相关文章

  1. 【转】stm32 IAP升级程序

      一.什么是IAP,为什么要IAP       IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经 ...

  2. STM32 IAP程序 源码 和测试代码 有详细的中文注释

    http://bbs.21ic.com/forum.php?mod=viewthread&tid=588265&reltid=624002&pre_pos=2&ext= ...

  3. stm32 IAP + APP ==>双剑合一

    (扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级程序做了详细的分析http://blog.csdn.net/yx_l128125/article/details/12 ...

  4. stm32 IAP + APP ==>双剑合一(转)

    源:http://blog.csdn.net/yx_l128125/article/details/13591743 (扩展-IAP主要用于产品出厂后应用程序的更新作用,上一篇博文详细的对IAP 升级 ...

  5. STM32 IAP 在线升级详解(转)

    源:http://blog.csdn.net/yx_l128125/article/details/12992773 (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP   ...

  6. 【转载】STM32 IAP 在线升级详解

      (扩展-IAP主要用于产品出厂后应用程序的更新作用,考虑到出厂时要先烧写IAP  再烧写APP应用程序要烧写2次增加工人劳动力基础上写了“STM32 IAP+APP ==>双剑合一”链接稍后 ...

  7. STM32 IAP 固件升级设计/U盘升级固件

    源:STM32 IAP 固件升级设计/U盘升级固件 固件升级的基本思路是: 将stm32 的flash划分为两个区域: 1.Bootloader区:存放bootloader的代码,bootloader ...

  8. 关于STM32 IAP

    转眼间天亮了...... 然后就想起了一个朋友QQ的个性签名:年轻人总是要为一些自己认为有意义的事情而废寝忘食,通宵达旦,直至白发方休........ 对了这篇文章一定会介绍的很详细,请细嚼慢咽... ...

  9. Jlink使用技巧之读取STM32内部的程序

    前言 上一篇Jlink系列文章介绍了如何使用J-Flash来下载Hex或Bin文件到单片机,具体可参考Jlink使用技巧之单独下载HEX文件到单片机,本篇文章介绍,如何使用JFlash来读取单片机的程 ...

随机推荐

  1. demo_08webStroage案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. rownum

    rownum是一个伪列,oracle数据库会对查找到的数据 从1 开始递增指定每行的rownum值, 当查询条件里有 rownum时(比如 where rownum>2),数据库会依次从数据集里 ...

  3. PDO操作mysql数据库(一)

    PHP连接mysql数据库: <?php$server = "localhost";$user = "root";$pwd = "123456& ...

  4. Flume用来收集日志,zeppelin用来展示

    Flume:Flume是一个分布式,可依赖的,用于高效率的收集.聚类.移动大量数据的服务.Flume使用基于流数据的简单而且可扩展的架构.由于拥有可调的依赖机制和许多故障恢复机制,Flume是健壮而且 ...

  5. loadView 与 ViewDidLoad

    每个ios开发者对loadView和viewDidLoad肯定都很熟悉,虽然这两个函数使用上真的是非常简单,但是和类似的initWithNibName/awakeFromNib/initWithCod ...

  6. Django 数据库查询优化

    Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后 ...

  7. javascript小小技巧

    JS的一些小技巧,我主要是做后台的(.NET),前端知识了解得不多,经验非常有限,不过还是经常写JS代码,对前端有着浓厚的兴趣,特喜欢js这门语言,虽然很多人喷它,但还是很喜欢Js.下面说说项目中我经 ...

  8. java service

    http://www.regexlab.com/zh/jar2exe/demo1.htm http://www.zhangxinxu.com/wordpress/?p=1058 http://www. ...

  9. ANDROID_MARS学习笔记_S04_007_从服务器获取微博数据时间线

    一.代码 1.xml(1)activity_main.xml <?xml version="1.0" encoding="utf-8"?> < ...

  10. 看了一下安装文件. 是qt4python 下用了 webkit,包装了bootstrap

    Pg9.6 安装包里的pgadmin4 反正软件是开源的,慢慢看源码呗.