南宫尘 2024-10-22 11:22 采纳率: 0%
浏览 3
问题最晚将于10月30日00:00点结题

如何编写自己的emmc镜像

你好
我是用的平台是 基于CycloneVsoc F2C2芯片的SoM,它有一个eMMc取代了原本的SD 卡槽,
我的目的是使用 SD/MMC boot,上电后 启用 BOOTROM > SPL > baremetal bin,就和CycloneVsoc Dev Kit SD 卡启动裸机程序类似.

我编译了Aries的Uboot,使用他们的SPL,并编译了裸机程序,然后根据以下的格式制作了镜像:

P1 : raw, type=a2,存放u-boot-spl.bin < BootROM 将加载特定ID的raw分区,以寻找SPL
P2: fat32,存放Baremetal.bin < SPL检查分区,加载Baremetal 而不是UBoot

Aries 提供了一个SOC恢复程序,让我可以使用UMS读写emmc分区,
因此
1.选择 Boot from FPGA
2.载入 Recovery.sof
3.开启UMS
之后我执行了以下命令:
sudo dd if=/workspace/My_image.img of=/dev/sdX,之后通过fdisk -l 查看后发现考录成功了.
4.关电,选择 Boot from SD/MMC
5.上电

发现Cold reset 指示灯一直闪烁,用JTAG查看HPS的sysmgr寄存器发现initswstate为0x101,load address 是0.
重复代码地址是0x8fc到0x930,而不是HPS的OCRAM地址0xffffxxxx
因此我猜测BootROM没有找到SPL.

这是我用以参考的aries提供的yocto项目镜像

设备 启动 起点 末尾 扇区 大小 Id 类型
core-image-full-cmdline-aries-mcvevk-20220915120718.rootfs.wic1 2048 6143 4096 2M a2 未知 < 因该是Uboot with spl
core-image-full-cmdline-aries-mcvevk-20220915120718.rootfs.wic2 * 8192 40959 32768 16M 83 Linu
core-image-full-cmdline-aries-mcvevk-20220915120718.rootfs.wic3 40960 299123 258164 126.1M 83 Linu

这是我制作的镜像
设备 启动 起点 末尾 扇区 大小 Id 类型
my_image.img1 2048 6143 4096 2M a2 未知 < spl.bin
my_image.img2 8192 102399 94208 46M c W95 FAT32 (LBA)

我的问题如下:
1.emmc是否能够以这种方式启动?
2.如何自己制作emmc可以加载的镜像?

感谢
如需提供额外程序/材料/信息,烦请直接联系我
如有解决方法,并想获得酬劳,请直接联系我 2799796944@qq.com以商议具体报酬细节

Refrence:

板子信息
https://www.aries-embedded.com/system-on-module/fpga/cyclone-v-intel-fpga-mcv-som-hps-altera-soc-pcie-transceiver

sd卡镜像制作:
https://www.rocketboards.org/foswiki/Documentation/BuildingBootloaderCycloneVAndArria10
Cyclone V SoC - Boot from SD Card 分页

Yocto配方地址:
https://github.com/ARIES-Embedded/meta-aries

  • 写回答

13条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-10-22 11:22
    关注

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    您好!为了在基于 CYCLONEVSOC F2C2 芯片的 SOM 中实现 EMMC(EMBEDDED MEMORY CONTROLLER)镜像功能,您需要按照以下步骤操作:

    1. 首先,确保您的设备已连接到电源,并且已经安装了必要的驱动程序。
    2. 接下来,在您的 SOM 系统中,将您的 SD 卡槽替换为 EMMC 卡槽。这可以通过修改 SOM 的配置文件来完成。
    3. 在更改后的 SOM 中,启用 BOOTROM 和 SPL 这两个选项。这通常是在 BOOTROM 之前执行的操作。
    4. 当您在启动时按下电源按钮时,应看到 SPL 显示出来。这表示您已成功启动 BOOTROM。
    5. 在 SPL 屏幕上,您可以选择从 SD 卡读取数据或从 EMMC 卡读取数据。根据您的需求和设备类型,您可以选择不同的模式。

    如果您对具体的代码进行了优化,那么这里提供一个示例代码片段作为参考:

    #INCLUDE <STDIO.H>
    #INCLUDE <STDLIB.H>
    
    INT MAIN() {
        // 您可以在此处定义任何需要的函数、变量或结构体
    
        RETURN 0;
    }
    

    请注意,这个示例是一个简单的示例,实际应用中可能需要更复杂的逻辑和错误处理。如果您有特定的应用场景,或者有任何其他问题,请随时告诉我。祝您开发顺利!

    评论

报告相同问题?

问题事件

  • 创建了问题 今天

悬赏问题

  • ¥15 电脑软件运行次数如何统计
  • ¥15 同一个浏览器打开两个窗口怎么区分会话
  • ¥100 如何编写自己的emmc镜像
  • ¥15 starccm线性内聚力模型
  • ¥15 点云四边形凸包确定顶点
  • ¥15 关于redhat虚拟机系统新建卷的问题
  • ¥50 WRFDA读取风云四号A 星的GIIRS数据
  • ¥15 C# 爬虫融通金网址实时银价
  • ¥15 热敏电阻NTC,温控不同颜色的LED的亮与灭,PCB
  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU