当前位置: 首页 > news >正文

20250421在荣品的PRO-RK3566开发板的Android13下使用io命令控制GPIO

20250421在荣品的PRO-RK3566开发板的Android13下使用io命令控制GPIO
2025/4/21 10:44

【本文只打开了io命令。通过io控制GPIO放到下一篇了】
缘起:需要在荣品的PRO-RK3566开发板的Android13的u-boot中来控制GPIO3A1【配置以太网RTL8211F-CG】。
直接使用GPIO库函数 和 寄存器都异常了。
那就通过Android13系统中的io命令先确定寄存器再来搞u-boot了。


本周的问题:
1、uboot下配置GPIO3A1。地面站RK3566+Andorid13。要结案了。
确认以太网初始化的时候必须上电,如果当时不上电就像【MIPI CSI】摄像头一样,不会挂载了。
以后上电没用。
我最近的测试方向。通过io命令读写寄存器。
2、吊舱RK3566+Buildroot。RGA的4GB+内存问题?
3、RK3576前期预研。


1、
Z:\Android13.0\kernel-5.10\drivers\char\mem.c
【感觉不加这里,也已经编译mem.c生成mem.o了】
Z:\Android13.0\kernel-5.10\drivers\char\Makefile

obj-$(CONFIG_XILLYBUS)        += xillybus/
obj-$(CONFIG_POWERNV_OP_PANEL)    += powernv-op-panel.o
obj-$(CONFIG_ADI)        += adi.o
【在最后面加】
obj-$(CONFIG_DEVMEM)           += mem.o


2、
Z:\Android13.0\kernel-5.10\drivers\char\Kconfig

config DEVKMEM
    bool "/dev/kmem virtual device support"
    # On arm64, VMALLOC_START < PAGE_OFFSET, which confuses kmem read/write
    depends on !ARM64
    help
      Say Y here if you want to support the /dev/kmem device. The
      /dev/kmem device is rarely used, but can be used for certain
      kind of kernel debugging operations.
      When in doubt, say "N".


3、
Z:\Android13.0\kernel-5.10\drivers\char\mem.c

static const struct memdev {
    const char *name;
    umode_t mode;
    const struct file_operations *fops;
    fmode_t fmode;
} devlist[] = {
#ifdef CONFIG_DEVMEM
     [DEVMEM_MINOR] = { "mem", 0, &mem_fops, FMODE_UNSIGNED_OFFSET },
#endif

#ifdef CONFIG_DEVKMEM
     [2] = { "kmem", 0, &kmem_fops, FMODE_UNSIGNED_OFFSET },
#endif
     [3] = { "null", 0666, &null_fops, 0 },
#ifdef CONFIG_DEVPORT
     [4] = { "port", 0, &port_fops, 0 },
#endif
     [5] = { "zero", 0666, &zero_fops, 0 },
     [7] = { "full", 0666, &full_fops, 0 },
     [8] = { "random", 0666, &random_fops, FMODE_NOWAIT },
     [9] = { "urandom", 0666, &urandom_fops, FMODE_NOWAIT },
#ifdef CONFIG_PRINTK
    [11] = { "kmsg", 0644, &kmsg_fops, 0 },
#endif
};

修改成为:
static const struct memdev {
    const char *name;
    umode_t mode;
    const struct file_operations *fops;
    fmode_t fmode;
} devlist[] = {
//#ifdef CONFIG_DEVMEM
     [DEVMEM_MINOR] = { "mem", 0, &mem_fops, FMODE_UNSIGNED_OFFSET },
//#endif

#ifdef CONFIG_DEVKMEM
     [2] = { "kmem", 0, &kmem_fops, FMODE_UNSIGNED_OFFSET },
#endif
     [3] = { "null", 0666, &null_fops, 0 },
#ifdef CONFIG_DEVPORT
     [4] = { "port", 0, &port_fops, 0 },
#endif
     [5] = { "zero", 0666, &zero_fops, 0 },
     [7] = { "full", 0666, &full_fops, 0 },
     [8] = { "random", 0666, &random_fops, FMODE_NOWAIT },
     [9] = { "urandom", 0666, &urandom_fops, FMODE_NOWAIT },
#ifdef CONFIG_PRINTK
    [11] = { "kmsg", 0644, &kmsg_fops, 0 },
#endif
};


