Hi:
Today, I pulled and synchronized the latest NuttX, but after successfully
compiling it, I found that it failed to run. Through the process of bisecting,
the issue was ultimately pinpointed to Pull Request #15437
https://github.com/apache/nuttx/pull/15437
The pull request #15437 lacks test logs, leaving me uncertain as to
whether it has been validated through real hardware testing. These are the
outcomes of my tests on the ZCU111 board regarding the jtag and nsh
configurations. The pull request #15437 changes ARM64_CONTEXT_REGS from 36 to
37, resulting in the stack no longer being 16-byte aligned, which appears to
violate the ARMv8-A architecture's requirement for 16-byte stack alignment.
While I encountered this issue on the ZCU111 hardware, I am unsure whether
other ARM64 hardware platforms might be similarly affected. If anyone has
experience or insights regarding other ARM64 hardware, could you share your
advice? Specifically, I would appreciate details on how stack alignment
requirements are implemented or any potential workarounds to avoid this issue.
Thank you very much!
JTAG:
1 tools/configure.sh zcu111:jtag
2 make
3 download to the ZCU111 by JTAG and run:
- Ready to Boot Primary CPU
- Boot from EL3
- Boot to C runtime for OS Initialize
nx_start: Entry
up_allocate_heap: heap_start=0x0x1b6000, heap_size=0x7fd4a000
gic_validate_dist_version: GICv2 detected
arm64_exception_handler: CurrentEL: MODE_EL3
arm64_exception_handler: ESR_ELn: 0x9a00
arm64_exception_handler: FAR_ELn: 0x1130278421201907
arm64_exception_handler: ELR_ELn: 0x189284
print_ec_cause: SP Alignment
print_ec_cause: SP alignment fault exception
dump_assert_info: Current Version: NuttX 10.2.0 80e37cb22c Feb 3 2025 10:13:54
dump_assert_info: Assertion failed panic: at file: common/arm64_fatal.c:572 tas8
up_dump_register: stack = 0x1b4590
up_dump_register: x0: 0x8 x1: 0x1ad360
up_dump_register: x2: 0x8 x3: 0x2
up_dump_register: x4: 0x11ce50x5: 0x1b6398
up_dump_register: x6: 0xe80e300a92404231 x7: 0x115f2a882441f401
up_dump_register: x8: 0xe87aa41a1403000d x9: 0x4000c01640681404
up_dump_register: x10: 0x801a589c11200f07 x11: 0x844000d124244195
up_dump_register: x12: 0x9cb48130485458d7 x13: 0x857d0d0430d89326
up_dump_register: x14: 0x32504a0c66650520 x15: 0xff00
up_dump_register: x16: 0x2470010282020ec1 x17: 0x99ae11ed219421c1
up_dump_register: x18: 0x857d0d0430d89310 x19: 0x44b40228d801404
up_dump_register: x20: 0x40b3692634057008 x21: 0x387030af24609919
up_dump_register: x22: 0x48088006128e49c3 x23: 0x100064
up_dump_register: x24: 0x1b4cb0x25: 0x101c30
up_dump_register: x26: 0x2d5119104944c158 x27: 0x70ea896aa3521102
up_dump_register: x28: 0xf0fc07a8100183ce x29: 0x1b4c40
up_dump_register: x30: 0x106800
up_dump_register:
up_dump_register: STATUS Registers:
up_dump_register: SPSR: 0x83cd
up_dump_register: ELR: 0x189284
up_dump_register: SP_EL0:0x1b4cb0
up_dump_register: SP_ELX:0x1b48c8
up_dump_register: EXE_DEPTH: 0x0
up_dump_register: SCTLR_EL1: 0xc52838
sched_dumpstack: backtrace| 0: 0x00189284 0x0010522c 0x0
dump_tasks:PID GROUP PRI POLICY TYPENPX STATE EVENT SIGMASK D
dump_tasks: --- --- --- --- --- -- --q
dump_task: 0 0 0 FIFO Kthread - Running00k
sched_dumpstack: backtrace| 0: 0x00189284 0x0010522c 0x0
nsh:
1 tools/configure.sh zcu111:nsh
2 make
3 flash to the QSPI flash of ZCU111 and boot:
NOTICE: BL31: Built : 09:38:30, Dec 20 2024
- Ready to Boot Primary CPU
- Boot from EL1
- Boot to C runtime for OS Initialize
psc��_start: Entry
up_allocate_heap: heap_start=0x0x156000, heap_size=0x7fdaa000
gic_validate_dist_version: GICv2 detected
uart_registarm64_el1_undef: Undefined instruction at 0x100b04, dump:
arm64_el1_undef: 0x100afc : 0xd5033fdf
arm64_el1_undef: 0x100b00 : 0xd65f03c0
arm64_el1_undef: 0x100b04 : 0xa9bf7bfd
arm64_el1_undef: 0x100b08 : 0x910003fd
arm64_el1_undef: 0x100b0c : 0x97fffdcc
arm64_exception_handler: CurrentEL: MODE_EL1
arm64_exception_handler: ESR_ELn: 0x0
arm64_exception_handler: FAR_ELn: 0x0
arm64_exception_handler: ELR_ELn: 0x108a94
print_ec_cause: Unknown/Uncategorized
print_ec_cause: Unknown/Uncategorized
dump_assert_info: Current Version: NuttX 10.2.0 d22e6d7489-dirty Feb 3 2025
14:58:41 arm64
dump_assert_info: Assertion failed panic: at file: common/arm64_fatal.c:572
task: Idle_Task process: Kernel 0x101f10
up_dump_register: stack = 0x155950
up_dump_register: x0: 0x155970x1: 0x12e498
up_dump_register: x2: 0xd x3: 0x135698
up_dump_register: x4: 0x1559c0x5: 0x12e5ac
up_dump_register: x6: 0x135602x7: 0xd
up_dump_register: x8: 0x135602x9: 0xd
up_dump_register: x10: 0xffd8 x11: 0x0
up_dump_regi