1、今天调试GD32H759程序发发现,当程序 大小为:503kb时可以运行
:590kb时,不能运行
2、查看手册发现ram为1024kb啊,为啥不能运行呢?
看到两个512,是不是因为有一个没使能呢?
查看配置文件:
地址都包含了啊
3、看到有个叫共享ram的,去手册看看那个是啥,如下:
原来如此,这部分的共享ram可以配置到itcm,dtcm和正常程序用的ram一块使用,但是需要分配他的大小,可以自定义分配!
4、通过程序读下itcm,dtcm大小
搜关键字itcm/tcm,终于发现有个函数 ob_tcm_shared_ram_size_get可以干这个事
发现打印:
难怪只能用512k的ram啊
5、修改itcm,dtcm大小
查看ram地址配置文件发现,默认itcm和dtcm配置的都是64k,我也把他配置为64k吧
经过咨询,程序这样改下,然后重启:
fmc_unlock();
ob_unlock();
fmc_flag_clear(FMC_INT_END ); // FMC end of program interrupt
fmc_flag_clear(FMC_INT_WPERR ); // FMC erase / program protection error interrupt
fmc_flag_clear(FMC_INT_PGSERR ); // FMC program sequence error interrupt
fmc_flag_clear(FMC_INT_RPERR ); // FMC read protection error interrupt
fmc_flag_clear(FMC_INT_RSERR ); // FMC read secure error interrupt
fmc_flag_clear(FMC_INT_ECCCOR ); // FMC one bit correct error interrupt
fmc_flag_clear(FMC_INT_ECCDET ); // FMC two bits detect error interrupt
fmc_flag_clear(FMC_INT_OBMERR ); // FMC option byte modify error interrupt
uint32_t ramget1[2] = { 0 };
ob_tcm_shared_ram_size_get(&ramget1[0], &ramget1[1]);
if (ramget1[0] != 64)
{
ob_tcm_shared_ram_config(OB_ITCM_SHARED_RAM_64KB, OB_DTCM_SHARED_RAM_64KB);
}
ob_start();
ob_lock();
fmc_lock();
重新后,查询大小打印:
可以运行大于512kb ram大小的程序了
┓(;´_`)┏
=============又是学习的一天============