grinux 0 December 8, 2023 Posted December 8, 2023 (edited) · Report post Всем привет. Есть плата на 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 Edited December 9, 2023 by grinux Переместил тему в соответствующий раздел. Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 8, 2023 Posted December 8, 2023 · Report post В каком состоянии перед тем как вы запустили код находился процессор? Не одно из устройств загрузки ему не доступно и он как usb устройство виден? Тогда aarch32 Или уже отработал загрузчик Linux и ядро (ядра) в aarch64? Ps: есть опыт с bare metal allwinner a64 h616 t507 t113-s3 f133 Share this post Link to post Share on other sites More sharing options...
mantech 49 December 9, 2023 Posted December 9, 2023 · Report post 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 Share this post Link to post Share on other sites More sharing options...
grinux 0 December 9, 2023 Posted December 9, 2023 · Report post 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)? Появилось в результате экспериментов с конфигурацией линкера. Поведение не отличается. Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 9, 2023 Posted December 9, 2023 (edited) · Report post Я отлаживался под t507. Правда приходилось заранее запускать gdb server segger, иначе отваливалось по слишком длинной строке на приём в gdb. И для устойчивости отладки делал одноядерную версию программы. 2 hours ago, mantech said: Он вроде честно признается Остальные ядра при xfel под ресетом сидят, а оно и про них что-то говорит Edited December 9, 2023 by GenaSPB Share this post Link to post Share on other sites More sharing options...
mantech 49 December 9, 2023 Posted December 9, 2023 · Report post 1 час назад, GenaSPB сказал: Остальные ядра при xfel под ресетом сидят, а оно и про них что-то говорит Так это ж CoreSight, встроенный отладочный движок, ему по барабану, что и где там под ресетом, он сам может выставлять и снимать ресеты, когда нужно... Share this post Link to post Share on other sites More sharing options...
grinux 0 December 9, 2023 Posted December 9, 2023 (edited) · Report post 3 hours ago, GenaSPB said: Я отлаживался под t507. Правда приходилось заранее запускать gdb server segger, иначе отваливалось по слишком длинной строке на приём в gdb. У вас работала 1-ядерная JTAG отладка из состояния USB FEL без дополнительных телодвижений, кроме тех, что вы описали? Отлаживались через что? Edited December 9, 2023 by grinux Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 9, 2023 Posted December 9, 2023 (edited) · Report post Segger edu не последний. 9й наверное. Да ничего дополнительно. Edited December 9, 2023 by GenaSPB Share this post Link to post Share on other sites More sharing options...
grinux 0 December 9, 2023 Posted December 9, 2023 (edited) · Report post 2 minutes ago, GenaSPB said: Segger edu не последний. 9й наверное A53 поддерживается только 10-м и старше. Я имел ввиду, в какой среде? IAR\Keil и т.п. Edited December 9, 2023 by grinux Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 9, 2023 Posted December 9, 2023 · Report post Позже скажу какой точно. А так это gdb в еклипсе для embedded. Gcc 13.2 Share this post Link to post Share on other sites More sharing options...
grinux 0 December 9, 2023 Posted December 9, 2023 (edited) · Report post Взял плату на H616. Он ближе к T507. Точно такое же поведение. Обратил внимание на такой эффект. Делаем пошаговое исполнение. PC стоит на месте, но при этом некоторые регистры (R0, R5) меняются с циклическим повторением значений. Между повторениями на последнем шаге ощутимая пауза (2-3 сек). Т.е. "что-то" там все-таки происходит Edited December 9, 2023 by grinux Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 9, 2023 Posted December 9, 2023 (edited) · Report post Segger edu v11. Да ну её пошаговую отладку... светодиод, компорт ‐ наше всё... честное слово, оно точно по даташиту. Что вы хотите проверить пошагово? Edited December 9, 2023 by GenaSPB Share this post Link to post Share on other sites More sharing options...
jcxz 235 December 9, 2023 Posted December 9, 2023 · Report post 3 часа назад, grinux сказал: Обратил внимание на такой эффект. Делаем пошаговое исполнение. PC стоит на месте, но при этом некоторые регистры (R0, R5) меняются с циклическим повторением значений. Запретите прерывания. Можно просто поставить галку "Disable Interrupts When Stepping" в IAR. Или запретить через соответствующий регистр CPU. 3 часа назад, grinux сказал: Между повторениями на последнем шаге ощутимая пауза (2-3 сек). Т.е. "что-то" там все-таки происходит Разбирайтесь в своей программе. Где она гуляет 2-3 сек. Share this post Link to post Share on other sites More sharing options...
grinux 0 December 9, 2023 Posted December 9, 2023 (edited) · Report post 34 minutes ago, jcxz said: Запретите прерывания. Можно просто поставить галку "Disable Interrupts When Stepping" в IAR. Или запретить через соответствующий регистр CPU. Разбирайтесь в своей программе. Где она гуляет 2-3 сек. Спасибо за идею. Запретил, ничего не поменялось. Программа не может нигде гулять, потому что там пустой main и стандартная инициализация от iar Edited December 9, 2023 by grinux Share this post Link to post Share on other sites More sharing options...
GenaSPB 11 December 9, 2023 Posted December 9, 2023 · Report post Попробуйте базовый адрес на 28000 поменять Share this post Link to post Share on other sites More sharing options...