龙芯S-2K2000板卡测试记录,loongnix系统已知问题及Buildroot跑DPDK

本文主要是介绍龙芯S-2K2000板卡测试记录,loongnix系统已知问题及Buildroot跑DPDK,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

S-2K2000板卡已知问题

  1. 安装系统时PMON需要使用acpi传参
  2. pmon下USB键盘不支持热插拔
  3. pmon下插入部分USB键盘 进pmon特别慢,兼容性问题,后续统一解决
  4. 不支持emmc,等待更新pmon

S-2K2000板卡手动引导USB命令

load  (usb0,0)/boot/vmlinuz.
initrd  (usb0,0)/boot/initrd.gz
g console=ttyS0,115200

PMON编译方法

  1. 安装ubuntu20.04系统
  2. 解压龙芯交叉编译工具到/opt目录
tar xvf loongarch64-linux-gnu-2021-06-19-vector.tar.gz -C /opt/
  1. 修改ACPI传参。 文件路径:PMON下的Targets/ls2k2000/conf/ls.2k2000;配置文件:ls_anpk.2k2000,可以覆盖。修改内容为ACPI的三个选项,取消注释
#
#  Define target endian
#
makeoptions     ENDIAN=EL               # Little endian version.option          SMBIOS_SUPPORT
option          ACPI_SUPPORT   //取消注释
select          acpi_support    //取消注释
option          LS_STR     //取消注释
  1. 编译pmon,执行cmd.sh
cd zloader.ls2k2000
make cfg all tgt=rom ARCH=loongarch CROSS_COMPILE=/opt/loongarch64-linux-gnu-2021-06-19-vector/bin/loongarch64-linux-gnu- DEBUG=-g
make dtb ARCH=loongarch CROSS_COMPILE=/opt/loongarch64-linux-gnu-2021-06-19-vector/bin/loongarch64-linux-gnu-

S-2K2000安装系统的步骤

  1. 更新GPU_FUSE pmon
  2. 执行fuse_write升级GPU固件,并check
  3. 更新ACPI传参pmon
  4. 安装系统(2个版本均可)
  5. 替换内核
  6. 修改boot.cfg
  7. 更新正式pmon

龙芯2K2000 GPU固件升级

  1. 烧录gpufuse固件 (pmon_2k2000_gpufuse_nuc.bin)
  2. pmon下执行fuse_write–》重启板卡–》pmon下执行fuse_check
  3. 重启确认显示正常
  4. 烧录回旧pmon(目前nuc固件不支持USB,需要通过tftp烧录)

TFTP烧录pmon的方法

  1. 启动到pmon命令行下,开机时按c进入pmon
  2. 查看设备列表devls
PMON> devls
Device name  Type
syn0         IFNET
syn1         IFNET
syn2         IFNET
wd0          DISK
ngbe0        IFNET
ngbe1        IFNET
ngbe2        IFNET
ngbe3        IFNET
ngbe4        IFNET
ngbe5        IFNET
ngbe6        IFNET
ngbe7        IFNET
ngbe8        IFNET
ngbe9        IFNET
PMON> 
  1. 配置ip
    ifconfig syn0 10.50.122.1
  2. 测试网络
    ping 10.50.122.10
  3. 准备TFTP服务器,推荐用Windows tftd64软件
  4. TFTP烧录pmon
    fload tftp://10.10.10.10/gzrom-gpu.bin
    TFTP烧录pmon

支持的操作系统(已实测安装)

  1. 龙芯嵌入式系统 Loongnix-Embedded-20.1.rc3-loongarch64-DVD-1。
    已知问题:没有网络源。
  2. 龙芯loongnix系统 Loongnix-20.5.livecd.loongarch64.iso。
    已知问题:找不到I2C设备,需要替换内核。不支持DTS传参。

龙芯系统替换内核的方法

loongnix系统更换为anntec内核后需要改为DTS传参,注销ACPI选项后重新编译PMON,并更新到板卡。

  1. 挂载分区2
    mount /dev/sda2 /mnt
  2. 修改boot.cfg 增加一个内核选项
    vim /mnt/boot.cfg
  3. 拷贝已经适配过的anntec内核vminuz文件到分区2
    cp vminuz /mnt/
  4. 卸载分区2
    umount /mnt

修改dmi显示的modle name方法:

  1. 默认显示的model_name是 Loongson-2K2000-EVB-V1.0
