《UEFI内核导读》之ACPI编程入门 第5章:对象(Object)

本文介绍了ACPI/ASL中的对象(Object)概念,包括对象的组成、创建方法及类型,如Package、Integer、Buffer和String。通过示例展示了对象的创建过程,并提及了对象运算和类型转换,支持类似C语言的运算符。同时,提到了ACPI/ASL的类型转换规则。



固件C字营·版权所有

敬请关注微信公众号:“固件C字营”

===================================================================== 

第5章:对象(Object)

        ACPI/ASL使用Name ( ObjectName, Object )算子在全局ACPI名字空间(Global ACPI namespace)创建一个对象,对象名为ObjectName,该对象名是对“Object”的引用。对象由三部分组,对象(Object)定义为:Object := ObjectType FixedList VariableList,其中FixedList与VariableList是可选项。

ObjectType:用来区别对象类型,一共有0~16种类型,如Buffer,Package。

FixedList:可以被嵌套的由“对象类型”确定列表长度的固定长度的列表如:(a,, b, (q, r, s, t), d),

         也可以保留“,”省略列表中的具体内容项,“省略项“会依据对象类型初始化成不同的默认值。

VariableList:可以被嵌套定义的非固定长度的列表,如:{x, y, z, aa, bb, cc }

  • 创建对象(变量)

1.创建Package类型的对象

        Name (\PTTX,  Package () {Package () {0x43, 0x59}, Package) {0x90, 0xFF}})

2.创建整形类型对象

           Name (XXXX, 0)

           Name (YYYY, 1)

           Name (ZZZZ, 2)

3.创建Buffer类型对象

        Name (TMP1, Buffer(256) {0x00})

4.创建String类型对象

        Name(_HID,"ACPI0C0A")

  • 对象(变量)运算

ACPI/ASL(2.0)支持类似于C语言的各种运算算子:+、-、*、/、%、<<、>>、&、|、^、~、++、--、&&、||、~、!、+=、/=、%=等操作符,语义根C语言一致,支持2.0和1.0算子混合编程。

ZZZZ=XXXX+YYYY       //加法运算,等价Add(XXXX, YYYY, ZZZZ)

ZZZZ=XXXX*YYYY        //乘法运算,等价Subtract(XXXX, YYYY, ZZZZ)

  • 对象类型转换。

ACPI/ASL支持两种类型转换方式,分别是“显式类型转换”和“隐式类型转换”,不同的算子类型和操作数类型,转换规则不完全相同。

固件C字营·版权所有

敬请关注微信公众号:“固件C字营”

```markdown [ 0.270733 ] ACPI BIOS Error (bug ): Failure creating named object [ \_SB.PC0 0.X HCI.RHUB .SS08._UPC], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270735] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) [ 0.2 70737] ACPI BIOS Error (bug): Failure creating named object [ \ _SB.PC00.X HCI .RHUB.SS08._ PLD], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270738] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) [ 0.2 70758] ACPI BIOS Error (bug): Failure creating named object [ \ _SB.PC00.X HCI .RHUB.SS09._ UPC], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270759] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) [ 0.2 70761] ACPI BIOS Error (bug): Failure creating named object [ \ _SB.PC00.X HCI .RHUB.SS09._ PLD], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270763] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) [ 0.2 70782] ACPI BIOS Error (bug): Failure creating named object [ \ _SB.PC00.X HCI .RHUB.SS10._ UPC], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270784] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) [ 0.2 70786] ACPI BIOS Error (bug): Failure creating named object [ \ _SB.PC00.X HCI .RHUB.SS10._ PLD], AE_ALREADY _EXISTS (20 210730/dswload 2-326) [ 0. 270788] ACPI Error: AE_ALREADY _EXISTS, During name lookup /catalog (2 0210730/psobject -220) /dev/n vme0n1p7: clean , 251866/32 83200 files , 5392330/1 3107200 blocks [ 3.091164 ] ```中文告诉我这是什么意思?如何解决?
07-01
[ 0.2427231 ACPI BIOS Erro(bug) Could nat resoive symbo1 se.PC10.0P18.S ATA1, AE_NOT_FOUND (20210730/dsw1ad2-162) ] 0.2427361 ACPI Err ENOFOUND,uing name 1ookup/catalog (20210730/ps object-220) ] 0.2496071 ACPI BIOS Error (bug) Failure creating named object s.PcIo PP6.WLAN._DSMI,E_ALREADY_EXISTS(20210730/dsw1oad2-326) [ 0.249614] ACPI Error: AE_ALREADY EXISTS,During name 1ookup/catalog (20210730/psobject-220) ] 0.250167] ACPI BIOS Error (bug): Failure creating named object s.PCIo.G PP6_SON],E_ALREADY_EXISTS(20210730/dswload2-326) ] 0.250173] ACPI Error: AE_ALREADY EXISTS,During name lookup/catalog (20210730/psobject-220) ] 0.250181] ACPI BIOS Error (bug): Failure creating named object _SB.PCIoG PP6.HLAN PCICI,AE_ALREADY_EXISTS(20210730/dswload2-326) [ 0.250186] ACPI Error:AE_ALREADY EXISTS, During name lookup/catalog (20210730/psobject-220) 0.250191] ACPI BIOS Error (bug): Failure creating named object [S.PCIO.G PP6.HLAN.DVID],AE_ALREADY EXISTS(20210730/dsfield-637) [_SB.PCIO.G 0.250196] ACPI BIOS Error (bug): Failure creating named object ] PP6 WLANDDIDI,AE_ALREADY_EXISTS (20210730/dsfield-637) L 0.250203] ACPI BIOS Error (bug): Failure creating named object [V_SB.PCIO.G PP6.HLAN.SOWJ,E_ALREADY_EXISTS(20210730/dswload2-326) ] 0.250208] ACPI Error:AE_ALREADY_EXISTS, During name lookup/catalog (20210730/psobject-220) /dev/sda4:clean, 390990/19464192 files, 8168763/77831004 blocks 11 4.214925] 4.240487] mt7921e 0000:02:00.0: ASIC revision: 79610010 4.521033] mt7921e 0000:02:00.0 Firmware init doe
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值