4、修改配置文件:
Z:\Android13.0\kernel-5.10\.config
CONFIG_SERIAL_MCTRL_GPIO=y
# CONFIG_SERIAL_NONSTANDARD is not set
# CONFIG_N_GSM is not set
# CONFIG_NOZOMI is not set
# CONFIG_NULL_TTY is not set
# CONFIG_TRACE_SINK is not set
# CONFIG_HVC_DCC is not set
# CONFIG_SERIAL_DEV_BUS is not set
# CONFIG_TTY_PRINTK is not set
# CONFIG_VIRTIO_CONSOLE is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_HW_RANDOM_BA431 is not set
CONFIG_HW_RANDOM_CAVIUM=y
CONFIG_HW_RANDOM_OPTEE=y
# CONFIG_HW_RANDOM_CCTRNG is not set
# CONFIG_HW_RANDOM_XIPHERA is not set
CONFIG_HW_RANDOM_ROCKCHIP=y
# CONFIG_APPLICOM is not set
# CONFIG_DEVMEM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_DEVPORT is not set
# CONFIG_TCG_TPM is not set
# CONFIG_XILLYBUS is not set
CONFIG_RANDOM_TRUST_BOOTLOADER=y
# end of Character devices


Z:\Android13.0\kernel-5.10\arch\arm64\configs\rockchip_defconfig

CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_USB_SERIAL_CP210X=y
# CONFIG_SERIAL_8250_PCI is not set
CONFIG_SERIAL_8250_NR_UARTS=10
CONFIG_SERIAL_8250_RUNTIME_UARTS=10
CONFIG_SERIAL_8250_DW=y
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_ROCKCHIP=y
CONFIG_DEVMEM=y
# CONFIG_DEVPORT is not set
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_GPIO=y
CONFIG_I2C_RK3X=y
CONFIG_SPI=y
CONFIG_SPI_ROCKCHIP=y
CONFIG_SPI_SPIDEV=y


5、效果:
console:/ $ 
console:/ $ su
console:/ # 
console:/ # 
console:/ # cd /dev
console:/dev # 
console:/dev # ll mem
crw------- 1 media media 1,   1 2025-04-21 11:43 mem

console:/dev # 


参考资料:
https://blog.csdn.net/weiqifa0/article/details/104243443
GPIO 使用 — Rockchip


RK3568
https://blog.csdn.net/sty01z/article/details/134421350
rk3566-安卓11-千兆网卡 rtl8211f 移植

https://blog.csdn.net/weixin_43564241/article/details/125668278
Linux内核(十)WIFI BT电路解析 对应设备树配置解析

https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/driver_lcd.html
4. LCD使用
https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/driver_lcd.html#config-pei-zhi
5. LCD使用  ROC-RK3566-PC

https://blog.csdn.net/sunqinglin4826/article/details/104848529
RK3399 Linux-SDK mipi屏幕驱动及调试


完整的LOG:
console:/ # 
console:/ # 
console:/ # io
Raw memory i/o utility - $Revision: 1.5 $

io -v -1|2|4 -r|w [-l <len>] [-f <file>] <addr> [<value>]

    -v         Verbose, asks for confirmation
    -1|2|4     Sets memory access size in bytes (default byte)
    -l <len>   Length in bytes of area to access (defaults to
               one access, or whole file length)
    -r|w       Read from or Write to memory (default read)
    -f <file>  File to write on memory read, or
               to read on memory write
    <addr>     The memory address to access
    <val>      The value to write (implies -w)

Examples:
    io 0x1000                  Reads one byte from 0x1000
    io 0x1000 0x12             Writes 0x12 to location 0x1000
    io -2 -l 8 0x1000          Reads 8 words from 0x1000
    io -r -f dmp -l 100 200    Reads 100 bytes from addr 200 to file
    io -w -f img 0x10000       Writes the whole of file to memory

Note access size (-1|2|4) does not apply to file based accesses.

1|console:/ # 
1|console:/ # 
1|console:/ # io 0x1000
00001000:  fd
console:/ # 
console:/ # io 0x1000 0x12
console:/ # 
console:/ # io 0x1000                                                          
00001000:  12
console:/ # 
console:/ # io -2 -l 8 0x1000
00001000:  7b12 a9bf 00e3 9400
console:/ # 

console:/ # io -r -f dmp -l 100 200
Failed to open destination file 'dmp': Read-only file system
1|console:/ # 

【根目录不可写】

【在adb总配置】

adb root

adb remount


