i.MX28 eMMC boot

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

i.MX28 eMMC boot

2,628 Views
Matteo
Contributor II

Hi,

 

I have a i.MX28 custom board and I'm trying to boot the linux kernel on an eMMC card connected to the ssp0 interface of the i.MX287.

 

I set in ltib the "mfg firmware profile" and I set the kernel command line as follow:

     console=ttyAM0,115200 rdinit=/linuxrc rw gpmi

 

I have copied the updater_ivt.sb in the profile directory of MFGTool and I have started to program my board.

 

MFGTool crashes and the console displays the message:



mmcblk0: unable to set block size to 512: -110

mmcblk: probe of mmc0:0001 failed with error -22

ln: /etc/mtab: File exists

disable turn off display

uuc 0.4 [built Jul  6 2012 14:40:37]

UTP: Waiting for device to appear

utp_mk_devnode: creating node '/dev/utp' with 10+222

cpu_id is 28

g_file_storage gadget: high speed config #1

UTP: received command 'mknod bloutp_exec: exit with status -22

ck,mmcblk0,/dev/mmcblk0,block'

class = 'block'

item = 'mmcblk0'

node = /dev/mmcblk0

type = block

UTP: running utp_mk_devnode(block,mmcblk0,/dev/mmcblk0,0x6000)

UTP: sending Non-success

 

 

 

Do you have any suggestions?? (I attach the complete console message).

 

 

Thanks,

Matteo.

Original Attachment has been moved to: iMX28_Boot.TXT.txt.zip

Labels (2)
0 Kudos
Reply
6 Replies

1,615 Views
Matteo
Contributor II

Hi,

I post also the log of MFGTool:

1 - Panel A Finished <CMD/> type="find" body="Updater" file="" timeout="180" onError="" text="" SUCCESS code=0x0.

Panel A Start <CMD/> type="push" body="mknod block,mmcblk0,/dev/mmcblk0,block" file="" timeout="10" onError="" text="".

1 - Panel A Finished <CMD/> type="push" body="mknod block,mmcblk0,/dev/mmcblk0,block" file="" timeout="10" onError="" text="" FAIL code=0xffffffea.

Panel A: Command is not supported by device.,failed to run command: type="push" body="mknod block,mmcblk0,/dev/mmcblk0,block" file="" timeout="10" onError="" text="" 

2 - Panel A Finished processing SD(with uboot) <LIST/> : FAIL code=-22.

Thanks.

0 Kudos
Reply

1,615 Views
LeonardoSandova
Specialist I

Hi Mateo.

Have you tried using the default firmware? I have not done the MFGtool & i.MX28 but in theory you do not have to touch anything on the profile/xxxxx folder. Also, did you change something on the XML file?

Leo

0 Kudos
Reply

1,615 Views
Matteo
Contributor II

Hi Leonardo,

I hvae tried to use default firmware but it is not running. I think that it not running because I have not connected any voltage on the battery pin of the i.MX28 and I have to modify the power_prep.c boot file on my firmware to run the kernel.

I think that my problem is due to eMMC card. In the EVK board I load the kernel on a SD card end I boot from the this SD card. The problem is that the SD card have 4 data line instead my eMMC have 8 data line.

Is it possible that I have to load on ltib a specific driver for eMMC with 8 data line? In my opinion the SD/eMMC driver should identify whether the card have 4 or 8 data line.

Do you have any suggestion?

Thanks,

Matteo

0 Kudos
Reply

1,615 Views
YixingKong
Senior Contributor IV

Matteo

This discussion is closed since no activity. If you still need help, please feel free to reply with an update to this discussion, or create another discussion.

Thanks,

Yixing

0 Kudos
Reply

1,615 Views
YixingKong
Senior Contributor IV

Matteo

Had your issue got resolved? If yes, we are going to close the discussion in 3 days. If you still need help please feel free to contact Freescale.

Thanks,
Yixing

0 Kudos
Reply

1,615 Views
GraceH
Senior Contributor II

Hi Mateo.


In arch/arm/mach-mx28/device.c, mmc0 is only set with value MMC_CAP_4_BIT_DATA, mmc1 is set with value

MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA. You can modify mmc0_data

.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA to try.

static struct mxs_mmc_platform_data mmc0_data = {

  .hw_init = mxs_mmc_hw_init_ssp0,

  .hw_release = mxs_mmc_hw_release_ssp0,

  .get_wp = mxs_mmc_get_wp_ssp0,

  .cmd_pullup = mxs_mmc_cmd_pullup_ssp0,

  .setclock = mxs_mmc_setclock_ssp0,

  .caps = MMC_CAP_4_BIT_DATA,

  .min_clk = 400000,

  .max_clk = 48000000,

  .read_uA        = 50000,

  .write_uA       = 70000,

  .clock_mmc = "ssp.0",

  .power_mmc = NULL,

  .fastpath_sz = 1024,

};

static struct mxs_mmc_platform_data mmc1_data = {

  .hw_init = mxs_mmc_hw_init_ssp1,

  .hw_release = mxs_mmc_hw_release_ssp1,

  .get_wp = mxs_mmc_get_wp_ssp1,

  .cmd_pullup = mxs_mmc_cmd_pullup_ssp1,

  .setclock = mxs_mmc_setclock_ssp1,

  .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA

  | MMC_CAP_DATA_DDR,

  .min_clk = 400000,

  .max_clk = 48000000,

  .read_uA        = 50000,

  .write_uA       = 70000,

  .clock_mmc = "ssp.1",

  .power_mmc = NULL,

  .fastpath_sz = 1024,

};

Grace

0 Kudos
Reply