TI C64X DSP中断向量表配置(硬件中断)

【裸机开发】认识中断向量表(设置中断向量偏移的原因) 阅读详情

1. 编写中断服务例程

在.c源文件中编写ISR函数c_intXX,用于中断处理,如:

interrupt void c_intXX (void)

{

           …;

}

注:对于硬件中断而言,XX = 00~15。

2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量

           首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如:

MEMORY

{

           VECTORS:         org = 00000000h,       len = 00000400h

           L2SRAM:            org = 00000400h,       len = 00100000h

           SDRAM:             org = 80000000h,       len = 10000000h

}

SECTIONS

{

           .vecs                  :>            VECTORS

           .data                  :>            L2SRAM

           .text                   :>            L2SRAM

           .switch               :>            L2SRAM

           .stack                 :>            L2SRAM

           .bss                    :>            L2SRAM

           .cinit                   :>            L2SRAM

           .far                     :>            L2SRAM

           .cio                     :>            L2SRAM

           .const                 :>            L2SRAM

           .sysmem             :>            SDRAM

           .tables                :>            L2SRAM

}

       

            然后建立一个.asm文件,用以配置中断向量表中的中断向量,我们需要声明一些全局变量,以便其他源文件可以引用这些变量或者引用其他源文件的变量,如:

    .global _vectors     

       .global _c_int00     

       .global _vector1  

       .global _vector2

       .global _vector3

       .global _vector4

       .global _vector5

       .global _vector6

       .global _vector7

       .global _c_int08      ; 对应main()函数的c_int08中断服务例程(假设处理的是EDMA中断)

       .global _vector9         

       .global _vector10

       .global _vector11   

       .global _vector12  

       .global _vector13   

       .global _vector14   

       .global _vector15   

              

         因为引用了rts的_c_int00中断,即RESET中断,因此需要引入这个符号:

   .ref      _c_int00

       

为了把中断服务例程的地址,即中断向量插入到中断向量表中,可以定义一个宏:

VEC_ENTRY .macro addr

        STW       B0,*--B15

        MVKL      addr,B0

        MVKH      addr,B0

        B         B0

        LDW       *B15++,B0

        NOP       2

        NOP   

        NOP   

.endm         

           

       为了初始化中断向量表中的中断向量,可以定义一个虚拟的中断向量:

_vec_dummy:

      B        B3

      NOP      5

           

      接下来就可以配置中断向量表了:

.sect “.vecs”

.align 1024

_vectors:

_vector0:       VEC_ENTRY _c_int00          ;RESET中断

_vector1:       VEC_ENTRY _vec_dummy ;NMI不可屏蔽中断

_vector2:       VEC_ENTRY _vec_dummy ;保留中断1

_vector3:       VEC_ENTRY _vec_dummy ;保留中断2

_vector4:       VEC_ENTRY _vec_dummy ;外部中断INT4

_vector5:       VEC_ENTRY _vec_dummy ;外部中断INT5

_vector6:       VEC_ENTRY _vec_dummy ;外部中断INT6

_vector7:       VEC_ENTRY _vec_dummy ;外部中断INT7

_vector8:       VEC_ENTRY _c_int08 ; EDMA控制器中断EDMAINT,对应于c_int08 ISR

_vector9:       VEC_ENTRY _vec_dummy;JTAGRTDX中断

_vector10:      VEC_ENTRY _vec_dummy;EMIF_SDRAM_Timer中断

_vector11:      VEC_ENTRY _vec_dummy;McBSP_0_Receive中断

_vector12:      VEC_ENTRY _vec_dummy;McBSP_1_Transmit中断

_vector13:      VEC_ENTRY _vec_dummy;Host_Port_Host_to_DSP中断

_vector14:      VEC_ENTRY _vec_dummy;Timer0中断

_vector15:      VEC_ENTRY _vec_dummy;Timer1中断

3. 在C程序中指定定义的中断向量表,并且启用CPU中断功能

在C程序中,用CSL的IRQ模块来设置中断比较方便,在设置之前,需要外部链接上面的asm程序的中断向量表符号:

extern far void vectors();//之所以为vectors,因为C编译器编译后自动改名其为_vectors

