[U-Boot] am335x: GPMC: reading speed with prefetch mode

Roger Quadros rogerq at ti.com
Fri Mar 20 13:37:01 CET 2015


On 20/03/15 13:24, Yegor Yefremov wrote:
> On Thu, Mar 19, 2015 at 4:56 PM, Daniel Mack <zonque at gmail.com> wrote:
>> On 03/19/2015 04:13 PM, Yegor Yefremov wrote:
>>> Strange. Have tried with "nand read" command, but still the same
>>> result with and without CONFIG_NAND_OMAP_GPMC_PREFETCH :
>>>
>>> [2.150655 0.001006] NAND read: device 0 offset 0x260000, size 0x1200000
>>> [15.978943 13.828288]  18874368 bytes read: OK
>>
>> What about adding some debug prints to the prefetch setup function and
>> see if it is executed at all?
> 
> I2C:   ready
> DRAM:  256 MiB
> NAND: prefetch enabled
> NAND: 256 MiB
> MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
> Using default environment
> 
> I've added "NAND: prefetch enabled" output for:
> 
> #ifdef CONFIG_NAND_OMAP_GPMC_PREFETCH
>         else {
>                 printf("NAND: prefetch enabled\n");
>                 nand->read_buf = omap_nand_read_prefetch8;
>         }
> #else
> 
> I've also put printf() into omap_nand_read_prefetch8() just to make
> sure it is called - it was called.
> 
> Further ideas?
> 
>>> Daniel, do you have the numbers? Images size and load time? What can I expect?
>>
>> I don't currently have the setup at hand, sorry. But the number I recall
>> from an email conversation back then is: The time from power-on, loading
>> SPL, loading U-Boot, leeching a 6MB uImage, jumping into it waiting for
>> the console to start dumping the kernel boot messages was less than 5
>> seconds in total.
> 
> I Linux I had ti,nand-xfer-type = "polled";. After replacing it with
> ti,nand-xfer-type = "prefetch-polled"; I now get
> 
> # dd if=/dev/mtdblock5 of=/dev/null bs=2M count=8
> 8+0 records in
> 8+0 records out
> 16777216 bytes (17 MB) copied, 2.58744 s, 6.5 MB/s
> 
> instead of:
> 
> # dd if=/dev/mtdblock5 of=/dev/null bs=2M count=8
> 8+0 records in
> 8+0 records out
> 16777216 bytes (17 MB) copied, 6.05157 s, 2.8 MB/s
> 
> Do I see it right, that DMA support is not implemented in am33xx.dtsi?

DMA support will have to be enabled in the board dts. e.g. am335x-bone.dts.

if ti,nand-xfer-type is not specified (like in mainline kernel) then it
defaults to prefetch-polled

cheers,
-roger


More information about the U-Boot mailing list