摘要:本篇文章开始,SRR案例的MSS应用程序已经带大家走完了,接下来将开始对DSS应用程序讲解。我们都知道一个工程的程序入口是从main函数开始的,这篇文章将从这个mian函数开始,分代码片段带着大家理解每一行代码的目的以及含义。

0.准备

首先我们找到SRR案例的DSS工程,如下图所示;

跳转到dss_mian.c文件,找到main函数(在该文件第366行代码处),接下来将对这个函数进行讲解;

1.参数声明

进入main函数,首先看到以下的代码片段,其中

2.Datapath 初始化

在参数声明完成后,接下来我们将看到如下代码片段,我们需要填充毫米波数据路径的所有信息,这些信息都是根据项目设计提前设计好的,例如Range bin 的数量,CFAR 的窗长等信息,在填充信息前,由于SRR案例利用了高级帧配置,即一个帧中包含两个子帧,而这两个子帧由于一些数据路径信息并不相同,故需要一个for循环先将这两个数据路径对象(子帧)进行初始化为0,紧接着就是通过MmwDemo_dataPathConfigPopulate外部函数将状态信息分别填充给数据路径对象。

2.1 MmwDemo_dataPathConfigPopulate函数

跳转进入MmwDemo_dataPathConfigPopulate,如下所示;

在运行MmwDemo_dataPathConfigPopulate外部函数后,此时数据路径对象信息已经填充完成。可以看到在这个函数中数据路径对象信息的填充是使用两个函数完成的,分别是MmwDemo_populateSRR和MmwDemo_populateUSRR,关于这两个函数,由于其中都是一些宏赋值语句,为了不使文章篇幅过长,在这里就不一一讲解。

3.初始化各子帧(对象)状态计数器

在数据路径对象信息填充完成后,接下来在数据处理开始前需要初始化用于记录处理了多少个chirp参数,由于共有两个数据路径对象,故需要调用两次MmwDemo_dataPathInit1Dstate函数;

3.1MmwDemo_dataPathInit1Dstate函数

跳转进入MmwDemo_dataPathInit1Dstate函数,这个函数初始化一些用于1D处理的状态(计数器)如下;

4.EDMA初始化

状态计数器初始化完成后,紧接着就是EDMA初始化,初始化EDMA,这是通过调用MmwDemo_dataPathInitEdma函数完成的,在调用该函数后,数据路径对象1(第一个子帧的数据路径对象)获得EDMA控制句柄,这时需要通过条件编译将EDMA控制句柄复制给数据路径对象2(第二个子帧的数据路径对象)中,如下代码所示;

4.1MmwDemo_dataPathInitEdma函数

跳转进入MmwDemo_dataPathInitEdma函数,并通过代码注释方式讲解,如下;

4.2MmwDemo_dataPathCopyEdmaHandle函数

EDMA句柄复制是通过MmwDemo_dataPathCopyEdmaHandle函数完成的,下图是通过代码注释的方式对这个函数讲解;

5.程序拷贝

EDMA初始化完成后,接下来这部分代码是利用EDMA将L3中的程序拷贝到L1中,如下所示;

5.1 MmwDemo_copyTable函数原型

下面通过代码注释讲述了MmwDemo_copyTable函数,主要将外部拷贝表_MmwDemo_fastCode_L1PSRAM_copy_table中的成员作为 MmwDemo_edmaBlockCopy函数的参数输入,最后通过EDMA实现代码复制。

注意:

关于通过EDMA将L3中的程序拷贝到L1中的代码基本是固定的,各位在编写自己DSS工程是,可以直接使用,但需要注意的是,在使用前,必须要初始化EDMA。

6.SOC初始化

在上一部分完成后,接下来就是SOC初始化,如果不进行初始化将会发生异常错误。这段程序是对SOC进行配置并且进行初始化,首先定义SOC_Cfg变量,然后对定义好的变量进行初始化,接下来是对SOC系统时钟进行配置,初始为旁路模式。接下来调用SOC_init API进行SOC初始化,if是判断SOC是否成功初始化

7.创建线程

紧接着就是创建线程函数,下面是创建任务,首先初始化任务参数,然后设置要创建的任务运行空间的大小,然后利用Task_create来创建任务

8.启动BIOS

总结

首先对datapath进行初始化,对后续1DFFT所用到的变量计数器进行初始化,EDMA初始化,SOC初始化,创建MRR_DSS_initTask任务,BIOS启动

