SAMA5D3x-EK: Cosmetic improvements to the NOR boot printfs; updated README

This commit is contained in:
Gregory Nutt 2013-12-02 17:22:55 -06:00
parent d46001a4ba
commit 0d8ac38e59
3 changed files with 76 additions and 108 deletions

View File

@ -6149,4 +6149,13 @@
* fs/nxffs/nxffs_dump.c: Do not abort on a read error. Just not * fs/nxffs/nxffs_dump.c: Do not abort on a read error. Just not
the error and continue. Otherwise, we would not be able to dump the error and continue. Otherwise, we would not be able to dump
NAND FLASH (2013-11-30). NAND FLASH (2013-11-30).
* fs/nxffs: All read error logic has been revisited and modified in
most places. If we are using NAND, then read errors probably mean
that the block that was read contains uncorrectable bit errors. In
this case, we cannot just give up and abort the operations. Rather,
we need to treat read error like normal bad blocks in order to work
with NAND (2013-12-2).
* fs/nxffs/Kconfig and nxffs_initialize.c: Make the start up scan of
the media option. It just takes to long! (2013-12-02).
* drivers/mtd/mtd_nand.c: Fix a typo in calculation of page number
(2013-12-02).

View File

@ -89,6 +89,7 @@ Contents
- RTC - RTC
- Watchdog Timer - Watchdog Timer
- TRNG and /dev/random - TRNG and /dev/random
- Touchscreen Testing
- OV2640 Camera Interface - OV2640 Camera Interface
- I2S Audio Support - I2S Audio Support
- SAMA5D3x-EK Configuration Options - SAMA5D3x-EK Configuration Options
@ -441,6 +442,11 @@ Creating and Using NORBOOT
copying the NORBOOT image in SRAM which will run and then start the copying the NORBOOT image in SRAM which will run and then start the
image in NOR FLASH automatically. image in NOR FLASH automatically.
NOTES: (1) There is jumper on the CM module that must be closed to
enable use of the AT25 Serial Flash. (2) If using SAM-BA, make sure
that you load the NOR boot program into the boot area via the pull-
down menu.
STATUS: STATUS:
2013-7-30: I have been unable to execute these configurations from NOR 2013-7-30: I have been unable to execute these configurations from NOR
FLASH by closing the BMS jumper (J9). As far as I can tell, this FLASH by closing the BMS jumper (J9). As far as I can tell, this
@ -1388,18 +1394,18 @@ NAND Support
bad blocks and only NXFFS performs wear-leveling. bad blocks and only NXFFS performs wear-leveling.
NOTE: NXFFS is very slow. The first time that you start the system, NOTE: NXFFS is very slow. The first time that you start the system,
be prepared for a long wait; NXFFS will need to scan the entire NAND, be prepared for a long wait; NXFFS will need to format the NAND
erase it, reformat, and rescan the NAND. I have lots of debug on so I volume. I have lots of debug on so I don't yet know what the
don't know what the optimized wait would be. But with debug ON, optimized wait would be. But with debug ON, software ECC, and no
software ECC, and no DMA the wait is in many tens of minutes, perhaps DMA the wait is in many tens of minutes, even hours if many debug
hours. options are enabled.
On subsequent boots, after the NXFFS file system has been created, On subsequent boots, after the NXFFS file system has been created the
the boot time can still be substantial. This is because NXFFS needs delay will be less. But the NAND-related boot time can still be
to scan the entire NAND device and build the in-memory dataset need substantial. This is because NXFFS needs to scan the NAND device
to access NAND. It is recommended you create a separated thread at and build the in-memory dataset needed to access NAND. It is
boot time to bring up NXFFS so that you don't delay the boot-to-prompt recommended you create a separated thread at boot time to bring up
time excessively. NXFFS so that you don't delay the boot-to-prompt time excessively.
NOTE: There is another NXFFS related issue: When the FLASH is NOTE: There is another NXFFS related issue: When the FLASH is
fully used, NXFFS will restructure the entire FLASH, the delay to fully used, NXFFS will restructure the entire FLASH, the delay to
@ -1419,6 +1425,11 @@ NAND Support
FLASH. See the discussion of the NORBOOT configuration in the FLASH. See the discussion of the NORBOOT configuration in the
"Creating and Using NORBOOT" section above. "Creating and Using NORBOOT" section above.
NOTES: (1) There is jumper on the CM module that must be closed to
enable use of the AT25 Serial Flash. (2) If using SAM-BA, make sure
that you load the NOR boot program into the boot area via the pull-
down menu.
Application Configuration -> NSH Library Application Configuration -> NSH Library
CONFIG_NSH_ARCHINIT=y : Use architecture-specific initialization CONFIG_NSH_ARCHINIT=y : Use architecture-specific initialization
@ -1926,6 +1937,39 @@ TRNG and /dev/random
CONFIG_EXAMPLES_MAXSAMPLES=64 : Default settings are probably OK CONFIG_EXAMPLES_MAXSAMPLES=64 : Default settings are probably OK
CONFIG_EXAMPLES_NSAMPLES=8 CONFIG_EXAMPLES_NSAMPLES=8
Touchscreen Testing
===================
You can enable the touchscreen by modifying the configuration in the
following ways:
System Type:
CONFIG_SAMA5_ADC=y : ADC support is required
CONFIG_SAMA5_TSD=y : Enabled touchcreen device support
SAMA5_TSD_4WIRE=y : 4-Wire interface with pressure
You might want to tinker with the SWAPXY and THRESHX and THRESHY settings
to get the result that you want.
Drivers:
CONFIG_INPUT=y : (automatically selected)
Board Selection:
CONFIG_SAMA5_TSD_DEVMINOR=0 : Register as /dev/input0
Library Support:
CONFIG_SCHED_WORKQUEUE=y : Work queue support required
These options may also be applied to enable a built-in touchscreen test
application:
Applicaton Configuration:
CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test
CONFIG_EXAMPLES_TOUCHSCREEN_MINOR=0 : To match the board selection
CONFIG_EXAMPLES_TOUCHSCREEN_DEVPATH="/dev/input0"
Defaults should be okay for all related settings.
OV2640 Camera Interface OV2640 Camera Interface
======================= =======================
@ -2414,60 +2458,6 @@ Configurations
/dev/random. See the section entitled "TRNG and /dev/random" /dev/random. See the section entitled "TRNG and /dev/random"
above for detailed configuration information. above for detailed configuration information.
The following features are *not* enabled in the demo configuration but
might be of some use to you:
11. Debugging USB. There is normal console debug output available that
can be enabled with CONFIG_DEBUG + CONFIG_DEBUG_USB. However, USB
operation is very time critical and enabling this debug output WILL
interfere with some operation. USB tracing is a less invasive way
to get debug information: If tracing is enabled, the USB driver(s)
will save encoded trace output in in-memory buffers; if the USB
monitor is also enabled, those trace buffers will be periodically
emptied and dumped to the system logging device (the serial console
in this configuration):
Either or both USB device or host controller driver tracing can
be enabled:
Device Drivers -> "USB Device Driver Support:
CONFIG_USBDEV_TRACE=y : Enable USB device trace feature
CONFIG_USBDEV_TRACE_NRECORDS=256 : Buffer 256 records in memory
CONFIG_USBDEV_TRACE_STRINGS=y : (optional)
Device Drivers -> "USB Host Driver Support:
CONFIG_USBHOST_TRACE=y : Enable USB host trace feature
CONFIG_USBHOST_TRACE_NRECORDS=256 : Buffer 256 records in memory
CONFIG_USBHOST_TRACE_VERBOSE=y : Buffer everything
These settings will configure the USB monitor thread which will dump the
buffered USB debug data once every second:
Application Configuration -> NSH LIbrary:
CONFIG_NSH_USBDEV_TRACE=n : No builtin tracing from NSH (USB device only)
CONFIG_NSH_ARCHINIT=y : Automatically start the USB monitor
Application Configuration -> System NSH Add-Ons:
CONFIG_SYSTEM_USBMONITOR=y : Enable the USB monitor daemon
CONFIG_SYSTEM_USBMONITOR_STACKSIZE=2048 : USB monitor daemon stack size
CONFIG_SYSTEM_USBMONITOR_PRIORITY=50 : USB monitor daemon priority
CONFIG_SYSTEM_USBMONITOR_INTERVAL=1 : Dump trace data every second
CONFIG_SYSTEM_USBMONITOR_TRACEINIT=y : Enable TRACE output (USB device tracing only)
CONFIG_SYSTEM_USBMONITOR_TRACECLASS=y
CONFIG_SYSTEM_USBMONITOR_TRACETRANSFERS=y
CONFIG_SYSTEM_USBMONITOR_TRACECONTROLLER=y
CONFIG_SYSTEM_USBMONITOR_TRACEINTERRUPTS=y
NOTE: If USB debug output is also enabled, both outpus will appear
on the serial console. However, the debug output will be
asynchronous with the trace output and, hence, difficult to
interpret.
12. See also the sections above for additional configuration options:
"AT24 Serial EEPROM", "CAN Usage", "SAMA5 ADC Support", "SAMA5 PWM
Support", "OV2640 Camera Interface", "I2S Audio Support"
STATUS: STATUS:
See the To-Do list below See the To-Do list below
@ -2609,35 +2599,9 @@ Configurations
configuration. See the "Networking" section above for detailed configuration. See the "Networking" section above for detailed
configuration settings. configuration settings.
14. You can enable the touchscreen by modifying the configuration 14. You can enable the touchscreen and a touchscreen by following the
in the following ways: configuration instrcutions in the section entitled "Touchscreen
Testing" above.
System Type:
CONFIG_SAMA5_ADC=y : ADC support is required
CONFIG_SAMA5_TSD=y : Enabled touchcreen device support
SAMA5_TSD_4WIRE=y : 4-Wire interface with pressure
You might want to tinker with the SWAPXY and THRESHX and THRESHY
settings to get the result that you want.
Drivers:
CONFIG_INPUT=y : (automatically selected)
Board Selection:
CONFIG_SAMA5_TSD_DEVMINOR=0 : Register as /dev/input0
Library Support:
CONFIG_SCHED_WORKQUEUE=y : Work queue support required
These options may also be applied to enable a built-in touchscreen
test application:
Applicaton Configuration:
CONFIG_EXAMPLES_TOUCHSCREEN=y : Enable the touchscreen built-int test
CONFIG_EXAMPLES_TOUCHSCREEN_MINOR=0 : To match the board selection
CONFIG_EXAMPLES_TOUCHSCREEN_DEVPATH="/dev/input0"
Defaults should be okay for all related settings.
15. The Real Time Clock/Calendar RTC) may be enabled by reconfiguring NuttX. 15. The Real Time Clock/Calendar RTC) may be enabled by reconfiguring NuttX.
See the section entitled "RTC" above for detailed configuration settings. See the section entitled "RTC" above for detailed configuration settings.