root@test-pc:~# lscpu
Architecture:          loongarch64Byte Order:          Little Endian
CPU(s):                2On-line CPU(s) list: 0,1
BIOS Vendor ID:        Loongson-2K2000-EVB-V1.0
Model name:            Loongson-2K2000-EVB-V1.0BIOS Model name:     Loongson-2K2000-EVB-V1.0  CPU @ 1.2GHzBIOS CPU family:     1CPU family:          Loongson-64bitThread(s) per core:  1Core(s) per socket:  2Socket(s):           1BogoMIPS:            2400.00Flags:               cpucfg lam ual fpu lsx crc32 lbt_x86 lbt_arm lbt_mips
Caches (sum of all):   L1d:                 128 KiB (2 instances)L1i:                 128 KiB (2 instances)L2:                  2 MiB (1 instance)
NUMA:                  NUMA node(s):        1NUMA node0 CPU(s):   0,1
  1. pmon目录下执行grep -rn "board_name"找到对应的文件路径/pmon/common/smbios/smbios.c
  2. 修改对应的值后重新编译
#elif defined(LOONGSON_2K2000)sprintf(board_name, "S-%s-V1.0", "2K2000");
  1. 更新pmon后测试,已经修改了原先的
root@test-pc:~# dmidecode -t2
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.Handle 0x0002, DMI type 2, 17 bytes
Base Board InformationManufacturer: Anntec.cn S-2K2000-V1.0Product Name: 1.0Version: <BAD INDEX>Serial Number: Not SpecifiedAsset Tag: Not SpecifiedFeatures:Board is a hosting boardBoard is replaceableLocation In Chassis: Not SpecifiedChassis Handle: 0x0000Type: MotherboardContained Object Handles: 0

DPDK的测试方法前面文章已有讲述,记录一些注意事项

  1. NAS上传的dpdk-l2fwd程序版本为21.11 ,启动命令需要加一个参数-P
    ./l2fwd -l 1 --proc-type auto --socket-mem 1024 --file-prefix lwd0 -- -q 2 -p 0x3 -T 5 --no-mac-updating -P ./l2fwd -l 1 --proc-type auto --socket-mem 1024 --file-prefix lwd0 -- -q 4 -p 0xf -T 5 --no-mac-updating -P ./l2fwd -l 1 -- -q2 -p3 -T0 --no-mac-updating -r 128 -t 256 -P
  2. 目前测试丢包较多,修改boot.cfg添加了isolcpus=1,使用core1来跑,稍有改善。龙芯认为是系统干扰严重,推荐用buildroot测试,等待更新。

i2c操作bypass命令

  1. 关闭bypass
    i2cset -f -y 0 0x2f 0x21 0x00
  2. 保存设置
    i2cset -f -y 0 0x2f 0x19 0xaa

Buildroot制作,工具U-start 已上传NAS,步骤如下

  1. 运行build.sh

  2. 选中U盘路径执行

root@ubuntu:~/U-start# ./build.sh 
保证U盘没有重要文件,U盘会全部格式化
您的磁盘为
sda		60G
sdb		29.6G
请输入您想分区的盘,格式为/dev/磁盘名称 (如 /dev/sda) :
/dev/sdb
/dev/sdb磁盘大小为29G,小于300G,可以正常使用
您想分区的磁盘名称为/dev/sdb, 确认请输入y,否则退出
请谨慎输入 (y,N)  y
确认
umount: /dev/sdb1: no mount point specified.
umount: /dev/sdb2: no mount point specified.
umount: /dev/sdb3: no mount point specified.
umount: /dev/sdb4: not mounted.
umount: /dev/sdb5: no mount point specified.Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.Command (m for help): Partition number (1,2, default 2): 
Partition 2 has been deleted.Command (m for help): Selected partition 1
Partition 1 has been deleted.Command (m for help): Partition typep   primary (0 primary, 0 extended, 4 free)e   extended (container for logical partitions)
Select (default p): Partition number (1-4, default 1): First sector (2048-62115839, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-62115839, default 62115839): 
Created a new partition 1 of type 'Linux' and of size 1000 MiB.Command (m for help): Partition typep   primary (1 primary, 0 extended, 3 free)e   extended (container for logical partitions)
Select (default p): Partition number (2-4, default 2): First sector (2050048-62115839, default 2050048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2050048-62115839, default 62115839): 
Created a new partition 2 of type 'Linux' and of size 20 MiB.Command (m for help): The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busyThe kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)./dev/sdb分区完成
############################################
/dev/sdb1正在进行格式化
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 256000 4k blocks and 64000 inodes
Filesystem UUID: 01668611-43eb-4819-af87-1c2728429910
Superblock backups stored on blocks: 32768, 98304, 163840, 229376Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done/dev/sdb1格式化完成
/dev/sdb2正在进行格式化
mkfs.fat 4.1 (2017-01-24)
/dev/sdb2格式化完成
正在拷贝文件,请勿移动U盘
拷贝完成
  1. 将制作好的U盘插入被测板卡启动(支持3A5000,2K2000,2K1000,2K1500处理器),root登录,空密码,ls查看有以下目录