DSS代码解读-main(十一)相关推荐

  1. DSS代码解读-SRR_DSS_mmWaveTask(十三)

    摘要:这篇文章接着上一篇文章并围绕着信号处理线程(SRR_DSS_mmWaveTask)来分析信号处理过程,首先对代码进行解读,然后将对信号处理链进行一个大致的总结. 1.函数原型 我们进入到该线程函 ...

  2. DSS代码解读-SRR_DSS_initTask(十二)

    摘要:该线程函数是DSS初始化线程任务,初始化DSS子系统中的各个组件.接下来将对这个线程函数进行逐行注释讲解.代码是按照工程顺序讲解的. 1.函数参数 通过ctrl+右键跳转进入到该线程函数,首先可 ...

  3. AWR1642 SRR 案例MSS代码解读-main(一)

    摘要:在这篇博文中,将会对demo的主函数分片段来描述它的作用,并且会对一些函数作用进行描述. 1.变量参数的声明: 主程序是案例代码的入口,进入主程序,我们会先看到定义三个变量参数,为了方便表述,下 ...

  4. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容 1) RTC特征与原理: 2) BKP备份寄存器特征与原理: 3) RTC常用寄存器+库函数介绍: 4) 相关实验代码解读. 实验内容: 因为没有买LCD屏,所以计 ...

  5. STM32学习心得十九:电容触摸按键实验及相关代码解读

    记录一下,方便以后翻阅~ 主要内容 1) 电容触摸按键原理: 2)部分实验代码解读. 实验内容 手触摸按键后,LED1灯翻转. 硬件原理图 上图,TPAD与STM_ADC用跳线帽相连,即TPAD与PA ...

  6. STM32学习心得十八:通用定时器基本原理及相关实验代码解读

    记录一下,方便以后翻阅~ 主要内容: 1) 三种定时器分类及区别: 2) 通用定时器特点: 3) 通用定时器工作过程: 4) 实验一:定时器中断实验补充知识及部代码解读: 6) 实验二:定时器PWM输 ...

  7. RT-Thread 学习笔记(五)—— RTGUI代码解读

    ---恢复内容开始--- RT-Thread 版本:2.1.0 RTGUI相关代码解读,仅为自己学习记录,若有错误之处,请告知maoxudong0813@163.com,不胜感激! GUI流程: ma ...

  8. vins 解读_代码解读 | VINS 视觉前端

    AI 人工智能 代码解读 | VINS 视觉前端 本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 v ...

  9. BERT:代码解读、实体关系抽取实战

    目录 前言 一.BERT的主要亮点 1. 双向Transformers 2.句子级别的应用 3.能够解决的任务 二.BERT代码解读 1. 数据预处理 1.1 InputExample类 1.2 In ...

最新文章

  1. mysql性能优化简书_MySQL性能优化
  2. 字节跳动小程序接入支付功能
  3. get,put,post,delete含义与区别
  4. OpenCV图像的加载、显示
  5. js重新渲染div_前端工程师必备:从浏览器的渲染到性能优化
  6. ubuntu mysql双主热备配置_MySql双主热备配置
  7. 更小的模型,迈向更快更环保的NLP
  8. vue树形权限菜单_Vue.js 递归组件实现树形菜单
  9. nodejs 中http请求头,响应头
  10. atitit 信息化概论导论原理 艾提拉著.docx 目录 1. 第1章 计算工具及其进步 1 2. 第3章 计算机程序与软件开发 2 3. 第5章 通信与计算机网络 2 4. 第7章 信息的概念 2
  11. QT 笔记6 | Qt网络编程
  12. Confluence 6.15 附件(Attachments )宏
  13. 微信小程序开发工具下载安装
  14. python梦幻西游辅助_GitHub - fanxueqian/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
  15. html5转ipk,OpenWrt更新ipk教程
  16. [转载] 古稀之年被判无期,84 岁再成亿万富翁,一代商业传奇落幕!
  17. java unrar 乱码_JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码
  18. DDSM database、INbreast database、MIAS等乳腺MG数据获取方式
  19. 快速接入高德地图SDK(地图+定位+标记+路线规划+搜索)
  20. 在华清远见学习嵌入式开发的总结

热门文章

  1. 关于element ui中autofocus属性失效的问题
  2. android 获得wifi列表并连接wifi
  3. 树莓派pca9685舵机驱动板python驱动
  4. 易语言和python混合编程_易语言python交互源码,不需要把易语言编译成静态库
  5. MIT和GPL到底是怎么兼容的
  6. Ubuntu 命令行 查看电脑软硬件配置
  7. 初识西门子Wincc OA——超大型/分布式SCADA
  8. 轻量级腾讯云服务器ubuntu安装完mysql后需要开放MySQL3306端口
  9. mysql-5.7.17-winx64安装文件在哪里_mysql-5.7.17-winx64的安装配置
  10. EMS企业微电网能效管理解决方案为工业能效提升行动计划提供助力