maloii ! Поставьте конкретный и последовательный вопрос, а то получается "желаю купить дом - но не имею возможности,
имею возможность купить козу - но не имею желания..."
Как я понял из ваших слов:
1) У Вас есть пустой МК ATmega168 и вы желаете менять память программ через UART.
2) Вам придется написать основную программу которая будет опрашивать UART и по какому-то "волшебному слову" переда-
вать "бразды правления" программе бутлоадера (которую придется тоже написать самому).
3) Программа бутлоадера будет получать данные через UART и соответственно заполнять ими память основной программы,
после чего опять передаст "бразды правления" основной программе.
Сложные и заковыристые "танцы с бубнами"

, но теоретически решаемые...

И что это за устройство такое чудное ?
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.