Next steps with brand new eMMC on embedded linux

2.5k Views Asked by At

I have been working on trying to get the eMMC chip working on my embedded linux platform. So far I have done the following:

(1) Added custom driver in drivers/mmc/host (2) Compiled the kernel and target image (3) loaded image onto target and booted board

During boot I see these:

.
mmcblk0: mmc0:0001 4YMD3R 3.64 GiB
mmc0: calculated max. discard sectors 4579328 for timeout 2684354 ms
mmcblk0boot0: mmc0:0001 4YMD3R partition 1 4.00 MiB
mmc0: calculated max. discard sectors 4579328 for timeout 2684354 ms
mmcblk0boot1: mmc0:0001 4YMD3R partition 2 4.00 MiB
.
.
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x0
end_request: I/O error, dev mmcblk0, sector 0
.
Buffer I/O error on device mmcblk0, logical block 0
.
mmcblk0: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x900
mmcblk0: retrying using single block read
.
mmcblk0boot1: error -84 transferring data, sector 0, nr 8, cmd response 0x900, card status 0x900
mmcblk0boot1: retrying using single block read
.
mmcblk0boot1: unknown partition table
.
mmcblk0boot0: unknown partition table

After I boot, here is the output of /proc/partitions:

# cat /proc/partitions
major minor  #blocks  name

  31        0       7824 mtdblock0
 179        0    3817472 mmcblk0
 179       16       4096 mmcblk0boot1
 179        8       4096 mmcblk0boot0

Can anyone tell me the following:

  • Is my device working properly?
  • How can I start writing data to the userdata partition? ( mounting is failing for mmcbllk0 )
  • How can I create more General Purpose Partitions?
  • How can I create more ( regular ) partitions ?

Thanks in advance, I am super new at this, and I cant seem to find this information anywhere.

elDukae

2

There are 2 best solutions below

0
On

Is my device working properly?

No. Due to multiple read is failed in your device. Maybe you need to check the timing.

How can I start writing data to the userdata partition? ( mounting is failing for mmcbllk0 )

If the mount is failed. You cant access this device. From your result of "cat /proc/partitions", you can execute cmd to check the write behavior.

For example, dd if=dev/zero of=/dev/mmcblk0 bs=512 offset=200000 count=10

How can I create more General Purpose Partitions?

you can read Flow Chart for General Purpose Partitions & Enhanced User Data Area parameter setting in JEDEC Standard to get the detail.

How can I create more ( regular ) partitions ?

You can use fdisk to create partitions.

0
On

Thanks for all the input. Here is what I was able to find out about my situation:

(1) Read failures: This was due to improper I/O and Core voltages on my board. The linux code will automatically go to the highest supported speed grade of the eMMC device. In this case I had to manually tell the linux driver to stick to the lower speeds since that is what the wrong I/O and core voltages supported.

(2) Partitioning: Turns out I dont need any general purpose partitions. After the read errors were fixed, I just ran fdisk on /dev/mmcblk0 and created regular partitions

Thanks again!