Перейти к содержанию
    

; тут в r0 значение 0x1860

; после выполнения #0000010c в r0 = 0x1870, r3, r4, r5, r6 = 0xffffffff

Такое ощещение, что у вас "хвост" от прошивки потерялся. Что в бинарном файле по адресу 0x1860?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мда-а-а пипец

Можно развернуто:)

 

Такое ощещение, что у вас "хвост" от прошивки потерялся. Что в бинарном файле по адресу 0x1860?

Если правильно сгенерил бинарник (из хелпа на ARM DS-5):

fromelf --bin --output=outfile.bin infile.axf

то вроде всё нормально???

post-63539-1509819500_thumb.jpg

outfile.bin.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, спасибо, ступил. Ушел с работы, потом подумал, что надо было по адресам флэшки глянуть:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое ощещение, что у вас "хвост" от прошивки потерялся. Что в бинарном файле по адресу 0x1860?

Получается, что потерялся:

post-63539-1510122595_thumb.jpg

post-63539-1510122600_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В опциях проекта установлена галка: C/C++ Build->Settings->Binary Parsers->Elf Parser, пытаюсь посмотреть, что собой представляет файл *.axf,

получаю, что прошивка заканчивается по адресам 0x00000668, команда fromelf даёт бинарник на 12 байт больше (это и есть значения для инициализации глобальных переменных).

Чего-то не хватает в *.sct-файле либо криво установлен ARM DS-5?

post-63539-1510128119_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чего-то не хватает в *.sct-файле либо криво установлен ARM DS-5?

С .sct все нормально. Не знаю, что не так Elf Parser'ом, всегда fromelf использовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С .sct все нормально. Не знаю, что не так Elf Parser'ом, всегда fromelf использовал.

Какую IDE Вы используете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какую IDE Вы используете?

Geany :)

Сейчас я не использую ARM'овские компиляторы. Раньше просто в Post Build'е ставил вызов bat-файла с fromelf и прочим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую.

Не хочет ARM DS-5 нормально стартовать отладку программы. Пример работы программы на рисунке 1.

scatter-file:

; *************************************************************
; ** Scatter-Loading Description File generated by RTE CMSIS Plug-in **
; *************************************************************
LR_IROM1 0x00000000 0x00040000  {  ; load region size_region
  ER_IROM1 0x00000000 0x00040000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x10000000 0x00008000  {; RW data
   .ANY (+RW +ZI)
  }
  RW_IRAM2 0x2007C000 0x00008000  {
   .ANY (+RW +ZI)
  }
}

Какая-то внутренняя штука ARM DS-5 может распарсить и показать, что представляет собой файл прошивки *.axf (см. рисунки 2, 3, 4), получаем файл прошивки 1680 байт, после запуска дебага во flash памяти не хватает 20 байт для инициализации переменных.

Консоль GDB плюёт следующие сообщения:

365,640 (gdb) 
365,641 &"symbol-file \"C:\\\\DS-5 Workspace\\\\startup\\\\Debug\\\\startup.axf\"\n"
365,642 ~"Reading symbols from C:\\DS-5 Workspace\\startup\\Debug\\startup.axf..."
365,642 &"warning: Loadable section \"RW_IRAM2\" outside of ELF segments\n"
365,643 ~"done.\n"
365,646 24^done
365,646 (gdb) 
365,646 &"load \"C:\\\\DS-5 Workspace\\\\startup\\\\Debug\\\\startup.axf\"\n"
365,647 ~"Loading section RW_IRAM2, size 0x14 lma 0x2007c000\n"
365,647 25+download,{section="RW_IRAM2",section-size="20",total-size="13880"}
365,647 25+download,{section="RW_IRAM2",section-sent="20",section-size="20",total-sent="20",total-si\
ze="13880"}
365,889 ~"Loading section ER_IROM1, size 0x67c lma 0x0\n"
365,891 25+download,{section="ER_IROM1",section-size="1660",total-size="13880"}
366,392 ~"Start address 0xcc, load size 1680\n"
366,392 ~"Transfer rate: 2 KB/sec, 840 bytes/write.\n"
366,393 25^done
366,393 (gdb) 

Кто что может сказать по этому поводу?

Спасибо.

 

PS:

Один и тот же проект компилился последним Keil-ом и ARM DS-5, код на выходе получается одинаковый, только адреса переменных глобальных поменялись между собой. Если залить кейлом файл от DS-5, то всё будет ОК, во flash ляжет вся прошивка, если наоборот, то результат работы DS-5 не меняется.

post-63539-1510760336_thumb.jpg

post-63539-1510760928_thumb.jpg

post-63539-1510760932_thumb.jpg

post-63539-1510760936_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы не пробовали использовать вместо GDB отладчика собственный ARM DS-5? Или там что-то сугубо свое навороченное для продвинутых jtag'ов?

Сейчас у вас есть axf файлы, полученные ARM DS5 и Keil. Я не понял, чем вы их загружаете. Какой именно утилитой. OpenOCD или штатными средствами ARM DS и Keil?

 

P.S. А что с release версиями? Не смотрели? Правильный ли код получается?

 

UPD. Совсем дурацкий вопрос. У вас в обеих средах тулчейны одинаковы (компилятор 5-й версии, а не 6-й clang)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы не пробовали использовать вместо GDB отладчика собственный ARM DS-5? Или там что-то сугубо свое навороченное для продвинутых jtag'ов?

Как я понял - для продвинутых.

Сейчас у вас есть axf файлы, полученные ARM DS5 и Keil. Я не понял, чем вы их загружаете. Какой именно утилитой. OpenOCD или штатными средствами ARM DS и Keil?

Для Keil всё штатно, для ARM DS-5 - OpenOCD (настройки на рисунке).

P.S. А что с release версиями? Не смотрели? Правильный ли код получается?

Код одинаковый, только адреса глобальных переменных между собой поменялись.

P.S. А что с release версиями? Не смотрели? Правильный ли код получается?

UPD. Совсем дурацкий вопрос. У вас в обеих средах тулчейны одинаковы (компилятор 5-й версии, а не 6-й clang)?

UPD. Совсем дурацкий вопрос. У вас в обеих средах тулчейны одинаковы (компилятор 5-й версии, а не 6-й clang)?

Да, одинаковы.

post-63539-1510845056_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, надо смотреть в сторону OpenOCD. Вы прежде им пользовались для данного контроллера? Надо внимательно посмотреть на его настройки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использовал средства GNU ARM Eclipse, там на выходе .elf-file ( все работало), тут - .axf, думаю проблема в нем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...