CH559/549 IAP是否可以使用DATAFLASH

Data Flash区域有1K的空间,是否可以将IAP上移1K,以给用户程序预留更大空间?


已经尝试将CH559的示例IAP程序的地址改为0XEC04,生成的hex转换为

bin,然后人为切割为两个bin文件,一个对应0xec00-0xefff的程序,余下的数据对应dataflash,(确定切割后的代码数据是正确的,0xec00开始的四个字段为0xff, 后面为程序码,猜测WCHISPTool 应该会在升级IAP后会更新最开始的四个字节以实现跳转,因为无法读取,无法验证)。


使用WCHISPTool同时升级IAP和Data Flash,但是升级后似乎不起作用,(用户程序也对应修改了跳转地址)

(同样的程序,已验证过地址为0xE804时可以跳转执行)


从datasheet上看,Data Flash也可以作为代码区使用,请问以上操作错了吗?IAP是否可以使用Data Flash区,如果可以如何实现?谢谢

可以做个简单测试

程序

image.png

修改工程起始地址

image.png

查看map文件,函数很多在dataflash的位置了

image.png

测试程序运行正常,驱动了一个LED


在做一些类似IAP的时候最好还是全部当做用户程序来做,外部把BIN都处理好会比较好一点


@TECH5 ,感谢回复。


如您所说,我这边改成0xEB00,使用的WCHISPTool(V3.00) 串口下载IAP.Hex时总是提示 IAP文件过大。

好像只要代码区占用Dataflash部分就会有该提示,也正是这个原因,才尝试将HEX转为bin然后分成两部分进行烧写的。


请问您那边使用的是哪个版本的下载工具?



您好,我是把固件以用户代码的形式下载进去的。使用的是USB方式下载。版本V3.00


@TECH5 感谢,如您所说,已解决


只有登录才能回复,可以选择微信账号登录