1 不知道fc100s的闪存地址空间是不是就是ROM的地址空间。我是猜想
2 是不是fc100s的spi闪存内必须有boot0,fel工具才能正常工作
请求大神指点。
最近编辑记录 sunwei (2018-04-17 15:10:22)
离线
我说的是芯片内部的BROM?
离线
BROM程序是不是直接跑的,没有事先把自己加载到内存,再运行。
离线
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系统更要命)
离线
是的
离线
我下载后再次确认。
显示无效命令选项 -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这个功能确实没必要存在
离线
从目前多次实验来看。 BROM代码可烧录的可能性还是有。或是所以代码都是在spi闪存。
离线
短路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 这个不知道可不可以用
离线
想了一下。只要按规定的头信息作个程序,只需要ddr 初始化。 时钟初始化。闪存代码 和 串口代码。
这样就可以直接通过串口下程序到spi闪存了。mmc驱动都不用作
离线
还有个想法。如果cpu 时钟 内存等基本环境设置好了。再设置好jtag,是否就直接用keil通过jtag下载代码到内存运行了呢。
keil是arm9 芯片。这也是为什么用arm9的原因。
离线
我是指当作实验时,spi闪存代码烧坏了的时候。使用sd卡来救急。免得焊芯片。
我估计不是我没焊好。而是只要有SPI闪存芯片,而烧进去的代码头信息正常,但后面跑的程序不正常,就会进不了FEL模式。
因为后面的程序没正常跑。有可能烧不了程序。
离线
又想了下最简单的办法是直接通过自制的程序擦除闪存就行了。这个代码实现起来就简单多了。
离线
我愿意提供keil的代码谁愿意做试验。
离线
非常感谢你的测试。省了我的事了。
离线
晕哥
你测试过了a3s ,估计f1c100s不行,也希望你能测试下。
在a3s下FEL的所有功能都有。
但在f1c100s里很多功能都没有。比如所有有关写内存的都没有作用。
并且读写ddr区域也不成功。所以不确定有没有初始化DDR
但是jtag毕竟是直接通过硬件来读写所有区域。
希望你也能测试下。
离线
感谢大家的技术支持。
离线
上传了一个代码。还没做好。希望对你们有帮助。 xboot_sp.rar
离线
这个是从xboot项目里面扣的代码吗?
是的
离线
kgp0213
明白了谢谢。
还有个问题要和你真挚一下,别见怪。
那就是那个FEL模式不支持内存的写。包括sram区域。所以那个FEL估计是精简的版本.
离线
也可能是个特制的BROM
离线
100s根本就不会来读取spi了,重新上电也是100s不去读,还是BROM程序本身就是这样做的。
离线
谢谢你们。收工了,大家也早点睡。
离线