# 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
```