c语言每次堆的变化是1k,DSPXC语言+程序烧写讲述.ppt

DSPXC语言程序烧写讲述

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第2.5节 DSP程序烧写 第2.5节 DSP程序烧写 第2.5节 DSP程序烧写 注意事项: 电路元件初始化同步问题:由于外部器件初始化可能较慢,DSP初始化完成后要等一会儿再访问外部慢速器件。 用仿真器执行速度比较慢,循环时间比较长,而烧写到DSP中可能时间比较短,要对决定循环时间的循环次数重新考虑。 用仿真器调试的时候,DSP运行的一些资源(如堆栈等)用的是仿真器中的资源,烧写到DSP中执行必须利用DSP本身的资源,烧写前必须对.cmd文件中定义的各种资源进行详细考虑。 连接仿真器的时候和不连接仿真器的时候电路板上负载状态不同,可能改变板上某些信号的抖动情况,若有某部分功能模块工作不正常,可能是由上述原因引起的干扰造成的。 浮点数运算的问题:考虑用全局变量,因为局部变量都是在堆栈里生成的,对堆栈要求太多。 习题 1.编写完整的程序,包括链接命令文件,实现从x1,x2,x3,x4中找出最大值。 2.编写完整的程序,包括链接命令文件,实现y=a1*x1+a2*x2+a3*x3+a4*x4 3.编写完整的程序,驱动IO端口A,循环输出0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80 DSP原理与应用第二章:DSP程序设计 北京交通大学电气工程学院 夏明超 * * * * * * * * * * * * * * * * * * * * * * * * * * * 第二章:DSP程序设计 第2.1节 概述 第2.2节 DSP汇编语言概述及汇编程序设计 第2.3节 DSP C语言程序设计 第2.4节 DSP C与汇编混合编程 第2.5节 DSP程序烧写 习题 第2.4节 DSP C与汇编混合编程 C语言和汇编语言混合编程的四种方法 (1) 独立编写汇编程序和C程序,分开编译或汇编成各自的目标代码模块,再用链接器将二者链接起来。这种方法比较灵活,但是设计者必须自己维护各汇编模块的入口和出口代码,自己计算传递的参数在堆栈中的偏移量,工作量较大,但是能做到对程序的绝对控制。 (2) 在C程序中使用汇编程序中定义的变量和常数。 (3) 在C程序中内嵌汇编语句。这种方法可以实现C语言无法实现的一些硬件控制功能,如修改中断控制寄存器。 (4) 将C语言编译生成相应的汇编代码,手工修改和优化C编译器生成的汇编代码。采用这种方法可以控制C编译器,从而产生具有交叉列表的汇编程序,而设计者可以对其中的汇编语句进行修改,然后对汇编程序进行编译,产生目标文件。 后3种方法由于在C中直接嵌入了汇编语言,易造成程序混乱,破坏C环境,甚至导致程序崩溃,而开发者又很难对不良结果进行预期和有效控制。而如果采用第一种方法,只要遵循有关C语言函数调用规则和寄存器规则,就能预见到程序运行的结果,保证程序正确。 第2.4节 DSP C与汇编混合编程 DSP C编译器将存储空间分为两个线性空间: 程序存储空间,存储可执行码 数据存储空间,存储程序执行过程中的数据和堆栈 编译器将存储空间以分段(section)的方式分配和管理。用户以不同的方式分配存储器,可以形成不同的系统配置,连接器将各个段连接在一起形成最终完整的存储器结构。 *注意:是由连接器决定存储器影射而不是由编译器。 第2.4节 DSP C与汇编混合编程 已初始化的段: .text 包含所有可执行代码和浮点型常量 PAGE 0 .pinit 包含初始化时的程序代码 PAGE 0 .cinit 包含初始化变量和常量表 PAGE 0 .const 包含字符串常量,以及以const修饰的全局或静态变量的声明和初始化 PAGE 1 .econst 扩展常量 PAGE 1 .switch 包含switch语句的分支跳转地址表 PAGE 0 第2.4节 DSP C与汇编混合编程 未初始化的段: .bss 为全局和静态变量保留空间 PAGE 1 .ebss 扩展变量空间 PAGE1 .stack 为系统软件堆栈分配空间 PAGE 1 .sysmem 为动态分配的内存保留空间,可以被calloc、malloc、realloc函数使用 PAGE 1 .esysmem 扩展动态内存空间 PAGE1 汇编自动生成.text,.bss和.data段。C编译器不使用.data段。 第2.4节 DSP C与汇编混合编程 用户定义的段: 用户使用CODE_SECTION,DATA_SECTION定义的段,如上面的 my_sect, BufferB_sect 第2.4节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

