Community
cancel
Showing results for 
Search instead for 
Did you mean: 
idata
Community Manager
1,917 Views

Updating the Capsule image from the UEFI shell failed with divide error exception

Hello All,

I was trying to update Capsule image from the Uefi shell according to the document "Intel® Quark™ SoC X1000 Board Support Package (BSP) Build and Software User Guide" section 10.2.

It got succeeded in Galileo 2 reference board but failed on my custom board with below error.

Evaluate DXE DEPEX for FFS(93B80004-9FB3-11D4-9A3A-0090273FC14D)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(E2775B47-D453-4EE3-ADA7-391A1B05AC17)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(BDFE430E-8F2A-4DB0-9991-6F856594777E)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(4ACA697E-F883-446F-98F7-096416FFFFFF)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(240612B7-A063-11D4-9A3A-0090273FC14D)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(2D2E62CF-9ECF-43B7-8219-94E7FC713DFE)

All UEFI Services Available = FALSE

RESULT = FALSE

Evaluate DXE DEPEX for FFS(2D2E6!!!! IA32 Exception Type - 00(# DE - Divide Error) CPU Apic ID - 00000000 !!!!

EIP - 3F8DA64C, CS - 00000010, EFLAGS - 00000246

EAX - 9000B000, ECX - 9000B000, EDX - 00000010, EBX - 00000042

ESP - 3F8C6DDC, EBP - 3F8C6EEC, ESI - 00000022, EDI - 3F8C6E0C

DS - 00000008, ES - 00000008, FS - 00000008, GS - 00000008, SS - 00000008

CR0 - 00000013, CR2 - 00000000, CR3 - 00000000, CR4 - 00000000

DR0 - 00000000, DR1 - 00000000, DR2 - 00000000, DR3 - 00000000

DR6 - FFFF0FF0, DR7 - 00000400

GDTR - 3F825E90 00000047, IDTR - 3F558010 000007FF

LDTR - 00000000, TR - 00000000

FXSAVE_STATE - 3F8C6B20

!!!! Find PE image c:\varalaxmi\Build\capsule\DEBUG_VS2012x86\IA32\MdeModulePkg\Core\Dxe\DxeMain\DEBUG\DxeCore.pdb (ImageBase=3F8C7000, EntryPoint=3F8C7260) !!!!

Attached the full log below.

Regards,

Varalaxmi

8 Replies
idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Thank you for contacting us. I understand from your case that the Capsule image file you programmed on the Galileo, doesn't work on you custom board, is this correct? We reviewed the file you attached, but, unfortunately, it doesn't provide us any clues of what might be wrong with your setup. Could you explain in more detail how you build this file, which steps you followed from the BSP and any configuration specific to your custom board? Also, are there major hardware differences on your design in comparison to the Galileo? The more information we have, the easier it'll be for us to help you.

 

 

We'll be waiting for your response.

 

 

Regards

 

-Sergio A

 

idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Do you still need assistance with this thread? If you still do, please respond with the information we requested above.

 

We'll be waiting for your response.

 

 

-Sergio A

 

idata
Community Manager
159 Views

Hi Sergio,

Sorry for the late reply.Yes your analysis is correct.

Build procedure:

build -a IA32 -t VS2012x86 -p QuarkPlatformPkg\Quark.dsc -D CAPSULE_ENABLE

Update procedure:

1.upgrade the board latest quark.fd

2.copied CapsuleApp.efi and QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap to drive

3.executed the below command

CapsuleApp.efi QUARKFIRMWAREUPDATECAPSULEFMPPKCS7.Cap

Hardware changes:

these days i did investigation on this issue.I found some clue that we did not connected RTC on our Quark but Capsule update utility is using these RTC on persistant capsule writes to do S3.

in this file QuarkSocPkg/QuarkNorthCluster/Library/ResetSystemLib/ResetSystemLib.c

in function

EnterS3WithImmediateWake()

{

//Pograming RTC alarm for immediate WAKE

}

in this file we are using that RTC wake event

"QuarkSocPkg/QuarkNorthCluster/Library/IntelQNCLib/IntelQNCLib.c

in function

QNCCheckS3AndClearState()

{

// Detect the actual WAKE event(it got failed and return false)

}

If above function returns false than it will skip the "boot mode flash update" which is basic requirement to upgrade the flash with new image and failed to update the flash with the new image.

The above is the major change i found and remaining all are same.

Please help me to analyze this issue.i got struck at this issue from many days.

Regards,

Varalaxmi

idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Thank you for providing the information we requested. We'll do some research before posting our suggestion. We'll reply back as soon as we have an update.

 

 

Regards,

 

-Sergio A

 

idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Thank you for your patience. We now have some updates for this case. First, we want to clarify comment we found to be somewhat misleading:" I found some clue that we did not connected RTC on our Quark, but Capsule update utility is using these RTC on persistent capsule writes to do S3." Our guess is that you found S3 using the RTC code and your board is not using RTC, so it may be causing this problem. Would you please clarify?

 

 

Also, from your log attached above it seems that it's very different from a non modified BSP log.

 

Could you use an unmodified UEFI debug version image and update the Capsule on both your custom board and on the Galileo Gen 2? Capture the logs on both boards and attach them to the case. That way it'll be easier to compare the logs and hopefully find a clue as to what the problem may be.

 

 

We'll be waiting for your response.

 

 

-Sergio A

 

idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Do you still need assistance with this thread?

 

 

-Sergio A

 

idata
Community Manager
159 Views

Hello Sergio,

I found some work around and it is working fine now.Thanks for your support.

Regards,

Varalaxmi

idata
Community Manager
159 Views

Hi Varalaxmi,

 

 

Thanks for letting us know you managed to solve this issue. Feel free to contact us again if help is needed, we'd be happy to assist you.

 

 

Regards,

 

-Sergio A

 

Reply