реклама на сайте
подробности

 
 
> Рзмер скомпиленного образа в переменную, Автоматом, средствами ИАР.
elektronshik
сообщение Aug 14 2009, 07:02
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723



Добрый день.
Вот пишу вторичный загрузчик LPC2368, возникла необходимость подставлять размер образа в код программы. Естественно заранее он не известен, но после линковки выводится в сообщении:
X bytes of readonly code memory
Y bytes of readonly data memory
Z bytes of readwrite data memory

Вот этими X Y Z надо инициализировать какие нибудь переменные в коде (получается, что уже после линковки).

В некоторых компиляторах это вроде работает (видел строки наподобие "U32 Size = Image$$ER_IROM$$RO$$Length"), а вот как в ИАР это сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
elektronshik
сообщение Aug 21 2009, 05:07
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 73
Регистрация: 25-10-07
Из: Тольятти
Пользователь №: 31 723



И все равно не получается smile3046.gif: Пытаюсь разместить специально созданную секцию в самом конце, но при линковке выскакивает ругательство:

Tool Internal Error:
Internal Error: [CoreUtil/General]: Access violation (0xc0000005) at 00618DCA (reading from address 0x0)

Кажется это изза того, что ИАР пытается расположить обязательно в конце какие-то служебные данные.
Вот краткое содержание .map файла:
Код
"P1":  place in [from mem:0x0 to mem:0x7ffff] { ro section .vectors };
"P2":  place in [from mem:0x0 to mem:0x7ffff] { ro section .cstartup };
"P3":  place in [from mem:0x0 to mem:0x7ffff] { block _RO_ALL_ };
"P4":  place in [from mem:0x40000000 to mem:0x40007fff] {
          block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK,
          block UND_STACK, block ABT_STACK, block HEAP };
"P5":  place in [from mem:0x40000000 to mem:0x40007fff] { block _RW_ALL_ };

  Section              Kind        Address    Size  Object
  -------              ----        -------    ----  ------
"P1":                                         0x40
  .vectors                      0x00000000    0x40  <Block>
    .vectors           ro code  0x00000000    0x40  vectors.o [1]
                              - 0x00000040    0x40

"P2":                                         0xfc
  .cstartup                     0x00000040    0xfc  <Block>
    .cstartup          ro code  0x00000040    0xfc  cstartup.o [1]
                              - 0x0000013c    0xfc

"P3":                                       0xb6ee
  _RO_ALL_                      0x0000013c  0xb6ee  <Block>
    .iar.init_table    const    0x0000013c    0x2c  - Linker created -
    .rodata                     0x00000168  0x3287  <Block>
      ...........................................................................
...........
      .rodata          const    0x000033ee     0x1  xlocale_c.o [3]
    .text                       0x000033f0  0x8288  <Block>
      ...........................................................................
................
      .text            ro code  0x0000b590    0xe8  packbits_init2.o [4]
    ICODE                       0x0000b678    0xe0  <Block>
      ICODE            ro code  0x0000b678    0xe0  lowlevel.o [1]
    Initializer bytes  ro data  0x0000b758    0xd2  <for .data-1>
                              - 0x0000b82a  0xb6ee

Из него видно, что самой последней секцией конец которой я могу вычислить идет "ICODE", после него впихиваются некие "Initializer bytes"
Причем, если я в линкере пытаюсь разместить "ICODE" последней, вылетает вышеуказанная ошибка.

...Кажется "Initializer bytes" это на самом деле секция ".data_init", если её расположить последней, ошибок не возникает, но её конец (__section_end(".data_init")) почему то равен 0х4, хотя в map файле все правильно и её конец равен размеру образа.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 14:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016