123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532 |
- #
- # For a description of the syntax of this configuration file,
- # see the file kconfig-language.txt in the NuttX tools repository.
- #
- if ARCH_SIM
- comment "Simulation Configuration Options"
- choice
- prompt "Host CPU Type"
- default HOST_X86_64
- config HOST_X86_64
- bool "x86_64"
- select ARCH_HAVE_STACKCHECK
- select LIBC_ARCH_ELF_64BIT if LIBC_ARCH_ELF && !SIM_M32
- config HOST_X86
- bool "x86"
- select ARCH_HAVE_STACKCHECK
- config HOST_ARM
- bool "arm"
- select ARCH_HAVE_STACKCHECK
- endchoice # Host CPU Type
- config ARCH_CHIP
- string
- default "sim"
- config SIM_M32
- bool "Build 32-bit simulation on 64-bit machine"
- default n
- depends on HOST_X86_64
- ---help---
- Simulation context switching is based on logic like setjmp and longjmp. This
- context switching is only available for 32-bit targets. On 64-bit machines,
- this context switching will fail.
- The workaround on 64-bit machines for now is to build for a 32-bit target on the
- 64-bit machine. The workaround for this issue has been included in NuttX 6.15 and
- beyond. For those versions, you must add SIM_M32=y to the .config file in
- order to enable building a 32-bit image on a 64-bit platform.
- config SIM_CYGWIN_DECORATED
- bool "Decorated Cygwin names"
- default n
- depends on WINDOWS_CYGWIN
- ---help---
- Older versions of Cygwin tools decorated C symbol names by adding an
- underscore to the beginning of the symbol name. Newer versions of
- Cygwin do not seem to do this.
- How do you know if you need this option? You could look at the generated
- symbol tables to see if there are underscore characters at the beginning
- of the symbol names. Or, if you need this option, the simulation will not
- run: It will crash early, probably in some function due to the failure to
- allocate memory.
- choice
- prompt "X64_64 ABI"
- default SIM_X8664_SYSTEMV if HOST_LINUX
- default SIM_X8664_MICROSOFT if HOST_WINDOWS
- depends on HOST_X86_64 && !SIM_32
- config SIM_X8664_SYSTEMV
- bool "System V AMD64 ABI"
- ---help---
- The calling convention of the System V AMD64 ABI is followed on Solaris,
- Linux, FreeBSD, macOS, and other UNIX-like or POSIX-compliant operating
- systems. The first six integer or pointer arguments are passed in registers
- RDI, RSI, RDX, RCX, R8, and R9, while XMM0, XMM1, XMM2, XMM3, XMM4, XMM5,
- XMM6 and XMM7 are used for floating point arguments. For system calls, R10
- is used instead of RCX. As in the Microsoft x64 calling convention,
- additional arguments are passed on the stack and the return value is stored
- in RAX.
- Registers RBP, RBX, and R12-R15 are callee-save registers; all others must
- be saved by the caller if they wish to preserve their values.
- Unlike the Microsoft calling convention, a shadow space is not provided; on
- function entry, the return address is adjacent to the seventh integer argument
- on the stack.
- config SIM_X8664_MICROSOFT
- bool "Microsoft x64 calling convention"
- ---help---
- The Microsoft x64 calling convention is followed on Microsoft Windows and
- pre-boot UEFI (for long mode on x86-64). It uses registers RCX, RDX, R8,
- R9 for the first four integer or pointer arguments (in that order), and
- XMM0, XMM1, XMM2, XMM3 are used for floating point arguments. Additional
- arguments are pushed onto the stack (right to left). Integer return
- values (similar to x86) are returned in RAX if 64 bits or less. Floating
- point return values are returned in XMM0. Parameters less than 64 bits
- long are not zero extended; the high bits are not zeroed.
- endchoice
- config SIM_WALLTIME
- bool "Run the simulation at a fixed cadence in near real-time"
- default n
- if SIM_WALLTIME
- choice
- prompt "Simulation at a fixed cadence in near real-time"
- default SIM_WALLTIME_SLEEP
- config SIM_WALLTIME_SLEEP
- bool "Execution the simulation in near real-time using host sleep"
- ---help---
- NOTE: In order to facility fast testing, the sim target's IDLE loop, by default,
- calls the system timer "interrupt handler" as fast as possible. As a result, there
- really are no noticeable delays when a task sleeps. However, the task really does
- sleep -- but the time scale is wrong. If you want behavior that is closer to
- normal timing, then you can define SIM_WALLTIME=y in your configuration
- file. This configuration setting will cause the sim target's IDLE loop to delay
- on each call so that the system "timer interrupt" is called at a rate approximately
- correct for the system timer tick rate. With this definition in the configuration,
- sleep() behavior is more or less normal.
- config SIM_WALLTIME_SIGNAL
- bool "Execute the simulation using a host timer"
- ---help---
- Run the NuttX simulation using a host timer that delivers periodic SIGALRM
- events at a tick rate specified by CONFIG_USEC_PER_TICK. Enabling this option
- will generate the timer 'tick' events from the host timer at a fixed rate.
- The simulated 'tick' events from Idle task are no longer sent.
- endchoice
- endif
- config SIM_NETDEV
- bool "Simulated Network Device"
- default y
- depends on NET_ETHERNET
- select ARCH_HAVE_NETDEV_STATISTICS
- select SCHED_LPWORK
- select SIM_WALLTIME
- ---help---
- Build in support for a simulated network device.
- if SIM_NETDEV
- choice
- prompt "Simulated Network Device Type"
- default SIM_NETDEV_TAP
- config SIM_NETDEV_TAP
- bool "Simulated Network Device with TAP/WPCAP"
- depends on (HOST_LINUX || HOST_WINDOWS)
- ---help---
- Build in support for a simulated network device using a TAP device on Linux or
- WPCAP on Windows.
- config SIM_NETDEV_VPNKIT
- bool "Simulated Network Device with VPNKit"
- ---help---
- Build in support for a simulated network device using VPNKit.
- endchoice
- endif
- config SIM_NETDEV_VPNKIT_PATH
- string "Unix domain socket to communicate with VPNKit"
- default "/tmp/vpnkit-nuttx"
- depends on SIM_NETDEV_VPNKIT
- if HOST_LINUX
- choice
- prompt "Simulation Network Type"
- default SIM_NET_HOST_ROUTE
- depends on SIM_NETDEV_TAP
- config SIM_NET_HOST_ROUTE
- bool "Use local host route"
- ---help---
- Add a host route for the simulation that points to the created tap device. The
- simulation will not be able to access the public network unless iptables is
- configured to masquerade for it. See boards/sim/sim sim/NETWORK-LINUX.txt
- for more information.
- config SIM_NET_BRIDGE
- bool "Attach to Linux bridge"
- ---help---
- Add the created tap device to the specified bridge. You will need to manually
- configure the bridge IP address (if any) and routes that point to the bridge.
- See boards/sim/sim/sim/NETWORK-LINUX.txt for more information.
- endchoice
- endif
- if SIM_NET_BRIDGE
- config SIM_NET_BRIDGE_DEVICE
- string "Bridge device to attach"
- default "nuttx0"
- ---help---
- The name of the bridge device (as passed to "brctl create") to which the simulation's
- TAP interface should be added.
- endif
- config SIM_RPTUN_MASTER
- bool "Remote Processor Tunneling Role"
- depends on RPTUN
- config SIM_LCDDRIVER
- bool "Build a simulated LCD driver"
- default y
- depends on NX && NX_LCDDRIVER
- ---help---
- Build a simulated LCD driver"
- config SIM_FRAMEBUFFER
- bool "Build a simulated frame buffer driver"
- default n
- depends on !NX_LCDDRIVER
- ---help---
- Build a simulated frame buffer driver"
- if SIM_FRAMEBUFFER
- config SIM_X11FB
- bool "Use X11 window"
- default n
- select SCHED_LPWORK
- select SIM_WALLTIME
- ---help---
- Use an X11 graphics window to simulate the graphics device"
- config SIM_X11NOSHM
- bool "Don't use shared memory with X11"
- default n
- depends on SIM_X11FB
- ---help---
- Don't use shared memory with the X11 graphics device emulation."
- config SIM_FBHEIGHT
- int "Display height"
- default 240
- ---help---
- Simulated display height. Default: 240
- config SIM_FBWIDTH
- int "Display width"
- default 320 if SIM_LCDDRIVER
- default 480 if SIM_FRAMEBUFFER
- ---help---
- Simulated width of the display. Default: 320 or 480
- config SIM_FBBPP
- int "Pixel depth in bits"
- default 8
- ---help---
- Pixel depth in bits. Valid choices are 4, 8, 16, 24, or 32.
- If you use the X11 display emulation, the selected BPP must match the BPP
- of your graphics hardware (probably 32 bits). Default: 8
- endif # SIM_FRAMEBUFFER
- if SIM_X11FB && INPUT
- choice
- prompt "X11 Simulated Input Device"
- default SIM_NOINPUT
- config SIM_TOUCHSCREEN
- bool "X11 mouse-based touchscreen emulation"
- ---help---
- Support an X11 mouse-based touchscreen emulation. Also needs INPUT=y
- config SIM_AJOYSTICK
- bool "X11 mouse-based analog joystick emulation"
- ---help---
- Support an X11 mouse-based analog joystick emulation. Also needs INPUT=y
- config SIM_NOINPUT
- bool "No input device"
- endchoice # X11 Simulated Input Device
- endif # SIM_X11FB && INPUT
- config SIM_TCNWAITERS
- bool "Maximum number poll() waiters"
- default 4
- depends on SIM_TOUCHSCREEN
- ---help---
- The maximum number of threads that can be waiting on poll() for a
- touchscreen event. Default: 4
- config SIM_IOEXPANDER
- bool "Simulated I/O Expander"
- default n
- depends on IOEXPANDER
- select IOEXPANDER_INT_ENABLE
- ---help---
- Build a simple, simulated I/O Expander chip simulation (for testing
- purposes only).
- if SIM_IOEXPANDER
- config SIM_INT_NCALLBACKS
- int "Max number of interrupt callbacks"
- default 4
- ---help---
- This is the maximum number of interrupt callbacks supported
- config SIM_INT_POLLDELAY
- int "Interrupt poll delay (used)"
- default 500000
- ---help---
- This microsecond delay defines the polling rate for missed interrupts.
- endif # SIM_IOEXPANDER
- config SIM_SPIFLASH
- bool "Simulated SPI FLASH with SMARTFS"
- default n
- select FS_SMARTFS
- select MTD_SMART
- ---help---
- Adds a simulated SPI FLASH that responds to standard M25 style
- commands on the SPI bus.
- choice
- prompt "Simulated SPI FLASH Size"
- default SIM_SPIFLASH_1M
- depends on SIM_SPIFLASH
- config SIM_SPIFLASH_1M
- bool "1 MBit (128K Byte)"
- config SIM_SPIFLASH_8M
- bool "8 MBit (1M Byte)"
- config SIM_SPIFLASH_32M
- bool "32 MBit (4M Byte)"
- config SIM_SPIFLASH_64M
- bool "64 MBit (8M Byte)"
- config SIM_SPIFLASH_128M
- bool "128 MBit (16M Byte)"
- endchoice
- config SIM_SPIFLASH_SECTORSIZE
- int "FLASH Sector Erase Size"
- default 65536
- depends on SIM_SPIFLASH
- ---help---
- Sets the large sector erase size that the part simulates.
- This driver simulates SPI devices that have both a large
- sector erase as well as a "sub-sector" (per the datasheet)
- erase size (typically 4K bytes).
- config SIM_SPIFLASH_SUBSECTORSIZE
- int "FLASH Sub-Sector Erase Size"
- default 4096
- depends on SIM_SPIFLASH
- ---help---
- Sets the smaller sub-sector erase size supported by the
- FLASH emulation
- config SIM_SPIFLASH_M25P
- bool "Enable M25Pxx FLASH"
- depends on MTD_M25P
- ---help---
- Enables simulation of an M25P type FLASH
- config SIM_SPIFLASH_SST26
- bool "Enable SST26 FLASH"
- depends on MTD_SST26
- ---help---
- Enables simulation of an SST26 type FLASH
- config SIM_SPIFLASH_W25
- bool "Enable W25 FLASH"
- depends on MTD_W25
- ---help---
- Enables simulation of a W25 type FLASH
- config SIM_SPIFLASH_CUSTOM
- bool "Enable Emulation of a Custom Manufacturer / ID FLASH"
- depends on SIM_SPIFLASH
- ---help---
- Enables simulation of FLASH with a custom Manufacturer, ID and Capacity
- config SIM_SPIFLASH_MANUFACTURER
- hex "Hex ID of the FLASH manufacturer code"
- default 0x20
- depends on SIM_SPIFLASH_CUSTOM
- ---help---
- Allows the simulated FLASH Manufacturer ID to be set.
- config SIM_SPIFLASH_MEMORY_TYPE
- hex "Hex ID of the FLASH Memory Type code"
- default 0x20
- depends on SIM_SPIFLASH_CUSTOM
- ---help---
- Allows the simulated FLASH Memory Type code to be set.
- config SIM_SPIFLASH_CAPACITY
- hex "Hex ID of the FLASH capacity code"
- default 0x14
- depends on SIM_SPIFLASH_CUSTOM
- ---help---
- Allows the simulated FLASH Memory Capacity code to be set.
- config SIM_SPIFLASH_PAGESIZE
- int "FLASH Write / Program Page Size"
- default 256
- depends on SIM_SPIFLASH
- ---help---
- Sets the size of a page program operation. The page size
- represents the maximum number of bytes that can be sent
- for a program operation. If more bytes than this are
- sent on a single Page Program, then the address will
- "wrap" causing the initial data sent to be overwritten.
- This is consistent with standard SPI FLASH operation.
- config SIM_QSPIFLASH
- bool "Simulated QSPI FLASH with SMARTFS"
- default n
- select FS_SMARTFS
- select MTD_SMART
- ---help---
- Adds a simulated QSPI FLASH that responds to N25QXXX style
- commands on the QSPI bus.
- choice
- prompt "Simulated QSPI FLASH Size"
- default SIM_QSPIFLASH_1M
- depends on SIM_QSPIFLASH
- config SIM_QSPIFLASH_1M
- bool "1 MBit (128K Byte)"
- config SIM_QSPIFLASH_8M
- bool "8 MBit (1M Byte)"
- config SIM_QSPIFLASH_32M
- bool "32 MBit (4M Byte)"
- config SIM_QSPIFLASH_64M
- bool "64 MBit (8M Byte)"
- config SIM_QSPIFLASH_128M
- bool "128 MBit (16M Byte)"
- endchoice
- config SIM_QSPIFLASH_MANUFACTURER
- hex "Hex ID of the FLASH manufacturer code"
- default 0x20
- depends on SIM_QSPIFLASH
- ---help---
- Allows the simulated FLASH Manufacturer ID to be set.
- config SIM_QSPIFLASH_MEMORY_TYPE
- hex "Hex ID of the FLASH Memory Type code"
- default 0xba
- depends on SIM_QSPIFLASH
- ---help---
- Allows the simulated FLASH Memory Type code to be set.
- config SIM_QSPIFLASH_SECTORSIZE
- int "FLASH Sector Erase Size"
- default 65536
- depends on SIM_QSPIFLASH
- ---help---
- Sets the large sector erase size that the part simulates.
- This driver simulates QSPI devices that have both a large
- sector erase as well as a "sub-sector" (per the datasheet)
- erase size (typically 4K bytes).
- config SIM_QSPIFLASH_SUBSECTORSIZE
- int "FLASH Sub-Sector Erase Size"
- default 4096
- depends on SIM_QSPIFLASH
- ---help---
- Sets the smaller sub-sector erase size supported by the
- FLASH emulation
- config SIM_QSPIFLASH_PAGESIZE
- int "FLASH Write / Program Page Size"
- default 256
- depends on SIM_QSPIFLASH
- ---help---
- Sets the size of a page program operation. The page size
- represents the maximum number of bytes that can be sent
- for a program operation. If more bytes than this are
- sent on a single Page Program, then the address will
- "wrap" causing the initial data sent to be overwritten.
- This is consistent with standard SPI FLASH operation.
- config SIM_HCISOCKET
- bool "Attach Host Bluetooth"
- default false
- depends on (WIRELESS_BLUETOOTH && HOST_LINUX)
- ---help---
- Attached the local bluetooth device to the simulation
- target via HCI_CHANNEL_USER. This gives NuttX full
- control of the device, but is abstracted from the
- physical interface which is still handled by Linux.
- config SIM_UART_NUMBER
- int "The number of tty ports on sim platform, range is 0~4"
- default 0
- config SIM_UART0_NAME
- string "the name of uart0 on sim"
- default "/dev/ttySIM0"
- depends on SIM_UART_NUMBER >= 1
- config SIM_UART1_NAME
- string "the name of uart1 on sim"
- default "/dev/ttySIM1"
- depends on SIM_UART_NUMBER >= 2
- config SIM_UART2_NAME
- string "the name of uart2 on sim"
- default "/dev/ttySIM2"
- depends on SIM_UART_NUMBER >= 3
- config SIM_UART3_NAME
- string "the name of uart3 on sim"
- default "/dev/ttySIM3"
- depends on SIM_UART_NUMBER >= 4
- endif # ARCH_SIM
|