笔者来聊一下psoc62 系列板子的知识
1、PSOC62板子介绍
Psoc6-evaluationkit-062S2 与RT-Thread联合推出的一款32位的双core的板子,基于CortexM4以及CortexM0。
- 管脚兼容Arduio。
- 板载DAP-Link,可以支持调试以及串口,无需外接
- 2MB的Flash以及1MB的RAM空间。
- 板子可外接mrcro SD卡,可操作出名滑条,可外扩WIFI以及蓝牙。
2、PSOC62 CPU特点
双core MCU,CortexM4以及CortexM0
- CortexM4 频率:150MHZ,CortexM0 :100MHZ
- 8KB的指令Cache
- CortexM4基于ARMv7-M架构,支持Thumb-2指令集,CortexM0基于ARMv6-M指令集,支持Thumb指令集
- 均支持中断嵌套NVIC
- 均支持debug port,SWD以及JTAG
- 双core IPC(硬件)通信
- 均有自己的数据总线和内存接口
整体架构如下图所示:
- 支持深度睡眠,休眠唤醒模式
- 支持MPU,内存保护
- 支持对称加密加密,DES,AES,以及非对称加密,RSA/ECC
- 2MB 的Flash以及1MB的RAM空间
- 64KB的ROM空间。
因为其使用的均是ARM CortexM架构,所以其寄存器包括指令集均安装ARM架构的理解即可。寄存器的了解可以看这篇文章:ARM学习(2) 寄存器的理解 ===》通用寄存器及状态寄存器,指令集可以参考这篇文章:ARM学习(6) 指令集学习。
3、PSOC62 内存布局
其整体内存布局如下图所述:双core均有固定的内存布局,包括外设,大小为4G。
PSOC6的内存布局如下图所述:双core看的内存布局一致。
这里与一张图不一样的,SRAM放到了规划的code区域,因为PSOC6就没有使用0x20000000的区域。
通过看到以内内存布局之后,笔者还查看了芯片的链接脚本,通用可以来确定其内存使用分布。
; The following defines control RAM and flash memory allocation for the CM4 core.
; You can change the memory allocation by editing RAM and Flash defines.
; Note that 2 KB of RAM (at the end of the SRAM) are reserved for system use.
; Using this memory region for other purposes will lead to unexpected behavior.
; Your changes must be aligned with the corresponding defines for CM0+ core in 'xx_cm0plus.scat',
; where 'xx' is the device group; for example, 'cy8c6xx7_cm0plus.scat'.
; RAM
#define RAM_START 0x08002000
#define RAM_SIZE 0x000FD800
; Flash
#define FLASH_START 0x10000000
#define FLASH_SIZE 0x00200000; The size of the stack section at the end of CM4 SRAM
#define STACK_SIZE 0x00001000; By default, the COMPONENT_CM0P_SLEEP prebuilt image is used for the CM0p core.
; More about CM0+ prebuilt images, see here:
; https://github.com/Infineon/psoc6cm0p
; The size of the Cortex-M0+ application flash image
#define FLASH_CM0P_SIZE 0x2000
观察上图,
- SRAM的布局从0x08002000开始,其实前面的0x2000是放CPU0的Image的,与NXP的启动方式类似,一个core启动之后,把另外一个core加载到对应的SRAM空间上面去运行。具体的可以参考这篇文章:ARM学习(28)NXP 双coreMCU IMX1160学习。
- Flash的大小没什么好说的,就如上面所示,是2MB
- 栈的大小这边设了4KB。
4、PSOC62 上手使用
psoc32支持多种平台下载使用,RT-Thread Stduio,MDK以及infineon自身的IDEModusToolbox。
4.1 RT-Thread Stduio下载使用
新建好项目以及选择好目标板子后,可以直接编译和下载。
编译界面
下载界面
4.2 MDK下载使用
直接采用RTT-Thread生成的MDK工程就可以编译和下载,主要注意的是,MDK5的工程生成时,可能有格式问题,需要用scons重新生成一下。
4.3 ModusToolbox下载使用
使用ModusToolbox Programmer,可以来下载代码,类似于JFlash一样。
连接界面:注意选择正确的device,这边是CY8C624ALQI-S2D42系列。
下载界面:选择好下载文件,然后电机Program即可下载文件。