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

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.

Related

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

Leshan connect to server and cloud

I have the task of implementing iot device management using Eclipse Leshan. I have difficulty understanding how Eclipse Leshan works in connecting IOT sensors with servers and cloud. Is it true if I declare that Eclipse Leshan does not require a gateway like Eclipse Kura to connect into server and cloud?
Does anyone know where the complete documentation about Eclipse Leshan is? it would be very helpful if there were examples of programs in implementing the eclipse leshan.
Thank you
Eclipse Leshan is a library for implementing applications that use the LWM2M protocol to manage devices. As such, your application can use Leshan's Java API in order to interact with devices that also support LWM2M.
LWM2M does not per se mandate a transport protocol. However, the spec is written assuming that CoAP over UDP is used for that purpose. In fact, the LW in LWM2M stands for Lightweight and as such, using CoAP as the transport protocol makes a lot of sense for managing constrained devices.
Eclipse Leshan itself does not connect to a server or cloud but instead is usually part of an application that is hosted on a server (on the cloud). However, you need to implement that application yourself because Leshan, as indicated above, is just a library. The devices then interact with your LWM2M enabled application. Because CoAP/UDP uses standard IP, this interaction can occur over public internet infrastructure if desirable in your use case, i.e. no gateway is necessarily needed. You can, however, also connect your devices to a local gateway, e.g. Kura, and then connect the gateway to your LWM2M server in the cloud instead. It really depends on your use case and the capabilities of the devices.

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.

How to set up an IDE on a remote server?

Im interested in doing some development from my iPad, and one idea I had would be to code from the safari browser. Does anyone know of a way to set up eclipse on a cloud-based server, so that it can be accessed from a browser?
I believe, you will need the following parts to make it work
The cloud server must be based on one of the supported Eclipse Target Environments.
The cloud server provider must support UI based on some sort of remote desktop - e.g. VNC. Be aware that many cloud providers does not allow UI.
iPad must support the same remote desktop technology. There seem to be many VNC implementations for iPad...
I guess the difficult part is to find a cloud server to use. Though you, as an alternative, could use any PC with an VNC server where you have Internet access...

Oracle access from iOS

I'm developing an iPad app that needs read-only access to an Oracle database.
Is there any way to do this? As far as I can see, the only options are using OCI, which requires a prebuilt binary in the form of the instant client (and not built for ARM), or OJDBC drivers. Both of these seem to be out of the question.
In my research I have discovered that libmysqlclient compiles for arm with minimal tuning. This is a stretch, but is there any possible way to use this to my advantage?
I have seen this product providing odbc connectivity through the use of a Windows gateway machine using the ODBC client libraries, but this solution really isn't an option for me at the present time.
Any ideas?
At the very bottom, there are only two libraries for accessing Oracle:
The OCI binary library.
The Java OJDBC Jar file.
All other libraries (such as ODBC, ADO.NET) build upon one of these libraries (usually on OCI).
There's no OCI library for the iPhone (or any ARM architecture as far as I know) and there's no Java VM to use OJDBC. So you cannot directly connect from the iPhone to an Oracle database.
So whatever your solution will be, it'll require an intermediate server (or gateway).
While I did end up using an intermediary server... I have since realized that this isn't strictly necessary. Direct access should be obtainable by using the OJDBC drivers directly on iOS using gcj to compile them for ARM. Since Objective-C is a superset of C, you could use JNI for communication to and from. Hope this helps anyone who comes here :)
Direct access to an Oracle database from iOS is not possible as of this moment. Exchanging data with an Oracle database by means of web services is fairly simple. You can use APEX for this, lean and mean.