From 6298ead42cb6d2326b9cd19a9923de3db3854ba0 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 12 Jul 2014 09:45:05 -0600 Subject: [PATCH] SAMA5D4-EK LCDC: Change source clock to 2*Mck seems to solve stability issues --- configs/sama5d4-ek/README.txt | 156 ++++++++++++++++++----------- configs/sama5d4-ek/include/board.h | 4 +- 2 files changed, 99 insertions(+), 61 deletions(-) diff --git a/configs/sama5d4-ek/README.txt b/configs/sama5d4-ek/README.txt index d36b4d1638..d8b36db7d5 100644 --- a/configs/sama5d4-ek/README.txt +++ b/configs/sama5d4-ek/README.txt @@ -3836,89 +3836,125 @@ Configurations SAMA5 ADC touchscreen controller and provides a more advance graphics demo. It provides an interactive windowing experience. - This configuration is set up generally like the nsh configuration - except that: + NOTES: - - It boots into a graphic, window manage environment instead of - the serial console command line. - - The console command line is still available within NxConsole - windows. - - Obviously, the nx and touchscreen built in applications cannot - be supported. + 1. The NxWM window manager is a tiny window manager tailored for use + with smaller LCDs but which is show here on the larger, SAMA5D4-EK + TM7000 LCD. It supports a toolchain, a start window, and + multiple application windows. However, to make the best use of + the visible LCD space, only one application window is visible at + at time. - The NxWM window manager is a tiny window manager tailored for use - with smaller LCDs but which is show here on the larger, SAMA5D4-EK - TM7000 LCD. It supports a toolchain, a start window, and - multiple application windows. However, to make the best use of - the visible LCD space, only one application window is visible at - at time. + The NxWM window manager can be found here: - The NxWM window manager can be found here: + nuttx-git/NxWidgets/nxwm - nuttx-git/NxWidgets/nxwm + The NxWM unit test can be found at: - The NxWM unit test can be found at: + nuttx-git/NxWidgets/UnitTests/nxwm - nuttx-git/NxWidgets/UnitTests/nxwm + Documentation for installing the NxWM unit test can be found here: - Documentation for installing the NxWM unit test can be found here: + nuttx-git/NxWidgets/UnitTests/README.txt - nuttx-git/NxWidgets/UnitTests/README.txt + 2. This configuration is set up generally like the nsh configuration + except that: - Here is the quick summary of the build steps. These steps assume that - you have the entire NuttX GIT in some directory ~/nuttx-git. You may - have these components installed elsewhere. In that case, you will need - to adjust all of the paths in the following accordingly: + - It boots into a graphic, window manage environment instead of + the serial console command line. + - The console command line is still available within NxConsole + windows. + - Obviously, the nx and touchscreen built in applications cannot + be supported. - 1. Install the nxwm configuration + 3. NSH Console Access. - $ cd ~/nuttx-git/nuttx/tools - $ ./configure.sh sama5d4-ek/nxwm + This configuration boots directly into a graphic, window manage + environment. There is no serial console. Some initial stdout + information will go to the USART3 serial output, but otherwise + the serial port will be silent. - 2. Make the build context (only) + Access to the NSH console is available in two ways: - $ cd .. - $ . ./setenv.sh - $ make context - ... + a. The NxWM provides a graphics-based terminals (called NxConsoles); + The console command line is still available within NxConsole + windows once NxWM is up and running. The console input is still + via stdin (the host terminal window), but console output will go + to the NxConsole terminal. - NOTE: the use of the setenv.sh file is optional. All that it will - do is to adjust your PATH variable so that the build system can find - your tools. If you use it, you will most likely need to modify the - script so that it has the correct path to your tool binaries - directory. + NOTES: - 3. Install the nxwm unit test + i) Later I plan to integrate a USB keyboard so that the + console input will come from a keyboard attached to the + SAMA5D4-EK. + ii) It would also not be a difficult task to add a serial console + as part of the NxWM console. That is an option if a serial + console is really necessary but is not currently planned. - $ cd ~/nuttx-git/NxWidgets - $ tools/install.sh ~/nuttx-git/apps nxwm - Creating symbolic link - - To ~/nuttx-git/NxWidgets/UnitTests/nxwm - - At ~/nuttx-git/apps/external + b. Telnet NSH sessions are still supported and this is, in general, + the convenient way to access the shell (and RAMLOG). - 4. Build the NxWidgets library + As with the NSH configuration, debug output will still go to the + circular RAMLOG buffer but cannot be accessed from a serial console. + Instead, you will need use the dmesg command from an NxConsole or + from a Telnet session to see the debug output - $ cd ~/nuttx-git/NxWidgets/libnxwidgets - $ make TOPDIR=~/nuttx-git/nuttx - ... + 4. Here is the quick summary of the build steps. These steps assume + that you have the entire NuttX GIT in some directory ~/nuttx-git. + You may have these components installed elsewhere. In that case, you + will need to adjust all of the paths in the following accordingly: - 5. Build the NxWM library + a. Install the nxwm configuration - $ cd ~/nuttx-git/NxWidgets/nxwm - $ make TOPDIR=~/nuttx-git/nuttx - ... + $ cd ~/nuttx-git/nuttx/tools + $ ./configure.sh sama5d4-ek/nxwm - 6. Built NuttX with the installed unit test as the application + b. Make the build context (only) - $ cd ~/nuttx-git/nuttx - $ make + $ cd .. + $ . ./setenv.sh + $ make context + ... - NOTE: The NxWM example was designed tiny displays. On this larger - 800x480 display, the icons are too tiny to be usable. I have created - a larger 320x320 logo for the opening screen and added image scaling - to expand the images in the taskbar. The expanded images are not great. - The same problems exist in the application toolbar and in the start - window. These icons are not yet scaled. + NOTE: the use of the setenv.sh file is optional. All that it + will do is to adjust your PATH variable so that the build system + can find your tools. If you use it, you will most likely need to + modify the script so that it has the correct path to your tool + binary directory. + + c. Install the nxwm unit test + + $ cd ~/nuttx-git/NxWidgets + $ tools/install.sh ~/nuttx-git/apps nxwm + Creating symbolic link + - To ~/nuttx-git/NxWidgets/UnitTests/nxwm + - At ~/nuttx-git/apps/external + + d. Build the NxWidgets library + + $ cd ~/nuttx-git/NxWidgets/libnxwidgets + $ make TOPDIR=~/nuttx-git/nuttx + ... + + e. Build the NxWM library + + $ cd ~/nuttx-git/NxWidgets/nxwm + $ make TOPDIR=~/nuttx-git/nuttx + ... + + f. Built NuttX with the installed unit test as the application + + $ cd ~/nuttx-git/nuttx + $ make + + 5. The NxWM example was designed tiny displays. On this larger 800x480 + display, the icons are too tiny to be usable. I have created a + larger 320x320 logo for the opening screen and added image scaling + to expand the images in the taskbar. The expanded images are not + great. The same problems exist in the application toolbar and in the + start window. These icons are not yet scaled. + + I plan to correct these images in the very near future. STATUS: See the To-Do list below diff --git a/configs/sama5d4-ek/include/board.h b/configs/sama5d4-ek/include/board.h index f9b51df655..2afad607e3 100644 --- a/configs/sama5d4-ek/include/board.h +++ b/configs/sama5d4-ek/include/board.h @@ -183,7 +183,7 @@ #define BOARD_LCDC_OUTPUT_BPP 24 /* Output format to H/W is 24 bpp RGB888 */ #define BOARD_LCDC_WIDTH 800 /* Display width (pixels) */ #define BOARD_LCDC_HEIGHT 480 /* Display height (rows) */ -#undef BOARD_LCDC_MCK_MUL2 /* Source clock is Mck (vs 2*Mck) */ +#define BOARD_LCDC_MCK_MUL2 1 /* Source clock is 2*Mck (vs Mck) */ #define BOARD_LCDC_PIXCLK_INV 1 /* Invert pixel clock, use falling edge */ #define BOARD_LCDC_GUARDTIME 9 /* Guard time (frames) */ #define BOARD_LCDC_VSPW 2 /* Vertical pulse width (lines) */ @@ -210,6 +210,8 @@ * necessary and, in fact, is certainly not necessary in other LCDC * configurations. Perhaps the delay would not be necessary if timings were * more precise? + * + * Delays are in units of microseconds. */ #define BOARD_LCDC_ENABLE_DELAY (50*1000)