Welcome to Buildroot
buildroot login: root
No mail.
# ls
2k0500	2k1500	3a5000	      dpdk-l2fwd    hugepage.sh
2k1000	2k2000	dpdk-bind.sh  dpdk-testpmd  setmrs.sh
说明:
//CPU型号目录下存放对应的igb_uio文件
//uio已经编译到内核
//hugepage.sh 设置大页内存
//setmrs.sh 无需设置
//dpdk-bin.sh 用于绑定接口
//dpdk-l2fwd,dpdk-testpmd 为测试程序
  1. 运行步骤
# 
# insmod 2k2000/igb_uio.ko 
[   33.543679] igb_uio: loading out-of-tree module taints kernel.
[   33.561711] igb_uio: Use MSIX interrupt by default
# ./hugepage.sh 
# ./dpdk-bind.sh -b igb_uio 04:00.0
[   51.039073] igb_uio 0000:04:00.0: mapping 1K dma=0x1a5c000 host=00000000f48b8029
[   51.046452] igb_uio 0000:04:00.0: unmapping 1K dma=0x1a5c000 host=00000000f48b8029
[   51.054242] pcieport 0000:00:0c.0: can't derive routing for PCI INT B
[   51.060668] igb_uio 0000:04:00.1: PCI INT B: no GSI
[   51.065656] igb_uio 0000:04:00.1: mapping 1K dma=0x1a5c000 host=00000000f48b8029
[   51.073031] igb_uio 0000:04:00.1: unmapping 1K dma=0x1a5c000 host=00000000f48b8029
# ./dpdk-bind.sh -b igb_uio 04:00.1
[   53.200501] pcieport 0000:00:0c.0: can't derive routing for PCI INT B
[   53.206934] igb_uio 0000:04:00.1: PCI INT B: no GSI
[   53.212105] igb_uio 0000:04:00.1: mapping 1K dma=0x1a5c000 host=00000000f48b8029
[   53.219470] igb_uio 0000:04:00.1: unmapping 1K dma=0x1a5c000 host=00000000f48b8029
# ./dpdk-bind.sh -s
0000:00:08.0 drivers ahci
0000:04:00.0 drivers igb_uio
0000:04:00.1 drivers igb_uio
0000:00:16.0 drivers ls-spi-pci
0000:00:09.0 drivers pcieport
0000:00:0a.0 drivers pcieport
0000:00:0b.0 drivers pcieport
0000:00:0c.0 drivers pcieport
0000:00:0d.0 drivers pcieport
0000:00:0f.0 drivers pcieport
0000:00:03.0 drivers stmmaceth
0000:00:03.1 drivers stmmaceth
0000:00:03.2 drivers stmmaceth
0000:00:04.0 drivers xhci_hcd
0000:00:19.0 drivers xhci_hcd
  1. 运行测试程序
# ./dpdk-testpmd -l 0,1 -- -i
EAL: Detected CPU lcores: 2
EAL: Detected NUMA nodes: 1
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
[  123.025759] igb_uio 0000:04:00.0: uio device registered with irq 45
EAL: Probe PCI driver: net_ngbe (8088:101) device: 0000:04:00.0 (socket 0)
[  123.172799] igb_uio 0000:04:00.1: uio device registered with irq 46
EAL: Probe PCI driver: net_ngbe (8088:101) device: 0000:04:00.1 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_0>: n=155456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Configuring Port 0 (socket 0)
Port 0: 8C:1C:DA:46:BF:00
Configuring Port 1 (socket 0)
Port 1: 8C:1C:DA:46:BF:01
Checking link statuses...
Done
testpmd> start

这篇关于龙芯S-2K2000板卡测试记录,loongnix系统已知问题及Buildroot跑DPDK的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635809

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监