|
|
  |
ARM startup code |
|
|
|
Nov 4 2017, 18:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(x893 @ Nov 4 2017, 20:59)  Мда-а-а пипец Можно развернуто  Цитата(aaarrr @ Nov 4 2017, 20:59)  Такое ощещение, что у вас "хвост" от прошивки потерялся. Что в бинарном файле по адресу 0x1860? Если правильно сгенерил бинарник (из хелпа на ARM DS-5): Код fromelf --bin --output=outfile.bin infile.axf то вроде всё нормально???
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 8 2017, 08:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
В опциях проекта установлена галка: C/C++ Build->Settings->Binary Parsers->Elf Parser, пытаюсь посмотреть, что собой представляет файл *.axf, получаю, что прошивка заканчивается по адресам 0x00000668, команда fromelf даёт бинарник на 12 байт больше (это и есть значения для инициализации глобальных переменных). Чего-то не хватает в *.sct-файле либо криво установлен ARM DS-5?
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 15 2017, 15:53
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Приветствую. Не хочет 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 плюёт следующие сообщения: CODE 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 не меняется.
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 16 2017, 15:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Grizzzly @ Nov 16 2017, 16:26)  А вы не пробовали использовать вместо GDB отладчика собственный ARM DS-5? Или там что-то сугубо свое навороченное для продвинутых jtag'ов? Как я понял - для продвинутых. Цитата(Grizzzly @ Nov 16 2017, 16:26)  Сейчас у вас есть axf файлы, полученные ARM DS5 и Keil. Я не понял, чем вы их загружаете. Какой именно утилитой. OpenOCD или штатными средствами ARM DS и Keil? Для Keil всё штатно, для ARM DS-5 - OpenOCD (настройки на рисунке). Цитата(Grizzzly @ Nov 16 2017, 16:26)  P.S. А что с release версиями? Не смотрели? Правильный ли код получается? Код одинаковый, только адреса глобальных переменных между собой поменялись. Цитата(Grizzzly @ Nov 16 2017, 16:26)  P.S. А что с release версиями? Не смотрели? Правильный ли код получается? UPD. Совсем дурацкий вопрос. У вас в обеих средах тулчейны одинаковы (компилятор 5-й версии, а не 6-й clang)? Цитата(Grizzzly @ Nov 16 2017, 16:26)  UPD. Совсем дурацкий вопрос. У вас в обеих средах тулчейны одинаковы (компилятор 5-й версии, а не 6-й clang)? Да, одинаковы.
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|