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

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.

Related

Raspberry I2C IPMB Interface with device tree for IPMI debugging

I try to debug and test a BMC over the I2C interface of an raspberry(4).
So I simply want to send IPMI commands over IPMB to a microcontroller for debugging.
I write the code for a BMC and there a great tool for testing the communication would be also great.
My idea was to use ipmitool which actually needs a IPMI/IPMB interface to communicate.
I tried to build a new Linux kernel with the needed modules but couldn't get a usable device under/dev/.
Now I've seen on the Kernel page that I'd need to load a devicetree with the IPMB interface over the I2C bus. Can someone tell me how to create a dts file for the I2C hardware?
But at all an other solution for debugging would also be helpfull.
Thanks!

configure already deployed yocto build / flashing os with wifi

I got my hands on an already deployed yocto system (yocto 2.6.2 - thud) on a board with a NXP i.MX 6UL Cortex-A7. My only possible access at the moment is via wifi. I have access as root via wifi with ssh. The board is embedded into a case which I can't open. So no physical access to that board - just wifi.
My further intention is to setup/deploy/flash my own OS (yocto/debian/etc.) onto this board, but I have no proper knowledge to do so...
Is it even possible to flash a new image only with wifi access?
Which step is the next one I should consider?
Are there any documentations to start with?
Thanks
From your comments, I mention that you have the Variscite DART-6UL module. The producer of your module provides a wiki with lots of information and tutorials on how to start work with. Variscite DART-6UL Wiki
How to build your yocto system
Ready solution for update - SWUpdate Guide
Using SWUpdate is the easiest way to achieve updates for your module.
Custom solution:
Another way is to develop your own mechanism. In this case, you can do developed all processes and make them fully automatic, but it is complicated and required knowledge and experience.
For development boot from the server
For the development time, it can be useful to use booting from TFTP/NFS server. More information here
Other help sources:
Yocto Project - System Update
SWUpdate: software update for
embedded system
Updating Embedded Linux Devices: SWUpdate

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

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.

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.

Burning the image generated by building the freeRTOS onto raspberry pi

I have build it using this git-hub repo https://github.com/jameswalmsley/RaspberryPi-FreeRTOS
Then pasted the kernel.img generated by building the freeRTOSto the sd card which earlier contained raspbian, replacing its existing kernel.img file.
But this doesn't seem to work. I connected my raspberry pi to a monitor and it displays a colored screen.
Is there any fix for this?? Please help
Copying and pasting a .img file will not boot the OS.
You will first need to create an MBR (master boot record) on your SD card using a tool like RUFUS https://rufus.akeo.ie/
Then, you will need to use the win32 disk imager tool to write the file to your SD card. https://sourceforge.net/projects/win32diskimager/files/latest/download
Then you can boot the SD card.
DISCLAIMER::
Whilst I have done my best to ensure that the links provided are for the programs I have described, please understand that I am not responsible for the content hosted on these sites. By extension, I am not liable to any damage caused by the sites or programs themselves.