裸机上运行的程序主要包括以下几类:
裸机管理程序:
也称为虚拟机监视器或VMM,是一种虚拟化软件,通过将计算机的软件与其硬件分离,支持虚拟机的创建和管理。当管理程序直接安装在物理机的硬件上,介于硬件和操作系统之间时,它被称为裸机管理程序。
启动文件(startup.s):
相当于房子的地基,用于初始化硬件平台,包括设置堆栈指针、初始化内存控制器等。
链接脚本(*.ld):
就像是房子的设计图,用于定义内存布局和外部设备的映射关系。
主程序(main.c):
就是我们住的房子本身,包含程序的主要逻辑和功能实现。
嵌入式操作系统:
虽然裸机编程通常不依赖于操作系统,但在某些情况下,可能会使用轻量级的嵌入式操作系统,如FreeRTOS、RT-Thread等,来管理任务、中断和时钟等资源。
驱动程序:
用于控制和管理硬件设备,如GPIO、UART、SPI、I2C等。
中断处理程序:
用于响应硬件中断,处理输入输出设备的数据传输和其他事件。
任务调度程序:
在引入操作系统后,任务调度程序负责将应用程序分割为多个任务,并安排它们的执行顺序。
系统软件:
包括编译器、调试器、编辑器等开发工具,用于编写、编译和调试裸机程序。
应用软件:
虽然裸机程序通常不直接运行应用软件,但在某些情况下,可能会开发一些简单的应用程序来测试硬件功能或进行演示。
总结来说,裸机上运行的程序主要是直接与硬件交互的低级程序,包括管理程序、启动代码、主程序、驱动程序、中断处理程序等。在某些情况下,也会使用轻量级的操作系统来管理资源和任务调度。