Внутрь Atmel'овской реализации не полез, но судя по описанию, у них сделан стандартный вариант: сначала - key expansion (11 блоков по 16 байт), а потом - дешифрование этим ключом.
С учётом того, что им дешифровывать надо много, а свободной памяти в загрузчике обычно много, подход верный.
У меня была идея расширять ключ непосредственно перед очередным раундом шифрования. Это медленнее, если надо шифровать больше одного блока одним и тем же ключом, зато экономится 160 байт ОЗУ.
Как вчера выяснилось, это вовсе не моя идея, и в интернете полно таких реализаций :-)
Вот, например, ещё и сишные исходники от TI:
http://downloads.ti.com/tsu_encryption/tsu...8.zip?tracked=1