20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
root@rk3566-buildroot:/usr/bin# vi list-iodomain.sh
root@rk3566-buildroot:/usr/bin# sync
【最后】
#chk_env
#get_chip_id $1
#echo_msg "Get CHIP ID: $CHIP_ID"
#get_iodomain_val
20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
2025/4/8 17:49
缘起,使用荣品的PRO-RK3566开发板,刷Rockchip原厂的buildroot系统时,经常会出现让你检查vccio电源/电压的警告信息。
root@rk3566-buildroot:/usr/bin# /bin/list-iodomain.sh version: V1.0.1
Get CHIP ID: rk356x
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX PLEASE CHECK IO-DOMAIN !!!!!!!!!!!!!!!
XXXXXXXXXX 请务必检查IO电源域配置 !!!!!!!!!!!!!!!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Get IO DOMAIN VALUE:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
注意事项:PMUIO1/PMUIO2 固定不可配
VCCIO2电平由硬件FLASH_VOL_SEL决定:
当VCCIo2供电是1.8V,则FLASH_VOL_SEL管脚必须保持为高电平;
当VCCIO2供电是3.3V,则FLASH_VOL_SEL管脚必须保持为低电平;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
pmuio2_vsel: 3.3V
vccio7_vsel: 3.3V
vccio6_vsel: 1.8V
vccio5_vsel: 3.3V
vccio4_vsel: 3.3V
vccio3_vsel: 3.3V
vccio2_vsel: 3.3V
io1_vsel: 3.3V
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root@rk3566-buildroot:/usr/bin#
root@rk3566-buildroot:/usr/bin# /bin/list-iodomain.sh version: V1.0.1
Get CHIP ID: rk356x
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX PLEASE CHECK IO-DOMAIN !!!!!!!!!!!!!!!
XXXXXXXXXX 请务必检查IO电源域配置 !!!!!!!!!!!!!!!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Get IO DOMAIN VALUE:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
注意事项:PMUIO1/PMUIO2 固定不可配
VCCIO2电平由硬件FLASH_VOL_SEL决定:
当VCCIo2供电是1.8V,则FLASH_VOL_SEL管脚必须保持为高电平;
当VCCIO2供电是3.3V,则FLASH_VOL_SEL管脚必须保持为低电平;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
pmuio2_vsel: 3.3V
vccio7_vsel: 3.3V
vccio6_vsel: 1.8V
vccio5_vsel: 3.3V
vccio4_vsel: 3.3V
vccio3_vsel: 3.3V
vccio2_vsel: 3.3V
vccio1_vsel: 3.3V
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root@rk3566-buildroot:/usr/bin#
root@rk3566-buildroot:/usr/bin#
root@rk3566-buildroot:/usr/bin# ll *.sh
-rwxr-xr-x 1 root root 27332 Apr 7 2025 anytovcd.sh*
-rwxr-xr-x 1 root root 4895 Apr 7 2025 determine_maximum_mpps.sh*
-rwxr-xr-x 1 root root 2594 Apr 7 2025 lav2avi.sh*
-rwxr-xr-x 1 root root 26667 Apr 7 2025 lavtc.sh*
-rwxr-xr-x 1 root root 10759 Apr 7 2025 list-iodomain.sh*
-rwxr-xr-x 1 root root 1814 Oct 22 2024 power-key.sh*
-rwxr-xr-x 1 root root 252 Apr 7 2025 restart_rknn.sh*
-rwxr-xr-x 1 root root 71 Apr 7 2025 start_rknn.sh*
-rwxr-xr-x 1 root root 530 Apr 7 2025 weston-calibration-helper.sh*
-rwxr-xr-x 1 root root 284 Apr 7 2025 wifi-connect.sh*
-rwxr-xr-x 1 root root 395 Apr 7 2025 wifi_ap6xxx_rftest.sh*
-rwxr-xr-x 1 root root 4878 Apr 7 2025 wifibt-init.sh*
-rwxr-xr-x 1 root root 3995 Apr 7 2025 wifibt-util.sh*
root@rk3566-buildroot:/usr/bin#
root@rk3566-buildroot:/usr/bin#
root@rk3566-buildroot:/usr/bin# vi list-iodomain.sh
root@rk3566-buildroot:/usr/bin# sync
#!/bin/sh
# $1 is chip
CHIP_ID=""
HIGH_LEVEL="3.3V" # get from chip trm
LOW_LEVEL="1.8V" # get from chip trm
TOOL_HEXDUMP="NO"
VERSION="V1.0.1"
program_name="$0"
function help_msg()
{
echo "Please input chip."
echo "$program_name <chip>"
echo "chip: rv1126,rv1109,rk3308,rk3308b,rk3308bs"
exit 0
}
function echo_msg()
{
echo -e "\e[1;31m $1 \e[0m"
}
function get_reg()
{
if [ -n "$1" ]; then
_val=`io -4 -r $1`
_val=`echo ${_val##*:}`
_val=`echo 0x${_val}`
echo "$_val"
else
echo "get register error."
exit -1
fi
}
function print_val()
{
tag="$2"
if [ $(( $1 )) -eq 0 ];then
echo_msg "$tag $HIGH_LEVEL"
else
echo_msg "$tag $LOW_LEVEL"
fi
}
function list_iodomain_rv1126_rv1109()
{
iodomain_val=`get_reg 0xFE020140`
pmuio1_vsel=$(( 0x1 << 9 ))
pmuio0_vsel=$(( 0x1 << 8 ))
vccio7_vsel=$(( 0x1 << 7 ))
vccio6_vsel=$(( 0x1 << 6 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
flash_vosel=$(( 0x1 << 0 ))
print_val $(( $iodomain_val & $pmuio1_vsel )) "pmuio1_vsel:"
print_val $(( $iodomain_val & $pmuio0_vsel )) "pmuio0_vsel:"
print_val $(( $iodomain_val & $vccio7_vsel )) "vccio7_vsel:"
print_val $(( $iodomain_val & $vccio6_vsel )) "vccio6_vsel:"
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
if [ $(( $iodomain_val & $flash_vosel )) -eq 0 ];then
# read iomux
gpio0b3_iomux_val=`get_reg 0xFE020008`
gpio0b3_iomux_val_off=$(( 0x1 << 12 ))
if [ $(( $gpio0b3_iomux_val & $gpio0b3_iomux_val_off )) -eq 0 ];then
# read gpio data direction
gpio0b3_data_direction_val=`get_reg 0xFF460008`
gpio0b3_data_direction_val_off=$(( 0x1 << 11 ))
if [ $(( $gpio0b3_data_direction_val & $gpio0b3_data_direction_val_off )) -eq 0 ];then
# read gpio data register
gpio0b3_data_reg_val=`get_reg 0xFF460070`
gpio0b3_data_reg_val_off=$(( 0x1 << 11 ))
print_val $(( $gpio0b3_data_reg_val & $gpio0b3_data_reg_val_off )) "vccio1_vsel:"
else
echo "Check vccio1_vsel error!!!"
fi
else
echo "Check vccio1_vsel error!!!"
fi
fi
if [ $(( $iodomain_val & $flash_vosel )) -eq 1 ];then
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
fi
}
function list_iodomain_rk3308_rk3308b_rk3308bs()
{
iodomain_val=`get_reg 0xFF000300`
flash_vosel=$(( 0x1 << 8 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
vccio0_vsel=$(( 0x1 << 0 ))
if [ $(( $iodomain_val & $flash_vosel )) -eq $(( 0x1 << 8 )) ];then
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
print_val $(( $iodomain_val & $vccio0_vsel )) "vccio0_vsel:"
fi
if [ $(( $iodomain_val & $flash_vosel )) -eq 0 ];then
# read iomux
gpio0a4_iomux_val=`get_reg 0xFF000000`
gpio0a4_iomux_val_off=$(( 0x1 << 8 ))
if [ $(( $gpio0a4_iomux_val & $gpio0a4_iomux_val_off )) -eq 0 ];then
# read gpio data direction
gpio0a4_data_direction_val=`get_reg 0xFF220004`
gpio0a4_data_direction_val_off=$(( 0x1 << 4 ))
if [ $(( $gpio0a4_data_direction_val & $gpio0b3_data_direction_val_off )) -eq 0 ];then
# read gpio data register
gpio0a4_data_reg_val=`get_reg 0xFF220050`
gpio0a4_data_reg_val_off=$(( 0x1 << 4 ))
print_val $(( $iodomain_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $gpio0a4_data_reg_val & $gpio0a4_data_reg_val_off )) "vccio3_vsel:"
print_val $(( $iodomain_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain_val & $vccio1_vsel )) "vccio1_vsel:"
print_val $(( $iodomain_val & $vccio0_vsel )) "vccio0_vsel:"
else
echo "Check vccio1_vsel error!!!"
fi
else
echo "Check vccio1_vsel error!!!"
fi
fi
}
function list_iodomain_rk3326_rk3326s()
{
iodomain0_val=`get_reg 0xFF140180`
iodomain1_val=`get_reg 0xFF010100`
pmuio2_vsel=$(( 0x1 << 15 ))
pmuio1_vsel=$(( 0x1 << 14 ))
vccio5_vsel=$(( 0x1 << 6 ))
vccio4_vsel=$(( 0x1 << 5 ))
vccio3_vsel=$(( 0x1 << 4 ))
vccio2_vsel=$(( 0x1 << 3 ))
vccio1_vsel=$(( 0x1 << 2 ))
print_val $(( $iodomain1_val & $pmuio2_vsel )) "pmuio2_vsel:"
print_val $(( $iodomain1_val & $pmuio1_vsel )) "pmuio1_vsel:"
print_val $(( $iodomain0_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain0_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain0_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain0_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain0_val & $vccio1_vsel )) "vccio1_vsel:"
}
function list_iodomain_rk3566_rk3568()
{
iodomain0_val=`get_reg 0xFDC20140`
iodomain1_val=`get_reg 0xFDC20144`
iodomain2_val=`get_reg 0xFDC20148`
pmuio2_vsel=$(( 0x1 << 1 ))
vccio7_vsel=$(( 0x1 << 7 ))
vccio6_vsel=$(( 0x1 << 6 ))
vccio5_vsel=$(( 0x1 << 5 ))
vccio4_vsel=$(( 0x1 << 4 ))
vccio3_vsel=$(( 0x1 << 3 ))
vccio2_vsel=$(( 0x1 << 2 ))
vccio1_vsel=$(( 0x1 << 1 ))
print_val $(( $iodomain2_val & $pmuio2_vsel )) "pmuio2_vsel:"
print_val $(( $iodomain0_val & $vccio7_vsel )) "vccio7_vsel:"
print_val $(( $iodomain0_val & $vccio6_vsel )) "vccio6_vsel:"
print_val $(( $iodomain0_val & $vccio5_vsel )) "vccio5_vsel:"
print_val $(( $iodomain0_val & $vccio4_vsel )) "vccio4_vsel:"
print_val $(( $iodomain0_val & $vccio3_vsel )) "vccio3_vsel:"
print_val $(( $iodomain0_val & $vccio2_vsel )) "vccio2_vsel:"
print_val $(( $iodomain0_val & $vccio1_vsel )) "vccio1_vsel:"
}
function chk_rv1126_rv1109()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 56 11 26|00000000 52 56 11 09"`
if [ -n "$iff" ]; then
CHIP_ID=rv1126_rv1109
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3308_rk3308b_rk3308bs()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 33 08"`
if [ -n "$iff" ]; then
CHIP_ID=rk3308
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3326_rk3326s()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 33 26"`
if [ -n "$iff" ]; then
CHIP_ID=rk3326
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function chk_rk3566_rk3568()
{
nvem_path="/sys/bus/nvmem/devices/rockchip-otp0/nvmem"
iff=`hexdump -C $nvem_path | grep -Ew "00000000 52 4b 35 68|00000000 52 4b 35 66"`
if [ -n "$iff" ]; then
CHIP_ID=rk356x
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
return 1
}
function get_chip_id()
{
# if error, exit -1
if [ "$TOOL_HEXDUMP" = "YES" ];then
# if check otp success, just return CHIP_ID and ignore $1
chk_rv1126_rv1109
if [ $? -eq 0 ];then
return 0
fi
chk_rk3308_rk3308b_rk3308bs
if [ $? -eq 0 ];then
return 0
fi
chk_rk3326_rk3326s
if [ $? -eq 0 ];then
return 0
fi
chk_rk3566_rk3568
if [ $? -eq 0 ];then
return 0
fi
fi
# if check otp failed, check CHIP_ID with $1
case "$1" in
rv1126|rv1109|RV1126|RV1109)
chip_id=`io -4 -r 0XFE000110 | grep -w 00001109`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=rv1126_rv1109
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308bs|RK3308BS)
chip_id=`io -4 -r 0XFF000800 | grep -w 0003308c`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308b|RK3308B)
chip_id=`io -4 -r 0XFF000800 | grep -w 00003308`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3308|RK3308)
chip_id=`io -4 -r 0XFF000800 | grep -w 00000cea`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3326|RK3326)
chip_id=`io -4 -r 0XFF140800 | grep -w 00003326`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3326s|RK3326S)
chip_id=`io -4 -r 0XFF140800 | grep -w 00003326`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
rk3566|rk3568|RK3566|RK3568)
chip_id=`io -4 -r 0XFDC60800 | grep -w 00003566`
if [ $? -eq 0 -a -n "$chip_id" ]; then
CHIP_ID=$1
HIGH_LEVEL="3.3V"
LOW_LEVEL="1.8V"
return 0
fi
;;
*)
help_msg
;;
esac
echo "Not found CHIP_ID...exit!!!"
exit 0
}
# input parameter
# CHIP_ID --> rv1126,rk3308,rk3308b,rk3308bs,rk3566,rk3568
# HIGH_LEVEL --> "3.3V"
# LOW_LEVEL --> "1.8V"
function get_iodomain_val()
{
# if error, exit -1
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "XXXXXXXXXX PLEASE CHECK IO-DOMAIN !!!!!!!!!!!!!!!"
echo_msg "XXXXXXXXXX 请务必检查IO电源域配置 !!!!!!!!!!!!!!!"
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "Get IO DOMAIN VALUE:"
case "$CHIP_ID" in
rv1126|rv1109|RV1126|RV1109|rv1126_rv1109|RV1126_RV1109)
list_iodomain_rv1126_rv1109
;;
rk3308bs|rk3308b|rk3308|RK3308BS|RK3308B|RK3308)
list_iodomain_rk3308_rk3308b_rk3308bs
;;
rk3326|rk3326s|RK3326|RK3326)
list_iodomain_rk3326_rk3326s
;;
rk3566|rk3568|rk356x|RK3566|RK3568|RK356X)
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo_msg "注意事项:PMUIO1/PMUIO2 固定不可配"
echo_msg "VCCIO2电平由硬件FLASH_VOL_SEL决定:"
echo_msg "当VCCIo2供电是1.8V,则FLASH_VOL_SEL管脚必须保持为高电平;"
echo_msg "当VCCIO2供电是3.3V,则FLASH_VOL_SEL管脚必须保持为低电平;"
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
list_iodomain_rk3566_rk3568
;;
*)
help_msg
;;
esac
echo_msg "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
exit 0
}
function chk_env()
{
echo_msg "$0 version: $VERSION"
# if error, exit -1
which io >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
echo_msg "install io command first!!!"
exit -1
fi
which hexdump >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
TOOL_HEXDUMP="YES"
fi
}
if [ "$1" = "-h" -o "$1" = "--help" ]; then
help_msg
fi
#chk_env
#get_chip_id $1
#echo_msg "Get CHIP ID: $CHIP_ID"
#get_iodomain_val
感觉 Rockchip原厂的buildroot系统 有一个守护进程在定时/定期调用脚本:/bin/list-iodomain.sh。
因此我使用vi一改,那个红色打印马上/立马消失了!
rootroot@rootroot-X99-Turbo:~/RK3566_RK3568_Linux5.10_V1.2.0$
rootroot@rootroot-X99-Turbo:~/RK3566_RK3568_Linux5.10_V1.2.0$ find . -name list-iodomain.sh
./buildroot/output/rockchip_rk3566/build/rkscript/list-iodomain.sh
./buildroot/output/rockchip_rk3566/target/usr/bin/list-iodomain.sh
./buildroot/output/rockchip_rk3566_recovery/build/rkscript/list-iodomain.sh
./buildroot/output/rockchip_rk3566_recovery/target/usr/bin/list-iodomain.sh
./external/rkscript/list-iodomain.sh
rootroot@rootroot-X99-Turbo:~/RK3566_RK3568_Linux5.10_V1.2.0$
参考资料:
BING:/bin/list-iodomain.sh version: V1.0.1
https://blog.csdn.net/qq_28877125/article/details/136289103
【泰山派RK3566】Buildroot SDK 使用记录(一)
该脚本的地址就是:/usr/bin/list-iodomain.sh
把最后三行注释掉,如下:
if [ "$1" = "-h" -o "$1" = "--help" ]; then
help_msg
fi
#chk_env
#get_chip_id $1
#echo_msg "Get CHIP ID: $CHIP_ID"
#get_iodomain_val
相关文章:
20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
rootrk3566-buildroot:/usr/bin# vi list-iodomain.sh rootrk3566-buildroot:/usr/bin# sync 【最后】 #chk_env #get_chip_id $1 #echo_msg "Get CHIP ID: $CHIP_ID" #get_iodomain_val 20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常…...
上下拉电阻详解
一、基本定义 上拉电阻:连接信号线与电源(VCC),确保信号在无驱动时保持高电平。 下拉电阻:连接信号线与地(GND),确保信号在无驱动时保持低电平。 二、核心作用 电平稳定 防止悬空引…...
特权FPGA之数码管
case语句的用法: 计数器不断的计数,每一个num对应数码管一种数据的输出。实例通俗易懂,一目了然。 timescale 1ns / 1ps// Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Project Name: //…...
PyTorch 学习笔记
环境:python3.8 PyTorch2.4.1cpu PyCharm 参考链接: 快速入门 — PyTorch 教程 2.6.0cu124 文档 PyTorch 文档 — PyTorch 2.4 文档 快速入门 导入库 import torch from torch import nn from torch.utils.data import DataLoader from torchvision …...
MCP基础学习计划:从MCP入门到项目构建的全面指南
文章简介 ai生成的学计划有的连接是无效的,想着边学习边找输出文章,后续会继续链接更新 在人工智能和大语言模型(LLM)的快速发展下,掌握Model Context Protocol(MCP)成为提升AI应用能力的关键。…...
NO.77十六届蓝桥杯备战|数据结构-单调队列|质量检测(C++)
什么是单调队列? 单调队列,顾名思义,就是存储的元素要么单调递增要么单调递减的队列。注意,这⾥的队列和普通的队列不⼀样,是⼀个双端队列。单调队列解决的问题 ⼀般⽤于解决滑动窗⼝内最⼤值最⼩值问题,以…...
【有啥问啥】深入浅出讲解 Teacher Forcing 技术
深入浅出讲解 Teacher Forcing 技术 在序列生成任务(例如机器翻译、文本摘要、图像字幕生成等)中,循环神经网络(RNN)以及基于 Transformer 的模型通常采用自回归(autoregressive)的方式生成输出…...
redis数据迁移之通过redis-dump镜像
这里写目录标题 一、redis-dump 镜像打包1.1 安装windows docker1.2 idea项目创建1.3 idea镜像打包 二、redis数据迁移2.1 数据导出2.2 数据导入 一、redis-dump 镜像打包 没有找到可用的redis-dump镜像,需要自己打包一下,这里我是在idea直接打包的 1.…...
Redis哨兵模式下执行sentinel failover mymaster命令可能导致什么风险,如何避免
在 Redis 哨兵模式下执行 SENTINEL FAILOVER mymaster 命令会强制触发主节点切换(手动故障转移),虽然这是合法的管理操作,但可能带来以下风险及规避方法: 一、潜在风险 数据丢失风险 原因:主节点可能在故障…...
软考案例分析实例答题模板
案例分析(全部为主观问答题, 总 5 大题, 第一题必选, 剩下 4 选 2, 每题 25 分, 共75分) 第一题: 案例分析——某企业信息架构优化项目 案例材料: 某企业是一家从事电子商务的大型企业, 随着业务规模的不断扩大, 现有的信息架 构已无法满足企业快速发展的需求。 企业…...
Docker+Jenkins+Gitee自动化项目部署
前置条件 docker安装成功 按照下面配置加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://register.librax.org"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker一、…...
olib开源图书
8.olib开源图书 该软件作者已开源,开源地址:开源地址:https://github.com/shiyi-0x7f/o-lib 点击该软件,使用管理员权限打开,进入界面可以搜索图书并下载pdf文件。 蓝奏云下载:https://wwph.lanzout.com/…...
react: styled-components实现原理 标签模版
styled-components是针对react中一个前端广泛使用的css-in-js样式库B站 利用标签模版 利用ES6中的 标签模版文档标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。 let a 5; let b 10;…...
AI大模型从0到1记录学习 day15
14.3.5 互斥锁 1)线程安全问题 线程之间共享数据会存在线程安全的问题。 比如下面这段代码,3个线程,每个线程都将g_num 1 十次: import time import threading def func(): global g_num for _ in range(10): tmp g_num 1 # ti…...
macbook pro查询并修改命令提示符的格式
环境 MacBook Pro 描述 我的命令提示符总是: # 前面总是多了(base) (base) yutaoyutaodeMacBook-Pro ~ % vim .zshrc (base) yutaoyutaodeMacBook-Pro ~ % source .zshrc # 期望改成下面这样: yutaoyutaodeMacBook-Pro ~ % 找…...
Baumer工业相机堡盟工业相机如何处理偶发十万分之一或百万分之一几率出现的黑图现象(C#)
Baumer工业相机堡盟工业相机如何处理偶发十万分之一或百万分之一几率出现的黑图现象(C#) Baumer工业相机Baumer工业相机出现黑图的技术背景硬件层面软件层面环境因素 实际案例演示:BaumerVCXG-53M.I.XT 防护相机项目使用环境项目反馈问题项目…...
基于Resemblyzer 声纹识别门禁系统设计
一、整体结构与思路 这份程序的核心目的是: 用麦克风录音 ➜ 识别说话人是谁 ➜ 图形化展示 ➜ 语音播报反馈 它主要由 4 个部分组成: 全局配置和依赖加载 语音采集和声纹提取逻辑 图形界面与交互(PyQt5) 语音播报反馈系统 …...
分布式数据库LSM树
LSM树的核心结构与操作流程 Log-Structured Merge Tree,日志 结构化 合并 树。 追加写:永远不改,就算是update操作,也是追加写,一直新生成文件。 刷盘触发:追加到一定程序,比如到了几M…...
2143 最少刷题数
2143 最少刷题数 ⭐️难度:中等 🌟考点:2022、前缀和、省赛、二分 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main2 {public static void main(String[] args) {Scanner sc new Sca…...
Ansible:playbook 使用when和ith_items
文章目录 playbook使用 whenplaybook 使用迭代 with_items迭代嵌套子变量 if 和 for在template中使用了,在playbook中加以区分,因此使用when进行条件判断,with_items进行循环迭代 playbook使用 when when语句,可以实现条件测试。…...
python爬取1688.item_search_best-查询榜单列表返回数据说明
在当今数字化时代,电商平台的数据蕴含着巨大的商业价值。1688作为国内领先的B2B电商平台,其商品搜索榜单数据能够为供应商、采购商以及市场研究人员提供诸多洞察。本文将详细介绍如何使用Python爬取1688的商品搜索榜单数据,并对返回数据进行说…...
数据结构(一)KMP+滑动窗口+链表+栈+队列
数据结构-链表 单链表 #include<iostream> using namespace std; const int N 100010; int head,e[N],ne[N],idx; void init() {head -1;idx 0; } void add_to_head(int x) {e[idx] x;ne[idx] head;head idx;idx; } void add(int k,int x) {e[idx] x;ne[id…...
C语言 数据结构 【队列】动态模拟实现
引言 用动态方式模拟实现队列的各个接口 一、队列的结构与概念 概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列…...
Python | 第十三章 | 多态 | 魔术方法 | 静态方法 | 抽象类
P130 多态练习题(1)2025/2/21 一、isinstance函数 基本说明: isinstance()用于判断对象是否为某个类或其子类的对象基本语法:isinstance(object,classinfo)解读形参: object:对象 classinfo:可以是类名、基本类型或者由它们组成…...
线程安全问题的原因与解决方案总结
目录 一 什么是线程安全? 二 线程安全问题的实例 三 线程安全问题的原因 1.多个线程修改共享数据 2.抢占式执行 3.修改操作不是原子的 4.内存可见性问题 5.指令重排序 四 解决方案 1.同步代码块 2.同步方法 3.加锁lock解决问题 一 什么是线程安全&…...
设计模式-模版方法
目录 什么是模版方法? 怎么理解抽象类的算法骨架? Burn功能骨架 战士类 法师类 什么是模版方法? 借助抽象类定义算法的骨架,再由具体子类实现算法的特定步骤。这种设计模式让算法的整体结构得以固定,同时又能让不…...
c# 运用策略模式与模板方法模式实例
策略模式 策略模式的核心在于定义一系列算法,把它们封装起来,并且让它们能够相互替换。策略模式让算法的变化独立于使用算法的客户端。在这个方法里,策略模式的体现如下: convertFunc 参数:这是一个委托类型的参数&a…...
基于51单片机的3路温度报警器proteus仿真
地址: https://pan.baidu.com/s/1qrCpGuzZRbeFVVjaGMffQA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C51 是一款常用的 8 位单片机,由 Atmel 公司(现已被 Microchip 收…...
llama-factory微调qwen2.5-vl
本文不生产技术,只做技术的搬运工!!! 前言 目前大模型百花齐放,微调方法复杂多样,且教程复杂,工程端想要进行垂域模型适配困难重重,本篇博客详细介绍了qwen2.5-vl的全流程微调过程,包括环境配置、数据集制作、模型训练、模型导出、模型部署、模型推理等过程,希望对工…...
淘宝历史价格采集合规指南:官方 API + 轻量爬虫混合方案
在电商数据分析领域,获取淘宝商品的历史价格数据对于企业制定价格策略、进行竞品分析以及消费者洞察市场价格波动趋势都具有重要意义。然而,由于淘宝平台对数据安全和合规性的严格要求,历史价格采集工作需要在合法合规的框架内进行。本文将详…...
文档控件DevExpress Office File API v24.2亮点:不再支持非Windows系统
DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…...
TDengine.C/C++ 连接器
简介 C/C 开发人员可以使用 TDengine 的客户端驱动,即 C/C 连接器(以下都用 TDengine 客户端驱动表示),开发自己的应用来连接 TDengine 集群完成数据存储、查询以及其他功能。TDengine 客户端驱动的 API 类似于 MySQL 的 C API。…...
什么是混合搜索Hybrid Search?
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 混合搜索通常指一种结合多种搜索方法或技术的搜索策略,旨在提供更…...
滤波器:模拟滤波器和数字滤波器的区别
滤波器是一种用于从信号中去除不需要的频率成分,只保留所需频率成分的电子设备或算法。根据实现方式的不同,滤波器主要分为模拟滤波器和数字滤波器两大类。以下是对这两种滤波器的详细比较: 一、实现方式与原理 模拟滤波器 实现方式…...
AudioRecord 录制pcm转wav
pcm转wav PCM 格式校验pcm 添加 wav 头信息WAVWAV 格式检验小端序? 参考地址 PCM 格式校验 /*** 专业PCM文件验证(支持动态参数与多格式)* param silenceThreshold 静音检测阈值(0.0~1.0),默认90%零值为静…...
625SJBH网上便利店的设计与实现
1前 言 目前,网络正以一种前所未有的冲击力在影响着人类的活动,包括人类的生产和日常生活。网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精…...
如何开发英语在线训练小程序:从0到1的详细步骤
在数字化学习的浪潮下,英语在线训练小程序凭借便捷、高效的学习模式,成为众多英语学习者的得力助手。如果你也想开发一款独具特色的英语在线训练小程序,不妨参考以下步骤,开启你的小程序开发之旅。 一、前期规划 (…...
java设计模式-装饰者模式
装饰者模式(Decorator) 定义 1、动态的将新功能附加到对象上,在对象功能扩展方面,他比继承更有弹性,也体现了开闭原则(OCP) 2、这里提到的动态的将新功能附加到对象和OCP原则,在后面应用实际上会以代码的形式体现。 //饮料 // 饮…...
我提了一个 Androidx IssueTracker
问题 在运行 gradle plugin 插件的 transform R8 阶段出现了报错 Caused by: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke “String.length()” because “” is null 报错日志 FAILURE: Build failed with an exception.* What went w…...
spring mvc @ResponseBody 注解转换为 JSON 的原理与实现详解
ResponseBody 注解转换为 JSON 的原理与实现详解 1. 核心作用 ResponseBody 是 Spring MVC 的一个注解,用于将方法返回的对象直接序列化为 HTTP 响应体(如 JSON 或 XML),而不是通过视图解析器渲染为视图(如 HTML&…...
RK3588芯片NPU的使用:Windows11 Docker中运行MobileNet模型以及部署到开发板进行目标检测
本文的目标 本文将在RKNN Docker环境(见本系列的第二篇文章)中练习MobileNet图像分类示例,并通过adb工具部署到RK3588开发板。 MobileNet简介请参考上一篇文章。 开发环境说明 主机系统:Windows11目标设备:搭载RK35…...
智能仓储数字孪生Demo(Unity实现)
一、项目背景与行业痛点 医药流通行业仓储管理面临三大核心挑战: 合规性风险:GSP(药品经营质量管理规范)对温湿度、药品批次追溯的严苛要求,传统人工记录易出错效率瓶颈:库区布局复杂,人工巡检…...
Qt上hook钩子的使用,监测键盘和鼠标。
演示平台:windows。 编译环境:Qt5.12.2 MinGW 64-bit Windows API: ///加载钩子 /*** SetWindowsHookEx 函数解释* int idHook 所监控的挂钩类型* HOOKPROC lpfn 监控信息的处理函数* HINSTANCEhMod 监控信息的动态链接位置 nullptr则与本线…...
Android12源码编译之预置Android Studio项目Android.mk文件编写
1、在AndroidManifest.xml文件中添加package"com.sprd.silentinstalldemo"属性,因为新版本的Android Studio默认生成的AndroidManifest.xml是没有这个属性值的 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:an…...
微服务注册中心选择指南:Eureka vs Consul vs Zookeeper vs Nacos
文章目录 引言微服务注册中心概述什么是服务注册与发现选择注册中心的标准 常见的微服务注册中心1. Eureka1.1 理论基础1.2 特点1.3 示例代码 2. Consul2.1 理论基础2.2 特点2.3 示例代码 3. Zookeeper3.1 理论基础3.2 特点3.3 示例代码 4. Nacos4.1 理论基础4.2 特点4.3 示例代…...
pg_waldump无法定位WAL文件问题
目录 排查pg_waldump无法定位WAL文件问题的步骤1. 确认WAL文件路径配置2. 检查WAL文件名格式3. 验证文件存在性4. 检查文件权限5. 时间线历史文件检查6. 使用pg_controldata验证状态7. 尝试指定完整路径 典型错误场景及解决方案 排查pg_waldump无法定位WAL文件问题的步骤 1. 确…...
Mysql安装
Mysql安装 1. windows安装1.1 官网下载1.2 安装 1. windows安装 1.1 官网下载 官网下载 选择对于版本,然后跳转到下载页 1.2 安装...
Windows版-RabbitMQ自动化部署
一键完成Erlang环境变量配置(ERLANG_HOME系统变量) 一键完成RabbitMQ环境变量配置(RabbitMQ系统变量) 实现快速安装部署RabbitMQ PS: 需提前下载安装: - otp_win64_25.0.exe (Erlang) - rabbit…...
spring mvc的拦截器HandlerInterceptor 接口详解
HandlerInterceptor 接口详解 1. 接口方法说明 方法作用执行时机返回值/注意事项preHandle请求处理前拦截在控制器方法执行前调用返回 false 中断后续流程;返回 true 继续执行postHandle控制器方法执行后拦截在控制器方法返回结果后,视图渲染前调用无返…...
Linux平台内存泄漏检测工具介绍: ASan vs Valgrind
目录: 前言Valgrind 介绍在Ubuntu上安装Valgrind 核心主要功能Valgrind 基本用法1. --leak-checkfull2. --show-leak-kindsall3. --track-originsyes4. 其他常用选项--tool<name>--log-file<filename>-v / --verbose--error-exitcode<n> 示例命令…...