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.
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)
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,