Last year i made a few different arduino layouts to be used in my college. the boards were working perfectly fine as far as the controller atmega328P part was concerned. but when it came to loading the program I initially used cp2102 and pl2303 usb ttl converters. they allowed me to directly load the program via serial interface. but the problem was that before loading the program i had to keep the reset pin pressed. to avoid that there was the option of using DTR on the pl2303 and it worked. I also tried via the rs232 interface. but my laptop doesnt have that serial port so i ditched that idea.
My Question: I wanted to try some other programming methods. after some research i found one option was using USBasp. but it uses the SPI pins of the atmega328 right?? when i checked the arduino schematic i found that the USB port was connected to the Atmega8 and the atmega8 communicated to atmega328 via serial interface.. I couldnt find much content explaining how that was done. could someone please tell me how does that atmega8 on the arduino UNO R3 actually load program onto the main controller. I wanted to make my own programmer using atmega8 which allows me to directly load program into the main controller using serial interface. (in USBasp i have to click "Upload using programmer"). i want to upload directly using the main upload button. also can anyone tell me whether there is any code preloaded into the atmega8 programmer that sends the USB data over serial interface to the atmega328???