Is the graphical hardware/CPU settings UI on UEFI mainboards an UEFI application (in the sense of the spec)? - uefi

In the last weeks I studied the UEFI spec, tianocore/edk2, and built + booted edk2/OVMF in QEMU. UEFI knows about UEFI applications (section 2.1.2 UEFI Application). I know that examples for UEFI applications are boot managers and (OS-specific) boot loaders, that benefit from the UEFI boot time services (very basic OS-like system, with allocator etc.).
I'd love to know: The regular end consumer understands UEFI as the "nice graphical settings interface where you can use your mouse and click around to change CPU clock settings, RAM timings, and other hardware information" on their (gaming PCs) mainboard.
From a technical aspect: Is this settings menu an UEFI application that uses UEFI boot time services?
Is there any example code for such an application on Github?

Yes these applications are UEFI applications following the specification, take a look at project mu for sample code.

Related

How are BSP and U-Boot different for an embedded dev board?

I am new to embedded world and trying to understand the difference between a BSP (Board Support Package) and U-Boot utility. My understanding is that both of them reside on ROM area of the target board. When the board's power is turned ON then first the processor control goes to U-Boot that initializes the board peripherals as well provide boot parameters for the OS to boot-up.
When the OS is launched it needs the BSP to communicate to the board's peripherals.
Is this correct understanding or am I missing something here?
Das U-Boot is a bootloader. It is a piece of software which runs when you turn on the processor. It's job is to load the main software and get it ready to start.
A board support package is all the software that you need to run software on one particular board which is different from what you would need to run on a different board.
A BSP might include a boot loader and that boot loader might be u-boot. If the processor on the board does not need a bootloader or it is pre-programmed in ROM then the BSP might not include a boot loader.
The BSP will also include various other things such as header files or a device tree to tell you which peripherals are connected to which ports and pins, and maybe drivers for those peripherals.

How do I develop an UEFI application using the network packages?

I see GNU EFI is a tool chain to compile applications, but it doesn't seem to come with many libraries.
Tianocore EDK2 comes with a lot of code, with modules and drivers that I'm still figuring out. By default, it builds a full firmware image that I use as a BIOS.
What I need to do is, develop a network-capable application that will query a server for boot instructions, and then prepare the next steps. The idea is to control the boot process from the management server, so the client should be able to follow the instructions to boot from TFTP, or from local storage, or update local storage etc.
You have two main options for writing UEFI network applications.
Managed Network Protocol has the firmware trying to autoconfigure your network and download files as appropriate via TFTP/PXE or HTTPS.
Simple Network Protocol gives you raw access to a packet interface if you want to handle things yourself.

How kernel provides services to other parts of operating system?

I went through the definitions of kernel on internet and i saw in many definitions that kernel provides services to other parts of OS.
What do they mean by kernel provides services to other parts of OS.
Can anyone explain with some valid example.
Thanks in advance.
kernel provides services to other parts of OS.
By "others" they mean parts of OS which works in user space (non-priveledged code). Among them are:
Libraries, provided by OS and used by 3d party applications (or 3d-party libraries).
Frameworks, e.g. one provided windows subsystem.
Applications (executables) provided by OS itself. E.g. cd command.
If any of those component needs a help from the kernel, it uses one of the kernel's service. Usually, kernel's service is provided via syscall mechanism.

What is the difference between standalone and desktop application?

I searched it a lot, I found everyone saying that standalone application does not require operating system services but how a software can function without using operating system services. Like if you take NetBeans , even the platform independent version of NetBeans ultimately takes the operating system services in backend.
Moreover if we talk about notepad, is it a standalone or desktop application.
Is eclipse(an IDE) a standalone or desktop application.
Please help I am really confused
From the wikipedia article
A stand-alone program is a computer program that does not load any
external module, library function or program and that is designed to
boot with the bootstrap procedure of the target processor
So to answer your question about netbeans or notepad both of them definitely requires some OS intervention to run. In order to write your standalone application you will need to rewire a bunch of low level stuff including the loader. The nuisances involved are usually not worth the benefit they achieve in era of modern programming frameworks and ever growing faster hardware. The same wiki article mentions that standalone applications are almost extinct now
but how a software can function without using operating system services
Well to function, the software will just need to mimic some of the operating system services it requires. some device drivers do exactly that. Though the definition of standalone programs is itself fuzzy, some embedded softwares tend to fall in the category of the definition from the wiki page.

Operating System configuration parameters in ERP-CRM systems?

I'm searching for information about "Operating System configuration parameters in ERP, CRM systems: definition, types and use".
I can't figure out what these configuration parameters are, since I have searched in Spanish and English and I cannot find anything.
The only thing I could find was about:
Server connection
DB access
Language configuration
Country localization files
I've nothing to contrast this info, so I would appreciate if someone tells me what this term refers to, because these items don't seem like Operating System parameters to me. When I think about Operating System parameters, I think in PATH and similar stuff.
Though in general terms Operating System means
An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. The operating system is a component of the system software in a computer system. Application programs usually require an operating system to function.
The actual definition in your context mostly refer to the Operating Environment
In computer software, an operating environment or integrated applications environment is the environment in which users run application software. The environment consists of a user interface provided by an applications manager and usually an application programming interface (API) to the applications manager.
An operating environment is usually not a full operating system but is
a form of middle-ware that rests between the OS and the application.
This is the reason you found the answers relating to
Server connection
DB access
Language configuration
Country localization files
Database Server
Server OS
and similar topics as that actually is the Operating environment in context of applications like CRM,ERP etc.
Hope that helps.