Efficient Yocto development and OTA updates
There are some special considerations if you want to get efficient Yocto development and your OTA update system. The most important is managing the time it takes to build the whole image when using the Mender client with Yocto. Even when making a one line change somewhere, it will take at least 2 minutes to get the new image. If your team is doing a lot of iterations to the image, then two minutes per iteration is quite a lot to just sit around and do nothing. Our recommendation is to develop your application so that it is cross platform in such a way that you can run the application on your computer and do as much of the debugging and, you know, testing and everything there. So that you can save only like the very last integration pieces to do on the Yocto hardware.
Keep Yocto development separate
For the most part, then you can keep your Yocto team and your developer team separate. We are not necessarily saying you should do it but you can do it. The value of developing like this is that you can run it in multiple environments and only the Yocto specific issues will need to be addressed by the Yocto team. The developer team can concentrate on the rest of the issues without being bogged down by all this knowledge that you need to have about Yocto.
Firmware updates separate issue to Yocto
Updating firmware is always difficult. And this is one of the reasons why I stated earlier that I would go for a popular board such as Raspberry Pi or a Beaglebone Black. Because at some point you're going to run into having to do this and the more popular with the board the less chance that you're going to have a problem with this. And they're almost all non-standard. So it's like you If the vendor is bad at providing documentation or something, you could be in trouble by selecting an obscure board.
Flashing options in your Yocto considerations
You will have flash to the drive. There's three ways to do this. The one we use is DD - the Linux command line tool. Another very popular one is Etcher from Balena which is most suitable for beginners. The third, and most advanced tool to perform flashing using Uboot, which is the most difficult, but it's also the only one that is suitable for flashing things in the field. Whether using Yocto or Ubuntu, you must plan to have a capability for flashing the image to the device. This is something that you must plan for in advance.
Size benefits with Yocto embedded Linux
Size is another factor to consider such as binary updates, for example. They are not strictly related to Yocto, but it is easy to do them with Yocto. If you are updating a Yocto image with Mender also, you won't want it to query the server too much either because you want to save battery. You will also want to save bandwidth and Mender offers good support for this through Delta Updates. Spacing out your queries is a key strategy, so that you perform updates for your Yocto images the minimum amount of times necessary.
Consider reading these articles on Yocto: