嵌入式c程序在flash和sram里的运行原理?

嵌入式c程序在flash和sram里的运行原理?,第1张

一种是NAND FLASH,在FLASH的最开始的4K是引导区的程序,单片机把它读出来,放在SRAM中运行,其作用是把后面FLASH中真正的应用程序复制到SRAM中,复制完后,将程序指针改到SRAM中应用程序头上去,这样就从你的应用程序开始运行了。就是一般的FLASH接口读写。

还有一种NOR FLASH,上电后就直接在FLASH中运行了。

1、通过地址总线把要读取的bit的地址传送到相应的读取地址引脚。

2、激活/CS选择该sram芯片。

3、激活/OE引脚SRAM知道是读取 *** 作。

4、通过地址总线确定要写入信息的位置。

5、通过数据总线将要写入的数据传输到Dout引脚。以上为SRAM读写 *** 作的计算方式。

对绝对的地址空间进行读写即可。

比如STM32自身的SRAM地址空间范围是0x20000000-0xXXXXXXXX(结束地址根据不同型号而不同,比如STM32F103ZET6的SRAM地址空间为0x20000000-0x2000FFFF共64KB),对绝对地址进行访问的C语言代码是:

a = *(u8 *)0x20000000//将地址为0x20000000的一个字节数据读取到变量a中

*(u8 *)0x20000100 = a //将变量a的值放到地址0x20000100处

不过不推荐直接访问绝对地址,因为这样可能会破坏堆栈而导致程序跑乱跑飞等问题的出现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11610954.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存