Доброго всем дня ! Подскажите пожалуйста, что делаю не так. Имеется IAR 4.40A. На вкладке Options/ Linker/Config указываю в качестве Linker Command File свой файл, в котором инициализирую стек следующим образом :
//************************************************************************* // Stack and heap segments. //*************************************************************************
-D_CSTACK_SIZE=2000 // -D_SVC_STACK_SIZE=10 -D_IRQ_STACK_SIZE=100 -D_HEAP_SIZE=2000
-Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND // -Z(DATA)SVC_STACK+_SVC_STACK_SIZE=RAMSTART-RAMEND -Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE,HEAP+_HEAP_SIZE=RAMSTART-RAMEND
При отладке с самых первых шагов выскакивает предупреждение:
Mon Apr 23 14:16:34 2007: The stack 'CSTACK' is filled to 97% (7964 bytes used out of 8192). The warning threshold is set to 90%.
Откуда на 'CSTACK' берется 8192 байта, если в файле указано 2000? И почему так быстро забивается стек? Возможно я чего-то не понимаю. Обьясните пожалуйста идиоту.....
Стал копаться в опция линкера, и на той же вкладке нашел Comand file configuration tools. В выскочившем окошке в качестве адресного диапазона INTERNAL ROM указан диапазон 8000-FFFFF, а в качестве диапазона INTERNAL RAM -100000-7FFFFF - это при том, что используется МК LPC2214 ( ROM - 00000000 - 0003FFFF, RAM - 3FFFFFFF-40003FFF ), хотя в качестве таблицы векторов указаны адреса 0x0 - 0x3f, что соответствует действительности... . На следующей вкладке этого окна в качестве HEEP SIZE указан объем 8000,а не 2000 , как в вышеупомянутом файле....
Возможно вопросы глупые, но все же обьясните пожалуйста, что используется для распределения памяти, и почему в Comand file configuration tools такое распределение адресов? Спасибо...
|