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

 
 
> помещение объекта в конец секции RO
toweroff
сообщение Aug 23 2011, 12:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Что-то никак не могу положить константу в конец всего кода во флеш (RO секция)

Код
const unsigned long test_ending __attribute__ ((section("ENDOF"))) = 0x12345678;


и скаттер
Код
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x20000000 0x00080000  {  ; load region size_region
  ER_IROM1 0x20000000 0x00080000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   *.o (ENDOF, +Last)
  }
  RW_IRAM1 0x80000000 UNINIT 0x0000E000  {; RW data
   .ANY (+RW +ZI)
  }
}


вот конец описания того, что легло во флеш
Код
    0x20000fc8   0x0000000c   Code   RO          257    .text               c_5.l(libspace.o)
    0x20000fd4   0x0000000c   Code   RO          316    .text               c_5.l(rt_fp_status_addr_intlibspace.o)
    0x20000fe0   0x0000000c   Code   RO          320    .text               c_5.l(sys_exit.o)
    0x20000fec   0x00000000   Code   RO          333    .text               c_5.l(indicate_semi.o)
    0x20000fec   0x00000014   Code   RO          303    x$fpl$fpinit        fz_5s.l(fpinit.o)
    0x20001000   0x00001000   Data   RO           52    .constdata          fx2lp.o
    0x20002000   0x00000010   Data   RO          385    Region$$Table       anon$$obj.o
    0x20002010   0x00000004   Data   RO          117    ENDOF               boot.o


    Execution Region RW_IRAM1 (Base: 0x80000000, Size: 0x0000dff4, Max: 0x0000e000, ABSOLUTE, UNINIT)

    Base Addr    Size         Type   Attr      Idx    E Section Name        Object


родная секция ENDOF в аккурат в конце. Ура!
Но не тут-то было

Почему fromelf, создавая BIN, кладет после этой константы еще 5 int (20 байт)?

Понял, но не знаю, как поправить - эти 20 байт есть RW Data
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
toweroff
сообщение Aug 23 2011, 14:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



ну дык положить константу по адресу не проблема biggrin.gif
вот ее бы в конец бинарника, чтобы потом CRC туда перед прошивкой положить
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 23 2011, 15:22
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(toweroff @ Aug 23 2011, 17:43) *
ну дык положить константу по адресу не проблема biggrin.gif
вот ее бы в конец бинарника, чтобы потом CRC туда перед прошивкой положить


Клал описанным мной способом CRC в бинарник, правда, не в конец, а в произвольные места внутри бинарника. Проблем не было. В исходнике писал указанную выше строку. Компилятор генерировал .hex, а затем я его преобразовывал в .bin утилитой H-Converter из состава H-JTAG. Странно, какие там могут быть проблемы ?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 23 2011, 19:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(kovigor @ Aug 23 2011, 19:22) *
Клал описанным мной способом CRC в бинарник, правда, не в конец, а в произвольные места внутри бинарника. Проблем не было.
... Странно, какие там могут быть проблемы ?

А можно вопрос - как CRC потом считалась?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 24 2011, 11:30
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(toweroff @ Aug 23 2011, 22:32) *
А можно вопрос - как CRC потом считалась?


Посторонней программкой на Delphi
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 24 2011, 11:51
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(kovigor @ Aug 24 2011, 15:30) *
Посторонней программкой на Delphi

я не о том
сама программа, когда считала CRC себя самой, это вставленное значение "обходила", а потом сравнивала?
я пытался добиться размещения CRC в самом конце, чтобы при сверке получить 0
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 25 2011, 08:11
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(toweroff @ Aug 24 2011, 14:51) *
сама программа, когда считала CRC себя самой, это вставленное значение "обходила", а потом сравнивала?


СRC двоичного файла прошивки подсчитывалась по всему файлу и укладывалась в конец этого же файла моей программкой на Delphi. А потом я этот двоичный файл шил в МК. А уже он проверял, получается ли нулевое значение CRC при расчете CRC по всей прошивке, или не получается. Или я вопроса не понял ?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Aug 25 2011, 08:56
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(kovigor @ Aug 25 2011, 12:11) *
СRC двоичного файла прошивки подсчитывалась по всему файлу и укладывалась в конец этого же файла моей программкой на Delphi. А потом я этот двоичный файл шил в МК. А уже он проверял, получается ли нулевое значение CRC при расчете CRC по всей прошивке, или не получается. Или я вопроса не понял ?

все верно, для этого я и пытался зарезервировать место в конце файла

просто смутило Ваше же заявление:
Цитата(kovigor)
Клал описанным мной способом CRC в бинарник, правда, не в конец, а в произвольные места внутри бинарника.

Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 25 2011, 09:41
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(toweroff @ Aug 25 2011, 11:56) *
все верно, для этого я и пытался зарезервировать место в конце файла

просто смутило Ваше же заявление:


Да, клал. В программе нужно была использовать модифицируемые в процессе работы устройства блоки Flash - памяти. Т.е., часть Flash использовалась в качестве EEPROM. Каждый используемый в таком качестве блок защищался CRC, 32 разряда которой укладывались в конец этого блока. В прошитом "на заводе" устройстве блоки заполнялись значениями по умолчанию. После чего бинарная прошивка подавалась на вход моей программы, она рассчитывала CRC блоков "EEPROM" и клала их в конец этих блоков, а затем рассчитывала CRC всей прошивки вообще и клала эту CRC в последние 4 байта прошивки ...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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