引用了中断向量表之后,就可以设置中断了:

        IRQ_setVecs(vectors); //指向asm中定义的中断向量表

        IRQ_nmiEnable();

        IRQ_globalEnable();

        IRQ_map(IRQ_EVT_EDMAINT, 8);        //映射事件到指定的物理中断号

        IRQ_reset(IRQ_EVT_EDMAINT);

4.启动中断源,如EDMA控制器的中断

至此,中断服务例程c_int8就可以为EDMAINT中断服务了,其它硬件中断向量的配置同理。

 
从TI C64x到StarCore DSP的代码移植与优化实战指南 在嵌入式DSP开发中,代码移植与优化是提升系统性能、实现平台迁移的关键技术。其核心原理在于理解不同处理器架构的指令集、数据模型和运算单元差异,通过精准映射数据类型与内在函数,确保算法在新硬件上高效运行。这项技术的价值在于保护既有算法投资,降低开发成本,同时充分利用新平台的并行计算与能效优势。典型应用场景包括无线通信、音频处理、媒体网关等实时信号处理系统的平台升级。本文聚焦于TI C64x与飞思卡尔StarCore架构间的代码移植,深入解析了40位累加器、分数乘法移位等关键差异,并提供了从战略准备到核心代码重 阅读详情

相关推荐

别再手动配置中断了!手把手教你用TI-RTOS的HAL API搞定C6000 DSP硬件抽象

本文详细介绍了如何利用TI-RTOS的硬件抽象层(HAL)API简化C6000 DSP开发,告别繁琐的寄存器级配置。通过HAL API,开发者可以高效管理中断、定时器和缓存,提升代码可移植性和开发效率。重点讲解了Hwi、Timer和Cache模块的实践应用,并提供了完整的音频处理案例和性能优化技巧。

weixin_30945039的博客 593

设置和获取中断向量,很清楚嗷

在系统程序或应用程序由于某种需要而提供新的中断处理程序时,就要设置对应的中断向量,使其指向新的中断处理程序。方法1:直接写入法用 MOV 指令将中断向量直接写入中断向量表,下面是一个直接写入法的例子。设置中断向量一般有两种方法:直接写入法和使用 DOS 调用法。例7-4使用 DOS 功能调用取得 n 号中断的中断向量。方法1:直接读取法利用 MOV 指令直接读取中断向量。功能:将指定的中断向量写入中断向量表。例使用 DOS 功能调用设置中断向量。直接读取法和使用 DOS 功能调用法。执行:INT 21H。

我写写哈的博客 3857

深入解析TI C674x DSP控制模块寄存器:从原理到实战配置

寄存器是嵌入式系统底层开发的核心概念,它作为处理器内部存储单元,直接映射硬件功能状态。其工作原理是通过读写特定内存地址,实现对芯片时钟、外设、中断及电源等模块的精确控制。掌握寄存器配置技术,对于优化系统性能、实现低功耗管理及确保实时性至关重要,广泛应用于通信设备、工业控制及汽车电子等领域。本文聚焦于TI C674x DSP的**控制模块寄存器**,详细剖析其作为系统“神经中枢”的设计逻辑,涵盖**启动配置**、内存访问控制、核心状态管理及安全机制等关键功能,并通过实战代码示例,指导开发者安全高效地进行底层硬

weixin_33742618的博客 426

c6000 中断小结

1.  中断相关概念 中断过程-----------------------------------你在下象棋,突然电话响了,你回屋接电话,然后回来继续下象棋,这个过程就叫做中断响应过程。 CPU执行正常任务---------------------下象棋 保护现场----------------------------------你已经想好要“将军”,先在脑海中记下来。 中断

hanxiaoer的专栏 3539

TI DSP/BIOS内存配置详解:从概念到实践,优化嵌入式系统性能

在嵌入式系统开发中,内存管理是决定系统稳定性与性能的核心基础。其原理涉及硬件架构、编译器模型与实时操作系统的协同,旨在确保代码与数据被精准放置于合适的物理地址,避免冲突并最大化访问效率。这项技术的核心价值在于为资源受限的嵌入式环境,尤其是对实时性要求严苛的数字信号处理(DSP)应用,提供确定性的执行保障和性能优化空间。典型的应用场景包括音频处理、电机控制、通信基带等需要高数据吞吐量的领域。本文聚焦于德州仪器(TI)TMS320系列DSP,深入解析其独特的哈佛架构与多样化内存类型(如DARAM、SARAM),

