||
1、Scope (打开一个命名范围)
Scope (Location) { ObjectList }
参数:打开并将基本名称空间范围分配给对象集合。范围内定义的所有对象名都是相对于位置创建的。注意,位置不一定要低于周围的范围,可以引用名称空间中的任何位置。作用域术语本身不创建对象,而是仅在名称空间内定位对象;实际对象由其他ASL术语创建。
描述:按位置引用的对象必须已经存在于名称空间中,并且是具有与之关联的名称空间范围的下列对象类型之一:
a、预定义范围比如:\ (root), \_SB , \GPE , \_PR , \_TZ , etc.
b、DEVICE、Processor、Thermal Zone、Power Resource
注:在创建辅助SSDTs时,通常需要使用Scope操作符更改名称空间位置,以便在主DSDT定义的名称空间的某些部分中创建对象。使用外部操作符声明范围位置,以便ASL编译器不会对未定义的位置发出错误。
2、OperationRegion(申明一个操作区域):
OperationRegion (RegionName, RegionSpace, Offset, Length)
参数:声明一个名为RegionName的操作区域。Offset是区域开始的选定RegionSpace内的偏移量(字节为单位),长度是区域的长度(以字节为单位)。
说明:一个操作区域就是一类数据类型(当读写操作对象的时候其实就是在操作一些硬件区域)。例如,定义块可以定义一个关于总线或系统I/O空间的操作区域。任何读写这个名称对象的操作其实都是在访问I/O空间。
3、IO(IO资源的表示宏)
IO (Decode , AddressMin , AddressMax , AddressAlignment , RangeLength , DescriptorName)
参数:
Decode 表示10位译码(Decode10)还是16位译码(Decode16)。
AddressMin 表示IO范围最小允许的基地址的一个16位整形数。必须为AddressAlignment的偶数倍。
AddressMax 表示IO范围最大允许的基地址的一个16位整形数。必须为AddressAlignment的偶数倍。
AddressAlignment 表示IO地址值的对齐规则的一个八位整形数
RangeLength 表示IO地址的范围
DescriptorName是一个可选参数,它为一个整型常量指定一个名称,该整型常量将在当前作用域中创建,该作用域包含当前资源模板缓冲区中此资源描述符的偏移量。预定义的描述符字段名可以附加到这个名称中,以便通过缓冲区字段操作符访问描述符中的各个字段。
3、ResourceTemplate(创建一个缓存区)
ASL包括一些用于创建资源描述符的宏。ResourceTemplate宏创建一个缓冲区,其中可以列出资源描述符宏。ResourceTemplate宏自动生成一个结束描述符,并计算资源模板的校验和。ResourceTemplate宏的格式如下:
CreateWordField (SourceBuffer, ByteIndex, FieldName)
• SourceBuffer — 取双字域的buff
• ByteIndex — 从buff开始的位置偏移
• FieldName — 取出双字域的名称
4、WORDBusNumber(总线号资源描述宏)
WordBusNumber (ResourceUsage , IsMinFixed , IsMaxFixed , Decode , AddressGranularity, AddressMinimum, AddressMaximum , AddressTranslation , RangeLength , ResourceSourceIndex, ResourceSource, DescriptorName)
参数:
ResourceUsage:(ResourceConsumer)代表这个设备使用,(ResourceProducer):传递给子设备。不设置默认ResourceConsumer。
IsMinFixed 指定总线号地址范围是固定的MinFixed 还是可修改的MinNoFixed ,不指定则默认为MinNotFixed的
IsMaxFixed 指定总线号地址范围是固定的MaxFixed 还是可修改的MaxNoFixed ,不指定则默认为MaxNotFixed的
Decode指定设备解码方式,PosDecode和SubDecode)解码方式对总线编号范围进行解码。如果没有指定,则假定PosDecode。 addressparticle计算为一个16位整数,该整数指定必须对总线号范围进行对齐的二次方边界(- 1)。
AddressMinimum计算为一个16位整数,指定了最低的总线号
AddressMaximum 计算为一个16位整数,指定了最高的总线号
AddressTranslation计算为一个16位整数,该整数指定要添加到辅助总线总线号的偏移量,从而生成相应的主总线总线号。
RangeLength计算为16位整数,指定在总线号范围内解码的总线号的总数。AddressMaximum - AddressMinimum + 1
ResourceSourceIndex是一个可选参数,它计算为一个8位整数,指定ResourceSource指定的对象中的资源描述符。如果指定了这个参数,还必须指定ResourceSource参数。
ResourceSource是一个可选参数,它计算为一个字符串,该字符串包含一个设备的路径,该设备生成一个资源池,从这个资源池中分配I/O范围。如果指定了此参数,但没有指定ResourceSourceIndex参数,则假定为零。
DescriptorName是一个可选参数,它为一个整型常量指定一个名称,该整型常量将在当前作用域中创建,该作用域包含当前资源模板缓冲区中此资源描述符的偏移量。预定义的描述符字段名可以附加到这个名称中,以便通过缓冲区字段操作符访问描述符中的各个字段。
注:和这个宏相似的宏由:WORDIO、DWORDMEMORY等
5、External(声明一个外部对象)
External ( ObjectName, ObjectType, ReturnType, ParameterTypes )
参数:
ObjectName是一个名称字符串。
ObjectType是一个可选的ObjectTypeKeyword(例如IntObj、PkgObj等)。如果没有指定,则假定“UnknownObj”类型。
ReturnType是可选的。如果指定的对象类型是MethodObj,则指定方法返回的对象的类型。如果方法不返回对象,则不指定任何内容或UnknownObj。要指定单个返回类型,只需使用ObjectTypeKeyword。要指定多种可能的返回类型,请用大括号括住逗号分隔的ObjectTypeKeyword s。例如:{IntObj, BuffObj}。
ParameterTypes是可选的。如果指定的ObjectType是MethodObj,则指定方法参数的数量和类型。它是一个逗号分隔的、可变长度的列表,其中包含每个方法参数的预期对象类型或类型,用大括号括起来。对于每个参数,参数类型由ObjectTypeKeyword或用逗号分隔的包含在大括号中的ObjectTypeKeywords子列表组成。总共不能超过7个参数。外部指令通知ASL编译器该对象声明在此表的外部,因此不会为未声明的对象生成错误。ASL编译器将在名称空间中的指定位置创建外部对象(如果指定了对象的完整路径),或者将在外部术语的当前范围创建对象。对于外部控制方法,ASL编译器可以发出一个包含方法名称和所需参数数量的外部AML操作码。AML反汇编程序可以使用此信息将AML正确地反汇编为正确的ASL代码。当需要的范围和对象在主DSDT中声明时,External特别适合在辅助SSDTs中使用。
6、DMA(DMA资源描述宏)
DMA (DmaType , IsBusMaster , DmaTransferSize , DescriptorName) {DmaChannelList} => Buffer
参数:
DmaType指定DMA循环的类型:ISA compatible (Compatibility)、EISA type A (TypeA)、EISA type B (TypeB)或EISA type F (TypeF)。自动创建2位字段DescriptorName . _typ来引用资源描述符的这一部分,其中“0”表示兼容性,“1”表示TypeA,“2”表示TypeB,“3”表示TypeF。
IsBusMaster指定该设备是否可以生成DMA总线主周期(bus master) (NotBusMaster)。如果没有指定任何内容,则假定是BusMaster。自动创建1位字段DescriptorName . _bm来引用资源描述符的这一部分,其中“0”不是BusMaster,“1”是BusMaster。
DmaTransferSize指定设备能够生成的DMA周期的大小:8位(Transfer8)、16位(Transfer16)或8位和16位(Transfer8_16)。2比特字段
DescriptorName。自动创建_SIZ来引用资源描述符的这一部分,其中' 0 '是Transfer8, ' 1 '是Transfer8_16, ' 2 '是Transfer16。
DescriptorName是一个可选参数,它为一个整型常量指定一个名称,该整型常量将在当前作用域中创建,该作用域包含当前资源模板缓冲区中此资源描述符的偏移量。预定义的描述符字段名可以附加到这个名称中,以便通过缓冲区字段操作符访问描述符中的各个字段。
DmaChannelList是一个以逗号分隔的整数列表,范围从0到7,指定设备使用的DMA通道。列表中可能没有副本。
描述:
DMA宏计算为一个包含DMA资源描述符的缓冲区。
7、IRQ/IRQNoFlags(中断资源描述宏)
IRQNoFlags (DescriptorName) {InterruptList} => Buffer
参数:
DescriptorName是一个可选参数,它为一个整型常量指定一个名称,该整型常量将在当前作用域中创建,该作用域包含当前资源模板缓冲区中此资源描述符的偏移量。
InterruptList是一个逗号分隔的整数列表,范围从0到15,至少需要一个值。IRQNoFlags宏计算到包含高有效、边缘触发的IRQ资源描述符的缓冲区的列表描述中可能没有重复。IRQ描述符的格式可以在IRQ描述符中找到(第383页)。宏生成描述符的双字节形式。
IRQ (EdgeLevel, ActiveLevel, Shared, DescriptorName) { InterruptList } => Buffer
参数:
EdgeLevel描述中断是边缘触发(edge)还是电平触发(level)。
ActiveLevel描述中断是高有效还是低有效
Shared描述中断是否可以与其他设备共享(共享)(独占),以及它是否能够将系统从低功耗空闲状态或系统休眠状态(SharedAndWake或Exclusive andwake)中唤醒。
DescriptorName是一个可选参数,它为一个整型常量指定一个名称,该整型常量将在当前作用域中创建,该作用域包含当前资源模板缓冲区中此资源描述符的偏移量。预定义的描述符字段名可以附加到这个名称中,以便通过缓冲区字段操作符访问描述符中的各个字段。
InterruptList是一个逗号分隔的整数列表,范围从0到15,至少需要一个值。列表中可能没有副本。
描述
IRQ宏计算为包含IRQ资源描述符的缓冲区。
8、Processor(申明处理器)
Processor (ProcessorName, ProcessorID, PBlockAddress, PblockLength) { TermList }
参数:
声明一个命名处理器对象ProcessorName。处理器打开名称作用域。每个处理器都需要有一个惟一的ProcessorID值,该值与任何其他ProcessorID值都是惟一的。对于系统中的每个处理器,ACPI系统固件在\_SB范围内的任何名称空间中声明一个处理器对象。为了与实现ACPI 1.0的操作系统兼容,处理器对象也可以在\_PR范围下声明。与acpi兼容的命名空间可以在\_SB或\_PR范围内定义处理器对象,但不能同时在这两个范围内定义。
PBlockAddress为处理器寄存器块提供系统I/O地址。每个处理器可以提供不同的地址。
PBlockLength是处理器寄存器块的长度,以字节为单位,为0(对于没有P_BLK)或6。除了一个例外,所有处理器都必须具有相同的PBlockLength。例外情况是,当所有其他处理器的PBlockLength都为零时,引导处理器的PBlockLength可以是非零的。对于每个处理器,PBlockLength为0是有效的。
TermList是一个可选列表,它可能包含任意数量的ASL对象。TermList中包含的特定于处理器的对象包括_PTC、_CST、_PCT、_PSS、_PPC、_PSD、_TSD、_CSD、_PDC、_TPC、_TSS和_OSC。只有在在\_SB范围内声明处理器对象时,才能指定这些特定于处理器的对象。
可选处理器对象列表被编码为TermList,因此可以根据系统设置描述动态处理器对象列表,而不是描述静态处理器对象列表。
|Archiver|手机版|小黑屋|个人研发笔记
京ICP备18037383号-1
GMT+8, 2022-6-28 04:52
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.