CH563Q的内部ram为32K还是64K?
空白CH563Q芯片能否通过以太网接口下载程序?如果可以该如何操作
1.CH563 RAM 分配软件可调,最小32K,最大96K。
2.CH563芯片出厂内置Boot,支持USB,串口,以太网下载。按住Boot键上电,然后使用我司ISP工具进行下载。详细可参考CH563EVT 包资料
沁恒管理员:
你们好!我用CH563做产品有7~8年了,有个疑问想请教下:
“CH563 的外设组件包含 480K 的 FLASH 闪存、128K 可动态分配的 SRAM、28K 的 EEPROM”
“其中 256K 可以用于 BootLoader”
“片内 SRAM 共 128K,用于程序缓冲和数据缓冲。用户可根据需求自行分配,通常分法为:32K、 64K 或 96K 作为程序缓冲区,剩余作为数据 RAM”
我的疑问是CH563一共有480K FLASH,bootloader用了256K,28K的EEPROM实际也是FLASH分割出来的,所以实际剩下的FLASH应该是480-256-28=196K.但是沁恒的bootloader是把用户程序加载到SRAM中运行的(这一点我是在做动态链接时验证出来的,我通过IAP修改FLASH固定位置程序,然后引导加载无效,但是重新启动MCU就可以),所以如果用MDK的scf文件来分配CODE和DATA区域无论如何两者的和不能超过128K,我想请问下有没有办法提高用户程序的容量,比如CODE和DATA超过128K的解决方案。因为CH563这个芯片功能不错的,同时处理以太网和USB协议稍微复杂点可能容量就不够用了。
想法1:我之前想过是不是可以抹掉bootloader,把用户程序直接写进FLASH来执行(可能FLASH里执行慢一点这个也能接受),这样用户CODE可用480K,RAM区域就可以扩大到128K,但是这样带来的风险就是没有boot芯片有可能会变砖,可能要用到jlink才能下载了。这个方案也能接受,希望沁恒指导下如何操作。
想法2:芯片里面有bootloader可以USB、ETH、串口下载,说明bootloader里面已经集成了大量的函数库,而且这个boot程序应该是常年不变的,那么可以提供给用户boot程序里的函数指针地址,直接引用地址调用就行了,这样可以极大的减少用户程序代码量,同时还能保留boot程序的完整性,芯片也不会变砖。是不是可以有这种方案提供。
以上只是个人理解,如果沁恒有解决方案请告知。这个可能关系到芯片的保密等方面,如不方便在论坛回复请邮件联系:
个人信息保护,已隐藏 或者 个人信息保护,已隐藏
CH563用户代码空间大小是224K。如您所说,默认SCF配置上电是64KRAM,即拷贝至RAM的代码大小为64K。此时,超过64K界限的用户代码,也是能够正常运行,读取指令,这个是芯片硬件的自身功能。所以真实代码大小限制就是224K.不过要关注的就是FLASH中直接取指的代码运行速度较慢,针对代码函数具体功能可以控制其存在于64K界限之前还是之后。同时FLASH操作相关函数一定确保分配在64K界限之前。
收到,我验证下。感谢
今天验证了,我使用沁恒的CH563NET_keil4.lib,如果加上自己的代码,很快代码区就接近64k,RAM区也接近64k,尝试了很多次,只要RAM+CODE区大于128K就不能执行,有没有什么解决方案啊,这个224K怎么全部用起来?
FLASH占用可以超64k,但是RAM是怎么的都不能超过配置大小的。