Currently, this is only Nordic's sample ble_hrs. And contains version 4.2 of the SDK from Nordic. In order to get it working, it is necessary to install a GCC Toolchain and JLink. This project was inspired by this and this project.
In order to compile and link it is necessary to install a GCC toolchain. I use the ARM-EABI target provided by Archlinux found here and C standard library that goes with it. To install it on my system along with GDB I issue the following command:
pacman -S arm-none-eabi-gcc arm-none-eabi-newlib arm-none-eabi-gdb
Please refer this site for information on how to install the GCC toolchain on you system.
Download the JLink software from Segger from here. In order to download it, it is necessary to register the serial number of the emulator that you have. This is a .tgz file that again can be decompressed with tar. Now that the file has been downloaded, run the following commands:
tar -xvf JLink_Linux_V{version-number}.tgz
cd JLink_Linux_V{version-number}
sudo cp 99-jlink.rules /etc/udev/rules.d/
cd ..
mv JLink_Linux_V{version-number} ~/bin/jlink
I keep jlink under my home directory. In order to upload programs to the MCU with JLink it is necessary to alter the JLIINK_DIR(line 46 in Makefile) such that it points at the correct directory.
Once you have compiled for the first time, the directory structure looks like this:
.
├── bin --> Contains the map files
├── build --> Contains hex/bin/log files as well as JLink scripts
├── include --> Contains header files for the project
├── lib --> Contains Nordics SDK as well as the softdevice hex file
├── obj --> .o files
└── src --> Contains source files for the project
The following makefile targets exist, though not all of them have been tested
make --> Compiles project.
make all --> Same as make
make clean --> Cleans all object files, output files, map files etc.
make erase-all --> Erases entire contents of memory
make recover --> Restores MCU to original state -- NOT TESTED YET
make release --> Same as make
make startdebug --> Starts GDB Server -- NOT TESTED YET
make stop debug --> Stops GDB Server -- NOT TESTED YET
make upload --> Uploads output hex file on to the MCU
make upload-softdevice --> Uploads the softdevice hex file on to the MCU