[嵌入式系统-37]:龙芯1B 开发学习套件 -6-协处理器CP0之CPU异常处理与外部中断控制器的中断处理
目录
一、CP0概述
1.1 CP0概述
1.2 龙芯异常exception与中断interrupt的区别
二、CPU协处理器的异常处理
三、外部中断与外部中断控制器
3.1 外部中断源
3.2 如何配置外部中断源
3.3 外部中断的中断向量表
3.2.1 软件中断向量表结构定义:ls1b_irq.c
3.2.2 软件中断向量表定义:ls1b_irq.c和ls1b_irq.h
3.3.3 默认的中断处理或中断服务程序:ls1b_irq.c
3.3.4 中断向量表的初始化
3.3.5 安装用户自定义的中断服务程序的安装与移除
一、CP0概述
1.1 CP0概述
龙芯1B协处理器CP0(Coprocessor 0)是龙芯处理器(Loongson)中的一个重要组成部分,主要用于管理处理器的系统级行为和状态信息。CP0是一个与主处理器CPU紧密集成的协处理器,它的功能主要有以下几个方面:
-
地址转换和虚拟存储管理MMU:CP0可以实现物理地址的解析和转换,支持虚拟存储管理,使得应用程序可以像访问物理内存一样方便地访问虚拟内存区域。
-
异常和中断处理(本文要深入讨论的部分):CP0是处理器内部异常exception和外部中断Interrupt处理的核心,它存储了异常和中断向量表、错误状态码等信息,并负责中断的响应和异常处理程序的执行。
-
性能计数器和性能分析:CP0中还包括可编程的性能计数器和时钟戳记寄存器,可以用于对程序的性能分析和调优,并支持操作系统的性能监控功能。
-
系统控制寄存器:CP0中还包含了一些系统级别的控制寄存器,可以用于修改处理器的运行状态,如设置缓存策略、开/关写缓冲等。
总之,龙芯1B协处理器CP0是Loongson处理器的重要组成部分,它管理和控制处理器中的系统级行为和状态信息,为操作系统和应用程序提供了重要的支持和保障。
1.2 龙芯异常exception与中断interrupt的区别
龙芯处理器中的异常(exception)和中断(interrupt)在概念上是有区别的,它们分别代表了不同类型的事件和处理机制:
-
异常(Exception):异常是指在程序执行过程中出现的一种非正常事件,通常是由指令执行时产生的,可以看作是处理器内部的问题。异常可以是因为错误的操作码、内存访问冲突、算术错误等原因导致的,需要处理器暂停当前指令的执行并执行相应的异常处理程序。异常通常由处理器本身或者处理器内部逻辑主动触发,它跳转到异常处理程序,处理完异常后再恢复到正常指令流程。
-
中断(Interrupt):中断是指来自外部设备的一种请求,要求处理器暂停当前正在执行的程序,转而执行与中断相关的处理程序。中断是处理器响应外部事件的一种方式,可以是来自设备的信号或者时钟,需要处理器打断当前执行的指令流程,执行相应的中断服务程序,处理完中断后再返回到被中断的程序继续执行。
在龙芯处理器中,异常和中断的区别在于触发原因和处理方式上:异常通常是由指令执行过程中的内部错误或意外情况引发,需要处理器内部去处理;而中断是由外部事件触发,需要处理器响应外部设备的请求。处理器在接收到异常或中断信号后,会根据具体情况执行相应的处理程序,保证系统的稳定运行和正确性。
二、CPU协处理器的异常处理
三、外部中断与外部中断控制器
3.1 外部中断源
龙芯1B SOC芯片内置简单、灵活的中断控制器。
1B芯片的中断控制器除了管理 GPIO输入的中断信号外,中断控制器还处理内部设备引起的中断。所有的中断寄存器的位域安排相同,一个中断源对应其中一位。
SOC的中断控制器共四个中断线输出连接到CPU模块,分别对应 INT0, INT1, INT2, INT3。
SOC芯片中断控制器本身能够支持 64个内部中断和 64个 GPIO的中断,最大一共128个硬件外部中断源,这128个中断源分为四组,每组最大支持32个中断源,分别归组为:INT0, INT1, INT2, INT3。
其中 INT0和 INT1分别对应于 64个内部中断的前后 32位,INT2和 INT3对应于 64个外部 GPIO中断。但龙芯1B的实现过程中,并非所有的中断源都被使用,部分中断源是保留未使用,
具体中断源如下表所示:

