• IoT Systems - Split from Kilowatt to Ultra Low Power

    05/06/2017 at 17:49 0 comments

    • Most of the projects start by selecting the processors and defining the power budget. Servers have the highest computation power but are always there where we do not need them, probably even under water to improve cooling efficiency. Networks come in handy to compensate the lack of cpu to end user devices, but then come the latency compromise.
    • Cloud, Fog, Embedded, Wearable: splitting the right task for the right location is the key of a successful IoT system. Users require solutions that respect all of portability, privacy and latency.
    • Permanently available wireless systems need the right power supply matching the wireless technology.
    • Can a mini server wakeup on LAN, on page call, fast enough to load a web page ?
    • Till when will the wifi be power hungry ?
    • Why is it complicated to have wireless repeaters ? Do very precise clock timers help ?
    • Why is a serial e-ink screen so hard to find ?

  • 6+ IDEs to debug the $2 STM32 BluePill

    04/02/2017 at 11:44 27 comments

    2018 Update

    ST gets Atollic

    Yes, "almost 2018", update. Interesting to see as noted @Hamish with the link he posted, STMicro acquiring Atollic IDE that was classified in this review as the most efficient. That makes sense.

    VSCode rules over

    Where did I end up six months after this review, well to be honest I rarely need to debug, but sometimes I do, so I stick with VSCode for all of the plugins, scm integration, workspaces, intellisense,... although I did not investigate the possibilitiy to configure its debug capabilties. I code with multiple languages and this unique interface really helps. I even can open netwrok paths e.g. "\\IOSERV\pi\IoT_Frameworks", so that I work on the raspberry pi samba shared folder seamlessly from windows.

    mbed-os nice but patchy

    For the SW stack, I also switched to mbed, it saves a lot of pain, I had to patch it in this fork to support the STM32 BluePill, did not manage to push the change due to complicated testing environment. From performance point of view some drivers are really ugly when it comes to real time, so I had to break the os spirit and hard code some registers to improve the efficiency, sometimes by a factor x50 (SPI, PWM,...). Code available in the 20ish Hello world samples, and parts of the STM32 dongle of the IoT_Frameworks.

    debug only but debug good

    And for the rare cases when I need to debug (with breakpoints), I got an original segger Edu with its Ozone, it is not meant for code editing, but switching for debug gives a full feature set.

    So the dream of a unique IDE is still on going and keeps the below review still relevant.


    First I'd like to thank Hackaday for this $2 32-bit Arduino (with debugging) so I decided to share my investigation about the IDEs where you could debug with more convenience.

    The target Platform is the STM32F103C8T6 BluePill, used with a Nucleo board for the STLink-v2-1.

    What is an IDE ?

    • Minimal formula for an Integrated Development Environment

    • the separation between the flash and debug is important as a flash can happen with any interface running from the application itself or as a bootloader, Over The Air or other,...
    • needless to argue about if an IDE is really helping or making things more clumsy, less open, so I'd simply say that the more an IDE sticks with open standard the richer it would get and the more plugin you'd see around it => e.g. Eclipse

    Impressions Criteria

    • How quick and easy do I get it running, if I mange to get it working at all.
    • How easy can I import STs CubeMX generated code.
    • How easy do I get the debugger working.
    • Debugger possibilities, peripheral view,...

    Small note about CubeMX

    By the way, although CubeMX didn't work for me on the first time, going through it with the debugger helped me find a ridiculous configuration including both HSE and HSI flag at the same time, then I realized that it wasn't me but a known issue, so I added this note about it

    void SystemClock_Config(void)
      RCC_OscInitTypeDef RCC_OscInitStruct;
      RCC_ClkInitTypeDef RCC_ClkInitStruct;
      RCC_PeriphCLKInitTypeDef PeriphClkInit;
    /**Initializes the CPU, AHB and APB busses clocks */
    // - Faulty line => RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
    //replace by following line
      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
      RCC_OscInitStruct.HSEState = RCC_HSE_ON;


    This is not a professional evaluation, just first impressions from a user experience, if something is wrong, please give feedback.


    • link : TrueStudio
    • OS : windows / Linux / Mac
    • Supported by CubeMx
    • Eclipse based
    • Supports STLink
    • Debug even with peripherals
    • From Atollic, free, no size limit, but commercial approach for locking features, ads, waiting window...
    • Can debug the peripherals

    Conclusion : Most efficient

    Gnu Arm Eclipse

    • link : gnuarmeclipse
    • OS : Windows / Linux / Mac
    • CubeMX needs a converter CubeMXImporter
    • Free and open perspectives, no commercial purpose behind it.
    • I managed to make OpenOCD work...
    Read more »