首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MCU 启动过程

MCU 启动过程

原来一直以为MCU启动时会把flash中的程序,数据统统加载到RAM中。
但是MCU 的RAM一般比flash小很多,不可能全部加载进去。

请各位高人讲解一下MCU启动过程?给我们新手解解惑。谢谢!

程序指针指哪里程序就执行到哪里?

QUOTE:
以下是引用meteor_chu在2008-11-21 11:57:00的发言:

原来一直以为MCU启动时会把flash中的程序,数据统统加载到RAM中。
但是MCU 的RAM一般比flash小很多,不可能全部加载进去。

请各位高人讲解一下MCU启动过程?给我们新手解解惑。谢谢!

不是高人哦

我也有不懂的地方,我们共同研究,这个问题问得太强。

谈MCU的启动并不是加电就能启动的。只有加电后复位条件满足才能启动。

以51为例,系统加电后,如果复位脚获得两个机器周期的高电平,完成启动过程。如果两个机器周期过后,复位信号还未撤销,则继续进行新一轮的启动过程。直到高电平被撤销。

启动成功后,芯片内部各寄存器处于就绪的初始状态。初始状态下,pc=0000,表示要从0000H开始执行程序,各特殊功能寄存器sdr大多数为0,只有几个特殊:sbuf不确定;sp=07,表示第一个压栈的数据要进入08,即不占用工作寄存器0区;各io口寄存器(80H、90H、A0H、B0H)均为0FFH(即各IO口线为1,高电平,表示处于允许数据输入的状态);对未用区域的SFR不能读写,读到的是随机数,写入的不能被保存。内部RAM区的状态如果停电时间较长,则大多数已经为0,少数还保持为停电前的状态,实际旧数据已不可用。如果电压还存在,只是手动复位,则与前面复位所述相同,而RAM区内容被完整保存。

至于在那两个复位必需的机器周期里MCU究竟做了那些事,我不能全部得知。

时钟振荡电路是只要通电就工作的,否则就不能核算两个机器周期。复位引脚就是逻辑电路中RS触发器的“R”有效,使输出清零,这个输出表示各寄存器的状态,所以大多数为0,也包括PC,至于为什么需要两个机器周期现不得而知,因为一个触发器的复位不需要那么长时间,莫非分区域的进行触发器复位?好我只知道那么多。也还有很多不知道的 。

活到老学到老永不满足
看啥处理器,确实有把flash数据读到RAM中的,ARM带外部数据总线的处理器就常见这么干的。单片机一般不会,都是直接在flash中读程序执行,这和处理器运行速度有关系,到了上百兆的时候,flash的速度就不够了。
返回列表