Hi again,
just as an extension. On the same M1, I’ve Ubuntu ARM64 running using Parallels
VM.
Same issue: Host CPU Type detected as „x86_64“ and compilation stops at same
file —> see below.
Issue seems to be not specific to MacOS M1, but rather generic to ARM64 host
systems.
/Piet
—————
AR (create): libdrivers.a bchlib_setup.o bchlib_teardown.o bchlib_read.o
bchlib_write.o bchlib_cache.o bchlib_sem.o bchdev_register.o
bchdev_unregister.o bchdev_driver.o ioe_dummy.o gpio.o gpio_lower_half.o loop.o
losetup.o pipe.o fifo.o pipe_common.o serial.o serial_io.o vsyslog.o
syslog_stream.o syslog_channel.o syslog_putc.o syslog_write.o syslog_force.o
syslog_flush.o syslog_initialize.o syslog_device.o oneshot.o arch_alarm.o
hid_parser.o dev_null.o dev_zero.o ramdisk.o mkrd.o
make[1]: Leaving directory '/home/piet/Projects/NuttX/ptka/nuttx/drivers'
IN: drivers/libdrivers.a -> staging/libdrivers.a
make[1]: Entering directory '/home/piet/Projects/NuttX/ptka/nuttx/boards'
CC: boardctl.c
AR (create): libboards.a dummy.o boardctl.o
make[1]: Leaving directory '/home/piet/Projects/NuttX/ptka/nuttx/boards'
IN: boards/libboards.a -> staging/libboards.a
make[1]: Entering directory '/home/piet/Projects/NuttX/ptka/nuttx/libs/libc'
AS: machine/sim/arch_setjmp_arm.S
machine/sim/arch_setjmp_arm.S: Assembler messages:
machine/sim/arch_setjmp_arm.S:39: Error: unknown pseudo-op: `.syntax'
machine/sim/arch_setjmp_arm.S:43: Error: operand 1 must be an integer register
-- `mov ip,r0'
machine/sim/arch_setjmp_arm.S:44: Error: unknown mnemonic `stmia' -- `stmia
ip!,{v1,v2,v3,v4,v5,v6,sl,fp}'
machine/sim/arch_setjmp_arm.S:45: Error: operand 1 must be an integer register
-- `mov r2,sp'
machine/sim/arch_setjmp_arm.S:46: Error: unknown mnemonic `stmia' -- `stmia
ip!,{r2,lr}'
machine/sim/arch_setjmp_arm.S:47: Error: operand 1 must be an integer register
-- `mov r0,#0'
machine/sim/arch_setjmp_arm.S:75: Error: unknown mnemonic `bx' -- `bx lr'
machine/sim/arch_setjmp_arm.S:77: Error: unknown pseudo-op: `.syntax'
machine/sim/arch_setjmp_arm.S:81: Error: operand 1 must be an integer register
-- `mov ip,r0'
machine/sim/arch_setjmp_arm.S:82: Error: operand 1 must be an SVE predicate
register -- `movs r0,r1'
machine/sim/arch_setjmp_arm.S:83: Error: unknown mnemonic `moveq' -- `moveq
r0,#1'
machine/sim/arch_setjmp_arm.S:84: Error: unknown mnemonic `ldmia' -- `ldmia
ip!,{v1,v2,v3,v4,v5,v6,sl,fp}'
machine/sim/arch_setjmp_arm.S:85: Error: unknown mnemonic `ldmia' -- `ldmia
ip!,{r2,lr}'
machine/sim/arch_setjmp_arm.S:103: Error: unknown mnemonic `bx' -- `bx lr'
machine/sim/arch_setjmp_arm.S:86: Error: undefined symbol r2 used as an
immediate value
make[1]: *** [Makefile:130: bin/arch_setjmp_arm.o] Error 1
make[1]: Leaving directory '/home/piet/Projects/NuttX/ptka/nuttx/libs/libc'
make: *** [tools/LibTargets.mk:168: libs/libc/libc.a] Error 2
————
> Am 29.01.2022 um 19:00 schrieb Peter Kalbus <[email protected]>:
>
> Config and log from my M1:
>
> ——————————————
>
> #
> # This file is autogenerated: PLEASE DO NOT EDIT IT.
> #
> # You can use "make menuconfig" to make any modifications to the installed
> .config file.
> # You can then do "make savedefconfig" to generate a new defconfig file that
> includes your
> # modifications.
> #
> # CONFIG_NSH_CMDOPT_HEXDUMP is not set
> CONFIG_ARCH="sim"
> CONFIG_ARCH_BOARD="sim"
> CONFIG_ARCH_BOARD_SIM=y
> CONFIG_ARCH_CHIP="sim"
> CONFIG_ARCH_SIM=y
> CONFIG_BOARDCTL_APP_SYMTAB=y
> CONFIG_BOARDCTL_POWEROFF=y
> CONFIG_BOARD_LOOPSPERMSEC=0
> CONFIG_BOOT_RUNFROMEXTSRAM=y
> CONFIG_BUILTIN=y
> CONFIG_DEBUG_SYMBOLS=y
> CONFIG_DEV_GPIO=y
> CONFIG_DEV_LOOP=y
> CONFIG_DEV_ZERO=y
> CONFIG_EXAMPLES_GPIO=y
> CONFIG_EXAMPLES_HELLO=y
> CONFIG_FAT_LCNAMES=y
> CONFIG_FAT_LFN=y
> CONFIG_FSUTILS_PASSWD=y
> CONFIG_FSUTILS_PASSWD_READONLY=y
> CONFIG_FS_BINFS=y
> CONFIG_FS_FAT=y
> CONFIG_FS_PROCFS=y
> CONFIG_FS_RAMMAP=y
> CONFIG_FS_ROMFS=y
> CONFIG_GPIO_LOWER_HALF=y
> CONFIG_HOST_ARM=y
> CONFIG_HOST_MACOS=y
> CONFIG_IDLETHREAD_STACKSIZE=4096
> CONFIG_INIT_ENTRYPOINT="nsh_main"
> CONFIG_IOEXPANDER=y
> CONFIG_IOEXPANDER_DUMMY=y
> CONFIG_LIBC_ENVPATH=y
> CONFIG_LIBC_EXECFUNCS=y
> CONFIG_LIBC_LOCALE=y
> CONFIG_LIBC_LOCALE_CATALOG=y
> CONFIG_LIBC_LOCALE_GETTEXT=y
> CONFIG_NSH_ARCHINIT=y
> CONFIG_NSH_ARCHROMFS=y
> CONFIG_NSH_BUILTIN_APPS=y
> CONFIG_NSH_CONSOLE_LOGIN=y
> CONFIG_NSH_FATDEVNO=2
> CONFIG_NSH_FILE_APPS=y
> CONFIG_NSH_MOTD=y
> CONFIG_NSH_MOTD_STRING="MOTD: username=admin password=Administrator"
> CONFIG_NSH_READLINE=y
> CONFIG_NSH_ROMFSDEVNO=1
> CONFIG_NSH_ROMFSETC=y
> CONFIG_PATH_INITIAL="/bin"
> CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=2048
> CONFIG_PSEUDOFS_ATTRIBUTES=y
> CONFIG_PSEUDOFS_SOFTLINKS=y
> CONFIG_READLINE_TABCOMPLETION=y
> CONFIG_SCHED_HAVE_PARENT=y
> CONFIG_SCHED_HPWORK=y
> CONFIG_SCHED_ONEXIT=y
> CONFIG_SCHED_WAITPID=y
> CONFIG_SDCLONE_DISABLE=y
> CONFIG_START_MONTH=6
> CONFIG_START_YEAR=2008
> CONFIG_SYSTEM_NSH=y
>
> ——————————————
>
> for dir in /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps
> sched drivers boards arch/sim/src fs binfmt libs/libc mm ; do \
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C $dir
> EXTRAFLAGS="-D__KERNEL__ " depend || exit; \
> done
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/builtin depend
> APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/examples/gpio
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/examples/hello
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/fsutils/mkfatfs
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/fsutils/passwd
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/nshlib depend
> APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/platform depend
> APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/system/nsh
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C
> /Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps/system/readline
> depend APPDIR="/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/apps"
> make[2]: Nothing to be done for `depend'.
> touch .depend
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> make[1]: Nothing to be done for `depend'.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C sched libsched.a
> EXTRAFLAGS="-D__KERNEL__ "
> make[1]: `libsched.a' is up to date.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C drivers
> libdrivers.a EXTRAFLAGS="-D__KERNEL__ "
> make[1]: `libdrivers.a' is up to date.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C boards libboards.a
> EXTRAFLAGS="-D__KERNEL__ "
> make[1]: `libboards.a' is up to date.
> /Applications/Xcode.app/Contents/Developer/usr/bin/make -C libs/libc libc.a
> EXTRAFLAGS=""
> AS: machine/sim/arch_setjmp_arm.S
> cc -c -Wall -Wstrict-prototypes -Wshadow -Wundef -g -fno-builtin
> -fvisibility=hidden -fno-common -isystem
> "/Users/piet/Projects/NuttX/feature-sim-macos-m1-support/nuttx/include"
> -D__NuttX__ -U_AIX -U_WIN32 -U__APPLE__ -U__FreeBSD__ -U__NetBSD__
> -U__linux__ -U__sun__ -U__unix__
> -U__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ -pipe -D__ASSEMBLY__
> machine/sim/arch_setjmp_arm.S -o bin/arch_setjmp_arm.o
> machine/sim/arch_setjmp_arm.S:38:1: error: unknown directive
> .syntax unified
> ^
> machine/sim/arch_setjmp_arm.S:40:1: error: unknown directive
> .type setjmp,%function
> ^
> machine/sim/arch_setjmp_arm.S:42:6: error: invalid operand for instruction
> mov ip,r0
> ^
> machine/sim/arch_setjmp_arm.S:43:31: error: vector register expected
> stmia ip!,{v1,v2,v3,v4,v5,v6,sl,fp}
> ^
> machine/sim/arch_setjmp_arm.S:44:6: error: invalid operand for instruction
> mov r2,sp
> ^
> machine/sim/arch_setjmp_arm.S:45:13: error: vector register expected
> stmia ip!,{r2,lr}
> ^
> machine/sim/arch_setjmp_arm.S:46:6: error: invalid operand for instruction
> mov r0,#0
> ^
> machine/sim/arch_setjmp_arm.S:48:4: error: unrecognized instruction mnemonic,
> did you mean: b, bcax, bl, br, sb, tbx?
> 3: bx lr
> ^
> machine/sim/arch_setjmp_arm.S:50:1: error: unknown directive
> .syntax unified
> ^
> machine/sim/arch_setjmp_arm.S:52:1: error: unknown directive
> .type longjmp,%function
> ^
> machine/sim/arch_setjmp_arm.S:54:6: error: invalid operand for instruction
> mov ip,r0
> ^
> machine/sim/arch_setjmp_arm.S:55:7: error: invalid operand for instruction
> movs r0,r1
> ^
> machine/sim/arch_setjmp_arm.S:56:2: error: unrecognized instruction mnemonic,
> did you mean: mov?
> moveq r0,#1
> ^
> machine/sim/arch_setjmp_arm.S:57:32: error: vector register expected
> ldmia ip!, {v1,v2,v3,v4,v5,v6,sl,fp}
> ^
> machine/sim/arch_setjmp_arm.S:58:14: error: vector register expected
> ldmia ip!, {r2,lr}
> ^
> machine/sim/arch_setjmp_arm.S:59:9: error: expected compatible register or
> logical immediate
> mov sp,r2
> ^
> machine/sim/arch_setjmp_arm.S:61:4: error: unrecognized instruction mnemonic,
> did you mean: b, bcax, bl, br, sb, tbx?
> 3: bx lr
> ^
> make[1]: *** [bin/arch_setjmp_arm.o] Error 1
> make: *** [libs/libc/libc.a] Error 2
>
>
>
>> Am 29.01.2022 um 18:40 schrieb Peter Kalbus <[email protected]>:
>>
>> Hi,
>>
>> I’m using NuttX on a M1 MacBook Air since a couple of months.
>> I’ve no issues to get NuttX compiled for my RP2040 based targets.
>>
>> But I can confirm, that the Sim configuration sim:nsh not working.
>>
>> Currently, I see there are two issues:
>>
>> /1/ M1 „Host CPU Type“ is detected as x86_64, but not as „arm“
>> Workarround for this is, to set it manually in the configuration
>>
>> /2/ At least the following files are not compilable
>> arch/sim/src/sim/up_vfork_arm.S
>> <https://github.com/ptka/incubator-nuttx#diff-fd079323b0636ac4012f50afe8c5555656d7a760b0429f46188919fe7807f8a5>
>> libs/libc/machine/sim/arch_setjmp_arm.S
>> <https://github.com/ptka/incubator-nuttx#diff-cffded10274b4845aae8c75bd91550d140214585ea17d47f2cf01dd021a16abe>
>> libs/libc/stdio/lib_libvsprintf.c
>> <https://github.com/ptka/incubator-nuttx#diff-befc8e04ddb3722f024f65ffd7648aac1cb24846d2b80fff6328e3cb5862220f>
>>
>> The 2nd point could be related to a wrong compiler/assembler selected
>> or the way, the compiler is invoked. In worst case, it’s there code itself.
>>
>> I would be very interested helping to find a solution on this topic.
>>
>> /Piet
>>
>>> Am 29.01.2022 um 17:33 schrieb Tomasz CEDRO <[email protected]>:
>>>
>>> macOS is a BSD.. very close to FreeBSD:
>>> 1. Use gmake.
>>> 2. Make sure you have the right version of kconfig-frontends package
>>> installed. If you installed it locally make sure path to your local
>>> binary is in the first place.
>>>
>>> --
>>> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
>>
>