如何实现在uboot里面读写FAT分区的一个TXT

如何实现在uboot里面读写FAT分区的一个TXT,第1张

Uboot可以读写SD卡,信袭但是SD读写不是标准Uboot自带功能,需要自己滑喊兄移植。不同的SD卡移植方法不一样。楼主是什么SD多渗扒少?1.0还是2.0,S3C6410不支持3.0的SD。

说下我的建议:

首先你的电脑没有系统,也没有光驱,只有一个空硬盘和可以存入任意文件的移动硬盘对吗?

如果是这样的,你首先要解决的是系统引导的问题,只要能引导进入DOS就可以,能够进入DOS,上面的方法

《 引用开始》:

“下载个GHOST_XP安装盘 http://down.jujumao.com/downinfo/4034.html

下载完 解压好以后会有个 "硬盘安装器"

你只要用这个软件,点击安装,就可以象光驱安装一样.但是下载的东西要在你电脑的硬盘里,才能安装.

如果要移动硬盘的话 先复制到做清D盘 才纯键前能安装!

《引用完毕》

但是你没有光驱,只能用可移动设备引导不是吗?

所以你只能用移动硬盘引导

1.用工具Uboot(搜一下)将可移动硬盘制作为可引导启动盘

这时会在可移动硬盘的特定位置写下文件 IO.sys等几个系统文件

2.拷贝常用外部命令工具到移动硬盘,例如 NTFSDOS(访问NTFS分区),PQMagic

3.拷贝ghost的DOS工具和需要的 GHO 系统备份镜像文件(可以到番茄花园光盘上拷贝)

4.启动电脑,设置为USB 启动,进入DOS,先将硬盘分区优化好,将GHO文件

恢复到C盘即可

最后建议一下,如果是要追求适用,快捷,做好要一个光驱(可以借别人一个),如果想研究深入,弄清楚电脑启动过程,研究以下也好

楼上提到的方法没有试过,不知道如何,但是光盘文件结构cdfs和硬盘fat fat32 ntfs 不同,个人认为很玄。

《以下引用》

要你的主板及BIOS支持才行,老主板比如三代的,是绝对不行的。

1.先格式化你的移动硬盘,NFTS FAT32任选一种格式,新手建议还是选择NFTS格式,再把ISO文亮森件完全复制到应动硬盘中。

2.在BIOS中设置 Advanced Features

First Boot-设置为:USB2.0

3.插上移动硬盘,从新开机就能进入安装界面了。

开发板的最大内存寻址范围。这样就OK了。重新编译烧写启动后,输出如下:

U-Boot 2016.11-gbf241c8 (Mar 04 2017 - 06:46:50 +0800) for TINY4412

CPU: Exynos4412 @ 1.4 GHz

Model: Insignal Tiny4412 evaluation board based on Exynos4412

Board: Insignal Tiny4412 evaluation board based on Exynos4412

DRAM: 1 GiB

WARNING: Caches not enabled

MMC: DWMMC56: Can't get the dev index

exynos_dwmci_process_node: failed to decode dev 0

SAMSUNG SDHCI: 0

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208000)!

*** Warning - read failed, using default environment

Hit any key to stop autoboot: 0

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208000)!

SD/MMC found on device 0

** ext4fs_devread read error - block

Failed to mount ext2 filesystem...

** Unrecognized filesystem type **

** ext4fs_devread read error - block

Failed to mount ext2 filesystem...

** Unrecognized filesystem type **

** ext4fs_devread read error - block

Failed to mount ext2 filesystem...

** Unrecognized filesystem type **

Wrong Image Format for bootm command

ERROR: can't get kernel image!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

上面有两处需要修复的:

第一姿薯枣点是:

DWMMC56: Can’t get the dev index

exynos_dwmci_process_node: failed to decode dev 0

第二点是:

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208002)!

sdhci_transfer_data: Error detected in status(0x208000)!

首先解决第一点,看输出是因为没有给EMMC添加相应的节点,导致在解析的时候手亮出问题了,查看Tiny4412的设备树文件,会发现确实没有给EMMC添加设备描述迹拆,我们添加下面的信息就可以解决找不到节点的问题了。

diff --git a/arch/arm/dts/exynos4210-tiny4412.dts b/arch/arm/dts/exynos4210-tiny4412.dts

index a4fe14f..77934e5 100644

--- a/arch/arm/dts/exynos4210-tiny4412.dts

+++ b/arch/arm/dts/exynos4210-tiny4412.dts

@@ -49,4 +49,14 @@

sdhci@12540000 {

status = "disabled"

}

+

+ dwmmc@12550000 {

+ samsung,bus-width = <8>

+ samsung,timing = <2 1 0>

+ samsung,removable = <0>

+ fifoth_val = <0x203f0040>

+ bus_hz = <400000000>

+ div = <0x3>

+ index = <4>

+ }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

那么第二个问题才是最大的问题,我自己解决了很久,也科学上网去查找过相关的信息,但是都没有解决,所以,是的,我是来求助的,因为我真的是知识有限,没有办法解决啊,不过还是尝试过很多办法的,下面也和大家分享一下吧:

之前看到这样一个帖子:

http://u-boot.10912.n7.nabble.com/Bisected-quot-sdhci-transfer-data-Error-detected-in-status-0x208002-quot-problem-on-ODROID-X-td231188.html

就是显示解决这个问题的,我按照帖子中的说明进行了如下修改:

diff --git a/arch/arm/mach-exynos/clock.c b/arch/arm/mach-exynos/clock.c

index 3d31f9d..a8fc72a 100644

--- a/arch/arm/mach-exynos/clock.c

+++ b/arch/arm/mach-exynos/clock.c

@@ -1688,8 +1688,8 @@ unsigned long get_mmc_clk(int dev_index)

void set_mmc_clk(int dev_index, unsigned int div)

{

/* If want to set correct value, it needs to substract one from div.*/

- if (div >0)

- div -= 1

+// if (div >0)

+// div -= 1

if (cpu_is_exynos5()) {

if (proid_is_exynos5420() || proid_is_exynos5422())

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

然后上面显示的error都没有显示了,而且执行saveenv,显示done,执行mmc read/write显示的都是done,但是验证的时候发现都没有效果,我是通过执行mmc read 0x43E00000 0x800 0x100,意思是将mmc设备中第2048个block开始,读取256个block到内存0x43E00000,即u-boot执行的首地址处,然后在执行go 0x43E00000,如果mmc设备正常的话,通过上面的 *** 作,0x43E00000位置的内容应该要被覆盖,那么go 0x43E00000 *** 作后,开发板应该是宕机才对的,但是开发板是重新执行了uboot的初始化过程,因此看起来像是mmc设备还是没有初始化成功啊,起码mmc write/read都不能正常执行。

所以如果有哪位朋友也遇到过这种情况,还请和大家分享一下啊,谢谢!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8234507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存