hzyitc / u-boot-onecloud

u-boot for onecloud. 玩客云用u-boot
Other
70 stars 35 forks source link

关于emmc损坏,通过sd卡启动uboot替代emmc #3

Closed lanlanpy closed 2 years ago

lanlanpy commented 2 years ago

你好大佬,我的玩客云emmc用不了了,不会换emmc芯片,玩客云的群友也好多emmc有问题,启动不了uboot的,也无法重新烧录进去,想编译一个用sd卡替代emmc方案的uboot,大概需要更改哪些地方呢,目前直接用你预编译好的uboot文件写入内存卡可以正常从内存卡和U盘启动,但是由于无法从emmc读取env环境参数,导致每次都会改变mac。

系统能正常启动,但是reboot 和shutdown -r 重启都不能重启成功,系统服务是关掉了,但是电源状态没有重置,没有重新启动uboot。

还有可以修改burn部分的代码,让烧录工具烧录的时候直接写到sd卡吗?就是sdcard完全替代emmc。

希望大佬有空解答一下,谢谢。

hzyitc commented 2 years ago

无法从emmc读取env环境参数

理论上只需要将CONFIG_SYS_MMC_ENV_DEV改为0即可。

每次都会改变mac

MAC 问题在尝试修复,具体见 hzyitc/armbian-onecloud#21

烧录工具烧录的时候直接写到sd卡

目前可以使用分区名card来表示整张SD卡。

lanlanpy commented 2 years ago

无法从emmc读取env环境参数

理论上只需要将CONFIG_SYS_MMC_ENV_DEV改为0即可。

每次都会改变mac

MAC 问题在尝试修复,具体见 hzyitc/armbian-onecloud#21

烧录工具烧录的时候直接写到sd卡

目前可以使用分区名card来表示整张SD卡。

感谢大佬抽空回复,我找时间修改对应代码编译试试,刚接触uboot很多东西不懂,还有一个问题是重启命令系统服务关闭后,uboot没有重新启动是不是因为mmc指向没有指向到内存卡的原因呢

hzyitc commented 2 years ago

commit 0038d74 已支持。

lanlanpy commented 2 years ago

commit 0038d74 已支持。

收到,有空试试,大佬辛苦了

ihotte commented 1 year ago

有空试试,大佬辛苦了

uboot 不是放在 emmc 里边吗 ? emmc 损坏了 uboot 还能启动?

lanlanpy commented 1 year ago

有空试试,大佬辛苦了

uboot 不是放在 emmc 里边吗 ? emmc 损坏了 uboot 还能启动?

很多arm.处理器都可以从spi flash sd启动uboot

ihotte commented 1 year ago

有空试试,大佬辛苦了

uboot 不是放在 emmc 里边吗 ? emmc 损坏了 uboot 还能启动?

很多arm.处理器都可以从spi flash sd启动uboot

按照顺序依次启动? 这个 https://github.com/hzyitc/u-boot-onecloud/commit/0038d741ed1c77a77570c3a6bf88fe6189c11733 好像只写了用 SDCard 存储 env 没写支持 从SDCard加载整个uboot吧 ?

怎么设置 uboot 加载顺序?

lanlanpy commented 1 year ago

有空试试,大佬辛苦了

uboot 不是放在 emmc 里边吗 ? emmc 损坏了 uboot 还能启动?

很多arm.处理器都可以从spi flash sd启动uboot

按照顺序依次启动? 这个 https://github.com/hzyitc/u-boot-onecloud/commit/0038d741ed1c77a77570c3a6bf88fe6189c11733

好像只写了用 SDCard 存储 env 没写支持 从SDCard加载整个uboot吧 ?

怎么设置 uboot 加载顺序?

自动判断emmc sd保存env位置的,uboot加载优先级是cpu bootrom写死的

hzyitc commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

ihotte commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

在 eMMC 正常的情况下,只需要清空 eMMC 里边的 uboot 的 env 区域,还是需要清空整个 uboot,才会从 SD 卡启动? 还是说只有在 eMMC 无法识别的时候才会从下一个设备引导?

hzyitc commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

在 eMMC 正常的情况下,只需要清空 eMMC 里边的 uboot 的 env 区域,还是需要清空整个 uboot,才会从 SD 卡启动? 还是说只有在 eMMC 无法识别的时候才会从下一个设备引导?

清空整个uboot。

不过你的需求是啥? 从sd卡引导系统不需要这么麻烦,emmc上的uboot也可以引导sd卡的系统的。

ihotte commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

