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

grinux

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о grinux

  • Звание
    Частый гость
    Частый гость

Посетители профиля

1 522 просмотра профиля
  1. Пока только для IAR >= 9.40 https://github.com/grinux/sunxi-jtag
  2. Разобрался. IAR читает регистры процессора по-другому, нежели J-Link Commander. Commander: T5AE4 314:948.384 JLINK_ReadRegs_64(NumRegs = 22, Indexes: T5AE4 314:948.384 116, T5AE4 314:948.384 117, T5AE4 314:948.416 118, T5AE4 314:948.416 119, T5AE4 314:948.416 120, T5AE4 314:948.416 121, T5AE4 314:948.416 122, T5AE4 314:948.416 123, T5AE4 314:948.416 189, T5AE4 314:948.416 190, T5AE4 314:948.416 191, T5AE4 314:948.416 192, T5AE4 314:948.416 193, T5AE4 314:948.416 194, T5AE4 314:948.448 195, T5AE4 314:948.448 147, T5AE4 314:948.448 150, T5AE4 314:948.448 151, T5AE4 314:948.448 152, T5AE4 314:948.448 153, T5AE4 314:948.480 154, T5AE4 314:948.480 155) T5AE4 314:948.480 -- AARCH32_R0=0x600001DB, AARCH32_R1=0xFFFFFFFF, AARCH32_R2=0x00, AARCH32_R3=0x01, AARCH32_R4=0x55058, AARCH32_R5=0x151ECC, AARCH32_R6=0x5516C, AARCH32_R7=0x57D0C, AARCH32_R8=0xD3, AARCH32_R9=0x28000, AARCH32_R10=0x00, AARCH32_R11=0x00, AARCH32_R12=0x00, AARCH32_R13=0x53F3C, AARCH32_R14=0x7DDC, AARCH32_PC=0x04, AARCH32_SPSR_ABT=0x881B0E54, AARCH32_SPSR_SVC=0x60000153, AARCH32_SPSR_HYP=0x00, AARCH32_SPSR_FIQ=0x2007541, AARCH32_SPSR_IRQ=0x1C1301D7, AARCH32_SPSR_UND=0x600001DB IAR: T1E1C 023:631.362 JLINK_ReadRegs(NumRegs = 1, Indexes: 0) T1E1C 023:631.400 -- R0=0x00 T1E1C 023:631.410 - 0.049ms returns 0x00 T1E1C 023:631.652 JLINK_ReadRegs(NumRegs = 1, Indexes: 1) T1E1C 023:631.662 -- R1=0x5516C T1E1C 023:631.670 - 0.019ms returns 0x00 T1E1C 023:631.800 JLINK_ReadRegs(NumRegs = 1, Indexes: 2) T1E1C 023:631.808 -- R2=0x00 T1E1C 023:631.818 - 0.017ms returns 0x00 T1E1C 023:631.948 JLINK_ReadRegs(NumRegs = 1, Indexes: 3) T1E1C 023:631.956 -- R3=0x01 T1E1C 023:631.968 - 0.021ms returns 0x00 T1E1C 023:632.096 JLINK_ReadRegs(NumRegs = 1, Indexes: 4) T1E1C 023:632.106 -- R4=0x55058 T1E1C 023:632.114 - 0.017ms returns 0x00 T1E1C 023:632.248 JLINK_ReadRegs(NumRegs = 1, Indexes: 5) T1E1C 023:632.258 -- R5=0x87A2DA T1E1C 023:632.266 - 0.018ms returns 0x00 T1E1C 023:632.398 JLINK_ReadRegs(NumRegs = 1, Indexes: 6) T1E1C 023:632.406 -- R6=0x5516C T1E1C 023:632.414 - 0.017ms returns 0x00 T1E1C 023:632.548 JLINK_ReadRegs(NumRegs = 1, Indexes: 7) T1E1C 023:632.556 -- R7=0x57D0C T1E1C 023:632.564 - 0.017ms returns 0x00 Через GDB сервер работает нормально. Всем спасибо!
  3. Зажег. Походил шагами через J-Link Commander. Все нормально ходит, PC тикает, инструкции выполняются. Видимо проблема с IAR, как вы и предположили.
  4. Проверил. Все ядра кроме 0-го в ресете. Также убедился, что 0-e ядро не в режиме WFI. Попробую Keil. J-Link commander читает адекватное значение SP в отличие от IAR.
  5. Стеки для режимов не заданы мной в конфигурации линкера. То что они не заданы, никак не влияет на то, что не происходит выполнения инструкции после того как IAR после загрузки инициализирует PC нужным значением. Чтение мануала и совет по чтению мануала это разные вещи. Универсальный ответ когда нечего сказать по делу, но сказать что то хочется.
  6. Код у меня совершенно такой же. Это он и есть, только в окошке дизассемблера. Ну давайте я вам расскажу про Alwinner и IAR? Зачем участвовать в теме, которая вам не близка?
  7. @jcxz, по-вашему там внутри гном сидит и делает упреждающее чтение блока команд и, видя, что стеки будут нулевые и регистр инициализируется не оптимально, отказывается инкрементировать PC. SP устанавливается в ноль два раза для режимов IRQ и FIQ потому, что стеки для этих режимов не заданы. Если их задать, то ничего не меняется (разумеется). Код который это делает это стандартный cstartup для v7 от IAR: Как видите, инструкции там нормальные. У меня не программа крашится, а выполнения не происходит. Это не может быть связано ни с каким потенциально кривым кодом, т.к. до выполнения этого кода дело не доходит. Проходите мимо уже. Почитать мануал и некрасивые инструкции, - не стоит время тратить на такие советы.
  8. Стеком линкер занимается, там только размер задается(в примере 256), он его кладет в RAM, и если что то не лезет, то проект не соберется. Да и не имеет это значения, раз инструкции не выполняются, дело до инициализации стека не доходит. Начальное значение SP показывает куда то в область DRAM (скрин) Спасибо, у меня свои: https://github.com/grinux/sunxi-svd
  9. Спасибо за идею. Запретил, ничего не поменялось. Программа не может нигде гулять, потому что там пустой main и стандартная инициализация от iar
  10. Взял плату на H616. Он ближе к T507. Точно такое же поведение. Обратил внимание на такой эффект. Делаем пошаговое исполнение. PC стоит на месте, но при этом некоторые регистры (R0, R5) меняются с циклическим повторением значений. Между повторениями на последнем шаге ощутимая пауза (2-3 сек). Т.е. "что-то" там все-таки происходит
  11. A53 поддерживается только 10-м и старше. Я имел ввиду, в какой среде? IAR\Keil и т.п.
  12. У вас работала 1-ядерная JTAG отладка из состояния USB FEL без дополнительных телодвижений, кроме тех, что вы описали? Отлаживались через что?
  13. Все верно, он не находит с чего грузиться, переключается в режим USB FEL и перенастраивает пины SDIO на JTAG. A64 это очень похожий процессор. У вас получилось на нем отлаживаться через JTAG? У меня есть успешный опыт на V3s и H3, грузится в том числе в DDR и отлаживается через IAR-JLink нормально. Появилось в результате экспериментов с конфигурацией линкера. Поведение не отличается.
×
×
  • Создать...