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

vitkorob

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Софт J-Link просто пишет одну строку, что не может найти секцию PrgCode в указанном elf-файле - вот и вся диагностика "нехочухи". В map-файле имена правильные, нет ни намека на приписку суффиксов ro, rw, zi. Я уверен, что дело в изменении имен секций линковщиком IAR, потому что после того как "подшаманил" имена секций HEX-редактором, то эту валидацию elf-файл начал проходить. Похоже это трагедия IAR'а. Действительно придётся пользоваться дополнительными инструментами для исправления.
  2. Сталкивался, USB запустил. Прикладываю 100% рабочий проект. Обратите внимание на файл usb_composite.c Для сборки проекта потребуются библиотеки driverlib и usblib от производителя. Проект настроен на версию TivaWare_C_Series-2.1.2.111, установленную в пути по-умолчанию. На официальном сайте http://software-dl.ti.com/tiva-c/SW-TM4C/l.../index_FDS.html доступен пакет библиотек SW-TM4C-2.1.4.178.exe более новой версии. Если пользоваться им, то в проекте надо поправить абсолютные пути к библиотекам. Если нужна старая версия пакета, то сообщите, я могу выложить. usb_0.1.0_firmware_TM4C1294KCPDT_.zip
  3. Пишу программу RAM-загрузчик для прошивки флешки непопулярного МК через J-Link Commander или через J-Flash - https://wiki.segger.com/Adding_Support_for_New_Devices В этой программе надо разделить код в ELF-файле на 3 секции, название которых PrgCode, PrgData, DevDscr. Для этого я написал скрипт линкера (он в листенге ниже). При написании опирался на мануал - https://www.iar.com/support/tech-notes/link...ap-file-v.5.xx/ /* * Define a memory region that covers the entire 4 GB * addressible space of the processor. */ define memory mem with size = 4G; /* * Define a region for the on-chip SRAM */ define region RAM_region = mem:[from 0x20000000 to 0x2002FFFF]; /* * Indicate that the read/write values should be * initialized by copying from flash. */ initialize manually with packing=none { readwrite }; "PrgData": place in RAM_region { readwrite }; "PrgCode": place in RAM_region { readonly }; "DevDscr": place in RAM_region { readonly section DevDscr }; После получения ELF-файла я проверял названия секций утилитой arm-none-eabi-readelf.exe из пакета GNU Tools ARM. К сожалению, я наблюдал, что имена секций МЕНЯЛИСЬ! К секциям приписывался один из суффиксов rw, ro, zi (см. таблицу ниже) Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 00392c 000000 00 0 0 4 [ 1] .shstrtab STRTAB 00000000 00392c 0000e0 00 0 0 4 [ 2] .strtab STRTAB 00000000 003a0c 0002a2 00 0 0 4 [ 3] .symtab SYMTAB 00000000 003cb0 000330 10 2 37 4 [ 4] PrgData zi NOBITS 20000000 000034 00003c 01 WA 0 0 4 [ 5] PrgCode ro PROGBITS 2000003c 000034 000100 01 AX 0 0 4 [ 6] DevDscr ro PROGBITS 2000013c 000134 0010a0 01 A 0 0 4 Из-за это верхний уровень (J-Link Commander, J-Flash) ломается - не может распарсить ELF-файл, чтобы найти функции прошивки флеша. Пожалуйста, помогите найти способ предотвратить такой калечение имён секций.
  4. Добрый день! Есть задача повторить чип Altera EPM7160ST. На исходном чипе, как я понял, стоят секьюрити биты, поэтому посмотреть прошивку по JTAG не выходит. Ищу способ считать прошивку нестандартным путем (сделать реверс-инжиниринг). Может кто-то имеет опыт и подскажет пути решения? Есть ли у кого-нибудь контакты специалистов или специализированных компаний (скажем китайцев), которым можно было бы отдать задачу с гарантированным результатом?
×
×
  • Создать...