1 不知道fc100s的闪存地址空间是不是就是ROM的地址空间。我是猜想
2 是不是fc100s的spi闪存内必须有boot0,fel工具才能正常工作
请求大神指点。
最近编辑记录 sunwei (2018-04-17 15:10:22)
离线
1. 你说的是烧写ROM,还是芯片内部的BROM?
2. 不对,有boot0芯片才会启动到boot1. 你说的fel是芯片的固话ROM,也就是BROM.
离线
我说的是芯片内部的BROM?
离线
BROM程序是不是直接跑的,没有事先把自己加载到内存,再运行。
离线
在ROM里面都是这种方式存放的:
spl + u-boot
spl + xboot上电之后, BROM(固化在全志芯片内部) 依次检测 eMMC(SD), spi nand, spi nor 是否存在合法的spl,
1). 如果没有合法的spl, 那么跳转到BROM的usb烧录位置,芯片进入usb烧录流程
2). 如果发现有合法的spl 则把spl 搬到芯片内部 SRAM 里面运行(SRAM无需任何初始化), 并把PC指针指向SRAM,
这样你的spl接管了V3s芯片,接着你当然可以为所欲为了。spl 初始化系统资源,包括调试串口, DDR什么的,初始化DDR之后你就有了更广大的空间,
可以把u-boot(非spl部分)或者xboot(非spl部分)搬到DDR指定地址, 再次把PC指针指过去,
这样u-boot或者xboot正式接管了f1c100s.
离线
BROM程序的功能,是不是把spi闪存的boot0代码放入内存,再运行。
而我的spi闪存的boot代码估计丢了。该怎么办。
通过 fel工具
spiflash子命令, 下载也没办法解决。
因为显示usb通讯超时。
离线
刚把spi_lck下拉,还是一样。
看样子。BROM是直接在ROM空间跑的,并且BROM程序只提供了简单的Fel工具的命令支持。
下面是显示的信息 1就是fel ,我改成了1
G:\rtthread\rt-thread-3.0.3\F!C100S资源包\建立新的SOC\新建文件夹>1 sid
Warning: no 'soc_sram_info' data for your SoC (id=1663)
SID registers for your SoC (0x1663) are unknown or inaccessible.'soc_sram_info'
Warning: no 'soc_sram_info' data for your SoC (id=1663)
这行代码估计就是没有读到boot0(spl)的头信息。
离线
不过这时候用fel 读BROM的程序代码。前面有0x0-0x3ff有代码了。并且有头信息
离线
不怕你笑话,家里的电脑没有liunx系统。
所以也用你们网站提供的fel试过一样的结果。
你给的这个分支我也下载了,但因为win上很多软件没装,编译不了。(也不敢装,安全第一,liunx系统更要命)
离线
是的
离线
sid命令没有适配,你试一试ver
最近编辑记录 daydayup (2018-04-17 16:34:34)
离线
我下载后再次确认。
显示无效命令选项 -p
用不带-p选项spiflash命令 后没有提示错误。
并且。FEL模式也进步了了。说明有东西烧到里面。
离线
-p 选项是显示进度的吗
G:\rtthread\rt-thread-3.0.3\F!C100S资源包\建立新的SOC\新建文件夹\sunxi-tools-win32support_f1c100s>sunxi-fel spiflash-write -p 0 xboot.bin
Invalid option -p
G:\rtthread\rt-thread-3.0.3\F!C100S资源包\建立新的SOC\新建文件夹\sunxi-tools-win32support_f1c100s>sunxi-fel spiflash-write 0 xboot.bin
G:\rtthread\rt-thread-3.0.3\F!C100S资源包\建立新的SOC\新建文件夹\sunxi-tools-win32support_f1c100s>
离线
最后的结果。怎么都进不了FEL模式了。
说明BROM是可以烧录得
离线
又一坑。最后串口什么都不显示。想再烧也烧不了了
离线
这就有点悲剧了
离线
按上面网站提供的方法烧xboot,板子即使把spi闪存1-4脚短接也进不了FEL模式
1 种情况
芯片内部没有rom .其实芯片启动就是执行的spi闪存的地址空间的代码
2 种情况
芯片内部的rom,是可以烧录的
离线
参数-p 估计是显示进度。对应了progress.c文件里的代码
参数0 估计是烧录到spl区域。也就是boot0.
我猜的大神,再怎么整。
进不了FEL,再怎么烧程序.用串口吗。可串口什么输出都没有。
离线
有一个简单的理论。
如果芯片内部的ROM是不可更改的。
那么将spi闪存短路。芯片就一定会进入FEL
有以下情况不能进入
1 ROM程序就只支持串口或其它设备烧录spi或其它存储设备。
自身不带标准的FEL模式的程序
2 ROM程序,会检测某个IO来进入FEL模式。
3 ROM程序,就是个简单的寻找有正确引导标志的存储设备。
然后加载代码,去执行。FEL代码也可以放到外部存储设备上
不过如果有 1功能,2这个功能确实没必要存在
离线
短路spi clk也不能进fel吗?
要不要烧个xboot测试一下屏是不是正常,
方便判断板子能不能正常工作。
离线
从目前多次实验来看。 BROM代码可烧录的可能性还是有。或是所以代码都是在spi闪存。
离线
短路spi clk也不能进fel吗?
是的也进不了
离线
从目前多次实验来看。 BROM代码可烧录的可能性还是有。或是所以代码都是在spi闪存。
BROM不能修改,估计是掩模制造工艺,V3s使用jlink可以读出BROM,可以通过反编译软件分析他的行为。
离线
短路spi clk也不能进fel吗?
是的也进不了
只有一片吗?
要不换一片试一试。
离线
只有一片,
离线
这芯片也可以读出来,之前进入到FEL时,读0x00---0x7fff里面有代码
离线
给你们找了不少漏洞
离线
进入到FEL时.
读0x00---0x7fff里面有代码
其它所有地址空间读出来的数据都是0,包括
1 SRAM 0x0010000---0x0019ffff
2 DDR 0x80000000---0x81000000
3设备空间地址0x01cxxxxx
离线
就是用fel 工具读出来的。
没有办法了。我刚就把闪存下了下了。又可以进入到FEL了
看样子必须要在闪存里烧个boo0(spl)提供一个正确的头信息。
离线
G:\xboot\xboot-master\output\tool>fel read 0x0 0x7fff sss.bin
Warning: no 'soc_sram_info' data for your SoC (id=1663)
这样就可以读出来 0x0 参数要读的地址, 0x7fff 长度 sss.bin 要保存的文件名字
离线
想办法做sd卡的引导。这样就不要焊来焊去了。
我以用xboot去掉了其它,只留有ddr 初始化。 时钟初始化。闪存代码和串口代码。再添加一个mmc的代码。
估计就可以自己做引导0了
离线
sunxi-tool 的 fel-sdboot.sunxi 这个不知道可不可以用
离线
看名字应该有用
离线
找个tf卡,测试吧,短接spi是技术活,进不去fel是姿势不对
离线
我用短接CS到地的方法很管用,就是不方便。不知底板是否能方便点
离线
想了一下。只要按规定的头信息作个程序,只需要ddr 初始化。 时钟初始化。闪存代码 和 串口代码。
这样就可以直接通过串口下程序到spi闪存了。mmc驱动都不用作
离线
还有个想法。如果cpu 时钟 内存等基本环境设置好了。再设置好jtag,是否就直接用keil通过jtag下载代码到内存运行了呢。
keil是arm9 芯片。这也是为什么用arm9的原因。
离线
我是指当作实验时,spi闪存代码烧坏了的时候。使用sd卡来救急。免得焊芯片。
我估计不是我没焊好。而是只要有SPI闪存芯片,而烧进去的代码头信息正常,但后面跑的程序不正常,就会进不了FEL模式。
因为后面的程序没正常跑。有可能烧不了程序。
离线
还有个想法。如果cpu 时钟 内存等基本环境设置好了。再设置好jtag,是否就直接用keil通过jtag下载代码到内存运行了呢。
keil是arm9 芯片。这也是为什么用arm9的原因。
可以可以,我的V3s就是这么干的, 全志的芯片直接用JLink就可以连上去, 不需要初始化任何东东。
初始化DDR可以用JLink Commander完成.
V3s可以直接用 IAR调试,本站有文件下载,
我想f1c100s一样可以的。
离线
离线
又想了下最简单的办法是直接通过自制的程序擦除闪存就行了。这个代码实现起来就简单多了。
离线
我愿意提供keil的代码谁愿意做试验。
离线
好消息! 搞定tf卡直接进入fel, 这样不需要短路 spi也可以很容易进入 usb烧录了。
参考链接: http://linux-sunxi.org/FEL
/dev/sdX 是tf卡的设备名,写之前请再三确认!!!
wget https://github.com/linux-sunxi/sunxi-tools/raw/master/bin/fel-sdboot.sunxi
sudo dd if=fel-sdboot.sunxi of=/dev/sdX bs=1024 seek=8
在nano板上有点问题, 插了tf卡, 不太好插usb线了。
离线
非常感谢你的测试。省了我的事了。
离线
晕哥
你测试过了a3s ,估计f1c100s不行,也希望你能测试下。
在a3s下FEL的所有功能都有。
但在f1c100s里很多功能都没有。比如所有有关写内存的都没有作用。
并且读写ddr区域也不成功。所以不确定有没有初始化DDR
但是jtag毕竟是直接通过硬件来读写所有区域。
希望你也能测试下。
离线
感谢大家的技术支持。
离线
上传了一个代码。还没做好。希望对你们有帮助。 xboot_sp.rar
离线
离线
翻了上面的对话,感觉sunwei和晕哥一直在个说各话。
以我烧录F100s超过100次(吹牛),手焊100s套件3套,usb调试2礼拜的经验来看,短接板子没有问题的情况下短接spi flash 是一定可以强制进入fel模式的。 嫌短接不方便,那就飞两根线,连接一个按钮,使用起来可以轻松又愉快!
离线
我用短接CS到地的方法很管用,就是不方便。不知底板是否能方便点
飞线+按键,轻松又愉快
离线
进入到FEL时.
读0x00---0x7fff里面有代码其它所有地址空间读出来的数据都是0,包括
1 SRAM 0x0010000---0x0019ffff
2 DDR 0x80000000---0x81000000
3设备空间地址0x01cxxxxx
1.sram肯定读出来都为0,因为这是给spl用的,spl没进来,sram当然为零了
2,ddr没初始化,当然这里读出来的都是零
3,没有spl,就没有设备初始化,设备地址读出来也必然为零啊
离线
这个是从xboot项目里面扣的代码吗?
是的
离线
kgp0213
明白了谢谢。
还有个问题要和你真挚一下,别见怪。
那就是那个FEL模式不支持内存的写。包括sram区域。所以那个FEL估计是精简的版本.
离线
也可能是个特制的BROM
离线
也可能是个特制的BROM
这里所说的brom应该和fel是指的同一个东西的不同的面。
我的理解是,cpu上电后就从brom里面面的程序开始执行,执行的内容应该是 读 spiflash sd usb 等,若 都读不到启动信息,然后就进入fel模式,所谓fel就是等待usb接口传数据进来,然后再把数据放到特定的地方,例如spi flash里面~
如果上面的sd卡里面有spl之类的文件,短接spiflash的1 4 或者1 2脚应该就不可能起作用了,因为,100s根本就不会来读取spi了。
最近编辑记录 kgp0213 (2018-04-18 00:05:36)
离线
100s根本就不会来读取spi了,重新上电也是100s不去读,还是BROM程序本身就是这样做的。
离线
谢谢你们。收工了,大家也早点睡。
离线
烧录的猛贴!
离线
学习
离线