1|console:/ # io -r -f dmp -l 100 200                                          
Failed to open destination file 'dmp': Read-only file system
1|console:/ # cat dmp
cat: dmp: No such file or directory
1|console:/ # touch dmp
touch: 'dmp': Read-only file system
1|console:/ # 
1|console:/ # ll
total 76
drwxr-xr-x   2 root   root       4096 2025-04-19 18:22 acct
drwxr-xr-x  27 root   root        560 2025-04-21 10:41 apex
lrw-r--r--   1 root   root         11 2025-04-19 18:22 bin -> /system/bin
lrw-r--r--   1 root   root         50 2025-04-19 18:22 bugreports -> /data/user_de/0/com.android.shell/files/bugreports
drwxrwx---   6 system cache      4096 2025-04-19 18:31 cache
drwxr-xr-x   3 root   root          0 1970-01-01 08:00 config
lrw-r--r--   1 root   root         17 2025-04-19 18:22 d -> /sys/kernel/debug
drwxrwx--x  50 system system     4096 2025-04-21 10:42 data
drwx------   8 root   system      160 2025-04-21 10:41 data_mirror
drwxr-xr-x   2 root   root       4096 2025-04-19 18:22 debug_ramdisk
drwxr-xr-x  26 root   root       3160 2025-04-21 10:42 dev
lrw-r--r--   1 root   root         11 2025-04-19 18:22 etc -> /system/etc
lrwxr-x---   1 root   shell        16 2025-04-19 18:22 init -> /system/bin/init
-rwxr-x---   1 root   shell       463 2025-04-19 18:22 init.environ.rc
drwxr-xr-x  11 root   root        260 2025-04-21 10:41 linkerconfig
drwx------   2 root   root      16384 2025-04-19 18:22 lost+found
drwxr-xr-x  13 root   root       4096 2025-04-19 18:31 metadata
drwxr-xr-x  17 root   system      360 2025-04-21 10:53 mnt
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 odm
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 odm_dlkm
drwxr-xr-x   2 root   root       4096 2025-04-19 18:22 oem
drwxr-xr-x   2 root   root       4096 2025-04-19 18:22 postinstall
dr-xr-xr-x 344 root   root          0 2025-04-21 10:41 proc
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 product
lrw-r--r--   1 root   root         21 2025-04-19 18:22 sdcard -> /storage/self/primary
drwxr-xr-x   2 root   root       4096 2025-04-19 18:22 second_stage_resources
drwx--x---   4 shell  everybody   100 2025-04-21 10:42 storage
dr-xr-xr-x  15 root   root          0 2025-04-21 10:41 sys
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 system
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 system_dlkm
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 system_ext
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 vendor
drwxr-xr-x   1 root   root       3488 2025-04-21 10:53 vendor_dlkm
console:/ # cd data
console:/data # 
console:/data # 
console:/data # io -r -f dmp -l 100 200                                        
console:/data # cat dmp
    ??_?yAB8?0?? ???????????_???6n@????console:/data # 
console:/data # 
console:/data # ll

total 224
drwx------   2 root     root      4096 2025-04-19 18:31 adb
drwxrwxr-x   2 system   system    4096 2025-04-19 18:31 anr


console:/data # ll dmp
-rw------- 1 root root 100 2025-04-21 10:53 dmp
console:/data # 

console:/data # io -w -f img 0x10000
Failed to open source file 'img': No such file or directory
1|console:/data # 
1|console:/data # io -w -f dmp 0x10000                                         
console:/data # ll

百度:RK3566 android io命令
BING:rk356x 在uboot下设置gpio引脚默认电平
RK3566 uboot GPIO 寄存器控制
rk3566 devmem
RK3566 uboot GPIO 寄存器控制

https://redmine.rpdzkj.cn/issues/234
gpio上电初始化-----uboot阶段gpio配置


https://blog.csdn.net/u011774634/article/details/136898819?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-136898819-blog-129007286.235^v43^pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.1&utm_relevant_index=3
RK3399 Android7.1在uboot中设置GPIO的上下拉模式


https://www.cnblogs.com/xu-long/p/16805994.html
怎么在uboot下使用通用GPIO接口
一:在uboot下的defconfig 打开如下配置

CONFIG_DM=y
CONFIG_DM_GPIO=y
CONFIG_DWAPB_GPIO=y
CONFIG_CMD_GPIO=y

https://blog.csdn.net/weixin_45639314/article/details/138217098
RK平台 支持io命令


https://blog.csdn.net/daocaokafei/article/details/128336398?spm=1001.2101.3001.6650.17&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-128336398-blog-138217098.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-17-128336398-blog-138217098.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=20
rk3568 | rk平台GPIO冲突检测小技巧

https://blog.csdn.net/jianfeng_520/article/details/144867968
瑞芯微(RK)IO操作寄存器

IO命令使用环境
IO命令需要依赖DEVMEM,而DEVMEM默认是关闭的,所以导致IO默认无法使用,需要在config中将DEVMEM打开,如下:

kernel/configs/rockchip/android-11.config
CONFIG_DEVMEM=y

https://blog.csdn.net/weiqifa0/article/details/104243443
GPIO 使用 — Rockchip

https://blog.csdn.net/u011774634/article/details/124988946?spm=1001.2101.3001.6650.18&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-124988946-blog-129007286.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-18-124988946-blog-129007286.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=24
RK3399 Android7.1在uboot中设置GPIO的电平无效
uboot-set = <(RK3399_BT656_VDD_1V8 | RK3399_AUDIO_VDD_1V8 | RK3399_GPIO1833_VDD_3V3)>;


https://blog.csdn.net/dreamliweiming/article/details/134703414?spm=1001.2101.3001.6650.11&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-11-134703414-blog-131769320.235%5Ev43%5Epc_blog_bottom_relevance_base5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-11-134703414-blog-131769320.235%5Ev43%5Epc_blog_bottom_relevance_base5&utm_relevant_index=15
RK3588 在uboot 和kernel下对GPIO的配置

