I replaced the on-board eMMC by a 64G Bytes high performance eMMC, and it works.
The idea came in my mind when I wasn’t able to compile OpenCV 3.1 on my Banana Pi M3 due to storage limitation. So I had to use a 16G SD card instead. It’s a pity that I can’t run my codes one the fast eMMC.
2 weeks ago, I decided to buy a bigger eMMC and replace it by myself. Two days ago, the chips arrived.
Here is the chip. A 64GB high-performance sansung eMMC. I paid for it about 15 pounds including postage.
And here is my M3.
The comparison of the original eMMC on-board (KLM8G1WEMB) and the one I brought (KLMCG8GEAC) . But you will see later in the test result, the read speed is limited by the speed of A83T at 50MHz and 50MB/s
The board is ready to detach the eMMC. I tried first with my hot air gun. But I fail due to the overheat of the power supplier.
Then, someone told me that I could use the cooker! 1 minutes later, it is done!
Then remove the extra tin.
It’s DONE
Use my old sd card to power on… Everything works fine, it’s recognizes the eMMC! Working mode is 50MB-8bits-DDR.
Here is the start-up log for SD card. You could see it’s running on 25MB-4bits-SDR mode.
Unfortunately, the chip isn’t empty. But they seems haven’t initialized yet. So it might be a ‘new’ eMMC.
Whatever, Let’s start the test.
There are three tests I tried. Here is the list of tests.
-
Using dd cmd to test the reading and writting speed in different block sizes.
-
Using dd cmd to simulate 4k I/O test. (read 4k block, then write them in the same block)
-
Using hdparm
Let’s do the hdparm first:
sudo hdparm -Tt /dev/mmcblk0
Compare to SD card both 8G emmc and 64G emmc has two times speed.
For the dd reading test, I used this cmd below. The test is about reading 1 Gbytes data from eMMC or SD card. The data is collected from the result of dd. I change bs and count to do the test in different block size.
time sudo dd if=/dev/mmcblk1 of=/dev/null bs=512 count=2097152
The theoretical maximum speed of eMMC on A83T is limit to 50MB/s. It might because there are some buffers in the system.
Here is the writing test:
time sudo dd if=/dev/zero of=/home/pi/test.dat bs=512 conv=fdatasync count=2097152
conv=fdatasync means that the data write directly to emmc without buffer.
The 64G is 6 to 7 times faster than both sd card and 8GB eMMC.
4k test, using the cmd below:
time sudo dd if=/dev/mmcblk1 of=/dev/mmcblk1 bs=4k count=10000 oflag=dsync
The data should means how many read and write cycles that the emmc / sd card can performs in 1 second. But it might not works as my expectation. Please refer to the specification of eMMC in the front of this post. For the 8G eMMC test, I/O should not go above writing IOPS. (about 200)
For the conclusion, This is a worthwhile attempt to gain both writing speed and storage capacity. But I think the stander version is enough. Because the limitation is the interface of A83T, the maximum speed is limited to 50MB/s.
More descriptions on my blog (in Chinese): http://aircheese.me/2016/banana-pi-emmc.html
I’m not a native English speaker; sorry if I confuse you with my language. Regards,