Цитата(Rash @ May 28 2015, 13:04)

Спасибо всем. результат таков:
1. через __segment_size получаем размер таблицы векоров, но это значение нельзя использовать препроцессором, т.е.
Так не удивительно, что первый, что второй методы работают одинаково: через определение символов (меток) для линкера, и только линкер знает их реальные значения, получившиеся в процессе сборки.
Впрочем, если Вы не сами пишете .s, а используете готовый, то размер таблицы можно вычислить зная максимальный номер вектора. Надо только учесть ещё 16 слов для векторов с отрицательными номерами.
Ищем определение typedef enum{ ... } IRQn_Type;, дописываем две строчки:
Код
typedef enum{
.....
HASH_RNG_IRQn = 80, /*!< Hash and RNG global interrupt */
FPU_IRQn = 81 /*!< FPU global interrupt */
,__MAX_VECTOR_NUM__ /* получит значение на 1 больше максимального номера вектора */
} IRQn_Type;
#define VECTOR_TABLE_SIZE (4*(__MAX_VECTOR_NUM__-1+16))
ЗЫ. Сравнивая размер таблицы векторов с FLASH_WRITE_BLOCK_SIZE Вы проявляете завидную дальновидность
Пока что даже у самого толстого F756 этот размер составляет (97+16)*4 = 452 байта.
Russia est omnis divisa in partes octo.