您尚未登录。

楼主 # 2022-05-09 15:09:40

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

xfel烧录到t113的0x20000sram失败是怎么回事

xfel烧录到t113的0x20000sram失败是怎么回事

> xfel sid
83007000ac144814010008215cca11cb

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
> xfel read 0x20000 30000 sram.bin
100% [================================================] 29.297 KB, 774.006 KB/s

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
> xfel read 0x20000 30000 sram.bin
100% [================================================] 29.297 KB, 747.179 KB/s

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
> xfel version
AWUSBFEX ID=0x00185900(R528/T113) dflag=0x44 dlength=0x08 scratchpad=0x00045000

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
> xfel sid
83007000ac144814010008215cca11cb

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
> xfel write 0x20000 boot0_sdcard.bin

usb bulk send error

MuMu@DESKTOP-EOMBNKD C:\Work\myWork\T113\uboot\tools
>

并且写入失败之后就找不到fel设备了 ,需要复位键

离线

#1 2022-05-09 16:17:27

哇酷小二
whycan晕哥
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,026
积分: 1897
个人网站

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@smiletiger

0x20000  确定还在 SRAM 区域吗?






淘宝: whycan.taobao.com 可提供技术支持 V3sR11 / F1C200s / D1 / D1s / XR32 / XR829 / XR806

离线

楼主 #2 2022-05-09 16:46:18

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

哇酷小二 说:

@smiletiger

0x20000  确定还在 SRAM 区域吗?

查看memory分布表在范围内

离线

#3 2022-05-09 18:31:00

aozima
会员
所在地: 深圳
注册时间: 2019-05-25
已发帖子: 361
积分: 233.5
个人网站

Re: xfel烧录到t113的0x20000sram失败是怎么回事

直接写DDR运行不就行啦!

离线

#4 2022-05-09 19:54:08

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

T113 我没试过不清除具体的情况,但可以分享一下其他的芯片的经验。全志在 FEL 模式下的时候 SRAM 里面是有布局的,一般中间会夹杂着两个 Stack,分别是 IRQ Stack 和普通 Stack,每个芯片具体的位置会不一样。所以如果直接写程序到 SRAM 里,一般情况下是会破坏了栈,从而造成死机。
sunxi-tools 里用了奇技淫巧,分段写入程序,绕开这 stack 位置,然后写入一段特殊的 thunk 程序,再执行这个 thunk 程序,他会备份 stack,然后把之前分段的程序复制回去,然后再跳转执行,以此来来利用整个 SRAM 空间,完事了还能把 Stack 恢复回去,让 FEL 继续正常工作,使接下来能写 u-boot 到 DDR。sunxi-fel spl 干的就是这个事。
参考1: 实现原理
参考2: 代码1 代码2

最近编辑记录 benlypan (2022-05-09 19:55:34)

离线

楼主 #5 2022-05-09 22:15:29

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@benlypan
我试过f133可以啊 而且我也测试过用一个很小的文件比如2kd文件写入都不行 试过xfel用write不行 试过sunxi-fel。write指令也不行

另外我问一下 我现在主要是想调试uboot 能不能把uboot直接用xfel加载到ddr2里面直接运行

离线

楼主 #6 2022-05-09 22:17:53

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@benlypan
还有突然想起来 那个下载到nor里面上电的时候不是bootrom也是先自己复制到sram内部执行的吗。这个时候并没有分段加载处理的过程啊 这个又怎么回事

离线

#7 2022-05-09 23:00:40

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

你应该用 sunxi-fel spl,不是 sunxi-fel write。
BROM 分两部分的,直接从 FLASH 上加载不进 FEL,所以没有这个问题。

离线

楼主 #8 2022-05-09 23:56:58

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

benlypan 说:

你应该用 sunxi-fel spl,不是 sunxi-fel write。
BROM 分两部分的,直接从 FLASH 上加载不进 FEL,所以没有这个问题。

我看了你发的资料,大致了解了原因了,只能用2000开始的15k空间

uboot可以直接用xfel加载到ddr跑吗

离线

#9 2022-05-10 08:33:05

Cadence
会员
注册时间: 2022-04-01
已发帖子: 56
积分: 65

Re: xfel烧录到t113的0x20000sram失败是怎么回事

先把 boot0 编译到0x30000开始执行
用 xfel 下载调试,完了以后再改回0x20000
编译完 写到 sd卡 或 spi-nand
对于T113_s3 0x30000开始的64K是可以用的

boot0不能在DDR运行
u-boot可以在DDR运行
memmap.jpg

最近编辑记录 Cadence (2022-05-10 08:58:48)

离线

#10 2022-05-10 08:54:15

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

从哪里开始以及多少空间空闲的,每个型号的芯片都会不一样的,如果 sunxi-tools 尚未支持,要自己去探测和逆向。

