本文主要是介绍龙芯LS3A5000固件PMON开发实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、LS3A5000+7A2000工业开发板
1.1 硬件信息
- ls3a5000处理器配置:2.5GHz
- 内存配置:2路DIMM槽、频率3200Mbps
- HT频率配置:CPU和7A2000的HT均配置最高速率3200MHz
- 桥片显存配置:2颗x16的DDR4颗粒,容量共计1GB,速率2400Mbps
- PCIE:
F0 | F1 | H | G0 |
---|---|---|---|
4个X1 | 1个X4 | 2个X4 | 1个X8 |
- USB:USB2.0、USB3.0全部使用
- 显示: HDMI0用作HDMI、VGA使用;HDMI1转换为DP信号,芯片使用LT6711
- 音频:音频使用I2S信号,codec使用ES8388, codes配置通过7A IIC0 地址0x10
- UART/CAN:UART与CAN复用,GPIO控制切换通道
- 温度传感器: 接7A IIC0 地址0X48
- 看门狗:CPU_GPIO6看门狗使能
1.2 硬件结构图
二、固件开发准备工作
2.1 资源获取
- 源码从龙芯获取
- 交叉工具链 使用最新版本 (
rc1.2
) , 工具链放到系统 /opt 目录下
2.2 首次编译安装依赖
- 安装makedepand、make、iasl、gawk
sudo apt-get install xutils-dev make iasl gawk
- 安装pmoncfg (可以不操作)
sudo apt-get install bison flex build-essential patch
cd pmon-loongarch/tools/pmoncfg
make
sudo cp pmoncfg /usr/bin
2.3 创建编译脚本
- Pmon采用交叉编译,在源码pmon-loongarch目录下创建编译脚本cmd.sh,操作如下:
vim cmd.sh
- 将下面内容写到cmd.sh文件里
#!/bin/bashcd zloader.3a5000_7aexport PATH=/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2/bin:$PATHmake cfg make all tgt=rom CROSS_COMPILE=loongarch64-linux-gnu- DEBUG=-g
- 修改cmd.sh执行权限
sudo chmod 777 cmd.sh
- 执行脚本编译pmon
./cmd.sh
备注:编译完成生成二进制文件 编译完成后在pmon源码目录下的zloader.3a5000_7a/目录下生成gzrom.bin
三、固件PMON配置
3.1 频率配置
3.2 LS3A5000和LS3A6000差异
3.3 桥片选择
3.4 看门狗
3.5 峰鸣器
3.6 内存配置
3.6.1 板贴内存颗粒参数
3.6.2 板贴内存颗粒举例
3.7 关闭未使用设备
3.8 PCIE配置
3.9 时钟配置
3.9.1 时钟架构图
3.9.2 时钟计算方式
3.9.3 显存频率
3.10 网络PHY配置
3.11 I2S音频配置
3.12 温度传感器
3.13 制作vbios
板卡使用的是集显,使用默认设计,开发时不需要修改vbios。
参考:龙芯VBIOS生成工具
3.13.1 vbios格式转化
四、固件PMON更新
首次更新,只能通过JTAG或烧录器更新
4.1 JTAG烧录
4.2 在线更新
五、调试板卡常见问题
5.1 JTAG使用问题
- 判断ejtag是否有链接到处理器上
jtagregs d8 1 1
#读取的值是”000000005a5a5a5a ZZZZ…” 表示链接成功 - ejtag链接不上处理器,可以尝试降ejtag频率
jtag_clk 4
- ejtag软件版本
a、win系统(win7、win10)版本
b、linux(ubuntu)版本
c、龙芯(la架构)版本
备注: ejtag使用文档详见ejtag软件目录下doc里的ejtag1.pdf
5.2 上电没有反应
板卡上电后,串口没有任何输出,此时检查硬件电源、时钟以及上电时序是否正常
5.3 卡在HT初始化,报crc错误
检查ht部分硬件电源、时钟
5.4 开机后不断重启
板卡上有硬件看门狗,可以尝试将硬件看门狗关闭掉
5.5 板贴内存颗粒,启动卡死内存训练位置
- 内存颗粒信息配置与板卡实际不符
- 走线太差
5.6 统信或麒麟系统无法安装
确认系统镜像是否支持pmon引导,与系统厂商申请可以pmon引导的系统镜像文件
5.7 PMON下有显示,系统下没有显示
- 系统下可能没有获取到屏幕的EDID信息,导致没有显示输出
- vbios信息与板卡实际信息不符
这篇关于龙芯LS3A5000固件PMON开发实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!