static void func_gpio_init(void)
{
    gpio_request(FUNC_GPIO_BANK2|FUNC_PA3,"FUNC_GPIO2_PA3");
    gpio_direction_output(FUNC_GPIO_BANK2|FUNC_PA3,0);
 
    gpio_request(FUNC_GPIO_BANK3|FUNC_PA3,"FUNC_GPIO3_PA3");
    gpio_direction_output(FUNC_GPIO_BANK3|FUNC_PA3,0);
}


https://blog.csdn.net/weixin_43772810/article/details/129394668?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-129394668-blog-131769320.235^v43^pc_blog_bottom_relevance_base5&spm=1001.2101.3001.4242.3&utm_relevant_index=6
itop-3568开发板驱动学习笔记(5) 点灯实验(两种方法)

文章目录
ioremap 物理地址映射
调用 API
ioremap 物理地址映射
通过开发板原理图得知 LED 控制引脚为 GPIO0_B7,IO 高电平时,三极管导通,LED 点亮,IO 低电平时,三极管截止,LED 熄灭,


https://blog.csdn.net/kyling007/article/details/124862669
rk3288 _7.1_在U-boot上电时设置GPIO的电平值
夏日柠檬茶丶

        一般在U-boot上就设置电平值,适用于电源的复位,MIPI、LVDS、GVI之类的屏幕控制上电时序,当然,也适用任何模块以及任何引脚。
        注意:如果该区域的引脚存在电源域的保护机制,需要先解除保护。

        通常情况下, 在 u-boot/common/board_f.c 文件上,都能设置GPIO引脚的电平值。今天讲一下不一样的设置方式。在rk3288_7.1/u-boot/board/rockchip/rk32xx/rk32xx.c的文件中,这个文件是板子初始化的文件,其中 board_late_init 函数是进行一些硬件初始化。代码如下

//自己写的函数
void set_down_up_GPIO(void)
{
       printf("set_down_up GPIO5C2 GPIO7A3 \n");
       gpio_direction_output(GPIO_BANK5|GPIO_C2, 0);  // 设置GPIO5_C2 引脚的电平值为 0
       gpio_direction_output(GPIO_BANK7|GPIO_A3, 0);  // 设置GPIO7_A3 引脚的电平值为 0
       msleep(500);
       msleep(500);
       gpio_direction_output(GPIO_BANK5|GPIO_C2, 1);  // 设置GPIO5_C2 引脚的电平值为 1
       gpio_direction_output(GPIO_BANK7|GPIO_A3, 1);  // 设置GPIO7_A3 引脚的电平值为 1
}
 

https://blog.csdn.net/bbyjijun/article/details/129432452
RK3568平台入门到精通系列讲解之UBOOT开发篇(GPIO操作)


https://blog.csdn.net/sty01z/article/details/134421350
rk3566-安卓11-千兆网卡 rtl8211f 移植


https://blog.csdn.net/qinglongzhan/article/details/129836675
瑞芯微RK3568开发:GPIO实践篇

二、几种操作方式

1、io tool

io -4 -w 0xFDD6000C 0xffff4000
io -4 -w 0xFDD60004 0xffff4081
io -4 -r 0xFDD6000C
io也可以单字节操作,参考io -h

2、用户态类调用

内核注册了gpio接口操作命令行,

查看以注册gpio端口:cat /sys/kernel/debug/gpio;

申请和释放:echo n > /sys/class/gpio/export,echo n > /sys/class/gpio/unexport;

3、uboot或kernel编程

裸机直接对寄存器物理地址进行读写操作,如writel和readl;

上系统接口的话,有标准的gpio接口,dts和of_xxx那一套;

https://ask.csdn.net/questions/7991409
rk3568 gpio寄存器手册问题
¥15
arm
单片机
问题描述:
1、看下面两个链接,讲的都是uboot下writel对特定寄存器设置输入输出或者高低电平
https://blog.csdn.net/qinglongzhan/article/details/129836675
https://blog.csdn.net/qq_45147279/article/details/129007286
2、问题
不理解下面两句是怎样得到的,请求详细解释(分别对应上面2篇文章)

【1】writel(0xffff4080, 0xFDD6000C);    //设置输出
writel(0xffff4081, 0xFDD60004);    //设置高电平

   【2】writel(0x00400040,0xfe77000C);//set output mode
     writel(0x00400040,0xfe770004);//
3、举一反三
比如要设置GPIO0_C6 GPIO2_B3 GPIO2_B4为输出高电平,应该怎样写?


 

相关文章:

20250421在荣品的PRO-RK3566开发板的Android13下使用io命令控制GPIO

20250421在荣品的PRO-RK3566开发板的Android13下使用io命令控制GPIO 2025/4/21 10:44 【本文只打开了io命令。通过io控制GPIO放到下一篇了】 缘起&#xff1a;需要在荣品的PRO-RK3566开发板的Android13的u-boot中来控制GPIO3A1【配置以太网RTL8211F-CG】。 直接使用GPIO库函数 …...

