6475|9

93

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32内部RAMboot问题请教,请版主和大家帮忙看看,谢谢 [复制链接]

大家好,刚开始学习STM32f103zet6,对存储器的映射不是太了解。从而产生如下的疑问,请大家帮忙看看。

   我将GPIO的demo code download到内部RAM中,程序可以正常运行,但是看memory 窗口0x2000 0000的地址的数据,跟用keil生成的bin文件的数据不一样。

我目前使用MDK,用jlink来进行debug。个人理解,程序download 到内部ram,那0x2000 0000的位置的数据应该和keil 生成的bin的数据相同。


   并且如果程序reset后停在Main起始位置时,PC指针 = 0x0800 01c6,查相关资料指明0x0800 00000--0x0807 ffff为flash区域。即便是0x2000 0000被映到
0x0000 0000的位置开始,但是怎么会跑到0x0800 01c6位置呢。

   请高手帮忙解答一些,先谢谢大家了。

   可能这个问题真的很菜,但是我想了好久没有想明白,请大家帮帮忙,再次感谢了。
此帖出自stm32/stm8论坛

最新回复

                                 学习了  详情 回复 发表于 2010-5-17 23:17
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 看看你的板子的BOOT引脚是怎么连接的?是否连接为从RAM BOOT的方式。
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1)是否按照在RAM中运行的模式编译链接?
2)怎么知道下载到了RAM中?
此帖出自stm32/stm8论坛
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢两位,目前boot设定的是SRAM boot 方式,不知道这种方式是否是将code 烧到内部ram

如果不是那code 怎么会跑起来,我的板子上根本没有SRAM,SRAM有问题我拿掉了
我现在用的是红牛的开发板
此帖出自stm32/stm8论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

5
 
版主,是否按照在RAM中运行的模式编译链接  是什么意思?
你是值keil中的设定吗?
我是菜鸟,刚开始学,请多多见谅

再次谢谢了!
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
终于搞明白了,看了memory map才理解过来,如下:
Symbol Name                              Value     Ov Type        Size  Object(Section)

    ../../microlib/init/entry.s              0x00000000   Number         0  entry.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry2.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry5.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry7.o ABSOLUTE
    STM32F10x.s                              0x00000000   Number         0  stm32f10x.o ABSOLUTE
    STM32_Init.c                             0x00000000   Number         0  stm32_init.o ABSOLUTE
    dc.s                                     0x00000000   Number         0  dc.o ABSOLUTE
    demo_0.c                                 0x00000000   Number         0  demo_0.o ABSOLUTE
    handlers.s                               0x00000000   Number         0  handlers.o ABSOLUTE
    init.s                                   0x00000000   Number         0  init.o ABSOLUTE
    RESET                                    0x08000000   Section      236  stm32f10x.o(RESET)
    .ARM.Collect$$$$00000000                 0x080000ec   Section        0  entry.o(.ARM.Collect$$$$00000000)
    .ARM.Collect$$$$00000001                 0x080000ec   Section        4  entry2.o(.ARM.Collect$$$$00000001)
    .ARM.Collect$$$$00000004                 0x080000f0   Section        4  entry5.o(.ARM.Collect$$$$00000004)
    .ARM.Collect$$$$00000007                 0x080000f4   Section        8  entry7.o(.ARM.Collect$$$$00000007)
    .ARM.Collect$$$$00002712                 0x080000fc   Section        4  entry2.o(.ARM.Collect$$$$00002712)
    __lit__00000000                          0x080000fc   Data           4  entry2.o(.ARM.Collect$$$$00002712)
    .text                                    0x08000100   Section       28  stm32f10x.o(.text)
    .text                                    0x0800011c   Section      156  stm32_init.o(.text)
    .text                                    0x080001b8   Section       76  demo_0.o(.text)
    .text                                    0x08000204   Section       36  init.o(.text)
    i.__scatterload_copy                     0x08000228   Section       14  handlers.o(i.__scatterload_copy)
    i.__scatterload_null                     0x08000236   Section        2  handlers.o(i.__scatterload_null)
    i.__scatterload_zeroinit                 0x08000238   Section       14  handlers.o(i.__scatterload_zeroinit)
    STACK                                    0x20000000   Section      512  stm32f10x.o(STACK)
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
但是从上面的memory map来看,程序实际上还是在内部flash中,而不是内部ram。这部分应该是跟我的MDK设定有关,如下:

  (晕,怎么加载图片啊)

