Короче, возвращаясь ка глюкам с IAR... Достало меня это и решил разобраться. Даже взял проц выбрал вместо тини 2313 тини 4313 с в 2 раза большей памятью (задал в опциях его). Но линкер опять орет:
Код: Выделить всё
Building configuration: LED_cnt - Debug
Updating build tree...
main.c
Linking
Error[e16]: Segment CODE (size: 0x7fa align: 0x1) is too long for segment definition. At least 0x3a more bytes needed.
The problem occurred while processing the segment placement command
"-Z(CODE)CODE=_..X_FLASH_BASE-_..X_FLASH_END", where at the moment of placement the available memory
ranges were "CODE:3f-7ff"
Reserved ranges relevant to this placement:
CODE:2a-32 NEAR_F
CODE:33-3e INITTAB
CODE:3f-7ff CODE
Error while running Linker
Total number of errors: 1
Total number of warnings: 0
Поскольку в листинге не все, то открыл мап-файл. Вот что там
ДО того как начинает выскакивать ошибка:
Код: Выделить всё
****************************************
* *
* MODULE SUMMARY *
* *
****************************************
Module CODE DATA XDATA
------ ---- ---- -----
(Rel) (Rel) (Abs) (Rel)
?C_MUL_L01 16
?C_STARTUP 26
?EEPROM_8 44
?FILLER_BYTES 18
+ common 24
?RESET
+ common 2
?S_MUL_L02 32
?S_SHL_L02 12
?US_SHR_L02 12
?__exit 6
?low_level_init 4
?segment_init 80
main 1 610 125 19 38
+ common 24
N/A (command line) 64
N/A (alignment)
---------- ----- --- -- --
Total: 1 860 189 19 38
+ common 24
И дальше в конце:
Код: Выделить всё
1 866 bytes of CODE memory (+ 18 range fill )
189 bytes of DATA memory (+ 19 absolute )
38 bytes of XDATA memory
Errors: none
Warnings: none
Ну извините, какого хрена когда у 4313 4 Кб флеши?? Даже если по каким-то причинам прога "думает", что там Тини2313, то там 2048 байт, т. е. у меня даже запас есть. Понятно, что в МАП-файле расписана вся память, а не только из моего сишника. Т. е. там и умножения всякие и библиотеки и т. п.
При этом в Лист-файле до того как ошибка вылетит:
Код: Выделить всё
19 bytes in segment ABSOLUTE
1 592 bytes in segment CODE
48 bytes in segment EEPROM_I
12 bytes in segment INITTAB
4 bytes in segment INTVEC
9 bytes in segment NEAR_F
123 bytes in segment TINY_I
123 bytes in segment TINY_ID
4 bytes in segment TINY_Z
1 724 bytes of CODE memory (+ 16 bytes shared)
127 bytes of DATA memory (+ 19 bytes shared)
48 bytes of XDATA memory
Errors: none
Warnings: none
И после того как дописал в проге и вылетела ошибка:
Код: Выделить всё
19 bytes in segment ABSOLUTE
1 596 bytes in segment CODE
48 bytes in segment EEPROM_I
12 bytes in segment INITTAB
4 bytes in segment INTVEC
9 bytes in segment NEAR_F
123 bytes in segment TINY_I
123 bytes in segment TINY_ID
4 bytes in segment TINY_Z
1 728 bytes of CODE memory (+ 16 bytes shared)
127 bytes of DATA memory (+ 19 bytes shared)
48 bytes of XDATA memory
Errors: none
Warnings: none
Т. е. прога после дописания увеличилась всего на 4 байта. А уже почему-то не лезет
Куда еще посмотреть?
С тиней 2313 та же байда была...
