天嵌 ARM开发社区

 找回密码
 注册
查看: 2760|回复: 1

bBootFrmNORFlash 这个函数的疑惑

[复制链接]
summersunboy 发表于 2010-10-21 11:09:51 | 显示全部楼层 |阅读模式
这是从 tq2440的 u-boot 中截取的一小段程序:
  1. /*
  2. * 无论是从NOR Flash还是从NAND Flash启动,
  3. * 地址0处为指令"b        Reset", 机器码为0xEA00000B,
  4. * 对于从NAND Flash启动的情况,其开始4KB的代码会复制到CPU内部4K内存中,
  5. * 对于从NOR Flash启动的情况,NOR Flash的开始地址即为0。
  6. * 对于NOR Flash,必须通过一定的命令序列才能写数据,
  7. * 所以可以根据这点差别来分辨是从NAND Flash还是NOR Flash启动:
  8. * 向地址0写入一个数据,然后读出来,如果没有改变的话就是NOR Flash
  9. */
  10. int bBootFrmNORFlash(void)
  11. {
  12.         volatile unsigned int *pdw = (volatile unsigned int *)0;
  13.         unsigned int dwVal;

  14.         dwVal = *pdw;      
  15.         *pdw = 0x12345678;
  16.         if (*pdw != 0x12345678)
  17.         {
  18.                 return 1;
  19.         }
  20.         else
  21.         {
  22.                 *pdw = dwVal;
  23.                 return 0;
  24.         }
  25. }
复制代码
上面的注解中有一段话说:“对于NOR Flash,必须通过一定的命令序列才能写数据”,也就是说运行在nor flash的程序没法进行写的操作,那么nor flash称为 "芯片内执行" 这个叫法就不是很确切了。
我的理解是: nor flash 只能读,没法写,只能存放不改变内容的程序(没表达明白)
换句话说:从程序段的角度来理解,nor flash 中只能执行程序的text段,可以用 rodata段,而不能使用程序的 rwdata段,不能改变rwdata段中的数值。
不知道我的理解是否正确?还望各位前辈多多指教,不胜感激!
 楼主| summersunboy 发表于 2010-10-30 20:47:20 | 显示全部楼层
所以需要relocate
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-18 13:33 , Processed in 1.078125 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表