平头哥半导体有限公司发布的剑池集成开发环境(以下简称“CDK”)V2.10.1版本开始支持中科昊芯HX2000系列的DSC28027、DSC28034芯片的开发与调试了。
平头哥半导体有限公司是阿里巴巴集团的全资半导体芯片业务主体,平头哥拥有端云一体全栈产品系列,涵盖数据中心人工智能芯片、处理器IP授权等,实现芯片端到端设计链路全覆盖。
平头哥CDK开发环境可以方便用户快速上手,该集成开发环境秉承着让客户“1天上手,5天出原型,20天出产品”1520技术理念,为开发者提供简洁统一的图形开发界面,帮助开发者进行应用开发。
开发环境的下载地址如下:
https://occ.t-head.cn/community/download?id=575997419775328256
下载界面如下:![](https://i0.hdslb.com/bfs/article/6d5b928d831c8e9f8a89376df8250cbe4c1eb235.jpg@942w_539h_progressive.webp)
![](https://i0.hdslb.com/bfs/article/068c9832a3c91e8a0d7fad024e84cb7f6d5a55be.jpg@942w_588h_progressive.webp)
下面我们将通过一段控制外部中断实现GPIO翻转的程序来介绍如何使用“CDK”调试中科昊芯DSC28027芯片。
准备阶段如下: 开发环境
![](https://i0.hdslb.com/bfs/article/503c5edcb6b8a52bc66e343e3c53eabd597d9cde.png@750w_450h_progressive.webp)
下载地址:
https://occ.t-head.cn/community/download?id=575997419775328256
开发板
![](https://i0.hdslb.com/bfs/article/edb302357a5413719a6a14dae4c5d8217936b146.png@942w_659h_progressive.webp)
申请开发板地址:
http://haawking.cn/core28027
仿真器
![](https://i0.hdslb.com/bfs/article/fe2211afee627e65a42d6b2ce5c112ea5b6933b7.png@942w_554h_progressive.webp)
申请仿真器地址:
http://haawking.cn/DSP-EMULATOR
准备好开发工具后就可以做开发了。
第一步,下载完成后,首先将安装包进行解压缩,打开文件夹,双击setup应用程序。
如下图所示:
![](https://i0.hdslb.com/bfs/article/d0c8a28a1aaa9eeeaa83efa6eb55256f4d9c33f6.jpg@942w_419h_progressive.webp)
第二步,安装完成后,双击桌面“CDK”的快捷方式,通过点击“File->New Project...”创建工程。
如下图所示:
![](https://i0.hdslb.com/bfs/article/87f9679f79ec588aea833329665690fc11e4034e.jpg@942w_627h_progressive.webp)
第三步,新建工程选择“Haawking -> hello_haawking_dsc28027”。使用默认的工程名“hello_haawking_dsc28027”,也可以重命名符合命名规范的工程名。
新建工程界面如下:
![](https://i0.hdslb.com/bfs/article/6fe9b52ffaffe60081a28855ef8deb67ce73eceb.jpg@780w_609h_progressive.webp)
第四步,点击“OK”以后,会跳转到程序编辑界面。双击“src”下的“main.c”文件之后,用户就可以编辑代码了。
操作界面如下图所示:
![](https://i0.hdslb.com/bfs/article/95756db065d9edc7e1b71eb64536b0256f7b5208.jpg@942w_620h_progressive.webp)
在默认创建的情况下是RAM工程,如果用户想要切换到FLASH工程,需要手动更改链接文件。首先需要双击展开“DSC28027_SDK(v1.0.0)”下的内容,然后右键点击“haawking_dsc28027_board(V1.0.0)”,再点击“Options for “haawking_dsc28027_board(V1.0.0)”。
操作如下图所示:
![](https://i0.hdslb.com/bfs/article/0c1d9a53a7e39cd7cffb6470fe1edf7a72d6f306.jpg@942w_611h_progressive.webp)
点击“Linker”打开该窗口,然后需要用户点击“...”图标。在弹出的窗口中双击“ldscripts”文件夹中双击“DSC28027_link_FLASH.ld”文件,最后点击“OK”。
![](https://i0.hdslb.com/bfs/article/b3826f7db867d5a81874c5dd330f133a572c8e12.jpg@942w_674h_progressive.webp)
下面介绍外部中断原理、程序开发及运行结果展示。
外部中断是DSP实时处理外部事件的一种内部机制。当某种外部事件发生时,DSP的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理。中断处理完毕后又返回被中断的程序处继续执行。
在开发程序前,需要先查看开发板原理图。
GPIO0输出电平为低时,LED将会有正向电压差,便可导通发光;TEST键默认弹起,此时GPIO12输入高电平,按下TEST键时,GPIO12输入低电平。
![](https://i0.hdslb.com/bfs/article/b12e607be5beebf896362a91b4490ea8d22cb093.jpg@612w_281h_progressive.webp)
之后就可以编写代码了。具体代码如下:
/*
* XintInterrupt.c
*
* Created on: 2021年10月25日
* Author: Shentingting
*/
#include <stdio.h>
#include "dsc_config.h"
#include <syscalls.h>
#include "xcustom.h"
#include "IQmathLib.h"
/*函数声明*/
void xint1_isr(void);
void ExInt_Init(void);
void InitGPIO(void);
int main(void)
{
volatile unsigned int i,j;
InitSysCtrl();
InitGPIO();
DINT;
InitPieCtrl();
IER_DISABLE(0xFFFF); //禁止中断使能
IFR_DISABLE(0xFFFF); //禁止中断标志使能
InitPieVectTable(); //初始化中断向量表,将中断服务函数与中断向量表关联
ExInt_Init(); //初始化中断
EINT; //开启中断
while(1){}
return 0;
}
INTERRUPT void xint1_isr()
{
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
void InitGPIO(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO12 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 1;
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;
EDIS;
}
void ExInt_Init(void)
{
EALLOW;
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12;
EDIS;
XIntruptRegs.XINT1CR.bit.POLARITY = 2;
XIntruptRegs.XINT1CR.bit.ENABLE = 1;
EALLOW;
PieVectTable.XINT1 = &xint1_isr;
EDIS;
IER_ENABLE(M_INT1);
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
}
“CDK”调试仿真界面如下:
![](https://i0.hdslb.com/bfs/article/3a93253b9d24386e039513d1b717bd74c6754bd2.jpg@942w_497h_progressive.webp)
运行效果如下:
![](https://i0.hdslb.com/bfs/article/c76c17b277960434b669f5d52172ab33cb6a3d32.gif) |