7111|23

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

奇怪程序还没有执行RAM里居然有数据????? [复制链接]

STM32.jpg
此帖出自stm32/stm8论坛

最新回复

                                  算了 这个问题先跳过! 还有 TI 2407  也是 通过BOOT跳线 设置 从 串口 下载程序。 而且也是 在FLASH 中写入 密码实现加密 但是偶听头说 很多人通过BOOTLOAD这个手段XXXX。  详情 回复 发表于 2011-1-6 18:56
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 非常正常的现象,一点也不奇怪,
此帖出自stm32/stm8论坛
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
?????香板
难道在PC 到达0X000000之前 就把 ROM里的 DATA COPY到ARM 里面了?????
此帖出自stm32/stm8论坛
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
?????香板
难道在PC 到达0X000000之前 就把 ROM里的 DATA COPY到ARM 里面了?????
你在RAM中看到的是ROM里的DATA吗?
此帖出自stm32/stm8论坛
 
 
 

回复

101

帖子

0

TA的资源

一粒金砂(初级)

5
 
不知道?只看到RAM  有数据 但不知道这个数据是 那里来的  一般程序的开始 我会写 一个程序清除RAM
但是 看到程序未执行 RAM 里 就有数据了  现在 就不知道该不该清RAM
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
是  STM32  的   BOOTLOAD  在做怪?

如果我想自己写 BOOTLOAD   STM32 的 芯片是否允许?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 


转载的  感觉 有 错误  特别是 贴的 图   STM32  好象不能 从 0X00执行程序 只能从0X8000000  开始 执行!


STM32启动代码概述
发布: 2009-5-20 16:00 | 作者: hnrain | 查看: 1013次

一般嵌入式开发流程就是先建立一个工程,再编写源文件,然后进行编译,把所有的*.s文件和*.c文件编译成一个*.o文件,再对目标文件进行链接和定位,编译成功后会生成一个*.hex文件和调试文件,接下来要进行调试,如果成功的话,就可以将它固化到flash里面去。

启动代码是用来初始化电路以及用来为高级语言写的软件作好运行前准备的一小段汇编语言,是任何处理器上电复位时的程序运行入口点。

比如,刚上电的过程中,PC机会对系统的一个运行频率进行锁定在一个固定的值,这个设计频率的过程就是在汇编源代码中进行的,也就是在启动代码中进行的。与此同时,设置完后,程序开始运行,注意,程序是在内存中运行的。这个时候,就需要把一些源文件从flash里面copy到内存中,又要对它们进行初始化读写,这又有频率的设置。这些都是初始化。

初始化完成后,我们又要设置一些堆栈,要跳到C语言的main函数里面运行。这就需要堆栈。对普通的ARM CPU有这样一个要求:在绝对地址为零的地方要放置一个异常向量表,但并不是所有的ARM CPU都留有这个一个空间,这就需要用到映射的功能。我们可以将其它地方的一些空间映射到绝对地址里面。当发生异常时,ARM核来读取异常中断表的时候,它会使用映射之后的那个表,这个就可以接着往下执行,否则在绝对地址零的地方找不到任何信息,程序就会死掉。这些运行的环境全部建立好后,程序就会跳转到我们的main函数里面。

总之,启动代码,就是对最小系统的初始化。包括晶振,CPU频率等。

启动代码的最小系统是:异常向量表的初始化–存储区分配–初始化堆栈–高级语言入口函数调用– main()函数。

程序的启动过程:

此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 其实你看到的这种现象,有可能是Bootloader在作怪,还有一种可能是芯片上电后RAM的内容本身就是随机的。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
还有一种可能是芯片上电后RAM的内容本身就是随机的。
-----------------------------------------------------------------------------

如果是这样的话 恐怕 会出现 BUG 吧!
以前写程序都习惯 在程序的开始 清RAM

如 51


INIT:                               
        MOV        R0, #RAM_Len  ;RAM_Len                EQU        07FH               
        CLR        A                       
Clear RAM:                               
        MOV        @R0, A                       
        DJNZ        R0, Clear RAM
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
STM32的上电时,RAM的内容试随机,绝大多数的MCU里RAM在上电时,RAM里的内容时随机的,楼主在学习单片机时没有认真看书中的每一句话。

学习不认真,打屁股!!!
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 


回LS

偶一清 内存  发生 就跳 13 楼中断里了
  1. #define F103VE_RAM_END ((u32)0x2000FFFF) /* STM32F103VE_RAM_END_ADDR */
  2. #define F103VE_RAM_START (*((u32*)(0x20000000))) //
  3. #define RAM_Size ((0xFFFF+1)/4)
复制代码
  1. void F103VE_RamClear(void)
  2. {        u32 RAM_Cnt;
  3.         u32 *P_RAM_START=&F103VE_RAM_START;
  4.         for(RAM_Cnt=0x00000000;RAM_Cnt<RAM_Size;RAM_Cnt++) //0xFFFF+1/4=0x4000
  5.         {
  6.                 (*(P_RAM_START+RAM_Cnt))=0x00000000;
  7.         }
复制代码
}
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 
  1. void HardFaultException(void)
  2. {
  3. /* Go to infinite loop when Hard Fault exception occurs */
  4. while (1)
  5. {
  6. }
  7. }
复制代码
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 12楼这段程序本身占用了一些RAM区,你清除所有RAM单元时破坏了这段程序需要的RAM,不产生问题才怪呢。
此帖出自stm32/stm8论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 不奇怪
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

16
 
TO  14  偶知道  所以 偶想改成用 寄存器

不过实际上是  执行完  清RAM代码 后 在执行若干 语句 才出现 错误中断


        for(RAM_Cnt=0x120;RAM_Cnt<RAM_Size;RAM_Cnt++) //0xFFFF+1/4=0x4000
        {

                (*(P_RAM_START+RAM_Cnt))=0x00000000;

        }
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

17
 
把16  楼的  RAM_Cnt=0x0000000改成   RAM_Cnt=0x120  就OK了
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

18
 
其实感觉 STM32  的 启动部分 不够 透明

不象2440 那样清楚
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 不过 问题  依旧 没有彻底 解决  请问 版主有  详细些的 STM32  BOOTLOAD  的文档么?
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

20
 
                                 还有一个不是很明白  ST  公司 为什么 不公布下 BOOTLOAD 固件程序。
此帖出自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
快速回复 返回顶部 返回列表