pmon源码解析:引导程序入门与关键函数详解

4星 · 超过85%的资源 需积分: 20 59 下载量 178 浏览量 更新于2024-07-18 5 收藏 1.27MB PDF 举报
Pmon学习笔记是一份针对龙芯CPU引导程序的深入解析文档,它详细探讨了pmon在CPU上电后的执行流程,类似于x86架构中的BIOS和bootloader。pmon源代码分析旨在帮助读者理解引导过程的每一个关键步骤,包括但不限于: 1. **启动流程**:pmon作为初始化代码,负责引导CPU从512KB flash芯片(地址0xbfc00000,物理地址0x1fc00000)加载并执行。这与x86的启动过程类似,但MIPS架构不存在实模式和保护模式的区别,一开始就使用虚拟地址。 2. **内存管理**:pmon涉及到配置空间的访问,如`superio_init`函数,这是初始化系统配置寄存器的过程,确保硬件设备能被正确识别和配置。 3. **内存与缓存**:文档还提及了`start.S`文件中关于内存管理和缓存处理的部分,这对于理解引导时数据的快速传输至关重要。 4. **从汇编到C语言**:pmon源代码可能是由汇编语言编写,然后转换成C语言实现。通过`initmips`和`dbginit`等函数,可以看到从底层指令操作到更高级别编程的过渡。 5. **PCI初始化**:`_pci_businit`和`cs5536_pci_fixup`函数负责PCI总线的初始化,确保硬件扩展设备能正常工作。 6. **网络初始化**:`Init_net`模块关注网络设备的配置,如`tgt_devconfig`函数用于设置显卡和处理配置初始化。 7. **USB支持**:文档提到USB部分,可能涉及设备驱动和配置,确保USB设备能够被操作系统识别。 8. **设备初始化**:`DevicesInit`函数是设备驱动程序初始化的一部分,包括处理I/O请求和打开函数。 9. **基本输入输出系统**(BIOS)功能:如`Termio`、`printf`、`write`和键盘处理,这些都是操作系统核心功能的基础。 10. **环境变量和存储管理**:环境变量的设置以及如何与闪存交互,可能涉及到引导时的数据持久化和设置。 11. **GPIO控制**:通用输入/输出接口(GPIO)在pmon中扮演着控制外部硬件的重要角色,比如图像显示。 12. **硬件驱动与图像显示**:文档提到了图片显示的过程,这通常涉及特定硬件的驱动程序和相应的显示初始化代码。 这份学习笔记深入剖析了龙芯pmon引导程序的各个方面,为想了解引导程序执行细节的读者提供了宝贵的学习资料。通过理解和掌握这些知识点,可以对MIPS架构的引导过程有更深的认识,并为进一步开发或优化龙芯平台打下坚实基础。