weixin_29164091的博客 320

深入解析TMS320C674x DSP架构:从内存、中断到系统互联的实战指南

在嵌入式系统与数字信号处理(DSP)开发中,片上系统(SoC)架构的理解是项目成功的关键。其核心原理在于如何高效管理芯片内部的计算、存储与数据流资源。从技术价值看,深入掌握内存子系统、中断控制器和系统互联矩阵,能够显著提升系统实时性、可靠性与整体性能。这些基础概念广泛应用于通信、音频处理和工业控制等对实时性要求严苛的场景。本文聚焦于TI TMS320C674x系列DSP,通过剖析其**两级缓存内存架构**与**中断系统**的设计哲学,并结合**系统互联**与**带宽管理**的实战配置,为工程师提供从芯片手册

weixin_33874713的博客 641

TI C66x DSP 系统events及其应用 - 5.12(vector的创建)

下面的创建中断向量表的代码,可以将段vecs(存储中段向量表的段)重定位到某个地址,如DSP的L2起始地址(对于core1,是0x10800000),同时要将ISTP指向这个地址。 ;create interrupt vector table for C6000 DSP ;-------------------------------------------------------------

yiyeguzhou100的专栏 2012

C# 实现文件和字符串的AES加密解密

C# 实现文件和字符串的AES128加密解密

m0_72044573的博客 5935

TI C64X DSP中断向量表的配置(硬件中断)-- 转自新浪博客

1. 编写中断服务例程 在.c源文件中编写ISR函数c_intXX,用于中断处理,如: interrupt void c_intXX (void) { …; } 注:对于硬件中断而言,XX = 00~15。 2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量 首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如: MEMO...

weixin_33889665的博客 499

STM32 USB AUDIO实战指南——从零构建音频设备

本文详细介绍了如何使用STM32F407构建USB音频设备,从硬件准备到软件配置,再到音频播放和录制功能的实现。通过STM32CubeMX配置和实战代码示例,帮助开发者快速掌握USB Audio Class规范,实现低延迟、高质量的音频传输,适用于语音交互、音乐播放等多种场景。

weixin_42549037的博客 484

《Sigrity SystemSI 2023+LPDDR4仿真自学笔记》(一)创建工程(Part1)

为了加强SystemSI 2023软件的熟悉度,咱们完整的走一个仿真全流程。

weixin_45199544的博客 6323

TI C64X DSP中断向量表的配置(硬件中断)

1. 编写中断服务例程在.c源文件中编写ISR函数c_intXX,用于中断处理,如:interrupt void c_intXX (void){           …;}注:对于硬件中断而言,XX = 00~15。 2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量           首先是把中断向量表定位到某一内存段中,我们可以在cmd文

左超 4283

【项目实战-MATLAB】:基于机器学习的虹膜识别系统设计

虹膜识别主要包括虹膜定位、虹膜裁剪、极坐标变换、归一化、HOG特征提取、虹膜识别六个主要步骤。本系统采用MATLAB作为开发工具实现 主要算法:霍夫变换预处理 HOG特征提取 SVM进行识别

qq_45047246的博客 6537

TI C64X DSP中断向量表的配置实现总结

参考内容:1.http://blog.youkuaiyun.com/henhen2002/article/details/4464205                     2.http://wenku.baidu.com/view/792df1eb6294dd88d0d26bfb.html 在非DSP/BIOS中使用CSL API进行设置如下(参考内容2中提到,在DSP/BIOS设置更简洁):

nuaamkx的专栏 5510

单细胞数据pseudobulks差异分析实战:从聚合到DESeq2

本文详细介绍了单细胞转录组数据分析中pseudobulks(伪散装)方法的实战流程。通过将同一样本的同类型细胞表达值聚合,模拟Bulk RNA-seq数据,再利用DESeq2进行稳健的差异基因分析。该方法有效降低了单细胞数据的技术噪音,特别适用于样本量有限但追求结果稳定性的研究场景,并提供了完整的R代码实现与结果解读指南。

sea99的博客 758