算了,MDK基本配置如下:option for tarfet-->target:
  off-chip    start       size
  IROM1     0x00800000   0x80000   (应该是跟这里的设定有很大的关系)  IRAM1     0x20000000   0x10000
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
按照上面的思路,继续寻求  程序如何被烧写到 内部ram

修改MDK的配置,如下:
off-chip    start       size
  IROM1     0x20000000   0x4000   
IRAM1     0x20004000   0xc000(这里size定义为0xc000是考虑内部ram的总size为0x10000)
按照这样的配置编译出的memory map 如下:

Image Symbol Table

    Local Symbols

    Symbol Name                              Value     Ov Type        Size  Object(Section)

    ../../microlib/init/entry.s              0x00000000   Number         0  entry.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry2.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry5.o ABSOLUTE
    ../../microlib/init/entry.s              0x00000000   Number         0  entry7.o ABSOLUTE
    STM32F10x.s                              0x00000000   Number         0  stm32f10x.o ABSOLUTE
    STM32_Init.c                             0x00000000   Number         0  stm32_init.o ABSOLUTE
    dc.s                                     0x00000000   Number         0  dc.o ABSOLUTE
    demo_0.c                                 0x00000000   Number         0  demo_0.o ABSOLUTE
    handlers.s                               0x00000000   Number         0  handlers.o ABSOLUTE
    init.s                                   0x00000000   Number         0  init.o ABSOLUTE
    RESET                                    0x20000000   Section      236  stm32f10x.o(RESET)    .ARM.Collect$$$$00000000                 0x200000ec   Section        0  entry.o(.ARM.Collect$$$$00000000)
    .ARM.Collect$$$$00000001                 0x200000ec   Section        4  entry2.o(.ARM.Collect$$$$00000001)
    .ARM.Collect$$$$00000004                 0x200000f0   Section        4  entry5.o(.ARM.Collect$$$$00000004)
    .ARM.Collect$$$$00000007                 0x200000f4   Section        8  entry7.o(.ARM.Collect$$$$00000007)
    .ARM.Collect$$$$00002712                 0x200000fc   Section        4  entry2.o(.ARM.Collect$$$$00002712)
    __lit__00000000                          0x200000fc   Data           4  entry2.o(.ARM.Collect$$$$00002712)
    .text                                    0x20000100   Section       28  stm32f10x.o(.text)
    .text                                    0x2000011c   Section      156  stm32_init.o(.text)
    .text                                    0x200001b8   Section       76  demo_0.o(.text)
    .text                                    0x20000204   Section       36  init.o(.text)
    i.__scatterload_copy                     0x20000228   Section       14  handlers.o(i.__scatterload_copy)
    i.__scatterload_null                     0x20000236   Section        2  handlers.o(i.__scatterload_null)
    i.__scatterload_zeroinit                 0x20000238   Section       14  handlers.o(i.__scatterload_zeroinit)
    STACK                                

编译的地址基本上跟自己的想法一致,但是程序烧写时提示flash download fail。奇怪,难道程序还是烧到flash?但是此时的boot 早已经选择成SRAM boot了,包括6楼的测试都是设定的SRAM boot。不太理解,继续查找原因,有知道的高手也帮忙解答一下,谢谢了。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
通过baidu,上面的设定没有错误。但是需要烧写 脚本文件,找个脚本试试先。
好了,问题基本搞清楚,非常感谢 版主 和 vigia。
结贴了
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 学习了
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表