从上图可以看出:
(1)GPIO31、GPIO62、GPIO63都未使用,属于保留位,因此一个64-3=61个GPIO中断源。
(2)并非所有的INT0和INT1的外设中断都被使用上,实际上,龙芯1B SOC芯片,并没有那么多外设,因此,大量的位都是闲置的,属于保留为,未定义其行为。
3.2 如何配置外部中断源
3.3 外部中断的中断向量表
3.2.1 软件中断向量表结构定义:ls1b_irq.c
/* 中断向量表 */
typedef struct isr_tbl
{void (*handler)(int, void *); // 中断句柄unsigned int arg; // 参数
} isr_tbl_t;
3.2.2 软件中断向量表定义:ls1b_irq.c和ls1b_irq.h
定义龙芯1B实际支持的中断源(去除保留位)
/******************************************************************************
* Interrupt Vector Numbers
* MIPS_INTERRUPT_BASE should be 32 (0x20)
******************************************************************************/
/*
* CP0 Cause ($12) IP bit(15:8)=IP[7:0],
* IP[1:0] is soft-interrupt
* Status($13) IM bit(15:8) if mask interrupts
*
*/
#define LS1B_IRQ_SW0 (MIPS_INTERRUPT_BASE + 0) # 协处理器的软中断
#define LS1B_IRQ_SW1 (MIPS_INTERRUPT_BASE + 1) # 协处理器的软中断
#define LS1B_IRQ0_REQ (MIPS_INTERRUPT_BASE + 2) # 协处理器的中断请求0
#define LS1B_IRQ1_REQ (MIPS_INTERRUPT_BASE + 3) # 协处理器的中断请求1
#define LS1B_IRQ2_REQ (MIPS_INTERRUPT_BASE + 4) # 协处理器的中断请求2
#define LS1B_IRQ3_REQ (MIPS_INTERRUPT_BASE + 5) # 协处理器的中断请求3
#define LS1B_IRQ_PERF (MIPS_INTERRUPT_BASE + 6) # 协处理器的性能统计中断
#define LS1B_IRQ_CNT (MIPS_INTERRUPT_BASE + 7) # 协处理器的计数或tick中断,操作系统调度使用
/*
* Interrupt Control 0 Interrupts: 中断控制器0支持的外设中断数量:29个
*/
#define LS1B_IRQ0_BASE (MIPS_INTERRUPT_BASE + 8)
#define LS1B_UART0_IRQ (LS1B_IRQ0_BASE + 2)
#define LS1B_UART1_IRQ (LS1B_IRQ0_BASE + 3)
#define LS1B_UART2_IRQ (LS1B_IRQ0_BASE + 4)
#define LS1B_UART3_IRQ (LS1B_IRQ0_BASE + 5)
#define LS1B_CAN0_IRQ (LS1B_IRQ0_BASE + 6)
#define LS1B_CAN1_IRQ (LS1B_IRQ0_BASE + 7)
#define LS1B_SPI0_IRQ (LS1B_IRQ0_BASE + 8)
#define LS1B_SPI1_IRQ (LS1B_IRQ0_BASE + 9)
#define LS1B_AC97_IRQ (LS1B_IRQ0_BASE + 10)
#define LS1B_DMA0_IRQ (LS1B_IRQ0_BASE + 13)
#define LS1B_DMA1_IRQ (LS1B_IRQ0_BASE + 14)
#define LS1B_DMA2_IRQ (LS1B_IRQ0_BASE + 15)
#define LS1B_PWM0_IRQ (LS1B_IRQ0_BASE + 17)
#define LS1B_PWM1_IRQ (LS1B_IRQ0_BASE + 18)
#define LS1B_PWM2_IRQ (LS1B_IRQ0_BASE + 19)
#define LS1B_PWM3_IRQ (LS1B_IRQ0_BASE + 20)
#define LS1B_RTC0_IRQ (LS1B_IRQ0_BASE + 21)
#define LS1B_RTC1_IRQ (LS1B_IRQ0_BASE + 22)
#define LS1B_RTC2_IRQ (LS1B_IRQ0_BASE + 23)
#define LS1B_TOY0_IRQ (LS1B_IRQ0_BASE + 24)
#define LS1B_TOY1_IRQ (LS1B_IRQ0_BASE + 25)
#define LS1B_TOY2_IRQ (LS1B_IRQ0_BASE + 26)
#define LS1B_RTC_IRQ (LS1B_IRQ0_BASE + 27)
#define LS1B_TOY_IRQ (LS1B_IRQ0_BASE + 28)
#define LS1B_UART4_IRQ (LS1B_IRQ0_BASE + 29)
#define LS1B_UART5_IRQ (LS1B_IRQ0_BASE + 30)
/*
* Interrupt Control 1 interrupts:中断控制器1支持的外设中断:4个
*/
#define LS1B_IRQ1_BASE (MIPS_INTERRUPT_BASE + 40)
#define LS1B_EHCI_IRQ (LS1B_IRQ1_BASE + 0)
#define LS1B_OHCI_IRQ (LS1B_IRQ1_BASE + 1)
#define LS1B_GMAC0_IRQ (LS1B_IRQ1_BASE + 2)
#define LS1B_GMAC1_IRQ (LS1B_IRQ1_BASE + 3)
/*
* Interrupt Control 2 interrupts (GPIO):中断控制器2支持的GPIO中断数:31个
*/
#define LS1B_IRQ2_BASE (MIPS_INTERRUPT_BASE + 72)
#define LS1B_GPIO0_IRQ (LS1B_IRQ2_BASE + 0)
#define LS1B_GPIO1_IRQ (LS1B_IRQ2_BASE + 1)
#define LS1B_GPIO2_IRQ (LS1B_IRQ2_BASE + 2)
#define LS1B_GPIO3_IRQ (LS1B_IRQ2_BASE + 3)
#define LS1B_GPIO4_IRQ (LS1B_IRQ2_BASE + 4)
#define LS1B_GPIO5_IRQ (LS1B_IRQ2_BASE + 5)
#define LS1B_GPIO6_IRQ (LS1B_IRQ2_BASE + 6)
#define LS1B_GPIO7_IRQ (LS1B_IRQ2_BASE + 7)
#define LS1B_GPIO8_IRQ (LS1B_IRQ2_BASE + 8)
#define LS1B_GPIO9_IRQ (LS1B_IRQ2_BASE + 9)
#define LS1B_GPIO10_IRQ (LS1B_IRQ2_BASE + 10)
#define LS1B_GPIO11_IRQ (LS1B_IRQ2_BASE + 11)
#define LS1B_GPIO12_IRQ (LS1B_IRQ2_BASE + 12)
#define LS1B_GPIO13_IRQ (LS1B_IRQ2_BASE + 13)
#define LS1B_GPIO14_IRQ (LS1B_IRQ2_BASE + 14)
#define LS1B_GPIO15_IRQ (LS1B_IRQ2_BASE + 15)
#define LS1B_GPIO16_IRQ (LS1B_IRQ2_BASE + 16)
#define LS1B_GPIO17_IRQ (LS1B_IRQ2_BASE + 17)
#define LS1B_GPIO18_IRQ (LS1B_IRQ2_BASE + 18)
#define LS1B_GPIO19_IRQ (LS1B_IRQ2_BASE + 19)
#define LS1B_GPIO20_IRQ (LS1B_IRQ2_BASE + 20)
#define LS1B_GPIO21_IRQ (LS1B_IRQ2_BASE + 21)
#define LS1B_GPIO22_IRQ (LS1B_IRQ2_BASE + 22)
#define LS1B_GPIO23_IRQ (LS1B_IRQ2_BASE + 23)
#define LS1B_GPIO24_IRQ (LS1B_IRQ2_BASE + 24)
#define LS1B_GPIO25_IRQ (LS1B_IRQ2_BASE + 25)
#define LS1B_GPIO26_IRQ (LS1B_IRQ2_BASE + 26)
#define LS1B_GPIO27_IRQ (LS1B_IRQ2_BASE + 27)
#define LS1B_GPIO28_IRQ (LS1B_IRQ2_BASE + 28)
#define LS1B_GPIO29_IRQ (LS1B_IRQ2_BASE + 29)
#define LS1B_GPIO30_IRQ (LS1B_IRQ2_BASE + 30)
/*
* Interrupt Control 3 source bit (GPIO):中断控制器3支持的GPIO中断数:30个。
*/
#define LS1B_IRQ3_BASE (MIPS_INTERRUPT_BASE + 104)
#define LS1B_GPIO32_IRQ (LS1B_IRQ3_BASE + 0)
#define LS1B_GPIO33_IRQ (LS1B_IRQ3_BASE + 1)
#define LS1B_GPIO34_IRQ (LS1B_IRQ3_BASE + 2)
#define LS1B_GPIO35_IRQ (LS1B_IRQ3_BASE + 3)
#define LS1B_GPIO36_IRQ (LS1B_IRQ3_BASE + 4)
#define LS1B_GPIO37_IRQ (LS1B_IRQ3_BASE + 5)
#define LS1B_GPIO38_IRQ (LS1B_IRQ3_BASE + 6)
#define LS1B_GPIO39_IRQ (LS1B_IRQ3_BASE + 7)
#define LS1B_GPIO40_IRQ (LS1B_IRQ3_BASE + 8)
#define LS1B_GPIO41_IRQ (LS1B_IRQ3_BASE + 9)
#define LS1B_GPIO42_IRQ (LS1B_IRQ3_BASE + 10)
#define LS1B_GPIO43_IRQ (LS1B_IRQ3_BASE + 11)
#define LS1B_GPIO44_IRQ (LS1B_IRQ3_BASE + 12)
#define LS1B_GPIO45_IRQ (LS1B_IRQ3_BASE + 13)
#define LS1B_GPIO46_IRQ (LS1B_IRQ3_BASE + 14)
#define LS1B_GPIO47_IRQ (LS1B_IRQ3_BASE + 15)
#define LS1B_GPIO48_IRQ (LS1B_IRQ3_BASE + 16)
#define LS1B_GPIO49_IRQ (LS1B_IRQ3_BASE + 17)
#define LS1B_GPIO50_IRQ (LS1B_IRQ3_BASE + 18)
#define LS1B_GPIO51_IRQ (LS1B_IRQ3_BASE + 19)
#define LS1B_GPIO52_IRQ (LS1B_IRQ3_BASE + 20)
#define LS1B_GPIO53_IRQ (LS1B_IRQ3_BASE + 21)
#define LS1B_GPIO54_IRQ (LS1B_IRQ3_BASE + 22)
#define LS1B_GPIO55_IRQ (LS1B_IRQ3_BASE + 23)
#define LS1B_GPIO56_IRQ (LS1B_IRQ3_BASE + 24)
#define LS1B_GPIO57_IRQ (LS1B_IRQ3_BASE + 25)
#define LS1B_GPIO58_IRQ (LS1B_IRQ3_BASE + 26)
#define LS1B_GPIO59_IRQ (LS1B_IRQ3_BASE + 27)
#define LS1B_GPIO60_IRQ (LS1B_IRQ3_BASE + 28)
#define LS1B_GPIO61_IRQ (LS1B_IRQ3_BASE + 29)
#define LS1B_MAXIMUM_VECTORS (LS1B_GPIO61_IRQ+1)
#define BSP_INTERRUPT_VECTOR_MIN 0
#define BSP_INTERRUPT_VECTOR_MAX LS1B_MAXIMUM_VECTORS
备注:中断向量表中一共支持8 + 29 + 4 + 31 + 30 = 8 + 33 + 61 = 102个中断。
中断向量表:
static isr_tbl_t isr_table[BSP_INTERRUPT_VECTOR_MAX];
3.3.3 默认的中断处理或中断服务程序:ls1b_irq.c
/** 默认中断 */
static void mips_default_isr(int vector, void *arg)
{unsigned int sr;unsigned int cause;mips_get_sr(sr);mips_get_cause(cause);printf("Unhandled isr exception: vector 0x%02x, cause 0x%08X, sr 0x%08X\n",vector, cause, sr);while (1);
}
3.3.4 中断向量表的初始化
/* * 初始化*/
void mips_init_isr_table(void)
{unsigned int i;for (i=0; i<BSP_INTERRUPT_VECTOR_MAX; i++) {isr_table[i].handler = mips_default_isr;isr_table[i].arg = i;}
}
使用默认的中断服务程序mips_default_isr初始化中断向量表。
3.3.5 安装用户自定义的中断服务程序的安装与移除
void ls1x_install_irq_handler(int vector, void (*isr)(int, void *), void *arg)
{if ((vector >= 0) && (vector < BSP_INTERRUPT_VECTOR_MAX)){mips_interrupt_disable();isr_table[vector].handler = isr;isr_table[vector].arg = (unsigned int)arg;mips_interrupt_enable();}
}void ls1x_remove_irq_handler(int vector)
{if ((vector >= 0) && (vector < BSP_INTERRUPT_VECTOR_MAX)){mips_interrupt_disable();isr_table[vector].handler = mips_default_isr;isr_table[vector].arg = vector;mips_interrupt_enable();}
}
相关文章:
[嵌入式系统-37]:龙芯1B 开发学习套件 -6-协处理器CP0之CPU异常处理与外部中断控制器的中断处理
目录 一、CP0概述 1.1 CP0概述 1.2 龙芯异常exception与中断interrupt的区别 二、CPU协处理器的异常处理 三、外部中断与外部中断控制器 3.1 外部中断源 3.2 如何配置外部中断源 3.3 外部中断的中断向量表 3.2.1 软件中断向量表结构定义:ls1b_irq.c 3.2.2…...
前端实现一个绕圆心转动的功能
前言: 今天遇到了一个有意思的需求,如何实现一个元素绕某一个点来进行圆周运动,用到了一些初高中的数学知识,实现起来还是挺有趣的,特来分享🎁。 一. 效果展示 我们先展示效果,如下图所示&…...
【vue.js】文档解读【day 2】 | 响应式基础
如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 响应式基础声明响应式状态(属性)响应式代理 vs 原始值声明方法深层响应性DOM 更新时机有状态方法 响应式…...
element-ui radio 组件源码分享
今日简单分享 radio 组件的实现原理,主要从以下三个方面来分享: 1、radio 页面结构 2、radio 组件属性 3、radio 组件方法 一、radio 页面结构 1.1 页面结构如下: 二、radio 属性 2.1 value / v-model 属性,类型为 string / …...
1-安装rabbitmq
rabbitmq官网: https://www.rabbitmq.com/docs/download 本机环境:mac,使用orbstack提供的docker 使用docker部署rabbitmq docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management 然后报错…...
C/C++编程-理论学习-通信协议理论
通信协议理论 protobuf简述 protobuf 简述 作用: 1. 将结构化数据 序列化 进行信息通信、存储。意为,数据结构化管理;意为,对结构化的数据进行序列化,便于发送、存储。可类比XML、JSON。 弊端: 1. buffe…...
【Apache Camel】基础知识
【Apache Camel】基础知识 Apache Camel是什么Apache Camel基本概念和术语CamelContextEndpointsRoutesRouteBuilderComponentsMessageExchangeProcessorsDomain Specific Language(DSL) Apache Camel 应用执行步骤Apache Camel 示意图参考 Apache Camel…...
Python之访问集合的迭代器
对迭代器的理解对于我们访问数据量大是有很大的帮助,将介绍它。 一、概念 迭代:是访问集合元素的一种方式,按照某种顺序逐个访问集合中的每一项。 可迭代对象:能够被迭代的对象,称为可迭代对象 判定依据:能…...
【Spring连载】使用Spring Data访问 MongoDB----对象映射之基于类型的转换器
【Spring连载】使用Spring Data访问 MongoDB----对象映射之基于类型的转换器 一、自定义转换二、转换器消歧(Disambiguation)三、基于类型的转换器3.1 写转换3.2 读转换3.3 注册转换器 一、自定义转换 下面的Spring Converter实现示例将String对象转换为自定义Email值对象: R…...
在ubuntu上安装hadoop完分布式
准备工作 Xshell安装包 Xftp7安装包 虚拟机安装包 Ubuntu镜像源文件 Hadoop包 Java包 一、安装虚拟机 创建ubuntu系统 完成之后会弹出一个新的窗口 跑完之后会重启一下 按住首先用ctrlaltf3进入命令界面,输入root,密码登录管理员账号 按Esc 然后输入 …...
Python 语句(二)【循环语句】
循环语句允许执行一个语句或语句组多次,其程序流程图如下: 在python中有三种循环方式: while 循环 当判断条件为 true 时执行循环体,否则退出循环体。for 循环 重复执行语句嵌套循环 (在while循环体中嵌套for循环&…...
(3)(3.3) MAVLink高延迟协议
文章目录 前言 1 配置 2 说明 3 消息说明 前言 ArduPilot 支持 MAVLink 高延迟协议(MAVLink High Latency)。该协议专为卫星或 LoRA 等低带宽或高成本链路而设计。 在此协议中,每 5s 只发送一次 HIGH_LATENCY2 MAVLink 信息。对 MAVLink 命令或请求(…...
【异常处理】Vue报错 Component template should contain exactly one root element.
问题描述 启动VUE项目后控制台报错: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译为:组件模板应该只包含一个根元素 查看vue代码࿰…...
Eth-trunk隧道
目录 Eth-trunk (划为二层) 二层trunk 三层交换机 网关冗余 Eth-trunk (划为二层) 一,...
【Ubuntu】将多个python文件打包为.so文件
1.为什么要将python打包为.so文件? 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…...
FreeRtos自学笔记3-----参考正点原子视频
FreeRtos任务的创建与删除 任务的创建与删除本质上是调用FreeRtos的API函数。 API函数: 1.xTaskGreate():动态创建任务函数; 2.xTaskGreateStatic();静态创建任务函数; 3.xTaskDelete():任务删除 动态创建任务:任务的任务控制块以…...
使用J-Link Commander通过J-LINK以命令的形式来访问ARM通用MCU
通常我们的操作是写好程序然后将程序下载到芯片里面,然后运行程序来进行相应的操作,其实还可以使用 J − L i n k C o m m a n d e r J-Link\quad Commander J−LinkCommander通过 J − L I N K J-LINK J−LINK以命令的形式来简单访问ARM通用MCU…...
19.删除链表的倒数第N个节点
19.删除链表的倒数第N个节点 力扣题目链接(opens new window) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head [1,2,3,4,5], n…...
【Linux C | 网络编程】广播概念、UDP实现广播的C语言例子
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
java 面向对象 day3
这里写目录标题 1、 内部类1.1 成员内部类 静态内部类1.2 局部内部类1.3 匿名内部类[重点] 2、枚举2.1 使用枚举类 设计单例模式2.2 小实例 3、泛型3.1 认识泛型3.2 泛型类3.3 泛型接口3.4 泛型方法3.5 注意事项 1、 内部类 内部类 就是定义在一个类中的类 1.1 成员内部类 静…...
告别传统编程:用AI语音命令5倍速开发Godot游戏
告别传统编程:用AI语音命令5倍速开发Godot游戏 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP 还在为复杂的…...
本地大模型部署的Python“翻译官“:llama-cpp-python深度解析
本地大模型部署的Python"翻译官":llama-cpp-python深度解析 【免费下载链接】llama-cpp-python Python bindings for llama.cpp 项目地址: https://gitcode.com/gh_mirrors/ll/llama-cpp-python 你是否曾为云端API的延迟而焦虑?是否担心…...
如何快速提升Windows性能:终极系统优化完整指南
如何快速提升Windows性能:终极系统优化完整指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...
CVPR 2023风向解读:多模态与扩散模型如何重塑计算机视觉
1. 从顶会风向标,看计算机视觉的“现在进行时”又到了年中盘点的时候,对于计算机视觉(CV)圈子的从业者、学生和研究者来说,每年CVPR的论文录用情况,就是一张最权威的“技术晴雨表”。它不只是一份论文列表&…...
Video2X:你的AI视频画质修复专家,让老旧视频重获新生
Video2X:你的AI视频画质修复专家,让老旧视频重获新生 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trendin…...
SharpCompress实战:一个方法搞定C#里ZIP压缩打包,附赠RAR/7Z解压和TAR.GZ创建教程
C#压缩解压全能手册:用SharpCompress玩转ZIP/RAR/7Z/TAR.GZ 在开发日志管理系统、文件上传模块或数据备份工具时,文件压缩解压功能就像空气一样不可或缺。但面对ZIP、RAR、7Z、TAR.GZ这些格式各异的压缩包,不少开发者都会陷入API选择的困境。…...
如何实现GitHub下载10倍加速:免费插件完整配置终极指南
如何实现GitHub下载10倍加速:免费插件完整配置终极指南 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 对于国内开发者…...
抗IL-3R-α阻断抗体处理的肿瘤来源内皮细胞外泌体(EVs)的抗血管生成效应:对Wnt/β-catenin通路的洞察
引言血管生成,即从已有血管中形成新血管的过程,是肿瘤生长和转移的关键过程。肿瘤微环境中的促血管生成因子在促进这一过程中起着关键作用。在这些因子中,具有促血管生成特性的细胞因子白细胞介素-3(IL-3)由乳腺癌和卵…...
开始举报功能测试
这说明记录添加成功,举报功能测试正常...
Vivado 2022.2 中文用户名下,Vscode关联失效的终极修复与Verilog环境配置
Vivado 2022.2中文用户环境下的Vscode-Verilog开发全栈配置指南 当FPGA开发者遇到Windows中文用户名导致的Vivado-Vscode关联失效时,往往需要花费数小时排查环境问题。本文将系统性地解决这一痛点,并提供完整的Verilog开发环境配置方案。 1. 中文路径问题…...
