если не хотите ФС - дублируйте сектора, ставьте им счетчики записи и CRC. если не сошелся CRC - берем другой сектор, если оба валидные - берем тот у которого счетчик больше.
Если надо часто писать какие-то настройки - советую задуматься о внешней FRAM
написать документацию, нарисовать диаграммы.
после этой проведенной работы можно переписывать на любой язык =)
но, как мне кажется, проще будет исправить ошибки.
1. функции рисования кнопок, меню, радиобатонов, выпадающих списков и прочих сущностей где?
2. устройства ввода, указатели, курсоры где?
3. обработка событий от устройств ввода/эмуляции есть?
https://6002x.mitx.mit.edu/ пройдите этот курс, например, если дружите с английским.
если нет, для схемотехники прочтите "Искусство схемотехники" Хоровица и Хилла, и, как выше уже посоветовали, курс Харрисов.
Мало памяти - только Си и никакого динамического выделения
Много памяти - С++ и STL. много - это мегабайты =)
И на Си и на Си++ можно написать программу одинаково.