查看: 5982|回复: 5

[其他] 请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

[复制链接]

该用户从未签到

6

主题

24

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2019-5-10
发表于 2012-3-19 21:19:31 | 显示全部楼层 |阅读模式
 static void CopyCodeToRAM(void)
{
  UINT8 *Src;
  UINT8 *Dst;
  UINT16  SegSize;
  UINT16  x;
  
  //RAM code resides in Flash from 0xfb00 - 0xfeff
  Src = (UINT8 *)__SEG_START_REF(RAM_CODE);
  //code will be copied to RAM at address 0x3D00
  Dst = (UINT8 *)0x3D00;
  
  SegSize = (UINT16)__SEG_SIZE_REF(RAM_CODE);
  
  for (x = 0; x < SegSize; x++)   //just copy a byte at a time
    *Dst++ = *Src++;
}
这个是飞思卡尔官网上给的一个Bootloader的源代码中的一部分,我不理解为什么非要有这一步?
希望那位朋友能帮个忙,谢谢啦!!
 
PS:小弟C语言不好,一般都是用汇编语言写程序
我知道答案 目前已有4人回答
回复

使用道具 举报

该用户从未签到

6

主题

52

帖子

0

注册会员

Rank: 2

积分
172
最后登录
1970-1-1
发表于 2012-3-20 11:06:55 | 显示全部楼层

RE:请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

因为只有加载到RAM里面才能够运行
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-3-20 16:32:44 | 显示全部楼层

    RE:请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

    这个是由于FLASH的机制而决定的,FLASH不能对自己进行操作,只能通过将代码拷贝到RAM中运行,然后才可以操作FLASH。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6

    主题

    24

    帖子

    0

    注册会员

    Rank: 2

    积分
    55
    最后登录
    2019-5-10
     楼主| 发表于 2012-3-22 21:19:59 | 显示全部楼层

    回复:请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

    回复第 3 楼 于2012-03-20 08:32:44发表:
    这个是由于FLASH的机制而决定的,FLASH不能对自己进行操作,只能通过将代码拷贝到RAM中运行,然后才可以操作FLASH。哦,谢谢斑竹,还想问一下是要把bootloader的所有代码全都拷到RAM中还是就把一部分代码拷进去呢? 
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    19
    最后登录
    1970-1-1
    发表于 2012-4-28 16:55:06 | 显示全部楼层

    RE:请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

    想想,在XP正常运行时,你可以对C盘(默认)进行可视化么?皮之不存毛将焉附?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    54

    帖子

    0

    注册会员

    Rank: 2

    积分
    100
    最后登录
    2020-6-21
    发表于 2014-3-23 18:21:21 | 显示全部楼层

    RE:请教大家一个问题,我最近在学习Bootloader,但是一直不明白为什么必须要把代码拷到RAM中?

    请问,楼主,可否提供一下您的源代码,学习一下!pinkenzuo2011@gmail.com。 谢谢!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 03:30 , Processed in 0.096481 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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