20250421在荣品的PRO-RK3566开发板的Android13下频繁重启RKNPU fde40000.npu: Adding to iommu gr

20250421在荣品的PRO-RK3566开发板的Android13下频繁重启RKNPU fde40000.npu: Adding to iommu gr 2025/4/21 14:50 缘起&#xff1a;电池没电了&#xff0c;导致荣品的PRO-RK3566的核心板频繁重启。 内核时间4s就重启。100%复现。 PRO-RK3566 Android13启动到这里 复位&#…...

在 8MHz 的时钟电路中挂接电阻,电容

匹配电阻&#xff1a;在晶体振荡电路中&#xff0c;用于匹配晶体和振荡电路的阻抗&#xff0c;确保振荡的稳定性&#xff0c;阻值通常在几十千欧到几百千欧&#xff0c;例如 1MΩ、33KΩ、47KΩ 等。 在一些电子电路中&#xff0c;尤其是涉及到时钟信号的产生和传输时&#xf…...

卸载工具:IObit Uninstaller Pro v14.3.0 中文绿色专业便携版

IObit Uninstaller 是一种功能强大的卸载工具&#xff0c;可帮助您快速方便地从计算机中移除不需要的程序和文件夹。它不仅仅可以从计算机中卸载应用程序&#xff0c;还可以移除它们的卸载残留。可以检测和分类所有已安装的程序&#xff0c;并可以批量卸载&#xff0c;只需一键…...

【目标检测】目标检测综述 目标检测技巧

I. 目标检测中标注的关键作用 A. 目标检测数据标注的定义 目标检测是计算机视觉领域的一项基础且核心的任务&#xff0c;其目标是在图像或视频中准确识别并定位出预定义类别的目标实例 1。数据标注&#xff0c;在目标检测的语境下&#xff0c;指的是为原始视觉数据&#xff0…...

c++基础·move作用,原理

目录 一、代码结构概览 二、逐层解析实现逻辑 1. 模板参数推导 2. 返回类型设计 3. 类型转换逻辑 三、关键特性与设计思想 1. 移动语义的本质 2. 为何必须用 remove_reference 3. 万能引用的兼容性 四、边界场景与注意事项 1. 对 const 对象的处理 2. 返回值优化&a…...

考研系列-计算机网络-第四章、网络层

一、网络层的概述和功能 1.功能概述 2.SDN的基本概念...

服务器在国外国内用户访问慢会影响谷歌排名吗?

谷歌明确将“页面加载速度”和“用户体验”作为排名核心指标&#xff0c;但当服务器物理距离过远时&#xff0c;国内用户动辄3秒以上的加载延迟&#xff0c;可能导致跳出率飙升、爬虫抓取困难等连锁反应。 但盲目将服务器迁回国内&#xff0c;又会面临备案成本、运维门槛等新难…...

iFable,AI角色扮演互动平台,自动生成沉浸式故事游戏

iFable是什么 iFable 是一个以动漫角色为主题的互动角色扮演游戏平台&#xff0c;旨在为用户提供沉浸式的故事冒险体验。平台允许玩家通过简单的创意输入&#xff0c;利用AI技术生成独特的互动故事与游戏体验。iFable 的设计宗旨在于帮助玩家与虚拟角色建立情感连接&#xff0…...

Nginx反向代理用自定义Header参数

【啰嗦两句】 也不知道为啥&#xff0c;我仅仅想在Nginx的反向代理中使用自己定义的“x-api-key”做Header参数&#xff0c;却发现会被忽略&#xff0c;网上搜的资料都是说用“proxy_set_header”&#xff0c;却只愿意介绍最基本的几个参数&#xff0c;你懂的&#xff0c;那些资…...

Spark SQL概述(专业解释+生活化比喻)

专业解释 一、什么是Spark SQL&#xff1f; 一句话定义&#xff1a; Spark SQL是Apache Spark中专门处理结构化数据的模块&#xff0c;可以让你像操作数据库表一样处理数据&#xff0c;支持用SQL查询或编程API&#xff08;DataFrame/DataSet&#xff09;分析数据。 通俗理解…...

LX3-初识是单片机

初识单片机 一 什么是单片机 单片机:单片微型计算机单片机的组成:CPU,RAM(内存),flash(硬盘),总线,时钟,外设…… 二 Coretex-M系列介绍 了解ARM公司与ST公司ARM内核系列: A 高性能应用,如手机,电脑…R 实时性强,如汽车电子,军工…M 超低功耗,如消费电子,家电,医疗器械 三…...

第二章 Logback的架构(一)

Logback的架构 Logback作为一个通用框架&#xff0c;可以应对不同场景的日志记录。目前&#xff0c;Logback 被划分为三个模块&#xff1a;logback-core、logback-classic 和 logback-access。 Logback的core模块为其他两个模块提供基础支持。classic模块扩展了core模块&…...

