[edk2-devel] [edk2-discuss] Google Summer of Code 2021 interested student

Nate DeSimone nathaniel.l.desimone at intel.com
Tue Mar 23 00:23:05 UTC 2021


Hi Ayush,



Great to meet you and welcome to the TianoCore project! Glad you hear you are interested! Sorry it has taken me a while to get back to you. I completely agree that the codebase is rather large and navigating it can be a challenge if you don’t know where to start. Let’s take a couple of steps back and talk about the architecture of UEFI system firmware in general. At a high level, there are three pieces of code needed to create a complete UEFI firmware solution: Core, Silicon, and Platform.



[UEFI Firmware Building Blocks]



While the core code (aka EDK II) has been open source for many years, historically the platform and silicon code have not been. EDK II leaves a lot of functionality to platform code and the implementation of that is largely left as an exercise for the user. Historically only a Qemu example was given in the form of OvmfPkg. The lack of open source platform code in particular has led to large amount of inconsistency between implementations and has been a hinderance to the development of open source UEFI firmware in general.



MinPlatform intends to bring more consistency to the platform code by decomposing it into smaller more reusable pieces. Under the MinPlatform Architecture, platform code is further sub-divided into MinPlatform, Advanced Features, and Board. Under the new design, both Advanced Features and MinPlatform are reusable. Only the board code remains specific to the motherboard being used. The board code provides the glue that connects the generic advanced features with the chipset being used and any motherboard specific details required.



[cid:image002.png at 01D71F40.03CF6350]



How the silicon code is provided varies depending on the silicon vendor. Typically, silicon code is a mix of open source and closed source. We have open source silicon code from several vendors in https://github.com/tianocore/edk2-platforms/tree/master/Silicon. The closed source silicon code is provided using differing mechanisms that vary by vendor. For example, Intel provides the silicon code using FSP binaries (Firmware Support Package). AMD provides the equivalent using AGESA. ARM SoCs typically use ARM Trusted Firmware (TF-A) to provide silicon code.



To help you get an environment set up, you can try using the EdkRepo tool. I have pre-built binaries available here: https://github.com/nate-desimone/edk2-staging/releases/tag/EdkRepo-preview-2020-10-09



Installation instructions are available here: https://github.com/tianocore/edk2-edkrepo



After you have edkrepo installed, you can set up a MinPlatform development environment by running: edkrepo clone min Intel-MinPlatform



From there, you can try building one of the existing MinPlatform boards using https://github.com/tianocore/edk2-platforms/blob/master/Platform/Intel/build_bios.py Detailed build instructions are available here: https://github.com/tianocore/edk2-platforms/tree/master/Platform/Intel#windows-build-instructions



In general, the build system starts with a single DSC file which can (and often does) include several other DSC, INF, FDF files. This provides a full description of all the UEFI modules to build and any firmware volumes that need to be constructed. Every OpenBoardPkg has a *OpenBoardPkg.dsc file that provides this initial starting point for the build.



As far as skills needed, the most important one is a strong understanding and comfort with the C programming language.



Finally, given that there seems to be a large amount of interest in the QemuOpenBoardPkg task, I would recommend that anyone interested in that task write up another proposal for an alternate task that is also interesting. It seems likely that we will get more than one application for the QemuOpenBoardPkg task and we can only pick one.



Hope this helps and welcome to the project!



With Best Regards,

Nate



> -----Original Message-----

> From: discuss at edk2.groups.io <discuss at edk2.groups.io> On Behalf Of

> Ayush Dwivedi

> Sent: Wednesday, March 17, 2021 1:10 PM

> To: discuss at edk2.groups.io

> Subject: [edk2-discuss] Google Summer of Code 2021 interested student

>

> Hello everyone,

> My name is Ayush Dwivedi. I am currently studying Computer Science and

> Engineering and am in my 3rd year of B.Tech program. I am interested in

> operating systems, firmwares and game programming. I have written some

> personal projects in C and C++ programming languages and have

> experimented with x86_64 assembly. Recently I have been using QEMU with

> the OVMF UEFI firmware which I had built from source using edk2. I have

> tried to write my own EFI applications(it was an attempt to understand how

> UEFI differs from BIOS). I wish to be a part of the TianoCore community and

> want to contribute. I would like to know what skills and knowledge is needed

> for the task "MinPlatform Qemu Support". It is explained that we are needed

> to port MinPlatform to QEMU so as of now I have started looking into the

> OvmfPkg(since it already runs on QEMU) and Platform/Intel/MinPlatformPkg

> but the source tree for edk2 and edk2-platform is huge so I am confused on

> how and where I should start. I am looking forward to guidance from the

> community.

>

> Thank you for your precious time.

>

> Regards,

> Ayush Dwivedi

>

>

> 

>




-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73152): https://edk2.groups.io/g/devel/message/73152
Mute This Topic: https://groups.io/mt/81540438/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20210323/7ed73039/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 129038 bytes
Desc: image001.png
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20210323/7ed73039/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 110211 bytes
Desc: image002.png
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20210323/7ed73039/attachment-0001.png>


More information about the edk2-devel-archive mailing list