众智日照分析软件_飞时达CAD日照分析计算软件FastSUN V14.0.1发布升级

2020-7-13,正式对外发布飞时达日照分析软件FastSUN V14.0.1(32/64),本次为小版本升级发布。温馨提醒:本次升级以安装包更新的方式发行,原14.0版本不需要卸载可直接覆盖安装本更新安装包14.0.1。飞时达日照分析软件FastSUN V14.0.1…

高频变压器_变压器图案

高频变压器Transformer模式是Java(以及可能仅具有使用场所差异和不变参数类型的其他OO语言)的设计模式,可帮助子类型层次结构内的对象将自己流畅地转换为任何类型的对象。 语境 我一直在关注与Jim Laskey发行的JDK-8203703有关的OpenJDK线程…

linux文件 run.man,【Linux】linux经常使用基本命令

Linux中很多经常使用命令是必须掌握的,这里将我学linux入门时学的一些经常使用的基本命令分享给大家一下,希望能够帮助你们。这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题。1、显示日期的指令: date2、显示日历的…

guid会重复吗_知网查重会查重表格吗

知网查重会查重表格吗?答案是肯定的。如果出现知网查重表格重复很高,那么我们一样是会进行避免查重的,通常表格在查重后会在报告中展示,如果出现重复会提示大家,我们只需要根据这个提示进行修改降低表格查重率即可。那…

stripe pay_J2Pay –简介

stripe pay介绍 J2Pay是用于Java的开源多网关支付库(由tranxactive提供)。 该库的主要目的是为多个网关同时提供简单而通用的请求/响应,它也排除了网关文档的阅读。 如果您尝试在网关上工作,则不必阅读文档,因为该库具…

windows远程桌面_如何使用Windows远程桌面连接Ubuntu 干货

近期网盾科技给大家分享了一些教程类的干货,有很多小伙伴都收藏了网盾科技的文章,能对大家有帮助就好。今天网盾科技再给小伙伴们讲解一下如何使用Windows远程桌面连接Ubuntu,干货收藏! Windows连接已有界面的Linux 看了许多教程都…

android 单元测试 多线程,单元测试多线程Android RxJava

您可以编写自己的ThreadFactoryThreadFactory custom new CustomThreadFactory();ExecutorService executorService Executors.newCachedThreadPool(custom); //or use newSingleThreadExecutor(..)Scheduler customScheduler Schedulers.from(executorService); 现在你可以…

Servlet中获取文件在服务器主机的真实路径

package priv.lwx.javaex.servlet_demo.web.servletcontext; /*** 获取文件在服务器主机的真实路径** author liaowenxiong* date 2022/1/12 15:34*/import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet…

wxpay-api:pay_J2Pay – API响应

wxpay-api:pay介绍 该库中的神奇之处在于,无论网关是什么,其响应都是唯一的。 了解API响应后,您便可以轻松地将此响应用于进一步的交易,例如退款,作废或重新开票。 首先,在开始阅读时,所有响应…

Android设置toolbar高度,Android基础知识之 Toolbar 的使用