View File

@ -88,11 +88,16 @@ int nor_main(int argc, char *argv)
{ {
uint32_t regval; uint32_t regval;
#ifdef CONFIG_SAMA5_NOR_START
printf("Configuring and booting from NOR FLASH on CS0\n");
#else
printf("Configuring NOR FLASH on CS0 and halting\n");
#endif
/* Make sure that the SMC peripheral is enabled (But of course it is... we /* Make sure that the SMC peripheral is enabled (But of course it is... we
* are executing from NOR FLASH now). * are executing from NOR FLASH now).
*/ */
printf("Configuring NOR flash on CS0 and halting\n");
sam_hsmc_enableclk(); sam_hsmc_enableclk();
/* The SAMA5D3x-EK has 118MB of 16-bit NOR FLASH at CS0. The NOR FLASH /* The SAMA5D3x-EK has 118MB of 16-bit NOR FLASH at CS0. The NOR FLASH
@ -178,23 +183,13 @@ int nor_main(int argc, char *argv)
#ifdef CONFIG_SAMA5_NOR_START #ifdef CONFIG_SAMA5_NOR_START
/* Then jump into NOR flash */ /* Then jump into NOR flash */
#if 0 /* Trying to printf() in this state is fatal */
printf("Jumping to NOR flash on CS0\n");
fflush(stdout);
usleep(500*1000);
#endif
NOR_ENTRY(); NOR_ENTRY();
#else #else
/* Or just wait patiently for the user to break in with GDB. */ /* Or just wait patiently for the user to break in with GDB. */
#if 0 /* Trying to printf() in this state is fatal */
printf("Waiting for GDB halt\n");
fflush(stdout);
#endif
for (;;); for (;;);
#endif #endif
return 0; /* NOR_ENTRY() should not return */ return 0; /* We should not get here in either case */
} }