If you have a serial GPS and a MultiWii platform based on the Atmega328 it could be a little tricky to implement it. I’ve found an “add-on” for the MultiWii software, it’s called tiny-gps and you can find the original post here.
The idea is to have an additional IC, an Attiny 2313 or 4313 for reading GPS data (and other sensors too, like Sonar or Optic) and send back to the main MCU via i2c. So you are not connecting the gps-sonar-optic directly to the atmega board of your MultiWii copter but you are using an extra microcontroller to do this work.
The process is quite simple. Get an Attiny2313 and download the necessary firmware from the Wertarbyte repository on github: https://github.com/wertarbyte/tiny-gps
Use your ISP programmer to put the code on the 2313.
Quick linux howto: upload arduino isp on your arduino, connect pin like this: arduino 10-11-12-13 to (respectively) attiny 1-17-18-19. Connect attiny pin 10 to arduino gnd and attiny pin 20 to arduino +5v
Compile tiny-gps with “make” (first configure the config.h) and launch
avrdude -c avrisp -p t2313 -P /dev/ttyUSB0 -b 19200 -U flash:w:tiny-gps.hex -U lfuse:w:0xe4:m -U hfuse:w:0xdb:m
(change the dev port on your needs)
Download then his modified version of MultiWii and compile it on your copter uncommenting in config.h the line about tiny-gps and you are done! You should see gps data on your MultiWiiConf and you should be able to try the GPS possibilities.