Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
carpe 请问下在那里可以找到FlashDriver工程?
HEX 参考下论坛这个帖子,按照这个帖子的操作下 https://forum.ytmicro.com/topic/164/ytm32mc03-有没有ram-flashdriver的案例-做boot用的/14?_=1754292813937
请问,以上工程,切换到SDK1.40版本后,独立的flashdriver工程下载后无法使用是什么原因呢。 driver多了instance参数以及增加了在调用擦写前的init逻辑。ld文件和__attribute__((section (".fls_drv_tbl")))、attribute((section (".fls_drv")))需要变更么,二进制码完全相同。在flashdriver工程中测试可以通过,下载到固定地址,如:20003000之后就失败了。
还有就是,boot中IVT占用0x400空间,生成bin文件之后,下载flashdriver到0x20003000,调用时是不是要从0x20003400开始,还是有什么生成方法可以去掉IVT的空间。
JC flashdrv 是固定在 ram 0x20003000 的位置
carpe 您好,这个flashdrv是flashdriver生成的hex文件还是bin文件。 是在ld文件中已经去掉了IVT么,不然IVT的0x400空间编译完不能不算吧。这个具体编译的时候是怎么配置内存空间的呢?
JC 我们一般用的是S19文件。 Flashdriver是不包含IVT的,Flashdriver是下载到MCU的RAM中,供Boot调用擦写和编程app的Flash分区。 IVT包含在Flash程序的前面,第一个字节是栈顶指针,后面跟随的是所有中断的中断向量表。 我们的IVT再YT_link里默认是0x400字节,实际用不到这么多,可根据实际应用情况调整。
Derrick S19文件,用cmake生成时,会自动剔除IVT部分么?还是生成之后手动修改,或者在flashdriver中划分内存的时候,用我们ytconfig工具,关闭device。不划分ivt。直接从0开始TEXT部分
JC 不要去除IVT部分,这和MCU的启动流程紧密相关。下载flashdriver到0x20003000,调用时不需要从0x20003400开始,flashdriver不包含IVT,flashdriver和IVT也没有直接联系。
Derrick 您好,S19下载的时候,只选数据块1,驱动会有问题。 但是要是下载bin文件格式,将整个bin下载到20003000地址,之后从20003400开始调用就没问题。
JC 为啥要分一段FLS_DRV_TEXT,用来存放Flashdriver吗?我们的flashdriver是下载在ram里,像下图这样: 然后app程序下载如下图,0xA000之前是boot, 如果app的S19文件分了很多段,下载时可能校验出错,可以使用脚本填充。 如果你下载Flashdriver的bin文件到20003000,可以看一下实际下载的bin文件长度,20003000到20003400这段是否有填充,也可以去看MCU的内存,Flashdriver_bin到底是存放在20003000还是20003400
Derrick 是flashdriver的代码中的ld文件,用__attribute__((section (".fls_drv_tbl")))固定驱动函数到FLS_DRV_TEXT,使其从偏移0x400开始,还有其他方法,使得直接读取0x20003000处的代码就是driver吗? 我这边当前操作没有做填充
JC 这个是flash里的flashdriver,没必要这么搞,这么做还不如直接使用SDK的flash驱动。正常的流程是上位机通过34/36/37服务把flashdriver下载到指定地址(0x20003000),MCU再从这个地址去调用。等到对app分区的擦写和编程完成之后跳转app,重新执行ram初始化,这段flashdriver就丢失了,MCU的flash就没有被误擦的风险。 建议参考本帖子例程的升级流程去适配你们的需求。
Derrick 好的,方便分享以下您的flashdriver内存分配么,(flashdriver代码的ld文件)
JC flashdriver可以用做好的,比如说本例程,直接用flashdriver_0x20003000.S19通过上位机刷写下载到指定位置。 也可以先参考下面这篇文章,去复制相应的bin数组到0x20003000,按照接口定义调用,在现有工程上验证。 https://forum.ytmicro.com/topic/164/ytm32mc03-有没有ram-flashdriver的案例-做boot用的?_=1762745176836
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...