Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 总线设备通信(如CPU到以太网)是否可随时中断(无状态)?_Assembly_Embedded_Hardware_Interrupt_Ethernet - Fatal编程技术网

Assembly 总线设备通信(如CPU到以太网)是否可随时中断(无状态)?

Assembly 总线设备通信(如CPU到以太网)是否可随时中断(无状态)?,assembly,embedded,hardware,interrupt,ethernet,Assembly,Embedded,Hardware,Interrupt,Ethernet,如下图所示:在带有PIC的设备上,硬件定时器单元中断触发ISR,然后将一些数据发送到以太网芯片。在发送数据时,PIC仲裁并将不同定时器单元的更高中断转发给CPU,然后触发ISR也写入同一以太网芯片。在任何时候都没有中断屏蔽,甚至完全禁用 我知道将保存所有寄存器,但: 这种szenario需要任何类型的同步吗?例如,写入是否由不允许中断的多个汇编程序命令组成(关键部分)?或者是否有assmebler命令将其作为原子操作处理,例如,没有中断会损坏数据 是否有一些通用的设计原则规定CPU和总线设备之间

如下图所示:在带有PIC的设备上,硬件定时器单元中断触发ISR,然后将一些数据发送到以太网芯片。在发送数据时,PIC仲裁并将不同定时器单元的更高中断转发给CPU,然后触发ISR也写入同一以太网芯片。在任何时候都没有中断屏蔽,甚至完全禁用

我知道将保存所有寄存器,但:

这种szenario需要任何类型的同步吗?例如,写入是否由不允许中断的多个汇编程序命令组成(关键部分)?或者是否有assmebler命令将其作为原子操作处理,例如,没有中断会损坏数据


是否有一些通用的设计原则规定CPU和总线设备之间的这种低级硬件交互也可以在不受CPU中断影响的原子汇编程序命令中执行?

我不知道您描述的场景会发生在什么硬件或软件环境中。在具有中断优先级的系统中,来自同一设备的同一中断将具有相同的优先级,并且在没有硬件优先级的情况下,软件将阻止来自该设备的进一步中断。无论哪种方式,同步都可以通过阻止来自设备的其他中断来实现,直到ISR完成。谢谢,我的示例不太适合,我更改了它。想象一下,例如使用具有128个中断的AURIX和分别映射到不同中断优先级的计时器单元,并且没有操作系统。例如,两个ISR可能会随机将数据写入以太网芯片,并且不会通过任何信号量或软件中的任何其他内容进行同步。以太网是用来处理这个问题的吗?是的,它会失败。将数据写入多个ISR中的以太网芯片会带来麻烦。任何类型的以太网设备接口都不太可能支持您的建议,但严格来说,这取决于具体的实现。从根本上说,以太网对任何一种方式都没有要求,只是它不是任何一种硬件接口所支持的那种东西。通常,当ISR可以访问硬件接口时,访问该接口时需要禁用中断。