# Quadcopter The `quad/` directory contains all code that programs the quadcopter. This includes any C libraries we have written, any HDL to program the Zybo on the quad, and the XSDK main project that runs on the Zybo. ## Brief Intro The main quad application is located at `src/quad_app/`. To run this application on the Zybo, we need to implement the hardware drivers, and provide a `main` function. This is done in `xsdk_workspace/real_quad/src`. We can also run this application on our own laptops for testing. We call this implementation the "virtual quad". This is done in `src/virt_quad`. ## Building #### Primarily Libraries and Executables To build the libraries and executables: ``` make ``` You can also build each library individually inside their respective project directories: ``` cd src/<project> && make ``` **NOTE**: All build artifacts will be placed in `lib` or `bin` (depending on whether it is a library or executable, respectively) #### XSDK Project (embedded project that runs on the Zybo) To build the XSDK project, use the XSDK IDE. Refer to the [Xilinx How-to](doc/how_to_use_xilinx_tools.pdf) for more instructions. Be sure to select the `xsdk_workspace` directory in the quad directory as your "workspace." ## Testing #### Automated Tests _Write tests! It makes automating things so much easier._ Run the unit and functional tests: ``` make test ``` And glad to hear you are interested in writing your own unit tests! Look at the README and examples in our simple testing library at `src/test`. #### Manually testing the hardware interface Of course, we cannot run automated tests on code that needs the Zybo. But we have manual tests that you can use to test each specific driver in the hardware interface. Look in `xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c` for instructions. Ideally, you would run these tests from the XSDK IDE. ## Sections [XSDK Instructions](xsdk_workspace/README.md) [Quad Application](src/quad_app/README.md) [Quad App on the Zybo (Real Quad)](xsdk_workspace/real_quad/README.md) [Quad App on Unix (Virtual Quad)](src/virt_quad/README.md) ## Other Documents [Zybo Pinout Assignments](doc/zybo_pinout_assignments.md) [How to use Xilinx software tools](doc/how_to_use_xilinx_tools.pdf)