C#上位机国产化适配全方案:兼容统信UOS+鲲鹏/昇腾+国产PLC,可直接交付国企项目

去年下半年,我帮天津滨海新区一家给一汽丰田做配套的汽车零部件国企,完成了3条产线、12套C#上位机的全栈国产化适配。这个项目的背景很典型,也很戳中国企客户的命门:一开始客户找了两家本地的集成商,都没搞定:第一家只会用.NET Framework,根本不知道怎么在统信UOS上跑C#;第二家勉强用.NET Core 3.1跑起来了,但和汇川国产PLC的通信丢包率高达1.2%,产线根本不敢用。我们接手后,用了2个月完成全栈适配:从Windows Server 2019迁移到统信UOS 1070d服务器版,从.NE

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 497

告别裸奔中断!手把手教你用TI-RTOS的HAL模块管理硬件中断(附C64x+实战代码)

本文详细介绍了如何使用TI-RTOS的HAL模块管理硬件中断,特别是在C64x+ DSP上的实战应用。通过对象化封装和自动化上下文管理,TI-RTOS的Hwi模块显著提升了中断代码的可维护性和调试效率。文章还提供了多外设中断配置和性能优化技巧,帮助开发者高效构建复杂中断系统。

weixin_30562507的博客 351

为什么我的OpenClaw安装后无法启动?Gateway服务故障排查全攻略

OpenClaw是一款功能强大的自动化工具,但其安装和运行依赖于多个服务组件,其中Gateway服务是核心组件之一。如果Gateway服务无法启动,整个OpenClaw系统将无法正常运行。本文将详细介绍OpenClaw安装后无法启动的常见原因及故障排查方法,帮助你快速定位并解决问题。

一键难忘的博客 4622

DSP中断/BIOS

TMS320C54x系列DSP中的应用 摘要:详细分析了TMS320C54x系列DSP的中断机制,以及在扩展地址模式下中断控制所具有的一些特点,并给出了DSP/BIOS下中断的管理。   关键词:中断 中断向量表 TMS320C54x DSP/BIOS DSP中断是嵌入式芯片的灵魂,这是因为多数嵌入式系统对实时性都有很高的要求,即对出现事件的

2450

AutoSAR配置与实践(基础篇)3.2 BSW中的I/O架构和模块详解

车门位置传感器(Sensor SWC)输出的电流信号经过了一系列处理,如先被转化为电压信号,后又经ADC转换为数字信号,但是IoHwAb模块对上层隐藏了这一系列处理过程,并将数据直接抽象为它的输出接口,即车门开关状态接口。Sensor SWC 使用RTE接口直接从IoHwAb模块封装的车门开关状态,SWC它并不关心ECU硬件是如何实现的传感器电流采集,也不关心MCU ADC采样精度(如10/12位)IoHwAb把采集的电压抽象为开关状态,使得Sensor SWC不依赖具体的ECU硬件。

nihaoljq2010的博客 1300

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

DSP28335的GPIO的引脚配置

F28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31), PORTB(GPIO32-GPIO63), PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字IO口同样也能被配置为外部接口。 这样涉及到了IO的寄存器,IO口共有三类寄存器: 控制寄存器、数据寄存器和中断控制寄存器。 1、 GPIO可以配置为数字I/O或外设I/O口,GPxMUX1(2):‘...

weixin_44553164的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

DM6467 DSP中断与EMIF实战:从寄存器配置到系统调试全解析

中断系统和外部存储器接口是嵌入式SoC开发的核心基础。中断机制作为实时系统的神经中枢,通过事件映射、优先级管理和服务程序实现多任务即时响应。外部存储器接口则是数据吞吐的关键通道,其异步时序、NAND控制器与DDR2配置直接决定了系统稳定性与性能。理解中断控制器的可编程事件映射、EDMA联动以及EMIF时序参数计算,对于构建高性能视频处理、网络摄像机等嵌入式设备至关重要。本文基于TI TMS320DM6467达芬奇SoC,深入剖析DSP中断控制器与EMIF的实战配置,涵盖从事件标志、中断复用寄存器到NAND

weixin_33733810的博客 327

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: C语言中指针和数组名小趣
下一篇: 关于傅利叶变换的一些数学解释兼及其它
zhulingchen
博客等级 码龄20年 71粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值