Hi,
I am working on extending BSP for stm32f4. I am trying to connect SD-card using 
SPI interface.
So far I wrote low-level SPI driver and tested it ok.

But when I try to write BSP initialization for sd card :

int BSP_spi_initialize( void )
{
        int spi_busno;
        /* Initialize the library */
        if ( rtems_libi2c_initialize() ) {
                fprintf(stderr,"Initializing I2C library failed\n");
                return -1;
        }


        /* Register our bus driver */
        if ( (spi_busno=rtems_libi2c_register_bus(
                                        BSP_SPI_BUS2_NAME,
                                        BSP_SPI_BUS2_DESCRIPTOR) ) < 0 ) {
                perror("Registering stm32f4_i2c_2 i2c bus driver");
                return -1;
        }

    /* Register SD Card driver */
        sd_card_driver_table [0].bus = spi_busno;
        rtems_status_code sc = sd_card_register();
        if (sc != RTEMS_SUCCESSFUL) {
                perror("Registering SD card failed!");
                return sc;
        }
}


with sd_card_driver_table defined:
sd_card_driver_entry sd_card_driver_table [1] = {
  {
    .device_name = "/dev/sd-card-a",
    .bus = 0,
    .transfer_mode = SD_CARD_TRANSFER_MODE_DEFAULT,
    .command = SD_CARD_COMMAND_DEFAULT,
    /* .response = whatever, */
    .response_index = SD_CARD_COMMAND_SIZE,
    .n_ac_max = SD_CARD_N_AC_MAX_DEFAULT,
    .block_number = 0,
    .block_size = 0,
    .block_size_shift = 0,
    .busy = true,
    .verbose = true,
    .schedule_if_busy = false
  }
 };

I receive these errors:


sd_card_send_command: Error: Timeout
sd_card_send_command: Error: Response: ff:ff 4d:ff 00:ff 00:ff 00:ff 00:ff 
0d:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:[ff]
sd_card_send_command: Error: Timeout
sd_card_send_command: Error: Response: ff:ff 40:ff 00:ff 00:ff 00:ff 00:ff 
95:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:ff ff:[ff]
sd_card_init: Error: RV = -27: Send: SD_CARD_CMD_GO_IDLE_STATE
sd_card_disk_init: Error: SC = 27: Initialize SD Card
sd_card_register: Error: SC = 27: Register disk SD Card driver
Registering SD card failed!: No such file or directory


the problem is that I don't set the address of the SD-card (CS port and pin 
number for SPI)

If I modify low-level SPI driver stm32f4_spi_send_addr function and put that CS 
port and pin number there,

sd_card_register will succeed.

Here is the messages:

sd_card_init: *** Card Identification ***
sd_card_init: Manufacturer ID          : 2
sd_card_init: OEM/Application ID       : 21581
sd_card_init: Product name             : SA02G
sd_card_init: Product revision         : 41
sd_card_init: Product serial number    : 4001314816
sd_card_init: Manufacturing date       : 195
sd_card_init: 7-bit CRC checksum       : 44
sd_card_init: *** Card Specific Data ***
sd_card_init: CSD structure            : 0
sd_card_init: Spec version             : 0
sd_card_init: Access time [ns]         : 2000000
sd_card_init: Access time [N]          : 0
sd_card_init: Max access time [N]      : 312500
sd_card_init: Max read block size [B]  : 1024
sd_card_init: Max write block size [B] : 1024
sd_card_init: Block size [B]           : 1024
sd_card_init: Block number             : 1943552
sd_card_init: Capacity [B]             : 1990197248
sd_card_init: Max transfer speed [b/s] : 25000000
SPI devices registered



Could you advice me how to properly setup high-level sd-card driver?

Thanks,
Jiri Freyvald



_______________________________________________
rtems-devel mailing list
rtems-devel@rtems.org
http://www.rtems.org/mailman/listinfo/rtems-devel

Reply via email to