我已经使用 stm32、stm32l、nRF51822、efm32g 等微 Controller 构建了嵌入式系统 PCB,其中大多数使用 arm cortex m3。并且对它们中的每一个进行编程通常是不同的,即用于gpio的一个微 Controller 中使用的中断线与另一个微 Controller 中使用的中断线不同,配置一个的寄存器与另一个不同,所以我为一个与另一个不兼容,因为每个微 Controller 将其外围设备与处理器的连接方式不同。
我想PC架构中微 Controller 的等效物是主板吧?但是为主板编写的代码(例如使用 x86)如何与其他主板兼容?有标准吗?
对于所有设计为运行 Windows 或 Linux 的主板,所有中断线(由硬件链接)是否均等?和IO口一样吗?改时钟的界面是一样的吗?
通常,当我为微 Controller 编写裸机(无操作系统)代码时,我会得到它的数据表以了解如何与外围设备交互,是否有针对所有主板的统一引用手册?
如果有人可以向我指出有关此主题的一些引用资料,我将不胜感激。当我寻找计算机体系结构书籍时,或者它们专注于处理器 ASIC 设计(指令集、管道、缓存等,我已经知道)或者它们是非常基本的东西(例如:什么是硬驱动程序)。
最佳答案
我认为简短的回答是否定的,主板与为不同架构制造的主板不兼容。编译器和操作系统内核抽象了架构差异,但操作系统内核本身必须针对每种架构进行编码。特别是,操作系统中特定于硬件的部分称为该特定硬件的“驱动程序”,并且必须针对每种架构对其进行编码。
为操作系统编写代码时,所有硬件访问都通过操作系统内核,该内核知道如何为特定硬件架构进行硬件访问。程序本身不做任何中断,而是让内核做实际的工作。
程序和编译器只需要知道如何在给定的体系结构和操作系统中进行系统调用,以及标识操作系统 API 的系统调用号是什么。
关于operating-system - 为什么代码在主板之间兼容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33469165/