# pmon_for_bai_cai_ban **Repository Path**: caogos/pmon_for_bai_cai_ban ## Basic Information - **Project Name**: pmon_for_bai_cai_ban - **Description**: 能在龙芯1c300B的最小系统板(白菜板)上运行的pmon。 - **Primary Language**: Unknown - **License**: BSD-3-Clause-Clear - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2019-05-30 - **Last Updated**: 2025-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 编译步骤 cd zloader.ls1c/
make cfg; make tgt=rom
在目录“zloader.ls1c”下,生成bin文件“gzrom.bin”
# PMON适配白菜板总结 龙芯官方的pmon运行在>=32M的SDRAM上,而白菜板的内存可能是8M的SDRAM,所以需要修改一下相应源码才能在白菜板上跑起来。
支持>=32M的SDRAM的pmon: https://github.com/lshw/loongson1-pmon
把刘工(lshw)git上的pmon进行如下修改之后就可以在白菜板上跑了。(注:本git上的已经改好了)
## 修改 zloader.ls1c/Makefile.ls1c ``` MEMSIZE=64 ``` 改为: ``` MEMSIZE=8 ``` ## 修改 zloader.ls1c/Makefile.inc GZROMSTARTADDR 为 PMON 拷贝到RAM中的目标地址,改为: ``` GZROMSTARTADDR?=0xffffffff80600000 ``` ## 修改 Targets/LS1X/ls1c/sdramcfg.S 找到: ``` #if (MEM_SIZE == 0x02000000) /* mem = 32MByte */ #define SD_PARA0 (0x7f<<25 | \ (TRAS << 21) | \ (TRFC << 17) | (TRP << 14) | (TCL << 11) | \ (TRCD << 8) | (WIDTH_16 << 6) | (COL_512 << 3) | \ ROW_8K) #else /* mem > 32MByte */ ``` 改为: ``` #if (MEM_SIZE == 0x00800000) /* mem = 8MByte */ #define SD_PARA0 (0x7f<<25 | \ (TRAS << 21) | \ (TRFC << 17) | (TRP << 14) | (TCL << 11) | \ (TRCD << 8) | (WIDTH_16 << 6) | (COL_256 << 3) | \ ROW_4K) #else /* mem > 8MByte */ ``` ## 修改 Targets/LS1X/ls1c/conf/ls1c 更改MEM_SIZE为: ``` option MEM_SIZE=0x00800000 # 8MB 定义内存大小 ``` 注释掉 select_nand: ``` #select nand ``` 去掉下面三行开头的 # 号 ``` select nor_flash #如果使用nor flash分区需要该选项 option NORFLASH_PARTITION #nor flash(spi flash)分区 option W25X64 ``` ## 修改 sys/arch/mips/include/param.h 找到: ``` /* * Size of kernel malloc arena in CLBYTES-sized logical pages */ #ifndef NKMEMCLUSTERS #ifdef PMON //#define NKMEMCLUSTERS (2048 * 1024 / CLBYTES) /* 0.5Mb */ #define NKMEMCLUSTERS (15 * 1024 * 1024 / CLBYTES) /* 15MB */ #else #define NKMEMCLUSTERS (128 * 1024 * 1024 / CLBYTES) #endif #endif ``` 改为: ``` /* * Size of kernel malloc arena in CLBYTES-sized logical pages */ #ifndef NKMEMCLUSTERS #ifdef PMON #define NKMEMCLUSTERS (2048 * 1024 / CLBYTES) /* 0.5Mb */ //#define NKMEMCLUSTERS (15 * 1024 * 1024 / CLBYTES) /* 15MB */ #else #define NKMEMCLUSTERS (128 * 1024 * 1024 / CLBYTES) #endif #endif ```