我看到F1C100S的开发板上烧写程序时需要按下 RESET +FLASH-CS 键才能烧写,请问有没有方法可以不需要使用这两个按键就可以烧写?听说第一次下载可以上电就下载,存储器里有程序的时候就要短接FLASH存储器了。
离线
这个是因为芯片上电后执行的是BROM的程序(已固化在全志芯片内部),
BROM接管 CPU之后, 会轮询依次 SDC0 => SPI0 NOR => SPI0 NAND 是否有合法的引导程序(boot0)
如果都没有,就进入 USB(FEL), 即USB烧录程序
这里全志其他芯片,比如S3有BOOT SYSTEM启动顺序的流程图可以看: https://whycan.cn/t_3019.html#p25005
但是F1C系列手册没有找到这个图。
所以现在你的问题答案出来, 按下 FLASH-CS 按键的目的是让BROM找不到FLASH, 进而发现不了合法的引导程序(boot0),
让芯片嵌入了USB烧录模式(FEL)
离线
裸机跑代码是可以利用Keil直接下载.bin文件吗
离线
(1).使用 micro-usb 数据线连接开发板的 USB-D 接口到电脑 USB 接口,同时按下
开发板【RESET】 +【FLASH-CS】 , 松开【RESET】 , 等电脑识别到设备(设备
插入提示音或者设备管理器有设备接入)后松开【FLASH-CS】 。
(2).点击 keil 界面下的下载按钮,弹出下载窗口,下载窗口显示下载进度,下载完 成
自动关闭窗口,
离线
也就是说要更新程序必须用到【RESET】 +【FLASH-CS】了?有没有其它方法使升级程序时不必用到这两个按键?比如通过修改boot之类的?
最近编辑记录 ly123 (2020-05-20 10:27:17)
离线
制作特殊TF卡片,岂不是更麻烦了,本来加个按键就行了,现在要加SD卡,还占用本来就不够用的引脚。
离线
制作特殊TF卡片,岂不是更麻烦了,本来加个按键就行了,现在要加SD卡,还占用本来就不够用的引脚。
那你想肿么办?既不想这样,又不想那样,这种通用片片就是这样,除非自己做一颗芯片了。
离线
也就是说要更新程序必须用到【RESET】 +【FLASH-CS】了?有没有其它方法使升级程序时不必用到这两个按键?比如通过修改boot之类的?
自己在程序里写代码更新Flash就可以。比如接收从串口或USB来的指令,收到特定的指令则把后面的内容写入Flash。
这种方法不是用sunxi-fel等现成的工具,相当于自定义了一个刷机的通讯协议。
离线
自己在程序里写代码更新Flash就可以。比如接收从串口或USB来的指令,收到特定的指令则把后面的内容写入Flash。
这种方法不是用sunxi-fel等现成的工具,相当于自定义了一个刷机的通讯协议。
这个刷机方式验证通过了么?
离线
这个刷机方式验证通过了么?
RTT就是这么弄的
离线
(1).使用 micro-usb 数据线连接开发板的 USB-D 接口到电脑 USB 接口,同时按下
开发板【RESET】 +【FLASH-CS】 , 松开【RESET】 , 等电脑识别到设备(设备
插入提示音或者设备管理器有设备接入)后松开【FLASH-CS】 。
(2).点击 keil 界面下的下载按钮,弹出下载窗口,下载窗口显示下载进度,下载完 成
自动关闭窗口,
这个我的设备管理器中显示是未知设备,而且下载代码报错是怎么回事呀。
离线
@哇酷小二
在社区混了很久了,不能说帖子都看了,也看了八九不离十了,可还是没有搞明白这个芯片的下载究竟是怎样的。个人水平有限,有以下几个问题搞不明白,请不吝赐教!
1.按照你的描述和我的理解,芯片如果检测不到启动代码就会进入到usb-fel模式下,这时候可以通过sunxi-fel工具通过串口写入启动代码,然后手动输入跳转指令到起始地址,开始运行。不知道我的理解是不是正确?
2.一直没有搞明白F1C100S的地址分布区域和各自的作用。0x00000000~0x00007FFF 是BROM,可0xFFFF0000~0xFFFF7FFF 也是BROM。这个怎么说呢?根据sunxi-fel的烧写指令都是从0地址开始烧写boot的,难不成0x0000000~0x00007FFF是外置FLASH或SD卡的数据暂存地址?先将外置的启动代码复制到这个区域后,在跳转到这里去运行?那二级引导SPL在哪呢?既然可以直接BOOT启动,为什么还要SPL呢?
3.在usb-fel模式下,使用sunxi-fel(指令:sunxi-fel.exe -p spiflash-write 0 Blinky.bin)工具烧录是不是直接烧录到了SPI flash中了?为什么复位后仍然识别到usb-fel模式,不能从flash中启动呢?使用的是 F1C100s_with_Keil_RTX4_emWin5-AllwinnerSoC 这个项目的bin文件,或者说这个工程编译出来的代码文件还需要二次加工?
离线
此处是您准备引用的发言。@哇酷小二
在社区混了很久了,不能说帖子都看了,也看了八九不离十了,可还是没有搞明白这个芯片的下载究竟是怎样的。个人水平有限,有以下几个问题搞不明白,请不吝赐教!
1.按照你的描述和我的理解,芯片如果检测不到启动代码就会进入到usb-fel模式下,这时候可以通过sunxi-fel工具通过串口写入启动代码,然后手动输入跳转指令到起始地址,开始运行。不知道我的理解是不是正确?
2.一直没有搞明白F1C100S的地址分布区域和各自的作用。0x00000000~0x00007FFF 是BROM,可0xFFFF0000~0xFFFF7FFF 也是BROM。这个怎么说呢?根据sunxi-fel的烧写指令都是从0地址开始烧写boot的,难不成0x0000000~0x00007FFF是外置FLASH或SD卡的数据暂存地址?先将外置的启动代码复制到这个区域后,在跳转到这里去运行?那二级引导SPL在哪呢?既然可以直接BOOT启动,为什么还要SPL呢?
3.在usb-fel模式下,使用sunxi-fel(指令:sunxi-fel.exe -p spiflash-write 0 Blinky.bin)工具烧录是不是直接烧录到了SPI flash中了?为什么复位后仍然识别到usb-fel模式,不能从flash中启动呢?使用的是 F1C100s_with_Keil_RTX4_emWin5-AllwinnerSoC 这个项目的bin文件,或者说这个工程编译出来的代码文件还需要二次加工?
我重新看了一下原文,这里的第2个疑问中,“0xFFFF0000~0xFFFF7FFF 也是BROM”作者标注的是V3S的地址分布。看的资料多了,漏了太多的细节,不好意思了,特此更正!
离线