CSME 算是 Intel X86 PC 上最神秘的部分了,本文根据 us-19-Hasarfaty-Behind-The-Scenes-Of-Intel-Security-And-Manageability-Engine 一文写成。讲述内容无法证伪,各位随便听听即可,了解这些能够帮助BIOS 工程师更好的理解一些操作的实现。文章基于 Intel 第八代第九代CPU(Coffee Lake 和 Whiskey Lake)进行描述。
In this position, you will be part of the Firmware Integration and Validation (FIV) Team within SATG responsible for UEFI Firmware/BIOS quality assurance on Intel server platforms. Behavioral traits for this position include: validation infrastructure and test case development, in-depth bug investigation and fix, good communication and problem solving skills, multi-tasking, self-motivation and the ability to collaborate with internal/external stakeholders.
The candidate’s responsibilities will include but not limit to:
Design and develop framework and utility for IP/module level validation according to module specifications, such as PRD, HAS etc;
Be responsible for test case development according to product requirement for server BIOS;
Be responsible for the test execution on Intel server platform for BIOS and platform FW test;
Work with team members to investigate test failures using variety of debug tools to perform evaluation of the issue and identify the failure to component or code level;
Be responsible for developing and sustaining the automation test framework, test scripts and utilities; deploy and maintain automation test cases, analyze test reports and logs.
Qualifications:
The candidate should possess a Master or a Bachelor degree in computer science, Computer Engineering or a related field, with at least 5 years industrial experience on BIOS development or testing. Additional qualifications include:
Solid knowledge of BIOS and UEFI Firmware;
Deep understanding of server architecture of both HW and SW;
Deep understanding of industry specification such as UEFI/ACPI/SMBIOS/TPM/etc;
Software development skills with different programming languages include but not limited to: C/C++/C#, Python, Windows Batch Script, JavaScript, etc;
Solid experience of software testing process and methodologies;
Skilled in BIOS test case development and issue debugging;
Good English communication skill in reading and writing, good speaking capability;
Knowledge of Linux Kernel or device driver development is a plus.
除了SPD 中给出的参数,在内存初始化时,CPU 还需要有针对性的获得一些参数,而这些参数和生产制造环境温度等等情况有关系(听起来时玄学)。因此,在开机的时候内存控制器会进行一个 Memory Training 的动作。比如,当前内存槽上有2根内存,但是因为线长的原因,同样的信号到达内存的时间不同。在开机的时候,内存控制器就发出一个信号分别给两个内存,内存收到信号后发送一个应答。根据回复的时间不同,内存控制器可以取得一个能够让两个内存都工作正常的时序。当然,这里只是非常粗略的介绍,实际上这个过程非常复杂,耗时也会很久。而Training完成后,BIOS会将取得的参数保存在SPI NOR 上。这也是为什么第一次刷过BIOS之后开机要很久的原因。
一些情况下,我们希望强制进行 Memory Training,通常的方法是进行 Clear CMOS。这次提供了一个 Windows 工具,运行之后重启,SoC 即会进行完整的 Memory Training。