grinux 0 8 декабря, 2023 Опубликовано 8 декабря, 2023 (изменено) · Жалоба Всем привет. Есть плата на Allwinner H5 Cortex-A53 4 ядра. Через IAR и JLink образ для отладки в SRAM грузится нормально, но выполнения инструкций не происходит, PC не меняется, как будто ни одно ядро не активно. Чтение\запись регистров\памяти, в том числе PC выполняется нормально. В дизассемблере вижу годные инструкции. PC стоит там, где нужно. Возможно нужно какие то дополнительные манипуляции совершить перед\после загрузки образа, чтобы активировать ядро? Spoiler T46AC 020:555.454 TotalIRLen = 4, IRPrint = 0x01 T46AC 020:556.124 JTAG chain detection found 1 devices: T46AC 020:556.144 #0 Id: 0x5BA00477, IRLen: 04, CoreSight JTAG-DP T46AC 020:558.296 DPv0 detected T46AC 020:558.316 Scanning AP map to find all available APs T46AC 020:560.040 AP[2]: Stopped AP scan as end of AP map has been reached T46AC 020:560.066 AP[0]: AHB-AP (IDR: 0x64770001) T46AC 020:560.080 AP[1]: APB-AP (IDR: 0x44770002) T46AC 020:560.096 Iterating through AP map to find APB-AP to use T46AC 020:560.110 AP[0]: Skipped. Not an APB-AP T46AC 020:560.124 AP[1]: APB-AP found T46AC 020:560.140 No AP map specified by user. Setting auto-detected AP map. T46AC 020:560.962 Scanning ROMTbl @ 0x80000000 T46AC 020:567.612 [0]Comp[0] @ 0x81000000: ROM Table T46AC 020:567.628 Scanning ROMTbl @ 0x81000000 T46AC 020:575.518 [1]Comp[0] @ 0x81010000: Cortex-A53 T46AC 020:578.522 [1]Comp[1] @ 0x81020000: CSS600-CTI T46AC 020:578.546 Core found. Stopped ROM table scan: https://wiki.segger.com/ROMTableScan T46AC 020:578.572 Cortex-A53 @ 0x81010000 (detected) T46AC 020:578.588 CoreCTI @ 0x81020000 (detected) T46AC 020:580.668 Debug architecture: ARMv8.0 T46AC 020:580.756 6 code breakpoints, 4 data breakpoints T46AC 020:582.378 Processor features: T46AC 020:582.398 EL0 support: AArch64 + AArch32 T46AC 020:582.412 EL1 support: AArch64 + AArch32 T46AC 020:582.428 EL2 support: AArch64 + AArch32 T46AC 020:582.444 EL3 support: AArch64 + AArch32 T46AC 020:582.460 FPU support: Single + Double + Conversion T46AC 020:583.382 -- Max. mem block: 0x000047B0 T46AC 020:585.768 Add. info (CPU temp. halted) T46AC 020:611.772 Current exception level: EL3 T46AC 020:611.802 Exception level AArch usage: T46AC 020:611.816 EL0: AArch32 T46AC 020:611.828 EL1: AArch32 T46AC 020:611.838 EL2: AArch32 T46AC 020:611.854 EL3: AArch32 T46AC 020:611.868 Non-secure status: Secure T46AC 020:613.680 Cache info: T46AC 020:613.702 Inner cache boundary: none T46AC 020:613.716 LoU Uniprocessor: 1 T46AC 020:613.728 LoC: 2 T46AC 020:613.740 LoU Inner Shareable: 1 T46AC 020:617.726 I-Cache L1: 32 KB, 256 Sets, 64 Bytes/Line, 2-Way T46AC 020:617.756 D-Cache L1: 32 KB, 128 Sets, 64 Bytes/Line, 4-Way T46AC 020:617.772 Unified-Cache L2: 512 KB, 512 Sets, 64 Bytes/Line, 16-Way T46AC 020:626.326 - 73.917ms returns FALSE T46AC 020:626.368 JLINK_GetIdData(pIdData) T46AC 020:627.162 pIdData->ScanLen=4 T46AC 020:627.180 pIdData->NumDevices=1 T46AC 020:627.184 pIdData->aId[0]=0x5BA00477 T46AC 020:627.188 pIdData->aIrRead[0]=0 T46AC 020:627.194 pIdData->aScanLen[0]=4 T46AC 020:627.196 pIdData->aScanRead[0]=0 T46AC 020:627.202 - 0.833ms T46AC 020:627.306 JLINK_JTAG_GetDeviceID(DeviceIndex = 0) T46AC 020:627.312 - 0.006ms returns 1537213559 T46AC 020:627.316 JLINK_JTAG_GetDeviceInfo(DeviceIndex = 0) T46AC 020:627.320 - 0.003ms returns 0 T46AC 020:627.346 JLINK_HasError() T46AC 020:627.352 JLINK_GetDeviceFamily T46AC 020:627.356 - 0.003ms returns 20 T46AC 020:627.358 JLINK_GetDeviceFamily T46AC 020:627.362 - 0.002ms returns 20 T46AC 020:627.364 JLINK_GetDeviceFamily T46AC 020:627.368 - 0.002ms returns 20 T46AC 020:627.372 JLINK_GetDeviceFamily T46AC 020:627.372 - 0.002ms returns 20 T46AC 020:627.376 JLINK_GetDeviceFamily T46AC 020:627.380 - 0.002ms returns 20 T46AC 020:627.382 JLINK_GetDeviceFamily T46AC 020:627.386 - 0.002ms returns 20 T46AC 020:627.388 JLINK_GetDeviceFamily T46AC 020:627.392 - 0.002ms returns 20 T46AC 020:627.396 JLINK_GetDeviceFamily T46AC 020:627.398 - 0.002ms returns 20 T46AC 020:627.402 JLINK_GetDeviceFamily T46AC 020:627.404 - 0.002ms returns 20 T46AC 020:627.408 JLINK_GetDeviceFamily T46AC 020:627.412 - 0.002ms returns 20 T46AC 020:627.414 JLINK_GetDeviceFamily T46AC 020:627.416 - 0.002ms returns 20 T46AC 020:627.420 JLINK_Halt() T46AC 020:652.442 - 25.020ms returns 0x00 T46AC 020:656.928 JLINK_GetSpeed() T46AC 020:656.942 - 0.013ms returns 1000 T46AC 020:656.948 JLINK_SetMaxSpeed() T46AC 020:657.424 - 0.476ms T46AC 020:657.460 JLINK_BeginDownload(Flags = 0x00000003) T46AC 020:657.464 - 0.005ms T46AC 020:693.404 JLINK_GetHWStatus(...) T46AC 020:693.786 - 0.380ms returns 0 T46AC 020:693.824 JLINK_IsHalted() T46AC 020:693.830 - 0.006ms returns TRUE T46AC 020:693.836 JLINK_WriteMem(0x00010100, 0x130 Bytes, ...) T46AC 020:693.840 Data: 00 00 0F E1 1F 00 C0 E3 12 00 80 E3 00 F0 21 E1 ... T46AC 020:694.016 CPU_WriteMem(304 bytes @ 0x00010100) T46AC 020:696.054 - 2.218ms returns 0x130 T46AC 020:696.084 JLINK_EndDownload() T46AC 020:696.090 - 0.005ms returns 0 (0x0) T46AC 020:696.102 JLINK_ReadMemU32(0x00010100, 0x4C Items) T46AC 020:696.562 CPU_ReadMem(304 bytes @ 0x00010100) T46AC 020:702.536 Data: 00 00 0F E1 1F 00 C0 E3 12 00 80 E3 00 F0 21 E1 ... T46AC 020:702.548 - 6.445ms returns 76 (0x4C) T46AC 020:702.698 JLINK_ReadRegs(NumRegs = 1, Indexes: 9) T46AC 020:702.706 -- R9=0x01 T46AC 020:702.712 - 0.013ms returns 0x00 T46AC 020:715.998 JLINK_WriteReg(R8, 0x000000D3) T46AC 020:716.028 - 0.029ms returns 0 T46AC 020:716.038 JLINK_WriteReg(R9, 0x00010100) T46AC 020:716.042 - 0.003ms returns 0 T46AC 020:716.052 JLINK_ReadRegs(NumRegs = 1, Indexes: 😎 T46AC 020:716.064 -- R8=0xD3 T46AC 020:716.070 - 0.017ms returns 0x00 T46AC 020:716.076 JLINK_WriteReg(R8, 0x000000D3) T46AC 020:716.080 - 0.003ms returns 0 T46AC 020:716.698 JLINK_SetBPEx(Addr = 0x000101B0, Type = 0xFFFFFFF1) T46AC 020:716.710 - 0.013ms returns 0x00000001 T46AC 020:716.716 JLINK_WriteVectorCatch(0x00000000) T46AC 020:716.722 ***** Error: T46AC 020:716.726 Vector catch is not supported for this CPU core T46AC 020:716.732 - 0.014ms returns -1 T46AC 020:718.988 JLINK_SetBPEx(Addr = 0x00000008, Type = 0xFFFFFFF1) T46AC 020:719.002 - 0.014ms returns 0x00000002 T46AC 025:463.220 JLINK_GetHWStatus(...) T46AC 025:463.714 - 0.494ms returns 0 T46AC 025:463.730 JLINK_IsHalted() T46AC 025:464.160 - 0.429ms returns TRUE Изменено 9 декабря, 2023 пользователем grinux Переместил тему в соответствующий раздел. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 8 декабря, 2023 Опубликовано 8 декабря, 2023 · Жалоба В каком состоянии перед тем как вы запустили код находился процессор? Не одно из устройств загрузки ему не доступно и он как usb устройство виден? Тогда aarch32 Или уже отработал загрузчик Linux и ядро (ядра) в aarch64? Ps: есть опыт с bare metal allwinner a64 h616 t507 t113-s3 f133 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба 13 часов назад, grinux сказал: В дизассемблере вижу годные инструкции. PC стоит там, где нужно. T46AC 020:693.836 JLINK_WriteMem(0x00010100, 0x130 Bytes, ...) T46AC 020:693.840 Data: 00 00 0F E1 1F 00 C0 E3 12 00 80 E3 00 F0 21 E1 ... T46AC 020:694.016 CPU_WriteMem(304 bytes @ 0x00010100) T46AC 020:696.054 - 2.218ms returns 0x130 Что он тогда пишет по данному адресу, когда SRAM начинается с 00010000 ? Зачем это смещение (100)? Где у него команда передачи управления по этому адресу, ничего не вижу, кроме этого - T46AC 020:716.698 JLINK_SetBPEx(Addr = 0x000101B0, Type = 0xFFFFFFF1) 12 часов назад, GenaSPB сказал: Тогда aarch32 Он вроде честно признается: T46AC 020:611.802 Exception level AArch usage: T46AC 020:611.816 EL0: AArch32 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grinux 0 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба 14 hours ago, GenaSPB said: В каком состоянии перед тем как вы запустили код находился процессор? Не одно из устройств загрузки ему не доступно и он как usb устройство виден? Тогда aarch32 Или уже отработал загрузчик Linux и ядро (ядра) в aarch64? Ps: есть опыт с bare metal allwinner a64 h616 t507 t113-s3 f133 Все верно, он не находит с чего грузиться, переключается в режим USB FEL и перенастраивает пины SDIO на JTAG. A64 это очень похожий процессор. У вас получилось на нем отлаживаться через JTAG? У меня есть успешный опыт на V3s и H3, грузится в том числе в DDR и отлаживается через IAR-JLink нормально. 1 hour ago, mantech said: T46AC 020:693.836 JLINK_WriteMem(0x00010100, 0x130 Bytes, ...) T46AC 020:693.840 Data: 00 00 0F E1 1F 00 C0 E3 12 00 80 E3 00 F0 21 E1 ... T46AC 020:694.016 CPU_WriteMem(304 bytes @ 0x00010100) T46AC 020:696.054 - 2.218ms returns 0x130 Что он тогда пишет по данному адресу, когда SRAM начинается с 00010000 ? Зачем это смещение (100)? Появилось в результате экспериментов с конфигурацией линкера. Поведение не отличается. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба Я отлаживался под t507. Правда приходилось заранее запускать gdb server segger, иначе отваливалось по слишком длинной строке на приём в gdb. И для устойчивости отладки делал одноядерную версию программы. 2 hours ago, mantech said: Он вроде честно признается Остальные ядра при xfel под ресетом сидят, а оно и про них что-то говорит Изменено 9 декабря, 2023 пользователем GenaSPB Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба 1 час назад, GenaSPB сказал: Остальные ядра при xfel под ресетом сидят, а оно и про них что-то говорит Так это ж CoreSight, встроенный отладочный движок, ему по барабану, что и где там под ресетом, он сам может выставлять и снимать ресеты, когда нужно... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grinux 0 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба 3 hours ago, GenaSPB said: Я отлаживался под t507. Правда приходилось заранее запускать gdb server segger, иначе отваливалось по слишком длинной строке на приём в gdb. У вас работала 1-ядерная JTAG отладка из состояния USB FEL без дополнительных телодвижений, кроме тех, что вы описали? Отлаживались через что? Изменено 9 декабря, 2023 пользователем grinux Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба Segger edu не последний. 9й наверное. Да ничего дополнительно. Изменено 9 декабря, 2023 пользователем GenaSPB Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grinux 0 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба 2 minutes ago, GenaSPB said: Segger edu не последний. 9й наверное A53 поддерживается только 10-м и старше. Я имел ввиду, в какой среде? IAR\Keil и т.п. Изменено 9 декабря, 2023 пользователем grinux Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба Позже скажу какой точно. А так это gdb в еклипсе для embedded. Gcc 13.2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grinux 0 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба Взял плату на H616. Он ближе к T507. Точно такое же поведение. Обратил внимание на такой эффект. Делаем пошаговое исполнение. PC стоит на месте, но при этом некоторые регистры (R0, R5) меняются с циклическим повторением значений. Между повторениями на последнем шаге ощутимая пауза (2-3 сек). Т.е. "что-то" там все-таки происходит Изменено 9 декабря, 2023 пользователем grinux Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба Segger edu v11. Да ну её пошаговую отладку... светодиод, компорт ‐ наше всё... честное слово, оно точно по даташиту. Что вы хотите проверить пошагово? Изменено 9 декабря, 2023 пользователем GenaSPB Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 231 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба 3 часа назад, grinux сказал: Обратил внимание на такой эффект. Делаем пошаговое исполнение. PC стоит на месте, но при этом некоторые регистры (R0, R5) меняются с циклическим повторением значений. Запретите прерывания. Можно просто поставить галку "Disable Interrupts When Stepping" в IAR. Или запретить через соответствующий регистр CPU. 3 часа назад, grinux сказал: Между повторениями на последнем шаге ощутимая пауза (2-3 сек). Т.е. "что-то" там все-таки происходит Разбирайтесь в своей программе. Где она гуляет 2-3 сек. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
grinux 0 9 декабря, 2023 Опубликовано 9 декабря, 2023 (изменено) · Жалоба 34 minutes ago, jcxz said: Запретите прерывания. Можно просто поставить галку "Disable Interrupts When Stepping" в IAR. Или запретить через соответствующий регистр CPU. Разбирайтесь в своей программе. Где она гуляет 2-3 сек. Спасибо за идею. Запретил, ничего не поменялось. Программа не может нигде гулять, потому что там пустой main и стандартная инициализация от iar Изменено 9 декабря, 2023 пользователем grinux Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 9 декабря, 2023 Опубликовано 9 декабря, 2023 · Жалоба Попробуйте базовый адрес на 28000 поменять Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться