Job: firmware mentoring

Posted on
  • Experienced Java / Javascript developer looking for firmware mentoring.

    Specifically, help getting familiar with deploying Espruino on ESP32 and creating custom firmware.

    Budget: $50/hr x 10-20 hours of mentoring.

    Thanks

    David

  • Fri 2021.05.14

    Hi @DavidM

    My suggestion is the LowCost approach which would take around the same amount of that expected time, just doing. The tasks really aren't that hard and the community got me up and running with a bit of hair pulling (oops no pun intended) on my end:

    Espruino Build issues using README_BuildProcess.md and Extending+Espruino+1 within Windows10 environment

    Specifically see @AkosLukacs #8 post, link found in the very first link #comment14873557 in post #1 of the thread above, for specific instructions on setting up environment.

    Take a peek under the hood, kick the tires and take 'er for a spin, which should provide a good overview, if not would generate some well formed questions to reduce your development costs. With your Java background, C shouldn't be that much of a struggle. (I had C/C++/C# background before Java)


    Should you be on the FastTrack expectation however, I'm sure others will respond.

  • thanks @Robin I appreciate the response, though it's mostly focused on being able to build Espruino on WSL, which doesn't apply to me, because:
    a) I use Ubuntu on my desktops, laptops, and servers, and
    b) I'm not looking to just build Espruino, but rather to understand the C/C++ embedded toolchain, and how to debug embedded firmware, coming from and enterprise Java and Javascript background (of 20+ years each).

    My budget is $1,000 for the first few lessons....

  • Just a quick note: Gordon (the creator of Espruino) works on Linux, builds are running on Linux, build docs were primarily written for Linux as well. What works in WSL should work in Linux, because WSL is "just" MS's attempt at creating a linux command line on windows.

  • To clarify what I'm asking, consider what the embedded landscape looks like from the perspective of a seasoned Java or Javascript developer.

    In the case of Javascript it's easy to get started, basically:
    npm init -y
    npm i

    Similarly in the case of Java you have Maven and Gradle.

    so, in both cases very easy to get a project going.

    Now let's look at embedded C/C++, no standard way of getting started, tons of cryptic makefiles, no standard way of packaging and including libraries, lot's of magical incantations.
    Java was like that 15 years ago with Ant files.

    So, for someone looking to get started, it's not a pretty sight, let's just say.

  • Take a closer look at this:

    http://www.espruino.com/Extending+Esprui­no+2
    http://www.espruino.com/Extending+Esprui­no+1

    another example how to build extensions is here
    https://github.com/jumjum123/EspruinoExt­ensions/tree/master/General/LEDBoard
    There are some unusual args used for make

  • @JumJum thanks, those links look helpful

  • @David, you obviously have been around for a while. Concepts like the 'old' / first PCs apply, such as the Commodore PET system: nothing of the kind of what you have today, just a bare naked, standalone Language Interpreter, that also includes all - commands and libs - what the app needs to control the system. Of course, the firmware - the Espruino Interpreter and HW platform libs - build system is modern, but your app and debugging of it is not part of that.

    Many of the things in Espruino - Espruino's uniqueness - throw you a loop, because it just behaves differently than main stream, last but not least due to the goals set in the very beginning: very easy to get going - though without 'kiss' - and to be frugal when it comes to resources and power.

  • @DavidM

    In addition to the links provided by JumJum, I have found the following to be exceptionally useful while building custom extensions for Espruino on the ESP32.

    Compiling:
    https://github.com/espruino/Espruino/blo­b/master/README_Building.md

    JSON Extension Format:
    https://github.com/espruino/Espruino/blo­b/master/scripts/common.py#L52

    Espruino Internals:
    http://forum.espruino.com/conversations/­357006/#comment15666995
    http://forum.espruino.com/conversations/­302250/
    http://www.espruino.com/Internals

  • Thanks @allObjects, yes I have been around, first device I programmed was the HP65, which was essentially assembly.
    https://en.wikipedia.org/wiki/HP-65

  • Hi! Sorry for the delay!

    For me, that's quite a bit under what I'd usually charge per hour, but hopefully someone else will be able to help out if you do still need that amount of assistance.

    Given what's been posted here so far I'd hope that you would be able to get up and running pretty quick though. Being a Linux user will really help you out.

    I noticed you've supported Espruino on Patreon - thanks! If you're hitting any specific problems just give me a ping on the Patreon Slack channel and I can see what I can do to help out though - if I can get you out of a hole with a few minutes work I'm more than happy to do that.

  • Thanks @Gordon I'm working through these links and ones that @MaBe sent me.
    The Espressif toolchain seems to have improved dramatically since I last looked at it a few years ago. I can now build their example projects, next step is to try to build Espruino, we'll see how that goes..

  • adding this link to the list of interesting esp32-related stuff (once I've figured this out, I'll compile a proper document, just using this thread as a placeholder):

  • Just a note: The official Espruino firmware is build using Github Actions, and this would be the best option to build custom firmware, too.

  • That's a good thought! Is there a nice way of getting the files out of it? For builds on the main repo I do a push to our server, but that could be more of a pain to set up for someone else

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Job: firmware mentoring

Posted by Avatar for DavidM @DavidM

Actions