SAMA5 HSMCI: e-enable TX DMA and verify that DMA writes to the SD card are functional. They are so now TX DMA is re-enabled in the driver. This might affect the SAMA5D3 platforms where the TX DMA problem was found. The SAMA4D3 and 4 use the same HSMCI driver. Much has change since then and it is not surprising that DMA is now functional. However, the has not be re-verified on the SAMA5D3 which has a different DMA controller.
This commit is contained in:
parent
bb06d31038
commit
276cc44878
@ -181,12 +181,10 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* TX-DMA is not reliable. Often, the TX DMA will hang after transferring 64 bytes or so.
|
||||
* I don't have any clue why at the moment. This option suppresses TX DMA (only).
|
||||
*/
|
||||
/* These were once helpful. Perhaps they will be so again some time. */
|
||||
|
||||
#undef HSCMI_NORXDMA
|
||||
#define HSCMI_NOTXDMA 1
|
||||
#undef HSCMI_NORXDMA /* Define to disable RX DMA */
|
||||
#undef HSCMI_NOTXDMA /* Define to disable TX DMA */
|
||||
|
||||
/* Timing */
|
||||
|
||||
|
@ -64,6 +64,7 @@ Contents
|
||||
- Networking
|
||||
- AT25 Serial FLASH
|
||||
- HSMCI Card Slots
|
||||
- Auto-Mounter
|
||||
- USB Ports
|
||||
- USB High-Speed Device
|
||||
- USB High-Speed Host
|
||||
@ -1086,6 +1087,9 @@ HSMCI Card Slots
|
||||
nsh> cat /mnt/sd1/atest.txt
|
||||
This is a test
|
||||
|
||||
NOTE: See the next section entitled "Auto-Mounter" for another way
|
||||
to mount your SD card.
|
||||
|
||||
4) Before removing the card, you must umount the file system. This is
|
||||
equivalent to "ejecting" or "safely removing" the card on Windows: It
|
||||
flushes any cached data to the card and makes the SD card unavailable
|
||||
@ -1098,6 +1102,29 @@ HSMCI Card Slots
|
||||
volume when it is removed. But those callbacks are not used in
|
||||
these configurations.
|
||||
|
||||
Auto-Mounter
|
||||
============
|
||||
|
||||
NuttX implements an auto-mounter than can make working with SD cards
|
||||
easier. With the auto-mounter, the file system will be automatically
|
||||
mounted when the SD card is inserted into the HSMCI slot and automatically
|
||||
unmounted when the SD card is removed.
|
||||
|
||||
The auto-mounter is enable with:
|
||||
|
||||
CONFIG_FS_AUTOMOUNTER=y
|
||||
|
||||
However, to use the automounter you will to provide some additional
|
||||
board-level support. See configs/sama5d4-ek for and example of how
|
||||
you might do this.
|
||||
|
||||
WARNING: SD cards should never be removed without first unmounting
|
||||
them. This is to avoid data and possible corruption of the file
|
||||
system. Certainly this is the case if you are writing to the SD card
|
||||
at the time of the removal. If you use the SD card for read-only access,
|
||||
however, then I cannot think of any reason why removing the card without
|
||||
mounting would be harmful.
|
||||
|
||||
USB Ports
|
||||
=========
|
||||
|
||||
@ -2792,13 +2819,17 @@ To-Do List
|
||||
endpoint support in the EHCI driver is untested (but works in similar
|
||||
EHCI drivers).
|
||||
|
||||
2) HSCMI TX DMA support is currently commented out.
|
||||
2) HSCMI. CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers because of some issues that I saw during testing. The is very
|
||||
low priority to me but might be important to you if you are need very
|
||||
high performance SD card accesses.
|
||||
|
||||
Also, CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers.
|
||||
|
||||
Both of these issues need to be revisited to determine there is or
|
||||
is not a real problem.
|
||||
The last time I used HSMCI with a SAMA5D3, I had to disable TX DMA
|
||||
in the HSMCI driver. Much has changed since then and I have reverified
|
||||
that TX DMA transfers are functional using a SAMA5D4. The SAMA5D4,
|
||||
however, has a different DMA subsystem. So... if you suspect issues
|
||||
HSMCI writes, you might try disabling the TX DMA again in the
|
||||
sam_hsmci.c driver.
|
||||
|
||||
3) GMAC has only been tested on a 10/100Base-T network. I don't have a
|
||||
1000Base-T network to support additional testing.
|
||||
|
@ -76,6 +76,7 @@ Contents
|
||||
- Networking
|
||||
- AT25 Serial FLASH
|
||||
- HSMCI Card Slots
|
||||
- Auto-Mounter
|
||||
- USB Ports
|
||||
- USB High-Speed Device
|
||||
- USB High-Speed Host
|
||||
@ -1245,6 +1246,9 @@ HSMCI Card Slots
|
||||
nsh> cat /mnt/sd1/atest.txt
|
||||
This is a test
|
||||
|
||||
NOTE: See the next section entitled "Auto-Mounter" for another way
|
||||
to mount your SD card.
|
||||
|
||||
4) Before removing the card, you must umount the file system. This is
|
||||
equivalent to "ejecting" or "safely removing" the card on Windows: It
|
||||
flushes any cached data to the card and makes the SD card unavailable
|
||||
@ -1257,6 +1261,29 @@ HSMCI Card Slots
|
||||
volume when it is removed. But those callbacks are not used in
|
||||
these configurations.
|
||||
|
||||
Auto-Mounter
|
||||
============
|
||||
|
||||
NuttX implements an auto-mounter than can make working with SD cards
|
||||
easier. With the auto-mounter, the file system will be automatically
|
||||
mounted when the SD card is inserted into the HSMCI slot and automatically
|
||||
unmounted when the SD card is removed.
|
||||
|
||||
The auto-mounter is enable with:
|
||||
|
||||
CONFIG_FS_AUTOMOUNTER=y
|
||||
|
||||
However, to use the automounter you will to provide some additional
|
||||
board-level support. See configs/sama5d4-ek for and example of how
|
||||
you might do this.
|
||||
|
||||
WARNING: SD cards should never be removed without first unmounting
|
||||
them. This is to avoid data and possible corruption of the file
|
||||
system. Certainly this is the case if you are writing to the SD card
|
||||
at the time of the removal. If you use the SD card for read-only access,
|
||||
however, then I cannot think of any reason why removing the card without
|
||||
mounting would be harmful.
|
||||
|
||||
USB Ports
|
||||
=========
|
||||
|
||||
@ -3020,7 +3047,7 @@ Configurations
|
||||
configurations because most testing was done at 396MHz. NAND has not
|
||||
been verified at these rates.
|
||||
|
||||
5. By default, all of these configurations run from ISRAM or NOR FLASH
|
||||
5. By default, all of these configurations run from ISRAM or NOR FLASH
|
||||
(as indicated below in each description of the configuration).
|
||||
Operation from SDRAM is also an option as described in the paragraph
|
||||
entitled, "Running NuttX from SDRAM."
|
||||
@ -3464,19 +3491,23 @@ To-Do List
|
||||
booting directly into NOR FLASH. So although I cannot confirm this
|
||||
behavior, this appears to be no longer an issue.
|
||||
|
||||
3) Neither USB OHCI nor EHCI support Isochronous endpoints. Interrupt
|
||||
2) Neither USB OHCI nor EHCI support Isochronous endpoints. Interrupt
|
||||
endpoint support in the EHCI driver is untested (but works in similar
|
||||
EHCI drivers).
|
||||
|
||||
4) HSCMI TX DMA support is currently commented out.
|
||||
3) HSCMI. CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers because of some issues that I saw during testing. The is very
|
||||
low priority to me but might be important to you if you are need very
|
||||
high performance SD card accesses.
|
||||
|
||||
Also, CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers.
|
||||
The last time I used HSMCI with a SAMA5D3, I had to disable TX DMA
|
||||
in the HSMCI driver. Much has changed since then and I have reverified
|
||||
that TX DMA transfers are functional using a SAMA5D4. The SAMA5D4,
|
||||
however, has a different DMA subsystem. So... if you suspect issues
|
||||
HSMCI writes, you might try disabling the TX DMA again in the
|
||||
sam_hsmci.c driver.
|
||||
|
||||
Both of these issues need to be revisited to determine there is or
|
||||
is not a real problem.
|
||||
|
||||
5) I believe that there is an issue when the internal AT25 FLASH is
|
||||
4) I believe that there is an issue when the internal AT25 FLASH is
|
||||
formatted by NuttX. That format works fine with Linux, but does not
|
||||
appear to work with Windows. Reformatting on Windows can resolve this.
|
||||
NOTE: This is not a SAMA5Dx issue.
|
||||
@ -3485,30 +3516,30 @@ To-Do List
|
||||
formatting function (mkfatfs). It is likely that these fixes will
|
||||
eliminate this issue, but that has not yet been verified.
|
||||
|
||||
6) CAN testing has not yet been performed due to issues with cabling. I
|
||||
5) CAN testing has not yet been performed due to issues with cabling. I
|
||||
just do not have a good test bed (or sufficient CAN knowledge) for
|
||||
good CAN testing.
|
||||
|
||||
7) There are lots of LCDC hardware features that are not tested with NuttX.
|
||||
6) There are lots of LCDC hardware features that are not tested with NuttX.
|
||||
The simple NuttX graphics system does not have support for all of the
|
||||
layers and other features of the LCDC.
|
||||
|
||||
8) I have a Camera, but there is still no ISI driver. I am not sure what to
|
||||
7) I have a Camera, but there is still no ISI driver. I am not sure what to
|
||||
do with the camera. NuttX needs something like V4L to provide the
|
||||
definition for what a camera driver is supposed to do.
|
||||
|
||||
I will probably develop a test harness for ISI, but it is of only
|
||||
minimal value with no OS infrastructure to deal with images and video.
|
||||
|
||||
9) GMAC has only been tested on a 10/100Base-T network. I don't have a
|
||||
8) GMAC has only been tested on a 10/100Base-T network. I don't have a
|
||||
1000Base-T network to support additional testing.
|
||||
|
||||
10) Some drivers may require some adjustments if you intend to run from SDRAM.
|
||||
That is because in this case macros like BOARD_MCK_FREQUENCY are not constants
|
||||
but are instead function calls: The MCK clock frequency is not known in
|
||||
advance but instead has to be calculated from the bootloader PLL configuration.
|
||||
9) Some drivers may require some adjustments if you intend to run from SDRAM.
|
||||
That is because in this case macros like BOARD_MCK_FREQUENCY are not constants
|
||||
but are instead function calls: The MCK clock frequency is not known in
|
||||
advance but instead has to be calculated from the bootloader PLL configuration.
|
||||
|
||||
As of this writing, all drivers have been converted to run from SDRAM except
|
||||
for the PWM and the Timer/Counter drivers. These drivers use the
|
||||
BOARD_MCK_FREQUENCY definition in more complex ways and will require some
|
||||
minor redesign and re-testing before they can be available.
|
||||
As of this writing, all drivers have been converted to run from SDRAM except
|
||||
for the PWM and the Timer/Counter drivers. These drivers use the
|
||||
BOARD_MCK_FREQUENCY definition in more complex ways and will require some
|
||||
minor redesign and re-testing before they can be available.
|
||||
|
@ -3792,10 +3792,6 @@ Configurations
|
||||
The auto-mounter is also enabled. See the section above entitled
|
||||
"Auto-Mounter".
|
||||
|
||||
STATUS: Seems to be completely functional. TX DMA is currently
|
||||
disabled; there was a problem at one time but that has probably
|
||||
been fixed. HSCMI with TX DMA re-enabled needs to be verified.
|
||||
|
||||
13. Networking is supported via EMAC0. See the "Networking" section
|
||||
above for detailed configuration settings. DHCP is not used in
|
||||
this configuration; rather, a hard-coded IP address of 10.0.0.2 is
|
||||
@ -4222,15 +4218,10 @@ To-Do List
|
||||
endpoint support in the EHCI driver is untested (but works in similar
|
||||
EHCI drivers).
|
||||
|
||||
2) HSCMI TX DMA support is currently commented out. There were problems at
|
||||
one time (on the SAMA5D3) and the temporary workaround was simply to
|
||||
disable TX DMA. There have been several fixes to both HSMCI and DMA
|
||||
support since then and TX DMA is very likely okay now. But this needs
|
||||
to be verified by re-enabled HSMCI TX DMA.
|
||||
|
||||
Also, CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers. The is very low priority to me but might be important to you
|
||||
if you are need very high performance SD card accesses.
|
||||
2) HSCMI. CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is set to disable multi-block
|
||||
transfers because of some issues that I saw during testing. The is very
|
||||
low priority to me but might be important to you if you are need very
|
||||
high performance SD card accesses.
|
||||
|
||||
3) There is a kludge in place in the Ethernet code to work around a problem
|
||||
that I see. The problem that I see is as follows:
|
||||
|
Loading…
Reference in New Issue
Block a user