由于更换了工作,现工作主要是使用龙芯架构下的pmon+linux,所以要学习龙芯架构下的pmon。本文章主要记录学习经验以及工作中遇到的问题。
硬件:龙芯 2K1000LA 处理器(简称龙芯 2K1000) 主要面向于网络应用,兼顾平板应用及工
控领域应用。片内集成 2 个 LA264 处理器核, 采用 LoongArch 指令系统(龙架构) ,主频
1GHz, 64 位 DDR3 控制器, 并集成各种系统 IO 接口:
内核 | 双核64位 | 主频 | 1GHz |
功耗 | 1~5W (支持动态降频降压) | 浮点单元 | 128位向量单元 |
峰值运算速度 | 8GFlops | 高速I/O | PCIE2.0*2、SATA2.0 |
其他接口 | SPI、UART、GPIO、NAND、SDIO、DVO、I2S、HDA、I2C、USB2.0、GMAC | 一级指令缓存 | 32KB |
一级数据缓存 | 32KB | 二级缓存 | 共享1MB |
内存控制器 | 64位DDR3-1066 |
软件:ubuntu20.04操作系统
我是将电脑安装成了ubuntu系统,所以没有vmware等软件的安装。
sudo apt-get install aptitude xutilsdev bison flex acpica-tools
sudo apt install libncurses5‐ dev libssl-dev git
进入pmon源码编译pmoncfg工具:
该操作仅在源码包解压后的第一次编译前需要执行。
cd PMON源码/tools/pmoncfg
make pmoncfg
sudo cp pmoncfg /usr/bin
编译PMON:
cd zloader.ls2k1500/
make cfg all tgt=rom CROSS_COMPILE=/opt/bin/loongarch64-linux-gnu- DEBUG=-g
make dtb CROSS_COMPILE=/opt/bin/loongarch64-linux-gnu-
编译选项解释:
make cfg 对pmon进行配置;
all为Makefile里的编译项;
tgt=rom, 指定tgt为rom, 则会生成gzrom.bin文件;
CROSS_COMPILE=loongarch64-linux-gnu-, 指定编译工具前缀名;
DEBUG=-g, 设置编译的时候携带调试信息。
make dtb , 编译设备树
在PMON源码目录生成bin文件和dtb文件, 其中gzrom-dtb.bin带dtb, gzrom.bin
不带dtb, ls2k.dtb为单独的dtb文件。
编译linux内核:
cp arch/loongarch/configs/ls2k1000_defconfig .config
make menuconfig ARCH=loongarch
make vmlinuz ARCH=loongarch CROSS_COMPILE=/opt/bin/loongarch64-linux-gnu- -j 8
编译完成后, 会在当前目录下看到生成的vmlinux文件, 与压缩后的内核文件vmlinuz
编译buildroot文件系统:
cp config-la.my .config
make configs/loongisa_defconfig .config
export PATH=/opt/bin:$PATH
make menuconfig ARCH=loongarch64
注意:需要修改图像界面中 Toolchain path中工具链路径
make ARCH=loongarch64 CROSS_COMPILE=loongarch64-linux-gnu- -j 8
先简单搭建一个环境后面就开始记录学习过程以及开发时候遇到的技术点。