开发指南:构建结合数字孪生、大语言模型与知识图谱的智能设备日志分析及生产异常预警系统

1. 引言&#xff1a;数字孪生、大语言模型与知识图谱在智能制造中的融合 智能制造和工业4.0的浪潮正在重塑全球制造业格局&#xff0c;其核心在于利用先进的数字技术实现生产过程的实时决策、效率提升、灵活性增强和敏捷性改进。在这一转型过程中&#xff0c;数字孪生&#xf…...

【TeamFlow】4.1 Git使用指南

以下是 Git 在 Windows 系统上的配置和使用指南&#xff0c;包含详细步骤和注意事项&#xff1a; 安装 Git for Windows 下载与安装 前往 Git 官网 下载 Windows 版安装包 双击安装&#xff0c;关键选项建议&#xff1a; 选择 Use Git from Git Bash only&#xff08;推荐&…...

HADOOP 3.4.1安装和搭建(尚硅谷版~)

目录 1.配置模版虚拟机 2.克隆虚拟机 3.在hadoop102安装JDK 4.完全分布式运行模式 1.配置模版虚拟机 1.安装模板虚拟机&#xff0c;IP地址192.168.10.100、主机名称hadoop100、内存2G、硬盘20G&#xff08;有需求的可以配置4G内存&#xff0c;50G硬盘&#xff09; 2.hado…...

通过Docker Desktop配置OpenGauss数据库的方法(详细版+图文结合)

文章目录 通过Docker Desktop配置OpenGauss数据库的方法**一、下载Docker Desktop&#xff0c;并完成安装**docker官网&#xff1a;https://www.docker.com/ **二、下载OpenGauss压缩包**安装包下载链接&#xff1a;https://opengauss.obs.cn-south-1.myhuaweicloud.com/7.0.0-…...

文件有几十个T,需要做rag,用ragFlow能否快速落地呢?

一、RAGFlow的优势 1、RAGFlow处理大规模数据性能&#xff1a; &#xff08;1&#xff09;、RAGFlow支持分布式索引构建&#xff0c;采用分片技术&#xff0c;能够处理TB级数据。 &#xff08;2&#xff09;、它结合向量搜索和关键词搜索&#xff0c;提高检索效率。 &#xf…...

SystemVerilog语法之内建数据类型

简介&#xff1a;SystemVerilog引进了一些新的数据类型&#xff0c;具有以下的优点&#xff1a;&#xff08;1&#xff09;双状态数据类型&#xff0c;更好的性能&#xff0c;更低的内存消耗&#xff1b;&#xff08;2&#xff09;队列、动态和关联数组&#xff0c;减少内存消耗…...

TensorFlow和PyTorch学习原理解析

这里写目录标题 TensorFlow和PyTorch学习&原理解析TensorFlow介绍原理部署适用场景 PyTorch介绍原理部署适用场景 Keras模型格式SavedModelONNX格式 TensorFlow和PyTorch学习&原理解析 TensorFlow 介绍 由 Google Brain 团队开发并于 2015 年开源。由于 Google 的强…...

悬空引用和之道、之禅-《分析模式》漫谈57

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第5章“对象引用”原文&#xff1a; Unless you can catch all such references, there is the risk of a dangling reference, which often has painful con…...

江湖密码术:Rust中的 bcrypt 加密秘籍

前言 江湖险恶,黑客如雨,昔日密码“123456”早被各路大侠怒斥为“纸糊轻功”。若还执迷不悟,用明文密码闯荡江湖,无异于身披藏宝图在集市上狂奔,目标大到闪瞎黑客双眼。 为护你安然度过每一场数据风波,特献上一门绝学《Rust加密神功》。核心招式正是传说中的 bcrypt 密…...

NLP高频面试题(四十八)大语言模型中的思维链(CoT)技术详解

引言 大语言模型(LLM)在近年的飞速发展,让机器在各种任务上表现出令人瞩目的能力。然而,与人类不同,传统的语言模型往往倾向于直接给出答案,而缺乏可解释的中间推理过程。这在复杂推理任务中成为瓶颈:模型可能由于一步推理不当而得出错误结论,却没有过程可供检查。为了…...

对接点餐接口需要有哪些准备?

以下是一般点餐接口对接的相关信息&#xff0c;包括常见的接口功能、对接步骤及注意事项等&#xff1a; 常见接口功能 餐厅信息查询&#xff1a;获取合作餐厅的基本信息&#xff0c;如餐厅名称、地址、营业时间、联系电话、菜单等。菜品查询&#xff1a;查询具体餐厅的菜品详情…...

LintCode第192题-通配符匹配

