Federico Fuga

Engineering, Tech, Informatics & science

Creating and using debug symbol tables with CMake and gdb

28 Jan 2020 14:36 UTC Embedded
Introduction When working with a big project on a resource constrained embedded hardware, it might be difficult to debug it properly on the target board. Executables and libraries compiled in Debug mode are big, bloated and slow. To proper debug them in GDB, you need compile symbols, otherwise you’ll not be able to understand what a stack trace means. Sometimes it may be useful to structure your project so that it can be debugged with emulators, mocks and simulated devices on a PC; it is a wise choice because emulators and mocks speed up debugging and developing when other parts (especially hardware and firmware) are not ready yet. Continue reading

Adding a user space "power switch" to your embedded linux

18 Jul 2019 08:25 UTC Embedded Linux
Is is always amazing to see how some very obvious features are missing from the linux kernel. Yesterday, for a project I am developing for a Dutch firm, I come across one of these “very obvious feature”: the option to switch on and off a device in the embedded linux board we’re using. The problem seemed to be quite frequent: you have a device connected to the internal USB bus (a wifi module, maybe? Continue reading

Configuring Ubuntu to deal with an ARM board with U-Boot via USB

13 May 2019 07:40 UTC Embedded Linux Uboot Ubuntu
Abstract We have a board on which an AllWinner ARM processor is running Linux. The bootloader is U-boot and we have to use the USB port to flash it. When flashing the device for the first time, after loading the bootloader via FEL protocol, we need to use tftp to load the SPL (Secondary program Loader) image and the uboot version for use with the spl. Unfortunately, a couple of issues in the default Ubuntu configuration prevent us from doing this apparently simple operation in a straight way, and we need to tweak some system configuration file. Continue reading

Pairing Bluetooth with no pin on Intel Edison

10 Aug 2015 15:30 UTC Code Embedded
It may seems strange for an IoT enabled device, but there's no obvious way to pair an Intel Edison through Bluetooth without accessing the shell. I spent different hours to do something that with Bluez4 took at most 4 minutes, including the research on Google. Here's what I did. Edison provides Bluez5 that reworks most of the tools using DBUS, so to make two quite frequent actions, like pairing a device without providing user intervention on the device, and registering a new bluetooth RFCOMM service, you need to interface with it, that isn't so obvious from C or C++. Continue reading