[仿真]

平头哥CDK助力中科昊芯HX2000系列芯片系统开发

[复制链接]
1825|1
手机看帖
扫描二维码
随时随地手机跟帖
月雾|  楼主 | 2022-7-21 15:36 | 显示全部楼层 |阅读模式
平头哥半导体有限公司发布的剑池集成开发环境(以下简称“CDK”)V2.10.1版本开始支持中科昊芯HX2000系列的DSC28027、DSC28034芯片的开发与调试了。
平头哥半导体有限公司是阿里巴巴集团的全资半导体芯片业务主体,平头哥拥有端云一体全栈产品系列,涵盖数据中心人工智能芯片、处理器IP授权等,实现芯片端到端设计链路全覆盖。
平头哥CDK开发环境可以方便用户快速上手,该集成开发环境秉承着让客户“1天上手,5天出原型,20天出产品”1520技术理念,为开发者提供简洁统一的图形开发界面,帮助开发者进行应用开发。

开发环境的下载地址如下:
https://occ.t-head.cn/community/download?id=575997419775328256

下载界面如下:

下面我们将通过一段控制外部中断实现GPIO翻转的程序来介绍如何使用“CDK”调试中科昊芯DSC28027芯片。

准备阶段如下: 开发环境

下载地址:
https://occ.t-head.cn/community/download?id=575997419775328256

开发板

申请开发板地址:
http://haawking.cn/core28027

仿真器

申请仿真器地址:
http://haawking.cn/DSP-EMULATOR
准备好开发工具后就可以做开发了。

第一步,下载完成后,首先将安装包进行解压缩,打开文件夹,双击setup应用程序。
如下图所示:

第二步,安装完成后,双击桌面“CDK”的快捷方式,通过点击“File->New Project...”创建工程。
如下图所示:

第三步,新建工程选择“Haawking -> hello_haawking_dsc28027”。使用默认的工程名“hello_haawking_dsc28027”,也可以重命名符合命名规范的工程名。
新建工程界面如下:

第四步,点击“OK”以后,会跳转到程序编辑界面。双击“src”下的“main.c”文件之后,用户就可以编辑代码了。
操作界面如下图所示:

在默认创建的情况下是RAM工程,如果用户想要切换到FLASH工程,需要手动更改链接文件。首先需要双击展开“DSC28027_SDK(v1.0.0)”下的内容,然后右键点击“haawking_dsc28027_board(V1.0.0)”,再点击“Options for “haawking_dsc28027_board(V1.0.0)”。
操作如下图所示:

点击“Linker”打开该窗口,然后需要用户点击“...”图标。在弹出的窗口中双击“ldscripts”文件夹中双击“DSC28027_link_FLASH.ld”文件,最后点击“OK”。


下面介绍外部中断原理、程序开发及运行结果展示。

外部中断是DSP实时处理外部事件的一种内部机制。当某种外部事件发生时,DSP的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理。中断处理完毕后又返回被中断的程序处继续执行。



在开发程序前,需要先查看开发板原理图。

GPIO0输出电平为低时,LED将会有正向电压差,便可导通发光;TEST键默认弹起,此时GPIO12输入高电平,按下TEST键时,GPIO12输入低电平。

之后就可以编写代码了。具体代码如下:
/*
* 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”调试仿真界面如下:

运行效果如下:

使用特权

评论回复

相关帖子

月蓉小豆包| | 2022-7-22 16:54 | 显示全部楼层
昊芯专业!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则