描述 给定一个字符串 s 和一个字符模式 p &#xff0c;实现一个支持 ? 和 * 的通配符匹配。匹配规则如下&#xff1a; ? 可以匹配任何单个字符。* 可以匹配任意字符串&#xff08;包括空字符串&#xff09;。 两个串完全匹配才算匹配成功。 样例 样例1 输入: "aa&q…...

uv运行一个MCP Server的完整流程

uv是一个高性能的Python包管理器&#xff0c;专注于性能提升。与pip相比&#xff0c;uv利用全局模块缓存&#xff0c;减少磁盘空间使用&#xff0c;并支持Linux、Windows和macOS系统。安装uv可以通过多种方式实现&#xff0c;例如使用Homebrew、Pacman、pip等。 step 1 安装uv:…...

ts中的类型

在 TypeScript 中&#xff0c;类型是静态类型系统的核心&#xff0c;用于在编译阶段检查代码的正确性。TypeScript 提供了丰富的类型系统&#xff0c;包括基本的原始类型、复合类型、以及用户自定义的类型。以下是对 TypeScript 中各种类型的详细分类和说明&#xff1a; 1. 原…...

把dll模块注入到游戏进程的方法_基于文件修改的注入方式

1、概述 本文主要是介绍两种基于文件修改的注入方式,一种是“DLL劫持”,另一种是“修改导入表”。这两种注入方式都是利用操作系统加载PE时的特点来实现的,我们在实现这两种注入方式时只需专注于注入dll的实现,而不用花费额外的精力去关注注入器的实现。要想深入了解这两种…...

判断点是否在多边形内

代码段解析: const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); 第一部分:(yi > y) !== (yj > y) 作用:检查点 (x,y) 的垂直位置是否跨越多边形的当前边。 yi > y 和 yj > y 分别检查边的两个端…...

【形式化验证基础】活跃属性Liveness Property和安全性质(Safety Property)介绍

文章目录 一、Liveness Property1、概念介绍2、形式化定义二、Safety Property1. 定义回顾2. 核心概念解析3. 为什么强调“有限前缀”4. 示例说明4.1 示例1:交通信号灯系统4.2 示例2:银行账户管理系统5. 实际应用的意义三. 总结一、Liveness Property 1、概念介绍 在系统的…...

Linux——信号(2)信号保存与捕捉

一、信号的保存 上次我们说到&#xff0c;捕捉一个信号后有三种处理方式&#xff1a;默认、忽略、自定义&#xff0c;其中自定义我们用signal系统调用完成&#xff0c;至于忽略信号&#xff0c;也需要signal实现&#xff0c;比如我现在想忽略2号信号&#xff0c;则&#xff1a…...

Vue的模板编译过程

&#x1f468; 作者简介&#xff1a;大家好&#xff0c;我是Taro&#xff0c;全栈领域创作者 ✒️ 个人主页&#xff1a;唐璜Taro &#x1f680; 支持我&#xff1a;点赞&#x1f44d;&#x1f4dd; 评论 ⭐️收藏 文章目录 前言一、编程范式的分类1.编程范式分为声明式和命令…...

空间应用中心AI4S空间科学实验研究成果发表于《中国科学院院刊》

编者寄语&#xff1a; 和鲸基于旗下数据科学协同平台ModelWhale赋能&#xff0c;助力了中国科学院空间应用工程与技术中心系统开展了基于空间科学实验领域的AI4S创新研究。中国科学院空间应用工程与技术中心在空间科学实验领域的研究覆盖了多模态空间科学实验数据模式挖掘、领…...

【Python网络爬虫开发】从基础到实战的完整指南

目录 前言&#xff1a;技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;10个案例&#xff09;案例1&#xff1a;基础静态页面抓取案例2&#xff1a;动…...

乐家桌面纯净版刷机ROM下载 乐家桌面纯净版2025官方最新下载

还在苦苦寻找一款好用的电视桌面&#xff0c;为智能电视焕新体验&#xff1f;别在乐家桌面纯净版刷机 ROM 下载和官方最新版下载上纠结啦&#xff0c;试试乐看家桌面&#xff0c;给你带来意想不到的惊喜&#xff01; 乐家桌面纯净版或许曾吸引过你&#xff0c;但乐看家桌面在众…...

深度学习-全连接神经网络

四、参数初始化 神经网络的参数初始化是训练深度学习模型的关键步骤之一。初始化参数&#xff08;通常是权重和偏置&#xff09;会对模型的训练速度、收敛性以及最终的性能产生重要影响。下面是关于神经网络参数初始化的一些常见方法及其相关知识点。 官方文档参考&#xff1…...

n2n 搭建虚拟局域网,实现内网穿透

一、ubuntu linux系统上通过源码安装 1、下载源码 git clone https://github.com/ntop/n2n 2、 进入源码目录n2n&#xff0c;依次执行下列命令 ./autogen.sh # 如果提示命令不存在&#xff0c;需要运行命令&#xff1a;apt-get update && apt-get install autoconf…...

SystemVerilog语法之定宽数组