在 eMMC 正常的情况下,只需要清空 eMMC 里边的 uboot 的 env 区域,还是需要清空整个 uboot,才会从 SD 卡启动? 还是说只有在 eMMC 无法识别的时候才会从下一个设备引导?

清空整个uboot。

不过你的需求是啥? 从sd卡引导系统不需要这么麻烦,emmc上的uboot也可以引导sd卡的系统的。

从 SD 卡启动测试修改 uboot 不是方便吗 :smile: ,不少玩客云好像 eMMC 有坏块

ihotte commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

在 eMMC 正常的情况下,只需要清空 eMMC 里边的 uboot 的 env 区域,还是需要清空整个 uboot,才会从 SD 卡启动? 还是说只有在 eMMC 无法识别的时候才会从下一个设备引导?

清空整个uboot。

不过你的需求是啥? 从sd卡引导系统不需要这么麻烦,emmc上的uboot也可以引导sd卡的系统的。

QQ截图20230830172233 大佬问个问题 分区定义咋有三个地方? 都是在啥阶段生效,有啥区别 ?

lanlanpy commented 1 year ago

启动顺序由硬件决定,有几个配置电阻配置,具体看数据手册,里面有详细说明。

原来如此

hzyitc commented 1 year ago

大佬问个问题 分区定义咋有三个地方? 都是在啥阶段生效,有啥区别 ?

第一个是硬盘MBR分区表,第二三个是uboot分区表。

uboot分区表只能在uboot下用,刷机工具只认uboot分区表。

ihotte commented 1 year ago

第一个是硬盘MBR分区表

~~第一个硬盘分区表是在啥时候生效? 我看这三个分区表好像不太一致 所有有点迷糊了 第一个只有两个分区,第二个三四个分区~~

好像有点懂了,感谢大佬解惑 :smile:

lanlanpy commented 1 year ago

第一个是硬盘MBR分区表

~第一个硬盘分区表是在啥时候生效? 我看这三个分区表好像不太一致 所有有点迷糊了 第一个只有两个分区,第二个三四个分区~

好像有点懂了,感谢大佬解惑 😄 铁子,研究好了怎么改分区表,写下思路

ihotte commented 1 year ago

第一个是硬盘MBR分区表

~第一个硬盘分区表是在啥时候生效? 我看这三个分区表好像不太一致 所有有点迷糊了 第一个只有两个分区,第二个三四个分区~ 好像有点懂了,感谢大佬解惑 😄 铁子,研究好了怎么改分区表,写下思路

我也不确定对不对,等先实战验证下再说吧

ihotte commented 8 months ago

第一个是硬盘MBR分区表,第二三个是uboot分区表。

还有个问题没搞清楚 uboot 里边定义 MBR 分区表是用来干啥的? MBR 表分区不是应该进入 Linux 系统后自动识别吗 ? MBR 表分区如果和 uboot 分区没对齐会导致啥错误吗?

好像见过部分机器 uboot 会自动扫描生成 mbr 分区表? 这里因为没有自动生成,所以才需要手动定义吗?

ihotte commented 8 months ago

第一个是硬盘MBR分区表,第二三个是uboot分区表。

还有个问题没搞清楚 uboot 里边定义 MBR 分区表是用来干啥的? MBR 表分区不是应该进入 Linux 系统后自动识别吗 ? MBR 表分区如果和 uboot 分区没对齐会导致啥错误吗?

好像见过部分机器 uboot 会自动扫描生成 mbr 分区表? 这里因为没有自动生成,所以才需要手动定义吗?

看了生成的 uboot 文件,是用来填充 mbr 中的分区表的,应该是非必须的,应该是为了避免直接 dd 写入 uboot 到磁盘破坏原始分区表。

hzyitc commented 8 months ago

第一个是硬盘MBR分区表,第二三个是uboot分区表。

还有个问题没搞清楚 uboot 里边定义 MBR 分区表是用来干啥的? MBR 表分区不是应该进入 Linux 系统后自动识别吗 ? MBR 表分区如果和 uboot 分区没对齐会导致啥错误吗? 好像见过部分机器 uboot 会自动扫描生成 mbr 分区表? 这里因为没有自动生成,所以才需要手动定义吗?

看了生成的 uboot 文件,是用来填充 mbr 中的分区表的,应该是非必须的,应该是为了避免直接 dd 写入 uboot 到磁盘破坏原始分区表。

是的,主要就是为了填充分区表。

usb burning烧录是根据uboot分区表的,所以如果两张表不对齐,用usb burning烧完后的分区也是错的了。