View Issue Details

IDProjectCategoryView StatusLast Update
0001470NBootV210SD/MMCpublic2015-02-04 15:36
ReporterKeller Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status assignedResolutionopen 
Product VersionV19 
Target VersionV20 
Summary0001470: SD-Cards use very low speed
DescriptionNormal speed SD-Cards use only 12.8MHz and high speed SD-Cards only 25.6MHz for transfers. This is only a little bit more than half of the possible speed (25MHz and 50MHz).
Steps To ReproduceTry to load some bootloader from SD-Card with NBoot command 'c'. Look at the line "Operating Frequency". You'll see the following values.

Operating Frequency: 12826923Hz (Normal Speed)
Operating Frequency: 25653846Hz (High Speed)
Additional InformationThe base frequency for the MMC/SD controller is derived by dividing the MPLL clock of 667MHz to a frequency below 52MHz. 52 MHz is the maximum speed for High-Speed MMC cards. This results in a divider of 13 and a base frequency of 51.3MHz.

Unfortunately all other frequencies now have to be divided from this base frequency by a power of 2 (1, 2, 4, 8, ..., 256). This is a restriction of the SDHC controller specification and Samsung implementation. However High-Speed SD-Cards have a maximum frequency of 50MHz, only MMC cards have 52MHz. So we must use divider 2 for High-Speed and 4 for Normal-Speed, resulting in the above low speeds.

It would be much better to check for 50MHz instead of 52MHz when computing the divider for the base clock. This would result in divider 14 and a base frequency of 47,6MHz. This can be used directly for High-Speed cards and half of it (23.8MHz) for Normal-Speed cards. This would bring a much better performance for SD cards and only a minor speed reduction for MMC cards (which are not important for our purposes anyway).

In SDHC_OpenMedia() (file lib/s1sdhc.c):

Change line

    while (((uSrcFreq/uClockDivision) > 52000000) && (uClockDivision < 16))

to

    while (((uSrcFreq/uClockDivision) > 50000000) && (uClockDivision < 16))
Forum Link

Activities

There are no notes attached to this issue.