From 4f7b1c149611dbbe30ca58dcbd82af97f2451493 Mon Sep 17 00:00:00 2001 From: patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> Date: Fri, 5 Aug 2011 02:31:59 +0000 Subject: [PATCH] Misc documentation/LCD-related updates git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3844 42af7a65-404d-4744-a932-0658087f49c3 --- Documentation/NuttxPortingGuide.html | 30 +++++++++- TODO | 60 +++++++++++-------- configs/README.txt | 88 +++++++++++++++++----------- configs/sam3u-ek/README.txt | 7 +++ configs/sam3u-ek/src/up_lcd.c | 10 ++-- graphics/nxglib/nxglib_splitline.c | 2 +- 6 files changed, 129 insertions(+), 68 deletions(-) diff --git a/Documentation/NuttxPortingGuide.html b/Documentation/NuttxPortingGuide.html index 5ca42e14d4..a74984b2cb 100644 --- a/Documentation/NuttxPortingGuide.html +++ b/Documentation/NuttxPortingGuide.html @@ -3958,6 +3958,25 @@ build </li> </ul> +<h3>Input Devices</h3> +<ul> + <li> + <code>CONFIG_INPUT</code>: + Enables general support for input devices + </li> + <li> + <code>CONFIG_INPUT_TSC2007</code>: + If CONFIG_INPUT is selected, then this setting will enable building + of the TI TSC2007 touchscreen driver. + </li> + <li> + <code>CONFIG_TSC2007_MULTIPLE</code>: + Normally only a single TI TSC2007 touchscreen is used. But if + there are multiple TSC2007 touchscreens, this setting will enable + multiple touchscreens with the same driver. + </li> +</ul> + <h3>ENC28J60 Ethernet Driver Configuration Settings</h3> <ul> <li> @@ -4399,9 +4418,8 @@ build </p> <h2>Graphics related configuration settings</h3> -<ul> <li> - <code>CONFIG_NX</code> + <code>CONFIG_NX</code>: Enables overall support for graphics library and NX </li> </ul> @@ -4444,6 +4462,14 @@ build <code>CONFIG_LCD_MAXCONTRAST</code>: The maximum contrast value for an LCD device. </li> + <li> + <code>CONFIG_LCD_LANDSCAPE</code>, <code>CONFIG_LCD_PORTRAIT</code>, + <code>CONFIG_LCD_RLANDSCAPE</code>, and <code>CONFIG_LCD_RPORTRAIT</code>: + Some LCD drivers may support these options to present the display in + landscape, portrait, reverse landscape, or reverse portrait orientations. + Check the <code>README.txt</code> file in each board configuration directory to + see if any of these are supported by the board LCD logic. + </li> <li> <code>CONFIG_NX_MOUSE</code>: Build in support for mouse input. diff --git a/TODO b/TODO index 380006f470..6dafc5c425 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -NuttX TODO List (Last updated July 12, 2011) +NuttX TODO List (Last updated August 8, 2011) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ nuttx/ @@ -13,7 +13,7 @@ nuttx/ (16) Network (net/, drivers/net) (2) USB (drivers/usbdev, drivers/usbhost) (6) Libraries (lib/) - (13) File system/Generic drivers (fs/, drivers/) + (10) File system/Generic drivers (fs/, drivers/) (1) Graphics subystem (graphics/) (1) Pascal add-on (pcode/) (1) Documentation (Documentation/) @@ -32,6 +32,7 @@ nuttx/ (3) AVR (arch/avr) (0) Intel x86 (arch/x86) (4) 8051 / MCS51 (arch/8051/) + (1) MIPS (arch/mips) (2) Hitachi/Renesas SH-1 (arch/sh/src/sh1) (4) Renesas M16C/26 (arch/sh/src/m16c) (8) z80/z8/ez80 (arch/z80/) @@ -345,6 +346,7 @@ o Network (net/, drivers/net) and the packet was rejected. Status: Open Priority: Low... fix defconfig files as necessary. + o USB (drivers/usbdev, drivers/usbhost) ^^^^^^^^^^^^^^^^^^^^ @@ -411,10 +413,6 @@ o File system / Generic drivers (fs/, drivers/) Status: Open Priority: Low - Description: FAT: long file names - Status: Open - Priority: Medium - Description: The CAN driver is untested. Add a test for the CAN driver. Status: Open Priority: Medium @@ -443,17 +441,6 @@ o File system / Generic drivers (fs/, drivers/) Status: Open Priority: Medium-Low - Description: At present, mmap() only works with file descriptors associated - with a ROMFS file system. Generalize this logic so that if - mmap is not supported by the file system or block driver, it - will allocate memory and copy the file into RAM. This would - need some centralized logic so that the memory region would - be shared on later mmap()'s on the same inode. Reference counting - would be required so that the multiply mmap()'ed region persists - until the last munmap(). - Status: Open - Priority: Low - Description: Block driver read-ahead buffer and write buffer support is implemented but not yet tested. Status: Open @@ -470,7 +457,7 @@ o File system / Generic drivers (fs/, drivers/) Status: Open Priority: Low - Description: Time stamping is not implemented in the NuttX FA file system. + Description: Time stamping is not implemented in the NuttX FAT file system. See the following functions in fs/fat/fs_fat32util.c: fat_systime2fattime() and fat_fattime2systime() Status: Open @@ -660,6 +647,13 @@ o ARM (arch/arm/) This user context switching time could be improved by eliminating the SVCalls and developing assembly language implementations of the context save and restore logic. + Also, because interrupts are always disabled when the SVCall is + executed, the SVC goes to the hard fault handler where it must + be handled as a special case. I recall seeing some controls + somewhere that will allow to suppress one hard fault. I don't + recall the control, but something like this should be used before + executing the SVCall so that it vectors directly to the SVC + handler. Status: Open Priority: Low @@ -922,17 +916,23 @@ o AVR (arch/avr) Priority: Low. The AVR is probably not the architecuture that you want to use for extensive string operations. - Description: An SPI driver and a USB device driver exist for the AT90USB (as well - as a USB mass storage example). However, this configuration is not - fully debugged as of the NuttX-6.5 release. - Update 7/11: (1) The SPI/SD driver has been verified, however, (2) I - believe that the current teensy/usbstorage configuration uses too - much SRAM for the system to behave sanely. A lower memory footprint - version of the mass storage driver will be required before this can - be debugged + Description: An SPI driver and a USB device driver exist for the AT90USB (as well + as a USB mass storage example). However, this configuration is not + fully debugged as of the NuttX-6.5 release. + Update 7/11: (1) The SPI/SD driver has been verified, however, (2) I + believe that the current teensy/usbstorage configuration uses too + much SRAM for the system to behave sanely. A lower memory footprint + version of the mass storage driver will be required before this can + be debugged Status: Open Priority: Medium-High. + Description: A complete port for the AVR32 is provided and has been partially + debugged. There may still be some issues with the serial port + driver. + Status: Open + Priority: Medium + o Intel x86 (arch/x86) ^^^^^^^^^^^^^^^^^^^^ @@ -974,6 +974,14 @@ o 8051 / MCS51 (arch/8051/) Status: Open Priority: Low -- only because there as so many other issues with 8051 +o MIPS (arch/mips) + ^^^^^^^^^^^^^^^^ + + Description: A port to the PIC32MX has been completed, but is pending debug. + Right now, there are some issues with intregating the PICKit 3 + and MPLAB so I don't have capability to debug the port. + Status: Open + Priority: High o Hitachi/Renesas SH-1 (arch/sh/src/sh1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/configs/README.txt b/configs/README.txt index 41c90e3876..5eee4786cf 100644 --- a/configs/README.txt +++ b/configs/README.txt @@ -499,29 +499,29 @@ defconfig -- This is a configuration file similar to the Linux CONFIG_ARCH_MATH_H, CONFIG_ARCH_STDBOOL_H, CONFIG_ARCH_STDINT_H - CONFIG_ARCH_ROMGETC - In Harvard architectures, data accesses and - instruction accesses occur on different busses, perhaps - concurrently. All data accesses are performed on the data bus - unless special machine instructions are used to read data - from the instruction address space. Also, in the typical - MCU, the available SRAM data memory is much smaller that the - non-volatile FLASH instruction memory. So if the application - requires many constant strings, the only practical solution may - be to store those constant strings in FLASH memory where they - can only be accessed using architecture-specific machine - instructions. - - If CONFIG_ARCH_ROMGETC is defined, then the architecture logic - must export the function up_romgetc(). up_romgetc() will simply - read one byte of data from the instruction space. + CONFIG_ARCH_ROMGETC - In Harvard architectures, data accesses and + instruction accesses occur on different busses, perhaps + concurrently. All data accesses are performed on the data bus + unless special machine instructions are used to read data + from the instruction address space. Also, in the typical + MCU, the available SRAM data memory is much smaller that the + non-volatile FLASH instruction memory. So if the application + requires many constant strings, the only practical solution may + be to store those constant strings in FLASH memory where they + can only be accessed using architecture-specific machine + instructions. + + If CONFIG_ARCH_ROMGETC is defined, then the architecture logic + must export the function up_romgetc(). up_romgetc() will simply + read one byte of data from the instruction space. - If CONFIG_ARCH_ROMGETC, certain C stdio functions are effected: - (1) All format strings in printf, fprintf, sprintf, etc. are - assumed to lie in FLASH (string arguments for %s are still assumed - to reside in SRAM). And (2), the string argument to puts and fputs - is assumed to reside in FLASH. Clearly, these assumptions may have - to modified for the particular needs of your environment. There - is no "one-size-fits-all" solution for this problem. + If CONFIG_ARCH_ROMGETC, certain C stdio functions are effected: + (1) All format strings in printf, fprintf, sprintf, etc. are + assumed to lie in FLASH (string arguments for %s are still assumed + to reside in SRAM). And (2), the string argument to puts and fputs + is assumed to reside in FLASH. Clearly, these assumptions may have + to modified for the particular needs of your environment. There + is no "one-size-fits-all" solution for this problem. Sizes of configurable things (0 disables) @@ -564,19 +564,19 @@ defconfig -- This is a configuration file similar to the Linux Filesystem configuration CONFIG_FS_FAT - Enable FAT filesystem support CONFIG_FAT_SECTORSIZE - Max supported sector size - CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3 - file name support. + CONFIG_FAT_LCNAMES - Enable use of the NT-style upper/lower case 8.3 + file name support. CONFIG_FAT_LFN - Enable FAT long file names. NOTE: Microsoft claims - patents on FAT long file name technology. Please read the - disclaimer in the top-level COPYING file and only enable this - feature if you understand these issues. - CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the - default, maximum long file name is 255 bytes. This can eat up - a lot of memory (especially stack space). If you are willing - to live with some non-standard, short long file names, then - define this value. A good choice would be the same value as - selected for CONFIG_NAME_MAX which will limit the visibility - of longer file names anyway. + patents on FAT long file name technology. Please read the + disclaimer in the top-level COPYING file and only enable this + feature if you understand these issues. + CONFIG_FAT_MAXFNAME - If CONFIG_FAT_LFN is defined, then the + default, maximum long file name is 255 bytes. This can eat up + a lot of memory (especially stack space). If you are willing + to live with some non-standard, short long file names, then + define this value. A good choice would be the same value as + selected for CONFIG_NAME_MAX which will limit the visibility + of longer file names anyway. CONFIG_FS_NXFFS: Enable NuttX FLASH file system (NXFF) support. CONFIG_NXFFS_ERASEDSTATE: The erased state of FLASH. This must have one of the values of 0xff or 0x00. @@ -671,6 +671,18 @@ defconfig -- This is a configuration file similar to the Linux meaning to the driver. Board-specific logic may place restrictions on this value. + Input Devices + + CONFIG_INPUT + Enables general support for input devices + CONFIG_INPUT_TSC2007 + If CONFIG_INPUT is selected, then this setting will enable building + of the TI TSC2007 touchscreen driver. + CONFIG_TSC2007_MULTIPLE + Normally only a single TI TSC2007 touchscreen is used. But if + there are multiple TSC2007 touchscreens, this setting will enable + multiple touchscreens with the same driver. + ENC28J60 Ethernet Driver Configuration Settings: CONFIG_NET_ENC28J60 - Enabled ENC28J60 support CONFIG_ENC28J60_SPIMODE - Controls the SPI mode @@ -886,6 +898,7 @@ defconfig -- This is a configuration file similar to the Linux and CONFIG_SCHED_WORKQUEUE=y USB serial device class driver + CONFIG_USBSER Enable compilation of the USB serial driver CONFIG_USBSER_EPINTIN @@ -907,6 +920,7 @@ defconfig -- This is a configuration file similar to the Linux Size of the serial receive/transmit buffers USB Storage Device Configuration + CONFIG_USBSTRG Enable compilation of the USB storage driver CONFIG_USBSTRG_EP0MAXPACKET @@ -954,6 +968,12 @@ defconfig -- This is a configuration file similar to the Linux device. CONFIG_LCD_MAXCONTRAST - The maximum contrast value for an LCD device. + CONFIG_LCD_LANDSCAPE, CONFIG_LCD_PORTRAIT, CONFIG_LCD_RLANDSCAPE, + and CONFIG_LCD_RPORTRAIT - Some LCD drivers may support + these options to present the display in landscape, portrait, + reverse landscape, or reverse portrait orientations. Check + the README.txt file in each board configuration directory to + see if any of these are supported by the board LCD logic. CONFIG_NX_MOUSE Build in support for mouse input. CONFIG_NX_KBD diff --git a/configs/sam3u-ek/README.txt b/configs/sam3u-ek/README.txt index a350c72d7e..b94e668ef6 100755 --- a/configs/sam3u-ek/README.txt +++ b/configs/sam3u-ek/README.txt @@ -295,6 +295,13 @@ SAM3U-EK-specific Configuration Options CONFIG_U[S]ARTn_PARTIY - 0=no parity, 1=odd parity, 2=even parity CONFIG_U[S]ARTn_2STOP - Two stop bits + LCD Options. Other than the standard LCD configuration options + (see configs/README.txt), the SAM3U-EK driver also supports: + + CONFIG_LCD_PORTRAIT - Present the display in the standard 240x320 + "Portrait" orientation. Default: The display is rotated to + support a 320x240 "Landscape" orientation. + Configurations ^^^^^^^^^^^^^^ diff --git a/configs/sam3u-ek/src/up_lcd.c b/configs/sam3u-ek/src/up_lcd.c index 8b0a919f7b..2de563f9b9 100755 --- a/configs/sam3u-ek/src/up_lcd.c +++ b/configs/sam3u-ek/src/up_lcd.c @@ -2,7 +2,7 @@ * configs/sam3u-ek/src/up_lcd.c * arch/arm/src/board/up_lcd.c * - * Copyright (C) 2010 Gregory Nutt. All rights reserved. + * Copyright (C) 2010-2011 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> * * Redistribution and use in source and binary forms, with or without @@ -168,12 +168,12 @@ /* Graphics Capbilities ***************************************************************/ /* LCD resolution: 320 (columns) by 240 (rows). The physical dimensions of the device - * are really 240 (columns) by 320 (rows), but unless CONFIG_SAM3U_240x320 is defined, + * are really 240 (columns) by 320 (rows), but unless CONFIG_LCD_PORTRAIT is defined, * we swap rows and columns in setcursor to make things behave nicer (there IS a * performance hit for this swap!). */ -#ifdef CONFIG_SAM3U_240x320 +#ifdef CONFIG_LCD_PORTRAIT # define SAM3UEK_XRES 240 # define SAM3UEK_YRES 320 #else @@ -606,7 +606,7 @@ static int sam3u_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffe gvdbg("row: %d col: %d npixels: %d\n", row, col, npixels); DEBUGASSERT(buffer && ((uintptr_t)buffer & 1) == 0); -#ifdef CONFIG_SAM3U_240x320 +#ifdef CONFIG_LCD_PORTRAIT /* Set up to write the run. */ sam3u_setcursor(row, col); @@ -672,7 +672,7 @@ static int sam3u_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer, gvdbg("row: %d col: %d npixels: %d\n", row, col, npixels); DEBUGASSERT(buffer && ((uintptr_t)buffer & 1) == 0); -#ifdef CONFIG_SAM3U_240x320 +#ifdef CONFIG_LCD_PORTRAIT /* Set up to read the run */ sam3u_setcursor(row, col); diff --git a/graphics/nxglib/nxglib_splitline.c b/graphics/nxglib/nxglib_splitline.c index 31d6949ada..5cc33fd2bd 100644 --- a/graphics/nxglib/nxglib_splitline.c +++ b/graphics/nxglib/nxglib_splitline.c @@ -226,7 +226,7 @@ int nxgl_splitline(FAR struct nxgl_vector_s *vector, */ angle = b16atan2(itob16(iheight), itob16(iwidth)); - triheight = b16toi(linewidth * b16cos(angle)); + triheight = b16toi(linewidth * b16cos(angle) + b16HALF); halfheight = (triheight >> 1); /* If the sine of the angle is tiny (i.e., the line is nearly horizontal), -- GitLab