Embedded 系统通电时如何执行第一条指令

Embedded 系统通电时如何执行第一条指令,embedded,ram,boot,bios,rom,Embedded,Ram,Boot,Bios,Rom,我很好奇董事会是如何启动的, 电路板通电时如何执行第一条指令外设如何初始化…提前感谢 当嵌入式系统中的系统通电时,ROM的第一个指令地址如何加载到PC(程序计数器)对于类似这样的事情,您可以认为硬件与软件是并行的。重置后(实际上是在重置期间),诸如状态机的起始地址和状态之类的项被初始化为作者想要的值。然后,它在重置后开始计时,并遍历代码,对于一个简单的情况,可能是零状态的地址是fetch,然后当fetch结束时,该指令被解码并执行,依此类推 关于您的问题,关机和正常执行之间的区别在于,在上电重置

我很好奇董事会是如何启动的, 电路板通电时如何执行第一条指令外设如何初始化…提前感谢
当嵌入式系统中的系统通电时,ROM的第一个指令地址如何加载到PC(程序计数器)

对于类似这样的事情,您可以认为硬件与软件是并行的。重置后(实际上是在重置期间),诸如状态机的起始地址和状态之类的项被初始化为作者想要的值。然后,它在重置后开始计时,并遍历代码,对于一个简单的情况,可能是零状态的地址是fetch,然后当fetch结束时,该指令被解码并执行,依此类推

关于您的问题,关机和正常执行之间的区别在于,在上电重置后,处理器的状态被置于特定状态,之后以及一段时间后,处理器的状态与执行到该点的代码有关


外围逻辑以同样的方式工作,但并不(必然)有运行代码的处理器,尽管有些外围设备有。然后,启动代码和/或操作系统最终运行时会退出并初始化外围设备。

对于类似这样的情况,您可以认为硬件与软件是并行的。重置后(实际上是在重置期间),诸如状态机的起始地址和状态之类的项被初始化为作者想要的值。然后,它在重置后开始计时,并遍历代码,对于一个简单的情况,可能是零状态的地址是fetch,然后当fetch结束时,该指令被解码并执行,依此类推

关于您的问题,关机和正常执行之间的区别在于,在上电重置后,处理器的状态被置于特定状态,之后以及一段时间后,处理器的状态与执行到该点的代码有关


外围逻辑以同样的方式工作,但并不(必然)有运行代码的处理器,尽管有些外围设备有。然后,启动代码和/或操作系统最终运行时会退出并初始化外围设备。

对于类似这样的情况,您可以认为硬件与软件是并行的。重置后(实际上是在重置期间),诸如状态机的起始地址和状态之类的项被初始化为作者想要的值。然后,它在重置后开始计时,并遍历代码,对于一个简单的情况,可能是零状态的地址是fetch,然后当fetch结束时,该指令被解码并执行,依此类推

关于您的问题,关机和正常执行之间的区别在于,在上电重置后,处理器的状态被置于特定状态,之后以及一段时间后,处理器的状态与执行到该点的代码有关


外围逻辑以同样的方式工作,但并不(必然)有运行代码的处理器,尽管有些外围设备有。然后,启动代码和/或操作系统最终运行时会退出并初始化外围设备。

对于类似这样的情况,您可以认为硬件与软件是并行的。重置后(实际上是在重置期间),诸如状态机的起始地址和状态之类的项被初始化为作者想要的值。然后,它在重置后开始计时,并遍历代码,对于一个简单的情况,可能是零状态的地址是fetch,然后当fetch结束时,该指令被解码并执行,依此类推

关于您的问题,关机和正常执行之间的区别在于,在上电重置后,处理器的状态被置于特定状态,之后以及一段时间后,处理器的状态与执行到该点的代码有关


外围逻辑以同样的方式工作,但并不(必然)有运行代码的处理器,尽管有些外围设备有。然后,启动代码和/或操作系统最终运行时将退出并初始化外围设备。

我的经验是使用AVR,因此您的里程数可能会有所不同

通常,程序计数器从0开始,因此第一条指令位于闪存中的第一个位置。这也是向量表的位置,或者是当各种类型的中断发生时,处理器硬连线要跳转到的地址

这些地址之间仅相隔几个字节,只为跳转指令在闪存中的其他位置留下足够的空间。地址0也是复位中断的向量。也就是说,当按下复位按钮时,它是处理器跳转到的位置

重置中断向量将跳转到C运行时,这是一段添加到C程序开头的代码。在跳转到代码的主函数之前,它初始化RAM中的全局变量并设置堆栈指针

编译器将向量表、C运行时和代码放在一起,定制表和运行时以适合您的代码。例如,如果您包含一个中断处理程序,那么将在向量表中该类型中断的位置插入到该中断处理程序的跳转


PC上没有类似的BIOS。外围设备不会自动初始化。你必须用你自己的代码为每一个你想使用的外设做这件事。

我的经验是使用AVR,所以你的里程数可能会有所不同

通常,程序计数器从0开始,因此第一条指令位于闪存中的第一个位置。这也是向量表的位置,或者是当各种类型的中断发生时,处理器硬连线要跳转到的地址

这些地址之间仅相隔几个字节,只为跳转指令在闪存中的其他位置留下足够的空间。公元