This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CF(Compact Flash) is failed

Other Parts Discussed in Thread: TMS320DM6446

Hi everybody,

We are using DM6446 EVM and trying CF. But, CF is not worked. We made kernel image as the follwing.

xconfig -> TI DaVinci Implementations -> check "CF card support" -> save -> make clean -> make image.

And this is logs when booting.

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
MUX: initialized HDIREN
MUX: initialized ATAEN
    ide0: MMIO-DMA , BIOS settings: hda:pio, hdb:pio
Palm Chip BK3710 IDE Register Fail

 And, we are using LEXAR MEDIA 2GB. Are another settings necessary to use CF on EVM? Or is this composition problem?

Thank you and BRs.

  • I take it you had the CF card inserted before powering on the EVM, correct?  If so, do you see a /dev/hda1 device node after Linux boots up?

  • Sure, we have inserted CF card before powering on the EVM. But we cannot see the /dev/hda1 device node alone, also /dev/hda and /dev/hda2. We had checked CF card to verify it on Windows OS. The CF card was OK. Do you have any idea to check it? We attach logs again.

    Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
    ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
    MUX: initialized HDIREN
    MUX: initialized ATAEN
        ide0: MMIO-DMA , BIOS settings: hda:pio, hdb:pio
    hda: no response (status = 0xd0)
    Palm Chip BK3710 IDE Register Fail

    Thank you and BRs.

  • We have tested another CF card. It is OK. Maybe we think that this is composition problem.

  • I have an simliar problem. I reset dm6467 when i fsck the disk partitions. And output the following information:

    Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
    ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
    MUX: initialized ATAEN
        ide0: MMIO-DMA , BIOS settings: hda:pio, hdb:pio
    Palm Chip BK3710 IDE Register Fail

    The problem cannot be eliminate after reboot this system. The problem is disappeared after power off.

    By debugging, the 0x1f6(Device/head ) register cannot be writed. So we cannot select primary/slave drive. The register value is 240 always when it is writed 160 or 176.

    Thank you and BRs.

  • Hi,
    I would like to be friends with you on the TI E2E Community . Thank you!

    Dear Sir,

    I request a help to access compact flash interfaced with TI davinci TMS320Dm6446.

    I am using Spectrum digital EVMDM6446 (DaVinci EVM) and Spectrum digital XDS560v2 LC Traveller Emulator and Code Composer Studio 5.5.0 and using SanDisk compact flash ultra II (4.0 GB). I am trying to run the spectrum sample code for compact flash "cf" which is given in spectrum digital Inc website support page (c6000.spectrumdigital.com/.../davincievm.zip ). when i run the code as it is, I am able to read only MSB 8 bit of device ID and not able to read the LSB data and always getting 0 as explained below. it is detecting the card( card is detecting in function Int16 cf_card_detect( )), but read access has error as said above.
    do I need to make any changes in the code?
    I am trying to read the device ID in code :

    /* ------------------------------------------------------------------------ *

    * *

    * cf_identify( ) *

    * *

    * ------------------------------------------------------------------------ */

    Int16 cf_identify( Uint8* buffer )

    {

    Int16 i;

    Uint8* id = buffer;

    Uint8 str[64];

    Uint32 size;


    ATA_readId( ( Uint32 )id );


    /* Check for valid identifier */

    printf( " CF Identifier: 0x%x\n", ( id[0] << 8 ) + id[1] );

    if ( ! ( ( id[0] == 0x8A ) && ( id[1] == 0x84 ) ) )

    {

    printf( " Invalid CF identifier found\n" );

    return 1;

    }


    /* Print model number */

    for ( i = 0 ; i < 40 ; i += 2 )

    {

    str[i] = id[i + 55];

    str[i + 1] = id[i + 54];

    }

    str[40] = 0;

    printf( " Model number: [%s]\n", str );


    /* Print serial number */

    for ( i = 0 ; i < 20 ; i += 2 )

    {

    str[i] = id[i + 21];

    str[i + 1] = id[i + 20];

    }

    str[20] = 0;

    printf( " Serial number: [%s]\n", str );


    /* Print capacity */

    size = id[123];

    size = ( size << 8 ) + id[122];

    size = ( size << 8 ) + id[121];

    size = ( size << 8 ) + id[120];

    size = size >> 1;

    printf( " Capacity: [%d] KBytes\n", size );

    printf( " Capacity: [%d] MBytes\n", size >> 10 );

    return 0;

    }

    Output:

    [ARM9_0] CF.CD1 Found

    CF.CD2 Found

    CF Identifier: 0x84

    Invalid CF identifier found

    Model number: [ ]

    Serial number: [AS 0 0"9$5]

    Capacity: [3962416] KBytes

    Capacity: [3869] MBytes

    InvAddr32 test [1-3] sector


    ***ALL Tests Passed***

    here only MSB 0x84 is getting read and I am reading 0x00 instead of LSB 0x8A . Not able to run ata_addr32() test too(same problem). I have not made any change in the sample code. whats wrong?

    Refer Code: Sample code attached, same code and supporting files are also given in davincievm.zip folder in below link

    download davincievm.zip folder from c6000.spectrumdigital.com/.../revf)

    file path :davincievm\examples\cf .

    ref datasheets: sandisk compact flash : media.digikey.com/.../SanDisk%20CompactFlash%20Memory.pdf

    TI datasheets: SPRUE21(ATA controllers datasheet)

    TI foram link: e2e.ti.com/.../401103



    Regards,


    --

    Venkatraman Bhat | AutoTEC Systems Pvt. Ltd