- 2024-06-09
-
发表了主题帖:
【兆易GD32H759I-EVAL】GD32H759I-EVAL开发板与STM32H743兼容性测试失败
很遗憾,测试发现GD32H759与STM32H743并不能程序兼容(可能是我太菜)。我曾经测试过GD32F470与STM32F429的兼容性,发现STM32F429的程序可以直接下载进GD32F470并完美运行。使用STM32F429的程序,超频到240Mhz,在STM32F429上可以运行,但是芯片轻微发热;直接将程序下载到GD32F470上可以完美运行并基本无发热现象。这次突发奇想想要测试一下GD32H759能不能运行STM32H743程序,直接下载后发现并不行。
测试STM32H743IIT6 Hal库的LED点灯程序(程序例程来源反客科技)。keil修改芯片为GD32H759IM,编译后可以正常下载。但是下载后芯片直接无法运行,仿真也无法仿真。
下载完hal库例程后,芯片直接锁机了,无法再使用GDlink进行下载程序,并且将BOOT0上拉后,也无法用串口下载程序。解决方法是将BOOT0上拉,复位,并用GDlink下载GD32H759的程序。程序下载完成后就正常了。
然后我再尝试了STM32H743IIT6 寄存器点灯程序(程序来源于正点原子例程),keil修改芯片为GD32H759IM,编译后同样可以正常下载,但是依然无法执行。这次可以进行仿真,但是仿真就直接进入HardFault_Handler了。
综上所述,GD32H759并不能兼容替代STM32H743。有这方面需求的用户慎重考虑了。
参阅GD32官方资料,也并没有找到STM32H7xx移植到GD32H7xx的文档,貌似此芯片确实不能替换STM32使用。但是看到了GD32F4xx移植到GD32H7xx的文件,里面指出部分外设是兼容的,因为之前测试过STM32F429程序兼容GD32F470。后面尝试将STM32F429的程序下载到GD32H759上,发现也是运行不了的。看来GD32H759想要用起来就必须用GD官方的库重新写了,无法使用ST的芯片直接替换。
- 2024-05-19
-
发表了主题帖:
【兆易GD32H759I-EVAL】GD32H759I-EVAL开发板快速上手指南
1、在GD32官网下载GD32H759资料
GD32H7xx_Demo_Suites_V1.2.0 包含开发板原理图资料及使用指南
GD32H7xx_AddOn_V1.2.0 Keil pack包
2、安装keil pack包。
3、尝试打开GD32H7xx_Demo_Suites_V1.2.0\GD32H759I_EVAL_Demo_Suites\Projects\01_GPIO_Running_LED\MDK-ARM\GD32H759I_EVAL.uvproj进行编译。
这里我卡了几天,编译过程不顺利。做了一些改动,编译成功了,但是无法下载。最后发现是keil版本问题。大家在编译之前一定要先确认自己的keil版本,文档中介绍例程是基于 Keil MDK-ARM 5.29 uVision5的。理论上高于这个版本就可以。下面是 查看kei版本方法
下面是我踩的坑,使用的是keil 5.25版本,编译错误的改动,由于没有下载成功,并没有验证其运行效果,如果出现相同报错,尝试按照上面方法解决。
第一次编译出现报错MPU_AP_NO_ACCESS和MPU_REGION_SIZE_32B未定义。我没有找到,尝试从STM32H7抄过来。
找到宏定义位置并替换
#define MPU_REGION_SIZE_32B ((uint8_t)0x04)
#define MPU_REGION_SIZE_64B ((uint8_t)0x05)
#define MPU_REGION_SIZE_128B ((uint8_t)0x06)
#define MPU_REGION_SIZE_256B ((uint8_t)0x07)
#define MPU_REGION_SIZE_512B ((uint8_t)0x08)
#define MPU_REGION_SIZE_1KB ((uint8_t)0x09)
#define MPU_REGION_SIZE_2KB ((uint8_t)0x0A)
#define MPU_REGION_SIZE_4KB ((uint8_t)0x0B)
#define MPU_REGION_SIZE_8KB ((uint8_t)0x0C)
#define MPU_REGION_SIZE_16KB ((uint8_t)0x0D)
#define MPU_REGION_SIZE_32KB ((uint8_t)0x0E)
#define MPU_REGION_SIZE_64KB ((uint8_t)0x0F)
#define MPU_REGION_SIZE_128KB ((uint8_t)0x10)
#define MPU_REGION_SIZE_256KB ((uint8_t)0x11)
#define MPU_REGION_SIZE_512KB ((uint8_t)0x12)
#define MPU_REGION_SIZE_1MB ((uint8_t)0x13)
#define MPU_REGION_SIZE_2MB ((uint8_t)0x14)
#define MPU_REGION_SIZE_4MB ((uint8_t)0x15)
#define MPU_REGION_SIZE_8MB ((uint8_t)0x16)
#define MPU_REGION_SIZE_16MB ((uint8_t)0x17)
#define MPU_REGION_SIZE_32MB ((uint8_t)0x18)
#define MPU_REGION_SIZE_64MB ((uint8_t)0x19)
#define MPU_REGION_SIZE_128MB ((uint8_t)0x1A)
#define MPU_REGION_SIZE_256MB ((uint8_t)0x1B)
#define MPU_REGION_SIZE_512MB ((uint8_t)0x1C)
#define MPU_REGION_SIZE_1GB ((uint8_t)0x1D)
#define MPU_REGION_SIZE_2GB ((uint8_t)0x1E)
#define MPU_REGION_SIZE_4GB ((uint8_t)0x1F)
//#define MPU_REGION_SIZE_32B ARM_MPU_REGION_SIZE_32B /*!< MPU region size is 32 bytes, the smallest supported region size is 32 bytes */
//#define MPU_REGION_SIZE_64B ARM_MPU_REGION_SIZE_64B /*!< MPU region size is 64 bytes */
//#define MPU_REGION_SIZE_128B ARM_MPU_REGION_SIZE_128B /*!< MPU region size is 128 bytes */
//#define MPU_REGION_SIZE_256B ARM_MPU_REGION_SIZE_256B /*!< MPU region size is 256 bytes */
//#define MPU_REGION_SIZE_512B ARM_MPU_REGION_SIZE_512B /*!< MPU region size is 512 bytes */
//#define MPU_REGION_SIZE_1KB ARM_MPU_REGION_SIZE_1KB /*!< MPU region size is 1K bytes */
//#define MPU_REGION_SIZE_2KB ARM_MPU_REGION_SIZE_2KB /*!< MPU region size is 2K bytes */
//#define MPU_REGION_SIZE_4KB ARM_MPU_REGION_SIZE_4KB /*!< MPU region size is 4K bytes */
//#define MPU_REGION_SIZE_8KB ARM_MPU_REGION_SIZE_8KB /*!< MPU region size is 8K bytes */
//#define MPU_REGION_SIZE_16KB ARM_MPU_REGION_SIZE_16KB /*!< MPU region size is 16K bytes */
//#define MPU_REGION_SIZE_32KB ARM_MPU_REGION_SIZE_32KB /*!< MPU region size is 32K bytes */
//#define MPU_REGION_SIZE_64KB ARM_MPU_REGION_SIZE_64KB /*!< MPU region size is 64K bytes */
//#define MPU_REGION_SIZE_128KB ARM_MPU_REGION_SIZE_128KB /*!< MPU region size is 128K bytes */
//#define MPU_REGION_SIZE_256KB ARM_MPU_REGION_SIZE_256KB /*!< MPU region size is 256K bytes */
//#define MPU_REGION_SIZE_512KB ARM_MPU_REGION_SIZE_512KB /*!< MPU region size is 512K bytes */
//#define MPU_REGION_SIZE_1MB ARM_MPU_REGION_SIZE_1MB /*!< MPU region size is 1M bytes */
//#define MPU_REGION_SIZE_2MB ARM_MPU_REGION_SIZE_2MB /*!< MPU region size is 2M bytes */
//#define MPU_REGION_SIZE_4MB ARM_MPU_REGION_SIZE_4MB /*!< MPU region size is 4M bytes */
//#define MPU_REGION_SIZE_8MB ARM_MPU_REGION_SIZE_8MB /*!< MPU region size is 8M bytes */
//#define MPU_REGION_SIZE_16MB ARM_MPU_REGION_SIZE_16MB /*!< MPU region size is 16M bytes */
//#define MPU_REGION_SIZE_32MB ARM_MPU_REGION_SIZE_32MB /*!< MPU region size is 32M bytes */
//#define MPU_REGION_SIZE_64MB ARM_MPU_REGION_SIZE_64MB /*!< MPU region size is 64M bytes */
//#define MPU_REGION_SIZE_128MB ARM_MPU_REGION_SIZE_128MB /*!< MPU region size is 128M bytes */
//#define MPU_REGION_SIZE_256MB ARM_MPU_REGION_SIZE_256MB /*!< MPU region size is 256M bytes */
//#define MPU_REGION_SIZE_512MB ARM_MPU_REGION_SIZE_512MB /*!< MPU region size is 512M bytes */
//#define MPU_REGION_SIZE_1GB ARM_MPU_REGION_SIZE_1GB /*!< MPU region size is 1G bytes */
//#define MPU_REGION_SIZE_2GB ARM_MPU_REGION_SIZE_2GB /*!< MPU region size is 2G bytes */
//#define MPU_REGION_SIZE_4GB ARM_MPU_REGION_SIZE_4GB /*!< MPU region size is 4G bytes */
#define MPU_AP_NO_ACCESS ((uint8_t)0x00)
#define MPU_AP_PRIV_RW ((uint8_t)0x01)
#define MPU_AP_PRIV_RW_UNPRIV_RO ((uint8_t)0x02)
#define MPU_AP_FULL_ACCESS ((uint8_t)0x03)
#define MPU_AP_PRIV_RO ((uint8_t)0x05)
#define MPU_AP_PRIV_UNPRIV_RO ((uint8_t)0x06)
//#define MPU_AP_NO_ACCESS ARM_MPU_AP_NONE /*!< MPU access permission no access */
//#define MPU_AP_PRIV_RW ARM_MPU_AP_PRIV /*!< MPU access permission privileged access only */
//#define MPU_AP_PRIV_RW_UNPRIV_RO ARM_MPU_AP_URO /*!< MPU access permission unprivileged access read-only */
//#define MPU_AP_FULL_ACCESS ARM_MPU_AP_FULL /*!< MPU access permission full access */
//#define MPU_AP_PRIV_RO ARM_MPU_AP_PRO /*!< MPU access permission privileged access read-only */
//#define MPU_AP_PRIV_UNPRIV_RO ARM_MPU_AP_RO /*!< MPU access permission privileged and unprivileged read-only access */
继续编译出现错误
No .ANY selector matches 。。。
修改keil配置options>C/C++>取消勾选Execute-only Code。
之后编译完成。
下载过程中一直提示芯片连接失败,应该也是keil版本问题,不支持GDlink。重新安装新版本keil以后问题解决。
4、开发板下载程序。
需要注意开发板左侧的两个USB口和左下的USB口不能进行供电。供电只能通过DC 5V,或者右下角USB口的GD LINK进行供电,使用左上角的开关SW1进行切换。
使用开发板自带的GDlink下载程序,GDlink应该就是通过DAPlink改过来的。在debug中选择CMSIS-DAP-Debugger。
5、下载完LED例程后按下图更改跳线后就可看到LED闪烁。
- 2024-04-30
-
回复了主题帖:
测评入围名单:兆易GD32H759I-EVAL
个人信息确认无误,确认可以完成测评分享计划