我正在谈论一个使用ARM cortex M3的系统。我所指的代码是用固件编写的。用户向固件发送特定作业的命令,并且固件调用特定的软件中断处理程序来执行与正在发送的命令相对应的任务。我知道软件中断处理程序在中断向量表中提到,但是如何发出命令由用户例如。擦除将导致软件中断被称为内部固件,将进行擦除操作?代码执行如何跳转到软件中断处理程序?
0
A
回答
0
软件中断是一条指令(也是通过其他名称,同一条指令)。处理器中的逻辑知道将模式切换到管理员或任何正确的模式,并开始执行(有点像跳转)到向量表中地址所指示的代码。然后在那里有处理命令的软件,在调用软件中断指令之前设置的内容告诉操作系统是什么或有效地执行该系统调用。
在进行系统调用的应用程序层的代码中,链接到应用程序中的库/代码从应用程序获取参数,并为软件中断设置适当的信息,执行软件中断,收集中断返回并清除时的结果。
编辑。
向量表中的所有向量都以这种方式工作。甚至重置。逻辑知道事件发生的时间,中断,数据中止,未定义的指令等。逻辑硬连线到特定地址,读取该值,这是一个地址,然后开始在该处理程序地址执行。 swi/svc只是另一个“事件”,但我们希望直接创建vs创建一个未定义的指令或未对齐的访问等,这些都将基本上做同样的事情,触发事件,正常执行停止,机器状态可能或可能无法保存(某些百分比位于cortex-m3中,但可能取决于事件),并执行处理程序。 (在m3中没有管理员,用户是全尺寸的手臂)。 svc/swi是一个虽然我们想创建未定义的地方,但通常不想。硬件中断并没有太大的不同,但我们并没有插入一条指令来引起它们,其他逻辑基于该逻辑中的某个事件导致它们。在所有情况下,我们(程序员)必须为我们所关心的每个事件编写代码(以及我们需要处理的每个事件,涵盖所有可能发生的事件),其中一个可能是svc/swi事件,而在那里它不是由arm定义的,你称之为系统函数或者它们是如何定义的。手臂可能有一套他们使用,但你在技术上可以自由创建任何你想要的机制和任何系统调用你想要的,你只需要确保调用者和被调用者就定义达成一致,谁负责什么。
相关问题
- 1. MIPS中断不会跳转到中断处理程序
- 2. 如何从故事板中的事件处理程序跳转到代码
- 3. java thead池执行程序如何处理中断线程
- 4. Storyboard.Completed事件处理程序防止代码执行
- 5. 在事件处理程序后执行代码
- 6. 验证执行的事件处理程序代码
- 7. GXT自定义事件处理程序代码执行多次
- 8. 如何跳过执行一行代码?
- 9. 中断处理程序在不同的线程中执行?
- 10. 在ashx处理程序的代码中强制执行SSL
- 11. 如何停止处理程序执行
- 12. Visual Basic:跳转到子程序,但不运行代码
- 13. EXCEL VBA代码来处理RightsWatch软件
- 14. Looper.loop不叫,但仍执行在处理程序代码
- 15. 在完成处理程序后执行的代码被称为
- 16. ASP.NET HttpModule - 保证执行前后处理程序代码?
- 17. SIGPOLL(SIGIO)问题:中断在执行处理程序
- 18. 如何从执行Debug.WriteLine的VS 2015 Output窗口行跳转到代码?
- 19. 如何将Python线程代码转换为多处理代码?
- 20. 如何在代码中为DataTemplate分配事件处理程序?
- 21. 如何跳转到gdb中的断点?
- 22. 在中断处理程序
- 23. JS事件处理程序是否可以中断另一个处理程序的执行?
- 24. Numericupdownextender事件处理程序的代码
- 25. SelectedIndexChange事件处理程序代码
- 26. 如何跳转到XCode 4中特定的代码行?
- 27. 让VS扩展跳转到代码行
- 28. 如何通过代码命令跳转到IntelliJ中的代码行
- 29. 执行析构函数/处理代码
- 30. 跳过布局事件处理程序
“我所指的代码是用固件写的”固件是一种新的编程语言吗? – Olaf
nonono,我只是说它是一个固件代码,你有很好的幽默感:D – JIN007