使用CH32F208WB(160KB Flash, 32K SRAM)开发,发现例程BLE_UART生成的.bin文件已经122KB 。
本计划使用3个程序:
一个boot,完成BLE升级和切换程序。
一个标定程序,和手机APP通信,完成产品的称重标定操作。
一个应用程序,因为逻辑复杂,使用操作系统,对称重值进行处理等。
怎么能让蓝牙库小些呢?
使用CH32F208WB(160KB Flash, 32K SRAM)开发,发现例程BLE_UART生成的.bin文件已经122KB 。
本计划使用3个程序:
一个boot,完成BLE升级和切换程序。
一个标定程序,和手机APP通信,完成产品的称重标定操作。
一个应用程序,因为逻辑复杂,使用操作系统,对称重值进行处理等。
怎么能让蓝牙库小些呢?
有些着急,版主回复啊。
这里的160K是快速flash,实际上有480k的flash供用户运行代码。
在《CH32FV2x_V3xRM.pdf》中,我理解了上图中的3种配置。
但如何使用480K FLASH,在哪儿看?
并且在Keil的options页面,选中F208W后,就是160K和32K。
有操作更大FLASH的例程吗?
慢速有多慢呢?
工程配置处进行修改,修改红框的地方。比如说400K这里修改成0x64000。没有操作更大flash的例程,根据上述修改即可。慢速flash的速度相对于flash区是较慢的。
刚刚实测了一下,都是向一个数组写入数据,相差了27倍。低电平是在快速FLASH中的函数,高电平是在慢速FLASH中的函数。那么在慢速FLASH区,能执行BLE_UART例程吗?
还有,2个程序都使用wchble.lib,能像ROM API似的,只刷一个wchble.lib吗?
上电最先运行boot,可能会执行经过蓝牙的升级。
上电后,可能跳转到标定程序,在此程序中,能经过BLE进行手机APP的通信操作。
上面这两个程序,都用了wchble.lib。
“慢速FLASH区,能执行BLE_UART例程吗”
能接受慢速flash执行速度慢就可以用。慢速flash是480K总量 - 前部快速flash的余量,也可以用来跑代码。
BLE库函数中对执行速度要求高的部分已经放到了快速flash中。用户层代码排在库中代码的后面。用户层代码把快速flash占满还是不够放,会安排到慢速flash中。对速度要求高的函数,可以加“highcode”修饰,提到快速flash中存放。
“2个程序都使用wchble.lib,能像ROM API似的,只刷一个wchble.lib吗”
可以的,参考BLE文件夹下的Onlyupdate方式的OTA升级方案,其中IAP层代码和APP层代码共用一个外置固定库。不过跳转时BLE会断连,需要跳转后重新连接。
懂了,谢谢。
在BLE目录下,没有找到你说的Onlyupdate方式的OTA。
只有BackupUpgrade_IAP和BackupUpgrade_OTA两个文件夹。
我使用的是CH32F20xEVT。
您好,使用F208,只能使用backup的升级方式,没有固定库的升级方式。
或者可以考虑使用V208芯片,可以使用固定库和备份的方式。
你好,我主要想知道如何实现2个程序在一个MCU中,使用一个wchlib库。有例程吗?
不同的程序使用不同的代码,F208没有固定库。如果需要固定库,可以使用V208.