Цитата(Юрий Санвальд @ May 7 2007, 15:48)

1. Запись осуществляется в момент запуска приложения, даже не доходя до места вызова соответствующих функций
"Само" ничего не происходит. Скорее всего эти данные у вас объявлены как инициализированные константы и они записываются на свои места как и положено одновременно с программой.
Цитата(Юрий Санвальд @ May 7 2007, 15:48)

2. Если есть переменная типа "const", лежащая по некому адресу внутри сектора флэш куда ведется запись, то это место не перезаписывается.
Естественно. Стирается ведь весь сектор целиком.
Вот тут есть статья на эту тему. Я писал кусок кода для 2214 (но они должны быть очень похожи) на основе чьего-то ответа на аналогичный вопрос. Выделил отдельный сектор под изменяемые данные, это позволяет на время перезаписи использовать буфер ОЗУ минимального (а не на весь сектор) размера и не заботится, что затрется что-то лишнее.
Использую две структуры - Config_flash и Config_ram. Перед началом работы вызываю ReadConfig(), который копирует из Config_flash в Config_ram. Далее все действия с Config_ram и когда необходимо сохранить изменения - UpdateConfig(). Конечно, этот код все еще несколько кривоват, но для начала вполне сойдет.