data: publish complete Calculet NPU research archive

This commit is contained in:
2026-08-02 14:57:11 +08:00
parent b5c4fbffab
commit 98e6cadcb6
12400 changed files with 6166642 additions and 0 deletions
@@ -0,0 +1,13 @@
Package: cal-pcie
Version: 0.9.0-1
Architecture: amd64
Maintainer: Junwei Qin <qinjunwei@calculet.tech>
Installed-Size: 212
Section: kernel
Priority: optional
Homepage: http://192.168.20.33:1000/niuzhenyu/cal-pcie.git
Description: Kernel driver module for PCIe performance
This package provides the Linux kernel module for Calculet
PCIe hardware interfaces.It implements the essential IOCTL
character device framework to allow direct register communication
from user-space.
@@ -0,0 +1,18 @@
c589326957579b94e55a9e11adc4098c usr/share/doc/cal-pcie/changelog.Debian.gz
a7f9bb8aebf66a03d992267809cff877 usr/share/doc/cal-pcie/copyright
788fdcca7726bfe0a2883e0f291b380c usr/src/cal-pcie-0.9.0/Makefile
4e755f9719aa171e82dd8d1909c29480 usr/src/cal-pcie-0.9.0/board_mgr.c
24b662df4710a9dc482b15e5d5a1f501 usr/src/cal-pcie-0.9.0/board_mgr.h
f720659b9f4260f2a226d1f39dcf5aac usr/src/cal-pcie-0.9.0/calculet_pci.mod.c
daf9a5d6a4faad743f65577363930f53 usr/src/cal-pcie-0.9.0/calculet_pci_core.c
e7185b5821ebbcc04d851f2763d17c21 usr/src/cal-pcie-0.9.0/calculet_pci_core.h
1c5ea12ea5ef46cdc127032587e8b315 usr/src/cal-pcie-0.9.0/dkms.conf
6692d02c13baed72ac24306c7428e288 usr/src/cal-pcie-0.9.0/dma.c
e68fc8b3641aad7096bec1240df2b67f usr/src/cal-pcie-0.9.0/dma.h
4cb1973a1b2da31db0816d6b9da6a53c usr/src/cal-pcie-0.9.0/fops.c
6798c3ca8909724756f565bd29a2ddcd usr/src/cal-pcie-0.9.0/fops.h
7bfe47920e7947dc2c4931a3ecad7b1b usr/src/cal-pcie-0.9.0/ioctl.h
3ed33ff44b0ee698ace348f2c746f603 usr/src/cal-pcie-0.9.0/proc.c
5c253d5cea8c5874dfbcae442b5d2799 usr/src/cal-pcie-0.9.0/proc.h
3b20c1cd73163609e6b96abbaf58e682 usr/src/cal-pcie-0.9.0/utils.c
2bc24094f0d939c8cbb4950650d7f8a7 usr/src/cal-pcie-0.9.0/utils.h
@@ -0,0 +1,107 @@
#!/bin/bash
# postinst - 安装后加载内核模块
set -e
# 当脚本由 dpkg 触发时,$DPKG_MAIN_TSN_PACKAGE 通常可用
# 如果为空,则回退到通过文件名解析
PACKAGE_NAME="${DPKG_MAIN_TSN_PACKAGE}"
if [ -z "$PACKAGE_NAME" ]; then
SCRIPT_NAME=$(basename "$0")
PACKAGE_NAME=$(echo "$SCRIPT_NAME" | sed 's/\.postinst$//' | sed 's/\.prerm$//')
fi
# 从 dpkg 数据库获取版本
if [ -n "$PACKAGE_NAME" ]; then
PACKAGE_VERSION=$(dpkg-query -W -f='${Version}' "$PACKAGE_NAME" 2>/dev/null)
# 去掉 Debian 修订号(-1, -2, -ubuntu1 等)
PACKAGE_VERSION=$(echo "$PACKAGE_VERSION" | sed 's/-.*$//')
fi
DKMS_SRC_DIR="/usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}"
# 从预期的源码释放路径去解析驱动名称
MAKEFILE_PATH="${DKMS_SRC_DIR}/Makefile"
MODULE_NAME=""
case "$1" in
configure)
echo "正在配置 ${PACKAGE_NAME} 软件包..."
# 创建 DKMS 源码目录
echo "创建 DKMS 源码目录: ${DKMS_SRC_DIR}"
mkdir -p "${DKMS_SRC_DIR}"
# 复制源码文件到 DKMS 目录
SOURCE_DIR="/usr/share/${PACKAGE_NAME}/source"
if [ -d "${SOURCE_DIR}" ]; then
echo "从 ${SOURCE_DIR} 复制源码到 DKMS 目录..."
cp -rf "${SOURCE_DIR}"/* "${DKMS_SRC_DIR}/"
fi
# 确保 dkms.conf 存在
if [ ! -f "${DKMS_SRC_DIR}/dkms.conf" ]; then
echo "错误: DKMS 配置文件不存在: ${DKMS_SRC_DIR}/dkms.conf" >&2
exit 1
fi
# 动态解析驱动模块名称
if [ -f "${MAKEFILE_PATH}" ]; then
MODULE_NAME=$(sed -n -E 's/^DRIVER_NAME[[:space:]]*:?=[[:space:]]*([^[:space:]]+).*/\1/p' "${MAKEFILE_PATH}" | head -1 | sed 's/\.ko$//')
fi
# 如果 Makefile 里没解析出来,降级使用包名作为模块名
if [ -z "$MODULE_NAME" ]; then
MODULE_NAME="${PACKAGE_NAME}"
fi
echo "解析到的驱动模块名称: ${MODULE_NAME}"
# 设置正确的权限
# chmod -R 644 "${DKMS_SRC_DIR}"
# 添加到 DKMS
echo "添加 ${PACKAGE_NAME} 到 DKMS..."
if ! dkms status -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" | grep -q "added"; then
dkms add -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
fi
# 编译模块
echo "编译内核模块..."
dkms build -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
# 安装模块
echo "安装内核模块..."
dkms install -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}"
# 更新模块依赖
echo "更新模块依赖..."
depmod -a
# 加载模块
echo "加载内核模块: ${MODULE_NAME}"
if modprobe "${MODULE_NAME}" 2>/dev/null; then
echo "模块 ${MODULE_NAME} 加载成功"
else
echo "错误: 模块 ${MODULE_NAME} 加载失败" >&2
exit 1
fi
# 设置模块开机自动加载
if [ ! -f "/etc/modules-load.d/${PACKAGE_NAME}.conf" ]; then
echo "配置模块开机自动加载..."
echo "${MODULE_NAME}" > "/etc/modules-load.d/${PACKAGE_NAME}.conf"
fi
echo "${PACKAGE_NAME} 安装完成"
;;
abort-upgrade|abort-remove|abort-deconfigure)
echo "安装过程被中断,不做配置"
;;
*)
echo "postinst 被调用时参数: $1" >&2
;;
esac
exit 0
+102
View File
@@ -0,0 +1,102 @@
#!/bin/bash
# prerm - 卸载前卸载内核模块
set -e
# 当脚本由 dpkg 触发时,$DPKG_MAIN_TSN_PACKAGE 通常可用
PACKAGE_NAME="${DPKG_MAIN_TSN_PACKAGE}"
if [ -z "$PACKAGE_NAME" ]; then
SCRIPT_NAME=$(basename "$0")
PACKAGE_NAME=$(echo "$SCRIPT_NAME" | sed 's/\.postinst$//' | sed 's/\.prerm$//')
fi
# 从 dpkg 数据库获取版本
if [ -n "$PACKAGE_NAME" ]; then
PACKAGE_VERSION=$(dpkg-query -W -f='${Version}' "$PACKAGE_NAME" 2>/dev/null)
# 去掉 Debian 修订号(-1, -2, -ubuntu1 等)
PACKAGE_VERSION=$(echo "$PACKAGE_VERSION" | sed 's/-.*$//')
fi
DKMS_SRC_DIR="/usr/src/${PACKAGE_NAME}-${PACKAGE_VERSION}"
MAKEFILE_ABS_PATH="${DKMS_SRC_DIR}/Makefile"
MODULE_NAME=""
# 【核心修复】:使用绝对路径去解析真正的 Makefile 提取驱动名
if [ -f "${MAKEFILE_ABS_PATH}" ]; then
MODULE_NAME=$(sed -n -E 's/^DRIVER_NAME[[:space:]]*:?=[[:space:]]*([^[:space:]]+).*/\1/p' "${MAKEFILE_ABS_PATH}" | head -1 | sed 's/\.ko$//')
fi
# 如果从 Makefile 没解析出来,降级使用包名作为模块名
if [ -z "$MODULE_NAME" ]; then
MODULE_NAME="${PACKAGE_NAME}"
fi
case "$1" in
remove)
echo "正在卸载 ${PACKAGE_NAME}..."
# 1. 卸载内核模块
echo "检查内核模块状态: ${MODULE_NAME}"
if lsmod | grep -q "^${MODULE_NAME}"; then
echo "正在从当前内核中卸载模块 ${MODULE_NAME}..."
if rmmod "${MODULE_NAME}" 2>/dev/null; then
echo "模块 ${MODULE_NAME} 卸载成功"
else
echo "警告: 模块 ${MODULE_NAME} 卸载失败,可能有其他进程正在使用它" >&2
fi
else
echo "模块 ${MODULE_NAME} 当前未加载"
fi
# 2. 从 DKMS 移除模块 (修复:扩大 grep 范围以兼容 added/installed 各种状态)
if dkms status | grep -q "${PACKAGE_NAME}/${PACKAGE_VERSION}"; then
echo "从 DKMS 移除 ${PACKAGE_NAME} ${PACKAGE_VERSION}..."
dkms remove -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" --all 2>/dev/null || true
fi
echo "正在强行清理 /lib/modules/ 下的所有 ${MODULE_NAME} 残留文件..."
find /lib/modules/ -name "${MODULE_NAME}.ko*" -delete 2>/dev/null || true
# 3. 更新模块依赖
echo "更新模块依赖..."
depmod -a
# 4. 删除开机自动加载配置
if [ -f "/etc/modules-load.d/${PACKAGE_NAME}.conf" ]; then
echo "删除开机自动加载配置..."
rm -f "/etc/modules-load.d/${PACKAGE_NAME}.conf"
fi
echo "${PACKAGE_NAME} 卸载完成"
;;
upgrade)
echo "软件包升级中,清理旧版本..."
# 1. 升级时卸载旧版本的内核运行模块
if lsmod | grep -q "^${MODULE_NAME}"; then
echo "正在卸载旧版本内核运行模块..."
rmmod "${MODULE_NAME}" 2>/dev/null || true
fi
# 2. 从 DKMS 移除旧版本
if dkms status | grep -q "${PACKAGE_NAME}/${PACKAGE_VERSION}"; then
echo "从 DKMS 移除旧版本模块记录..."
dkms remove -m "${PACKAGE_NAME}" -v "${PACKAGE_VERSION}" --all || true
fi
# 3. 清理旧的内核模块文件 (原逻辑保留,提供兜底支持)
rm -f /lib/modules/*/kernel/drivers/misc/${MODULE_NAME}.ko 2>/dev/null || true
depmod -a
;;
failed-upgrade)
echo "升级失败,保留原有配置"
;;
*)
echo "prerm 被调用时参数: $1" >&2
;;
esac
exit 0