编译玩客云可以写入emmc启动的openwrt固件
✅ 方案 (强烈推荐,成功率最高)
完全照网上这套来
eMMC:
重新分区
建一个 FAT32 分区(mmc 1:1)
这一步可以使用openwrt-18.06.8-s805-k310-onecloud-ws1608-by-snail_20201208_163930+(7)里面的分区脚本sh /root/format-emmc-partition.sh
文件放进去:
emmc_autoscriptuImageuInitrddtbuEnv_emmc.ini让 U-Boot 走:
fatload mmc 1:1 ...
✔️ 日志已经证明 你这个 U-Boot 原生支持这条路
下面内容是 完全对齐你给的“能正常 eMMC 启动日志” 的方案,按顺序做,成功率非常高。
目标设备:OneCloud / M201 / S805 / 1G 内存
启动方式:eMMC + FAT 分区 + emmc_autoscript
一、最终目录结构(你做完后应该长这样)
eMMC 的 第 1 分区(FAT32) 根目录:
/boot(或直接根目录) ├── emmc_autoscript ├── uImage ├── uInitrd ├── uEnv_emmc.ini └── dtb
⚠️ 注意:
U-Boot 找的是文件,不是分区名
emmc_autoscript没有扩展名
二、eMMC 分区方案(必须这样来)
1️⃣ Linux / OpenWrt 下重新分区(示例)
fdisk /dev/mmcblk1
输入顺序(非常重要):
o # 清空分区表(MBR)n p12211841269759 # ≈512MB FATtc # FAT32 LBAn p21482752 # 剩余全部w
然后格式化:
mkfs.vfat -F32 /dev/mmcblk1p1 mkfs.ext4 /dev/mmcblk1p2
挂载:
mount /dev/mmcblk1p1 /mnt
三、核心文件(我直接给你内容)
1️⃣ emmc_autoscript.cmd(源码)
echo "===== Boot OpenWrt from eMMC (NO uInitrd) ====="
# 内核、DTB 加载地址(与你日志一致)
setenv kernel_addr 0x14000000
setenv dtb_addr 0x11800000
# eMMC:SDIO C = mmc 1
setenv bootdev "mmc 1:1"
# 传给内核的启动参数
setenv bootargs "console=ttyS0,115200n8 root=/dev/mmcblk1p2 rw rootwait"
# 读取内核
fatload ${bootdev} ${kernel_addr} uImage || exit
# 读取 DTB
fatload ${bootdev} ${dtb_addr} dtb || exit
# 启动(不带 ramdisk)
bootm ${kernel_addr} - ${dtb_addr}2️⃣ 生成 emmc_autoscript(关键一步)
mkimage -A arm -T script -C none \ -n "Boot OpenWrt from eMMC" \ -d emmc_autoscript.cmd emmc_autoscript
⚠️ 只拷贝生成后的 emmc_autoscript,不是 .cmd
3️⃣ uEnv_emmc.ini(可选,但强烈建议)
bootdelay=1baudrate=115200console=ttyS0,115200n8kernel_addr=0x14000000ramdisk_addr=0x15000000fdt_addr=0x11800000
4️⃣ dtb 文件(必须匹配)
四、拷贝文件到 eMMC FAT 分区
可以执行openwrt-18.06.8-s805-k310-onecloud-ws1608-by-snail_20201208_163930+(7)里面的sh /root/install-openwrt-to-emmc.sh,不过要注意修改你的boot文件夹
BOOT_DIR=${BOOT_DIR:-/var/rom_boot}
display_alert "" && display_alert "Copy bootfs files to eMMC, please wait ..."
(mkdir /var/rom_boot 2>/dev/null; cd $BOOT_DIR && rm -rf *)
(cd /boot && tar cpf - *) | pv -p -b -r -s $(( `du -sk /boot | cut -f1` * 1024 )) | (cd $BOOT_DIR && tar xpf -)
这里两个boot要改成你建立boot文件夹的路径
这里可以参考以前我制作镜像的一些方式https://www.pylblog.com/post/253.html
在 openwrt-18.06.8-s805-k310-onecloud-ws1608-by-snail_20201208_163930+(7)启动盘增加两个文件夹用来放你编译的固件例如bootA、rootfsA
将emmc_autoscript uImage uInitrd uEnv_emmc.ini dtb 拷贝到boot分区
五、U-Boot 下验证(非常重要)
串口进入 U-Boot:
mmc list mmc dev 1 fatls mmc 1:1
你必须看到:
emmc_autoscriptuImage uInitrd uEnv_emmc.ini dtb
然后手动测试:
fatload mmc 1:1 0x12000000 emmc_autoscript autoscr 0x12000000
如果正确,日志会出现:
reading uImage reading uInitrd reading ...dtb## Booting kernel from Legacy Image
? 这一步成功 = 90% 已搞定
先按照这个教程执行一次,确保需要的框架存在,https://post.smzdm.com/p/aoxw5x9n/
扫描二维码推送至手机访问。
本サイト上に掲載の文章、画像、写真などを無断で複製することは法律で禁じられています。全ての著作権はGAMESHに帰属します。


