【我所認知的BIOS】—>PCI 的中斷(PIC下)

QEMU 如何处理PCI设备的中断(二) 3. QEMU对X86中断控制器的模拟 我们从pc_init1中来分析QEMU虚拟中断控制器的过程。QEMU不仅可以在用户层模拟中断控制器,也可以在kernel中通过kvm来虚拟中断控制器,为方便起见,我们只分析在kvm中虚拟化pic和apic芯片的流程。 中断路由表的创建 hw/i386/pc_piix.c struct GSIState { qemu_irq i8259_irq[16]; qemu_irq ioapic_irq[24] } static void pc_init1(...) { 阅读详情

【我所認知的BIOS—>PCI 的中斷(PIC下)

LightSeed     

2009-5-13     

1PCI中斷概述

注:整篇都是討論在PIC8259)下的中斷過程。當PCI設備插到主板上後(本來南橋裏含有的當然就不用插啦),它要和其他設備通信,或者讓CPU幫它做這般這般,或者CPU讓它做那般那般等等。。。那麼他們究竟是怎麼通信的呢?這就是PCI中斷在中間起的強大作用。PCI中斷,有一個很大的特點,它可以共用。這個特點我先提出來,對於後面講做個鋪墊。

2PCI中斷的HW

在談到PCI設備的時候,我要首先說明一下。我們平時用程式去scan的那個device是邏輯上的device。比如說BUS#0DEV#31FUN0中說的device是邏輯device。而平時我們說一個PCI顯卡,PCI網卡設備,他們都是物理device。一個物理device可能會有多個邏輯device。這裡其實就是function的意思。邏輯device其實是function。這裡要搞清楚。圖2.1是對PCI設備中斷的抽象圖。

PCI設備用INTA~INTD pin連接到8259來傳送中斷信號。需要說明的是,單functionPCI設備只能用INTA

 

 

2.1 PCI設備中斷的抽象圖

正如圖2.1所示,設備引出的INTx連接經過中斷路由後連接到8259PIRQA~D

3INTx的繞線

細心的人肯定會發現,上面圖2.1中的連線是有繞的。那麼爲什麽HW要這樣做呢?這就牽涉到“loading balance”的概念。以下是引用程式設計俱樂部的帖子,原作者liaoo

 

Interrupt pin為出廠時就決定的,不能改變. Ex. 使用 SE or ru check PCI Reg3Dh = 01/02/03/04 for INT#A/B/C/D. interrupt line則是BIOS知道了 "routing"後去填的.例如,BIOS知道

INT#A最終會接到 PIC mode 8259 IRQ 11, PCI Reg3Ch PCI scan 階段會被填成 "0Bh". 至於你說的如何接

Linux·内核编译错误 Linux·内核编译错误-cc1: error: code model kernel does not support PIC mode 阅读详情

相关推荐

Linux·驱动编译相关问题

lLinux驱动问题

m0_64560763的博客 1720

理解linux pci 扫描流程

