官方網址
https://chocolatey.org
Chocolatey 可以讓 Windows以 command line的形式來安裝及管理軟體套件,類似
Linux使用的 APT。
使用Powershell 安裝
1. 以系統管理員權限執行 Powershell。
2. 在 PowerShell執行以下命令
3. 重新開機。
4. 在 Powershell執行 choco,確認是否安裝成功。
Chocolately 操作
安裝套件,以 jq為例:
Chocolatey 可以讓 Windows以 command line的形式來安裝及管理軟體套件,類似
Linux使用的 APT。
PCI Local Bus spec中定義了兩個 register,Interrupt Line (0x3C)及 Interrupt Pin (0x3D)
BIOS會負責填入此 PCI device的 interrupt pin在系統上所使用的 IRQ number。
這個 register不會被 device本身使用,而是給 driver或 OS看的。
PCI device透過 Interrupt Pin來發出中斷的信號,分別為INTA#、INTB#、INTC#及 INTD#。
可從此 register的值來判斷這 device或 device function所使用的 Interrupt Pin是哪一個,
在出廠時就固定了。(1=INTA# 2=INTB# 3=INTC# 4=INTD#)
Intel 南橋提供8個 PIRQn#來讓 BIOS決定PCI device的 interrupt pin要 route
到哪個 IRQ。
透過 LPC register 0x60-0x63 (PIRQA#-PIRQD#)及 0x68-0x6B (PIRQ#E-PIRQ#H)
來設定所使用的 IRQ number。
BIOS要負責提供 PCI routing的資訊,例如PCI Slot的 interrupt pin是接到Pci IRQ Router 的哪
個pin,藉此讓 OS能夠判斷 IRQ是由哪個 PCI device所觸發的。
Legacy BIOS時代便是由 Microsoft所規範的 PCI IRQ Routing Specification中的 PCI IRQ
Table來實現。
PCI IRQ table會以 16-byte boundary形式存放在系統記憶體 F0000h - FFFFFh(F segment)中,
其開頭為 $PIR。
Byte Offset | Size in Bytes | Name |
---|---|---|
0 | 4 | Signature |
4 | 2 | Version |
6 | 2 | Table Size |
8 | 1 | PCI Interrupt Router's Bus |
9 | 1 | PCI Interrupt Router's DevFunc |
10 | 2 | PCI Exclusive IRQs |
12 | 4 | Compatible PCI Interrupt Router |
16 | 4 | Miniport Data |
20 | 11 | Reserved (Zero) |
31 | 1 | Checksum |
32 | 16 | First Slot Entry |
48 | 16 | Second Slot Entry |
N+1*16 | 16 | Nth Slot Entry |
Byte Offset | Size in Bytes | Name |
---|---|---|
0 | Byte | PCI Bus Number |
1 | Byte | PCI Device Number (in upper five bits) |
2 | Byte | Link Value for INTA# |
3 | Word | IRQ Bitmap for INTA# |
5 | Byte | Link Value for INTB# |
6 | Word | IRQ Bitmap for INTB# |
8 | Byte | Link Value for INTC# |
9 | Word | IRQ Bitmap for INTC# |
11 | Byte | Link Value for INTD# |
12 | Word | IRQ Bitmap for INTD# |
14 | Byte | Slot Number |
15 | Byte | Reserved |
代表此 INTn#所連接到的Interrupt Router's Pin (PIRQm#),若為 0則代表沒有連到
任何 PIRQm#。
代表此 INTn#能使用的 IRQ。Bit0代表 IRQ0,Bit1代表 IRQ1以此類推。
以建立一個名為HelloCMake的專案為例,在 HelloCMake的目錄新增 CMakeLists.txt
檔案及放入專案程式碼 HelloCMake.cpp,如下:
HelloCmake
├ ─ ─ ─ CMakeLists.txt
└ ─ ─ ─ HelloCMake.cpp