1.2定宽数组 1.2.1定宽数组的声明和初始化 Verilog要求在声明中必须给出数组的上下界。因为几乎所有数组都使用0作为索引下界&#xff0c;所以SystemVerilog允许只给出数组宽度的便捷声明方式。SystemVerilog的$clog2()函数可以计算以2为底的对数向上舍入值。你可以通过在变量…...

SQL 使用 UPDATE FROM 语法进行更新

UPDATE FROM 是一种常见的 SQL 语法模式&#xff0c;允许你基于其他表的数据来更新目标表。这种语法在不同数据库系统中有所不同&#xff0c;下面我将介绍几种主要数据库的实现方式。 PostgreSQL/SQL Server 语法 UPDATE target_table SET target_column source_table.source…...

如何在LangChain中构建并使用自定义向量数据库

1. 自定义向量数据库对接 向量数据库的发展非常迅速&#xff0c;几乎每隔几天就会出现新的向量数据库产品。LangChain 不可能集成所有的向量数据库&#xff0c;此外&#xff0c;一些封装好的数据库可能存在 bug 或者其他问题。这种情况下&#xff0c;我们需要考虑创建自定义向…...

极狐GitLab Git LFS 速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Git LFS 速率限制 (BASIC SELF) Git LFS (Large File Storage) 是一个用于处理大文件的Git扩展。如果您在仓库中使用 Git LF…...

如何查询IP地址是否被占用?

IP地址占用查询的重要性 在当前高度发达的网络环境下&#xff0c;IP地址作为网络设备间通信的基础&#xff0c;其管理显得尤为重要。IP地址占用查询作为网络管理的一个重要环节&#xff0c;具有以下几点重要性&#xff1a; 预防IP冲突&#xff1a;当两个或多个设备使用相同的I…...

数字后端实现教程 | 时钟树综合IMPCCOPT-1304错误Debug思路和解决方案

今天上午有学员在做公司自己项目CTS时发现跑不下去&#xff0c;报了如下所示的错误IMPCCOPT-4375。 复杂时钟设计时钟树综合(clock tree synthesis)常见20个典型案例 第一次遇到这种错误&#xff0c;其实可以从提示信息上入手。 Term CLK_AVDD_SS is power /ground &#xff…...

AI 大模型在教育革命中的角色重塑:从知识传递者到认知伙伴

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从“教”与“学”到“共知”时代的开启 教育的本质是什么?是教师传授知识,学生被动接受?还是引导思维、激发潜能、陪伴成长? 在过去数百年里,教育形式经历了从口述、印刷、广播到互…...

Spring如何通过XML注册Bean

在上一篇当中我们完成了对三种资源文件的读写 上篇内容&#xff1a;Spring是如何实现资源文件的加载 Test public void testClassPathResource() throws IOException { DefaultResourceLoader defaultResourceLoader new DefaultResourceLoader(); Resource resource …...

Compose Multiplatform Android Logcat工具

一、通过adb发送指令&#xff0c;收集设备日志并保存 二、UI 三、代码 /*** 获取设备列表*/fun getDevices(): List<String> {val process ProcessBuilder("adb", "devices").redirectErrorStream(true).start()val output process.inputStream.…...

智能照明系统:照亮智慧生活的多重价值

在当今科技飞速发展的时代&#xff0c;智能照明系统正以其独特的优势改变着人们的生活和工作方式。这套集成了物联网、人工智能等先进技术的照明解决方案&#xff0c;不仅实现了基本的照明功能&#xff0c;更在节能环保、健康舒适、安全防护等多个维度展现出卓越价值。 从能源管…...

XMC4800 芯片深度解读:架构、特性、应用与开发指南

一、芯片定位与核心优势 XMC4800是英飞凌(Infineon)推出的高性能微控制器(MCU),属于 XMC4000系列,基于 ARM Cortex-M4内核,主打 工业控制、电机驱动、物联网(IoT) 和 嵌入式系统 应用。其核心优势在于: 多核异构处理:集成Cortex-M4(144MHz,带FPU和DSP指令集)与专…...

class com.alibaba.fastjson.JSONObject cannot be cast to class

class com.alibaba.fastjson.JSONObject cannot be cast to class 在做接口测试的时候,携带一个可用的token,打算debug看看代码的执行过程,由于Redis配置类的不完整导致报错 这是原本的Redis配置类 Configuration public class RedisConfig {BeanSuppressWarnings(value {&…...

二叉树操作与遍历实现

二叉树操作与遍历实现 二叉树操作与遍历实现树的相关概念1.树的相关术语2.二叉树的概念3.二叉树的存储结构1.顺序结构2.链式结构 1. 二叉树的创建树的表示1.1 创建节点1.2 构建二叉树 2. 二叉树的销毁3. 二叉树的遍历3.1 前序遍历3.2 中序遍历3.3 后序遍历3.4 层序遍历 4. 二叉…...