Become a leader in the IoT community!

New DevHeads get a 320-point leaderboard boost when joining the DevHeads IoT Integration Community. In addition to learning and advising, active community leaders are rewarded with community recognition and free tech stuff. Start your Legendary Collaboration now!

Step 1 of 5

CREATE YOUR PROFILE *Required

Change Email
OR
Step 2 of 5

WHAT BRINGS YOU TO DEVHEADS? *Choose 1 or more

Collaboration & Work 🤝
Learn & Grow 📚
Contribute Experience & Expertise 🔧
Step 3 of 5

WHAT'S YOUR INTEREST OR EXPERTISE? *Choose 1 or more

Hardware & Design 💡
Embedded Software 💻
Edge Networking
Step 4 of 5

Personalize your profile

Step 5 of 5

Read & agree to our COMMUNITY RULES

  1. We want this server to be a welcoming space! Treat everyone with respect. Absolutely no harassment, witch hunting, sexism, racism, or hate speech will be tolerated.
  2. If you see something against the rules or something that makes you feel unsafe, let staff know by messaging @admin in the "support-tickets" tab in the Live DevChat menu.
  3. No age-restricted, obscene or NSFW content. This includes text, images, or links featuring nudity, sex, hard violence, or other graphically disturbing content.
  4. No spam. This includes DMing fellow members.
  5. You must be over the age of 18 years old to participate in our community.
  6. Our community uses Answer Overflow to index content on the web. By posting in this channel your messages will be indexed on the worldwide web to help others find answers.
  7. You agree to our Terms of Service (https://www.devheads.io/terms-of-service/) and Privacy Policy (https://www.devheads.io/privacy-policy)
By clicking "Finish", you have read and agreed to the our Terms of Service and Privacy Policy.

Is Yocto just a better way to manage embedded Linux builds, avoiding countless scripts?

@32bitwidesaviour @ming_58391 Is yocto just `west`but for embedded linux. As in does this just help me keep a handle on my builds rather than a million scripts?

  1. ming_58391#0000

    In essence – yes.
    You still have a million scripts, they are just packaged nicely and called The Yocto Project!

  2. superbike_z#0000

    Aha that’s insane that embedded linux is that huge, that the build tool is a project, as opposed to being shipped with a project.

  3. ming_58391#0000

    Embedded Linux is that huge. A typical distribution contains thousands of files – but then a Linux system is meant to be for more heavyweight tasks.

  4. ming_58391#0000

    If I wanted ‘small’ then I would go hand-rolled or just use something like zephyr.

  5. 32bitwidesaviour#0000

    I think so. It is just scale that differs.

  6. superbike_z#0000

    well you want a good build tool rather than a small one

  7. superbike_z#0000

    what is the scale difference would you say, I’m still looking at things very `baremetal`

  8. 32bitwidesaviour#0000

    I mean scale in terms of features, entirely based off, what each of them offers – yocto would be just more complex.
    For example, I think it would take a lot to have layering in zephyr but is it even needed.
    And look at the learning curve on yocto.

  9. superbike_z#0000

    I know this has been explained before, but can you explain `layering` to a layman?

  10. ming_58391#0000

    _Layering_ is simply having groups of related build instructions bundled in a ‘layer’. You can then stack those layers on top of each other, e.g:

    ___________________________
    | Application Build Stuff |
    ---------------------------
    | System Build Stuff      |
    ---------------------------
    | Board Booting Stuff     |
    ---------------------------
    

    You can then build up your final system by adding in layers that contain the useful stuff you need (and therefore also don’t include the layers of non-useful stuff you don’t need)

    This allows for complex systems to be almost pieced together in a way that is manageable.

  11. ming_58391#0000

    The scale is not clear cut.
    For ‘simple things’ where for example you are ‘just’ reading sensor data and then either acting upon it to control something or pass that data upstream, a full blown Linux type system would probably be an overkill.
    While I don’t know RTOS’s that well, but for more complex systems, where you may want to have task isolation (in Linux every task is isolated from each other, so that an issue in user-space with one task should not affect any other tasks) or if you just need more computational power, then Linux makes it easier, as the OS handles a lot of it for you.
    The other things would be familiarity with the system (I’m always going to be biased towards Linux, as I ‘think’ in Linux and can see the solution faster in Linux) or if an essential library is only available for one particular OS.

  12. 32bitwidesaviour#0000

    When you are building your bike each layer is a like a specific group of things that serve a distinct purpose (grouping things into a function), so a layer could be the engine or custom seats. All the layers stack up and you have your bike. Building from layering allows you to build (and easily modify) your bike. Swapping the engine would be as simple as replacing or modifying the engine layer. This modular system gives you flexibility to create what you need while making it easy to modify without complexity.

  13. superbike_z#0000

    so in this kind of world you don’t need to rebuild layers that have not changed. I.e my OS and Drivers havent changed but my application has changed so just use a cache for the former 2 and re build my application.

  14. superbike_z#0000

    Almost like releases in elixir, but that’s a bundle as opposed to a build system.

  15. ming_58391#0000

    In a Yocto Project – the caching actually happens at the recipe level. It is more like a `make` system – it only rebuilds the package if the _recipe_ has changed.

  16. superbike_z#0000

    Miiiing, what in the world is a recipe. Is this like a list of dependecies and their versions?

  17. ming_58391#0000

    A Recipe is the instructions in a Yocto Project for the how tos:
    – How to download the source
    – How to configure the source
    – How to compile the code
    – How to install the resulting files into the final image
    The collection of files that actually end up in the final image are then a `package`.

  18. superbike_z#0000

    Man I’m sorry this is becoming russian dolls. Is a package an executable then. Is this what a .deb is?

  19. ming_58391#0000

    It is russian dolls!
    A `.deb` (or `.rpm` or `.ipk`)package is an installable collection of executables. The recipe in Yocto is the thing that builds that package.

    For a `.deb` or `.ipk` it is literally a tar file containing the files to be installed along with some pre and post installation scripts.

  20. superbike_z#0000

    I have more questions, I will read first and maybe bring them. Thank you both for this awesome TIL

CONTRIBUTE TO THIS THREAD

Browse other questions tagged