0

我一直在努力让 eMMC 芯片在我的嵌入式 linux 平台上运行。到目前为止,我已经完成了以下工作:

(1) 在drivers/mmc/host 中添加自定义驱动 (2) 编译内核和目标镜像 (3) 加载镜像到目标和启动板

在启动期间,我看到这些:

.
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

启动后,这是 /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

谁能告诉我以下内容:

  • 我的设备工作正常吗?
  • 如何开始将数据写入 userdata 分区?( mmcbllk0 安装失败)
  • 如何创建更多通用分区?
  • 如何创建更多(常规)分区?

在此先感谢,我对此非常陌生,我似乎无法在任何地方找到此信息。

埃尔杜凯

4

2 回答 2

0

我的设备工作正常吗?

否。由于您的设备中的多次读取失败。也许你需要检查时间。

如何开始将数据写入 userdata 分区?( mmcbllk0 安装失败)

如果挂载失败。您无法访问此设备。从“cat /proc/partitions”的结果中,您可以执行 cmd 来检查写入行为。

例如dd if=dev/zero of=/dev/mmcblk0 bs=512 offset=200000 count=10

如何创建更多通用分区?

您可以阅读 JEDEC 标准中的通用分区和增强用户数据区参数设置流程图以获取详细信息。

如何创建更多(常规)分区?

您可以使用 fdisk 创建分区。

于 2014-12-08T01:50:12.770 回答
0

感谢所有的投入。以下是我能够找到的关于我的情况的信息:

(1) 读取失败:这是由于我的板上 I/O 和内核电压不正确造成的。linux 代码会自动转到 eMMC 设备支持的最高速度等级。在这种情况下,我不得不手动告诉 linux 驱动程序坚持较低的速度,因为这是错误的 I/O 和内核电压支持的。

(2) 分区:原来我不需要任何通用分区。修复读取错误后,我只是在 /dev/mmcblk0 上运行 fdisk 并创建了常规分区

再次感谢!

于 2014-12-09T17:53:26.507 回答