diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-02-17 23:21:28 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-02-17 23:21:28 +0000 |
commit | e3940eb2080711edac189cca3f642ee89dc215f2 (patch) | |
tree | 1c390958fae49e34dce698b175487e6d4681e540 /nuttx/arch/README.txt | |
parent | 2223612deb2cc6322992f8595b6d6f86fcb53ae1 (diff) | |
download | nuttx-e3940eb2080711edac189cca3f642ee89dc215f2.tar.gz nuttx-e3940eb2080711edac189cca3f642ee89dc215f2.tar.bz2 nuttx-e3940eb2080711edac189cca3f642ee89dc215f2.zip |
NuttX RTOS
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/README.txt')
-rw-r--r-- | nuttx/arch/README.txt | 189 |
1 files changed, 189 insertions, 0 deletions
diff --git a/nuttx/arch/README.txt b/nuttx/arch/README.txt new file mode 100644 index 000000000..85175c6a0 --- /dev/null +++ b/nuttx/arch/README.txt @@ -0,0 +1,189 @@ +Architecture-Specific Code +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The file include/nuttx/arch.h identifies all of the APIs that must +be provided by the architecture specific logic. (It also includes +arch/<arch-name>/arch.h as described below). + +Directory Structure +^^^^^^^^^^^^^^^^^^^ + +Thie arch directory contains architecture specific logic. Each aructure +provide a a subdirectory <arch-name>under arch/ with the folling characteristics: + + + <arch-name> + |-- Make.defs + |-- defconfig + |-- setenv.sh + |-- include + | |-- arch.h + | |-- irq.h + | `-- types.h + `-- src + |-- Makefile + `-- (architecture-specific source files) + +Summary of Files +^^^^^^^^^^^^^^^^ + +Make.defs -- This makefile fragment provides architecture and + tool-specific build options. It will be included by all other + makefiles in the build (once it is installed). This make fragment + should define: + + Tools: CC, LD, AR, NM, OBJCOPY, OBJDUMP + Tool options: CFLAGS, LDFLAGS + + When this makefile fragment runs, it will be passed TOPDIR which + is the path to the root directory of the build. This makefile + fragment may include ${TOPDIR}/.config to perform configuration + specific settings. For example, the CFLAGS will most likely be + different if CONFIG_DEBUG=y. + +defconfig -- This is a configuration file similar to the Linux + configuration file. In contains varialble/value pairs like: + + CONFIG_VARIABLE=value + + This configuration file will be used at build time: + + (1) as a makefile fragment included in other makefiles, and + (2) to generate include/nuttx/config.h which is included by + most C files in the system. + + The following variables are recognized by the build (you may + also include architecture-specific settings). + + Architecture selection: + + CONFIG_ARCH - identifies the arch subdirectory + CONFIG_ARCH_name - for use in C code + + General OS setup + + CONFIG_EXAMPLE - identifies the subdirectgory in examples + that will be used in the build + CONFIG_DEBUG - enables built-in debug options + CONFIG_DEBUG_VERBOSE - enables verbose debug output + CONFIG_HAVE_LOWPUTC - architecture supports low-level, boot + time console output + CONFIG_RR_INTERVAL - The round robin timeslice will be set + this number of milliseconds; Round robin scheduling can + be disabled by setting this value to zero. + CONFIG_SCHED_INSTRUMENTATION - enables instrumentation in + scheduler to monitor system performance + CONFIG_TASK_NAME_SIZE - Spcifies that maximum size of a + task name to save in the TCB. Useful if scheduler + instrumentation is selected. Set to zero to disable. + CONFIG_START_YEAR, CONFIG_START_MONTH, CONFIG_START_DAY - + Used to initialize the internal time logic. + CONFIG_JULIAN_TIME - Enables Julian time conversions + CONFIG_DEV_CONSOLE - Set if architecture-specific logic + provides /dev/console. Enables stdout, stderr, stdin. + + Allow for artchitecture optimized implementations + + The architecture can provide optimized versions of the + following to improve sysem performance + + CONFIG_ARCH_MEMCPY, CONFIG_ARCH_MEMCMP, CONFIG_ARCH_MEMMOVE + CONFIG_ARCH_MEMSET, CONFIG_ARCH_STRCMP, CONFIG_ARCH_STRCPY + CONFIG_ARCH_STRNCPY, CONFIG_ARCH_STRLEN, CONFIG_ARCH_BZERO + CONFIG_ARCH_KMALLOC, CONFIG_ARCH_KZMALLOC, CONFIG_ARCH_KFREE + + General Compile environment setup + + CONFIG_HAVE_LONG_LONG - enable if your architecture supports + long long types and if you plan to use them + + Sizes of configurable things (0 disables) + + CONFIG_NPTHREAD_KEYS - The number of items of thread- + specific data that can be retained + CONFIG_NFILE_DESCRIPTORS - The maximum number of file + descriptors (one for each open) + CONFIG_NFILE_STREAMS - The maximum number of streams that + can be fopen'ed + CONFIG_STDIO_BUFFER_SIZE - Size of the buffer to allocate + on fopen. (Only if CONFIG_NFILE_STREAMS > 0) + CONFIG_NUNGET_CHARS - Number of characters that can be + buffered by ungetc() (Only if CONFIG_NFILE_STREAMS > 0) + CONFIG_PREALLOC_MQ_MSGS - The number of pre-allocated message + structures. The system manages a pool of preallocated + message structures to minimize dynamic allocations + CONFIG_MQ_MAXMSGSIZE - Message structures are allocated with + a fixed payload size given by this settin (does not include + other message structure overhead. + CONFIG_PREALLOC_WDOGS - The number of pre-allocated watchdog + structures. The system manages a pool of preallocated + watchdog structures to minimize dynamic allocations + + Stack and heap information + + CONFIG_BOOT_FROM_FLASH - Some configurations support XIP + operation from FLASH. + CONFIG_STACK_POINTER - The initial stack pointer + CONFIG_PROC_STACK_SIZE - The size of the initial stack + CONFIG_PTHREAD_STACK_MIN - Minimum pthread stack size + CONFIG_PTHREAD_STACK_DEFAULT - Default pthread stack size + CONFIG_HEAP_BASE - The beginning of the heap + CONFIG_HEAP_SIZE - The size of the heap + +setenv.sh -- This is a script that you can include that will be installed at + the toplevel of the directory structure and can be sourced to set any + necessary environment variables. + +include/arch.h + This is a hook for any architecture specific definitions that may + be needed by the system. It is included by include/nuttx/arch.h + +include/types.h + This provides architecture/toolchain-specific definitions for + standard types. This file should typedef: + + sbyte, ubyte, uint8, boolean, sint16, uint16, sint32, uint32, sint64, uint64 + + This file will be included by include/sys/types.h and be made + available to all files. + +include/irq.h + This file needs to define some architecture specific functions (usually + inline) and structure. These include: + + - struct xcptcontext. This structures represents the saved context + of a thread. + + - static inline uint32 irqsave(void) -- Used to disable + all interrupts. + + - static inline void irqrestore(uint32 flags) -- Used to + restore interrupts enables to the same state as before irqsave + was called. + + This file must also define NR_IRQS, the total number of IRQs supported + by the board. + +src/Makefile + This makefile will be executed to build the targets src/libup.a and + src/up_head.o. The up_head.o file holds the entry point into the system + (power-on reset entry point, for example). It will be used in + the final link with libup.a and other system archives to generate the + final executable. + +Configuring NuttX +^^^^^^^^^^^^^^^^^ + +Configuring NuttX requires only copying + + arch/<arch-name>/Make.def to ${TOPDIR}/Make.defs + arch/<arch-name>/setenv.sh to ${TOPDIR}/setenv.sh + arch/<arch-name>/defconfig to ${TOPDIR}/.config + +There is a script that automates these steps. The following steps will +accomplish the same configuration: + + cd tools + ./configure.sh <arch-name> + + |