Toolbar是Android5.0推出的,用来替代ActionBar的控件.可以高度的自定义,使用灵活.官方的ToolBar是必须在5.0以上的系统才能使用,如果需要在低版本中使用.需要使用support v7包中的Toolbar.下一是官网的Toolbar的介绍:Toolbarextends ViewGroupjava.lang.Object↳ android.view.…

delphi 停电文本数据丢失_概述DCS系统正确停电和上电的步骤

欢迎关注“热控圈 ” ID:rekongquan传播热控知识,分享技术精华!如何由入门到精通学会西门子PLC系统?扫码关注“电力工程学”,系列视频正在播出!在因大修或者其他原因需要对DCS进行断电维护时,我…

获取文件的MIME类型

package priv.lwx.javaex.servlet_demo.web.servletcontext; /*** 获取MIME类型** author liaowenxiong* date 2022/1/12 15:34*/import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.File; import java.io.IOException;…

jcmd_jcmd,大约JDK 11

jcmdNicolasFrnkel最近在博客文章“ 行业工具OpenJDK 11 ”中发布了与OpenJDK 11一起提供的命令行工具的调查。 在那篇文章中,他简要总结了工具jps (一个JVM进程状态工具 ), jinfo (一个JVM配置详细信息 )&…

vscode 运行vue_Vue初体验

Vue的引入要使用 Vue&#xff0c;我们可以直接在 Vue.js 的官网直接下载 vue.min.js 文件&#xff0c;然后在 HTML 页面中通过 <script> 标签来引入这个文件。下载地址为&#xff1a;https://vuejs.org/js/vue.min.js。引入格式如下所示&#xff0c;其中 path 是文件所在…

android图标随着进度条动画,Android开发之ProgressBar字体随着进度条的加载而滚动...

在网上翻阅了很多关于ProgressBar滚动效果&#xff0c;但是始终没有找到适合项目中的这种效果&#xff0c;故自己写这篇文章&#xff0c;记录一下写作过程&#xff0c;给大家做一个参考。先看下最终效果效果图我这里用的是LICEcap软件录制的gif图&#xff0c;效果有点掉帧&…

spark ui_Spark UI的见解

spark ui作为apache-spark-job解剖的后续文章&#xff0c;我将分享您如何使用Spark UI进行作业调整。 我将继续使用先前文章中使用的相同示例&#xff0c;新的spark应用程序将在以下方面完成工作 –阅读纽约市停车票 –通过“板ID”进行汇总并计算违规日期 –保存结果 此代…

Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%

系列文章前言在Android布局优化(一)从布局加载原理说起中我们说到了布局加载的两大性能瓶颈&#xff0c;通过IO操作将XML加载到内存中并进行解析和通过反射创建View。这里介绍一种避免运行时通过IO操作读取布局文件的“黑科技”—X2C。个人认为这个技术在实际项目中使用可能会需…

api 获取网络使用情况_您的API是什么情况?

api 获取网络使用情况免责声明&#xff1a;在纯REST中&#xff0c;API是不透明的&#xff0c;URL应该是对先前请求的响应中作为链接发送的内容。 但是&#xff0c;我不是在讲纯REST&#xff0c;而是在讲更实用的API&#xff0c;其中涉及REST的一些概念以及通用的API最佳实践。 …

判断字符串是不是application/x-www-form-urlencoded字符串(URL编码格式的字符串)

import java.util.BitSet;/*** 判断一个字符串是不是URL编码字符串的工具类&#xff0c;即判断字符串是不是application/x-www-form-urlencoded字符串** author liaowenxiong* date 2022/1/14 11:32*/public class URLEncodeUtils {private static BitSet bitSet;static {bitSe…

数据查询和业务流分开_传统数仓和大数据数仓的区别是什么?

概念与容器为什么先说这个&#xff0c;其实很简单&#xff1a;因为绝大多数人都把这两个概念混为一谈。然后就会出现各种各样的问题&#xff1a;oracle不是数据库么&#xff0c;怎么又是数据仓库&#xff1f;Hive不是数据仓库么&#xff1f;怎么又是数据库&#xff1f;数据仓库…