根据XFEL的文档,对于 T113,他自带了 DDR 初始化支持,所以可以使用 xfel 先初始化 ddr,然后再写 u-boot 到 ddr 里执行

离线

楼主 #11 2022-05-10 10:21:35

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

Cadence 说:

先把 boot0 编译到0x30000开始执行
用 xfel 下载调试,完了以后再改回0x20000
编译完 写到 sd卡 或 spi-nand
对于T113_s3 0x30000开始的64K是可以用的

boot0不能在DDR运行
u-boot可以在DDR运行
https://whycan.com/files/members/8902/memmap.jpg

谢谢解释,uboot如果要在ddr里面运行,编译uboot的时候要设置什么地方吗?我编译出来的的uboot文件直接用xfel加载到ddr,运行不起来,,串口没有任何输出,但是把他烧录到sd卡却可以跑起来,但是每次改动都要插拔sd卡,太麻烦了,所以如果可以用xfel加载到ddr那真的是非常的方便了

离线

楼主 #12 2022-05-10 10:22:22

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@benlypan

谢谢

uboot要能在0x40000000的ddr跑起来,需要编译的时候修改设定什么吗?

离线

#13 2022-05-10 11:08:41

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

1. 烧哪个文件? u-boot 编译出来一堆东西,其中 u-boot-dtb.bin 才是二进制代码文件,要烧这个
2. 烧到哪里? u-boot 里面符号地址都是固定的,起始地址是 CONFIG_SYS_TEXT_BASE 指定的,所以要烧到这个地址上,然后跳转执行这个地址

离线

楼主 #14 2022-05-10 12:40:23

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

benlypan 说:

1. 烧哪个文件? u-boot 编译出来一堆东西,其中 u-boot-dtb.bin 才是二进制代码文件,要烧这个
2. 烧到哪里? u-boot 里面符号地址都是固定的,起始地址是 CONFIG_SYS_TEXT_BASE 指定的,所以要烧到这个地址上,然后跳转执行这个地址

兄弟,你的回答解答了我好久的疑问,我终于开始明白了,

在问一下兄弟,哪个CONFIG_SYS_TEXT_BASE 是在哪里配置的,我看到uboot的lds文件里面起始地址是0

离线

楼主 #15 2022-05-10 12:49:57

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@smiletiger
uboot编译之后,有好几个bin文件,这些bin文件有啥区别
u-boot-nodtb.bin
u-boot-dtb.bin
u-boot.bin
u-boot-sunxi-with-spl.bin

离线

#16 2022-05-10 13:57:05

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

CONFIG_SYS_TEXT_BASE 就在 .config 里配置的,全志的会有默认值。其他没有默认值的芯片一般对应的 defconfig 里也会指定上,如果没有默认值或要自定义的,那就自己在 make menuconfig 里配置上就是了。

这几个文件,一般情况下:
1. u-boot 文件是首先编译链接出来的 elf 格式的文件
2. 在1的基础上进行 objcopy 变成纯二进制代码文件,产生 u-boot-nodtb.bin
3. 在2的基础上在屁股那加上 dtb,就变成了 u-boot-dtb.bin,这个文件就是可以跑起来的 u-boot 程序了。u-boot.bin 跟 u-boot-dtb.bin 是一样的
4. 在3的基础上加上一个u-boot 的头,就变成了 u-boot-dtb.img,头里包含了校验码,入口地址(就是CONFIG_SYS_TEXT_BASE)等,这个文件是给 SPL 加载用的,正如我上面所说的,u-boot 要放到指定的内存地址上才能跑,SPL 加载了 U-BOOT 的镜像后,就是从这个头里知道要放哪里的
5. 在4的基础上,在头部那加上带了全志启动头的spl(在 spl 目录下,又是一堆生成文件),就变成了u-boot-sunxi-with-spl.bin,这是直接给全志的芯片加载用的。

启动的时候,BROM 识别到启动头,加载 SPL 执行,SPL 再去加载带了 u-boot 头的 u-boot,放到头里指示的位置上,再跳转到 u-boot 执行。就这么跑起来了。

以上是一般情况下的流程,不一般的比如带不带 dtb,带不带 spl,是用 legacy image 还是 fitImage,会有些差异。

离线

#17 2022-05-10 14:14:58

benlypan
会员
注册时间: 2021-07-08
已发帖子: 29
积分: 133.5

Re: xfel烧录到t113的0x20000sram失败是怎么回事

用好 file 命令和 binwalk 命令,利器。

离线

楼主 #18 2022-05-10 15:16:26

smiletiger
会员
注册时间: 2021-07-28
已发帖子: 105
积分: 76

Re: xfel烧录到t113的0x20000sram失败是怎么回事

@benlypan
我用bycondcompare看出区别来了,兄弟你懂的真多,
uboot已经跑起来了,现在就是要研究各种配置文件了,感觉uboot结构非常混乱,各种config在各种文件里面满天飞,我是初学者完全搞不懂该去哪里找这个文件

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn