Page 1 of 1
					
				build new firmware
				Posted: Tue Dec 16, 2014 4:57 am
				by jsmartins
				Hi, 
I'm trying to change the control code of the quadricopter using C programming. After finish the changes in the firmware files how can i build a new firmware file (.bin) to download to the quadcopter? Or maybe other easiest way to do it. Sorry my lack of knowledge, I just started to work with programming.
There is some tutoria explaining step-by-step how to do these things?
			 
			
					
				Re: build new firmware
				Posted: Tue Dec 16, 2014 5:07 am
				by chad
				You have to compile it with an ARM toolchain. Getting the toolchain installed varies depending on the system you're building the Crazyflie firmware on... Are you on Linux, Mac, or Windows. Also, are you compiling for Crazyflie 1.0 or Crazyflie 2.0?
			 
			
					
				Re: build new firmware
				Posted: Tue Dec 16, 2014 5:16 am
				by jsmartins
				I', compiling for an Crazyflie 1.0. For while I'm using the VM 0.5 (Linux) but I'm installing a real machine using Linux, and this one will be dedicated to work with the quadcopter. 
Thanks.
			 
			
					
				Re: build new firmware
				Posted: Tue Dec 16, 2014 6:05 am
				by chad
				You will need to download the Linux tarball for gcc-arm-none-eabi toolchain. Specifically 
gcc-arm-none-eabi-4_7-2013q1-20130313-linux.tar.bz2. Expand the tarball and add the 
absolute path of the folder '
gcc-arm-none-eabi-4_7-2013q1/bin' to your PATH environment variable. I recommend removing everything else except for the essentials (/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin) from your PATH variable and only adding the full path to gcc-arm-none-eabi-4_7-2013q1/bin in 
my blog post on how to build on Mac OS X. So just do 
Code: Select all
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/PATH/TO/gcc-arm-none-eabi-4_7-2013q1/bin
 where '/PATH/TO' is whatever folder you exploded the gcc-arm-none-eabi-4_7-2013q1 tarball into.
Then it should just be a matter of changing into the Crazyflie firmware directory (which you cloned from GitHub) and running: 
I believe this should work on Linux the same as it does on Mac OS X...