本文主要描述linux kernel进行pci总线扫描,linux kernel代码基于版本2.6.37 1. 域 最先需要说明一个概念--域 百度百科:域之原义指地方的范围,后逐渐演变为数学、生物、科技等学科的某类单位的分类词语。 域英文叫DOMAIN (a set of websites on the Internet which end with the same g

moon146的专栏 2万+

SpringBoot+Git+Jenkins+K8s容器化部署

SpringBoot+Git+Jenkins+K8s容器一套部署流程

可乐加.糖 444

编译驱动模块的一系列问题

一、cc1: error: code model kernel does not support PIC mode 原因:主机的gcc版本,和开发板的gcc工具版本不一致。需要指定gcc开发板工具的gcc 解决办法:编写Makefile文件的时候指定gcc工具 Makefile文件中指定gcc如下: ifeq ($(HOST), ubuntu) #ubuntu内核 KERNEL_DIR:=/usr/src/linux-headers-$(shell uname -r) CC:=gcc else

weixin_43473988的博客 2243

【linux】kernel 编译个人小结

kernel、module 编译搭建及编译相关错误

过得精彩,无所谓好坏 1581

驱动开发---cc1: error: code model kernel does not support PIC mode(改文件Unhelp?try it)

问题描述:在编译内核时出现 cc1: error: code model kernel does not support PIC mode的问题。 linux版本:3.14 问题分析:这极大原因是系统调用了默认的编译器导致的。 问题解决:在进行make编译的时候,加上ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- 或者在自己源码Makefile里面加上 :

少年,你渴望力量吗 4848

正点原子阿尔法开发板linux驱动开发遇到cc1: error: code model kernel does not support PIC mode

解决cc1: error: code model kernel does not support PIC mode的一种方法

godmial的博客 1398

kernel compile内核编译 -> cc1: error: code model kernel does not support PIC mode

kernel compile内核编译 cc1: error: code model kernel does not support PIC mode

o_alpha的博客 910

/tmp 分区满的一个问题:cc1: error: code model kernel does not support PIC mode

突然间出现的问题 怀疑 gcc 有问题,编译了一个 xxx.c 后报了如下错误: tunpong.c:79:1: fatal error: error writing to /tmp/ccyQFpRG.s: 设备上没有空间 执行如下命令挂载 tmpfs 到 /tmp 中: sudo mount -t tmpfs tmpfs /tmp 重新执行后正常! longyu@virt-debian10:~/kprobes$ df -h /tmp 文件系统 容量 已用 可用 已用% 挂载点 /dev/

龙瑜的博客 1705

LINUX7-编译驱动文件时报错:cc1: error: code model kernel does not support PIC mode

make[1]: 进入目录“/home/gg/linux_mx6ull/LINUX_drv/linux-imx-4.1.15-2.1.0”make[1]: 离开目录“/home/gg/linux_mx6ull/LINUX_drv/linux-imx-4.1.15-2.1.0”修改makefile 即可,默认改为arm构架。

qq_52940987的博客 1277

cc1: error: code model kernel does not support PIC mode

修改内核的makefile 如下 ARCH ?= arm CROSS_COMPILE ?= arm-linux-gnueabihf- # Architecture as present in compile.h UTS_MACHINE := $(ARCH) SRCARCH := $(ARCH) 和 KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -

weixin_44152895的博客 4706

【make kernel】报错 kernel does not support PIC mode

从官方下载了Linux kernel源码进行编译,遇到如下错误: cc1: error: code model kernel does not support PIC mode 解决办法:在参数处添加 -fno-pie ARCH ?= arm CROSS_COMPILE ?= arm-linux-gnueabihf- # Architecture as present in compile.h UTS_MACHINE := $(ARCH) SRCARCH := $(ARCH) 和 KBUI

wang 恒 的博客 2905

编译内核出现的问题解决办法

1.cc1: error: code model kernel does not support PIC mode cc1: error: code model kernel does not support PIC mode 修改li@li-vir:~/linux-3.14/linux-3.14$ vim Makefile include/linux/compiler-gcc.h:106:1: fatal error: linux/compiler-gcc7.h: 没有那个文件或目录 直接将

weixin_42097108的博客 912

PCI总线的中断机制

PCI总线的中断机制

chen_xing_hai的博客 3941

电脑开机新问题

今天装电脑的时候出现如下问题Build Number:2882 PC12.0 02/04/2003 11:27:DECOMPILATION OR DISASSEMBLY PROHIBITEDCopyright (C) 2000-2003 Intel Corp All Rights Reserved同时还伴有噪音请问哪位朋友遇到过此类情况,麻烦您给解释一下

pange2009的专栏 1228

编译内核模块时出现:cc1: error: code model kernel does not support PIC mode

在网上找到说是要修改Makefile中的KERNEL_CFLAGS,添加-fno-pie,但是我这不好用 调查后发现删除删除该模块目录下的.cache.mk文件就好了,重新make即可,记录一下。。 ...

qq_27577247的博客 5818

QT+Halcon实现螺纹检测

工业上要检测螺丝的内外直径、内外牙距、内外角度,现在比较好用的图像处理库,开源的opencv,收费的有halcon。为了实现螺纹检测,和对比螺纹检测拿个库比较好。分别用opencv和halcon实现了螺纹检测,通过对比发现用halcon实现的效果比较。现在用博客把实现过程记录下来: 1、需要检测的螺纹数据如下: 2、为了实现检测螺丝以上数据,螺纹内径、螺纹外径、螺纹外牙距、螺纹...

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 7033

PyTorch实战:UNet与FCN图像分割算法实现及源码解析

基于PyTorch框架的深度学习图像语义分割技术实现本项目系统性地构建了两种经典神经网络模型在计算机视觉领域的应用方案。通过UNet与FCN(全卷积网络)的并行实现,完整呈现了像素级图像分割任务的解决方案。项目采用模块化设计思想,将整个技术流程分解为数据预处理、模型架构搭建、训练策略优化和预测验证四个核心环节。在数据预处理阶段,我们设计了多尺度随机裁剪与色彩增强策略,有效提升了训练样本的多样性。模型架构方面,UNet采用对称编码器-解码器结构,通过跳跃连接实现多尺度特征融合;FCN则通过全卷积化处理,实现了任意尺寸图像的端到端分割。两种模型均支持自定义深度配置,用户可根据实际需求调整网络层数与通道数。训练过程采用分阶段优化策略,初期使用较高学习率快速收敛,后期通过余弦退火算法精细调参。项目特别引入了混合精度训练技术,在保证模型精度的同时显著降低显存占用。评估体系包含交并比、像素准确率等多维度指标,并提供了可视化工具用于对比预测结果与真实标注。技术文档详细阐述了梯度累积、类别权重平衡等实用技巧,同时分析了不同骨干网络对分割性能的影响。所有代码均遵循工程化标准,包含完整的类型注解和单元测试,确保项目的可维护性与可扩展性。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

上一篇: 【我所認知的BIOS】—>PCI 配置空間拾趣
下一篇: 【我所認知的BIOS】—>PCI option rom
lightseed
博客等级 码龄17年 1015粉丝 61原创
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值