1

关于投票
关于DSP/BIOS的实时性问答(转载)
关于DSP/BIOS的实时性
guangjian , 2008-04-26 16:23:29
   RY你好,我最近再用C5509做音频处理,第一次使用DSP/BIOS,我用TI的TMS320AIC23采样,频率是48KHZ,我写了一个HWI用来读MCBSP和TSK用来处理,但我发现DSP只在执行HWI,根本就不执行TSK,但我把HWI mask后就开始执行TSK了,我想是不是采样太快以至于DSP只响应HWI没时间执行TSK?那么是不是就不能使用DSP/BIOS,必须裸编或者换一个更快的DSP?
RY , 2008-04-26 17:20:34

首先请确定一下DSP的工作频率是不是最快,好像5509是200MHz的。

另外不知道你的HWI由什么中断触发,是McBSP的接收中断么。如果是McBSP的中断的话,那可能一秒钟要执行48k或者96k次(双声道)HWI中断,这样DSP是吃不消的。一般都是采用DMA接收McBSP的数据,接收了一个块(例如64, 128个采样)之后再向DSP产生DMA的中断,DSP一次处理一个块。 

RE:关于DSP/BIOS的实时性
guangjian , 2008-04-26 20:57:22
 RY谢谢你的回答,我似乎有点思绪了,DSP是工作在192MHz,是mcbsp接受中断,我原先是想来一个数据就进行一次FIR处理就是sample-by-sample,这样是不是不切实际哦?如果用块处理的方式,那么输出的音频会不会有什么影响?
RY , 2008-04-26 21:39:27

sample-by-sample是行不通的。还是用DMA,用PingPong缓存的方式进行实时FIR处理吧。输出的音频会有一定的迟延,可以根据需要调整缓存的大小。

找找TI的5509DSK的例子程序学习一下吧。 

guangjian , 2008-04-26 22:28:54
 呵呵,谢谢你的回复,我在国内网站提过不少问题也在dsprelated.com上发过邮件,重来没有人回复,这是第一次有人回复我的问题还是中文的,太感动了......以后要常来你的blog 学习啊!!!!
RY , 2008-04-26 23:26:14
我学DSP的时候也是没有人问,就是看TI的例子和文档学习的,比较费劲。不过只要坚持学下来还是会很有收获的。我做过一个5509A的项目,能回答的,并且如果我有时间的话,我会帮忙的。欢迎常来。
系统分类: DSP
用户分类: DSP/BIOS
标签: 无标签
来源: 转贴
发表评论 阅读全文(67) | 回复(0)

0

关于投票
DSP RTOS(转帖)
μITRON VDK DSP/BIOS
割込み管理 Interrupt Handling HWI Hardware interrupt manager
  PushCriticalRegion  
  PopCriticalRegion  
  PopNestedCriticalRegions  
割込み管理 Interrupt Mask Handling HWI Hardware interrupt manager
def_inh    
ena_int SetInterruptMaskBits HWI_enable
dis_int ClearInterruptMaskBits HWI_disable
  GetInterruptMask  
    HWI_restore
    SWI Software interrupt manager
    SWI_self
    SWI_create
    SWI_delete
    SWI_enable
    SWI_disable
    SWI_inc
    SWI_dec
    SWI_andn
    SWI_andnHook
    SWI_or
    SWI_oHook
    SWI_getmbox
    SWI_post
    SWI_getpri
    SWI_restorepri
    SWI_raisepri
    SWI_getattrs
    SWI_setattrs
システム状態管理 Scheduler Management  
dis_dsp PushUnscheduledRegion  
ena_dsp PopUnscheduledRegion  
  PopNestedUnscheduledRegions  
sns_dsp    
メモリプール管理 Block Memory Management MEM Memory manager
cre_mpl, cre_mpf CreatePool MEM_define, MEM_redefine
del_mpl, del_mpf DestroyPool  
get_mpl, get_mpf MallocBlock MEM_alloc, MEM_valloc, MEM_calloc
rel_mpl, rel_mpf FreeBlock MEM_free
ref_mpl, ref_mpf GetNumAllocatedBlocks MEM_stat
ref_mpl, ref_mpf GetNumFreeBlocks MEM_stat
  LocateAndFreeBlock  
システム状態管理 Thread and System Information TSK Multitasking manager
get_tid GetThreadID TSK_self
ref_tsk GetThreadStatus TSK_getsts
ref_ver GetVersion  
  GetHeapIndex  
  GetThreadHandle  
  GetThreadStackUsage TSK_checkstacks
  GetThreadStack2Usage  
  InstrumentStack  
時間管理 Thread and System Information CLK System clock manager
  GetUptime  
  SetClockFrequency  
  GetClockFrequency  
  SetTickPeriod  
  GetTickPeriod CLK_gethtime, CLK_getltime
    CLK_countspms
    CLK_getprd
set_tim    
get_tim    
システムログ機能 Thread and System Information LOG Event Log manager
vwri_log LogHistoryEvent  
vrea_log    
vmsk_log    
    LOG_disable
    LOG_enable
    LOG_error, LOG_message
    LOG_event
syslog   LOG_printf
    LOG_reset
タスク管理 Thread Creation and Destruction TSK Multitasking manager
cre_tsk CreateThread TSK_create
del_tsk DestroyThread TSK_delete
act_tsk, sta_tsk   TSK_enable
can_act   TSK_disable
ext_tsk   TSK_exit
ter_tsk    
  FreeDestroyedThreads  
  Thread Local Storage TSK Multitasking manager
  AllocateThreadSlot  
  FreeThreadSlot  
  SetThreadSlotValue TSK_setenv
  GetThreadSlotValue TSK_getenv
    HOOK_setenv
    HOOK_getenv
タスク例外処理 Thread Error Management TSK Multitasking manager
def_tex    
ras_tex DispatchThreadError  
ena_tex SetThreadError TSK_seterr
dis_tex ClearThreadError  
ref_tex GetLastThreadError TSK_geterr
sns_tex GetLastThreadErrorValue  
タスク管理 Thread Priority Management TSK Multitasking manager
chg_pri SetPriority TSK_setpri
get_pri GetPriority TSK_getpri
  ResetPriority  
rot_rdq    
タスク付属同期 Thread Scheduling Control TSK Multitasking manager
dly_tsk Sleep TSK_sleep
  Yield TSK_yield
rel_wai    
slp_tsk, wup_tsk    
sus_tsk, rsm_tsk    
can_wup    
    TSK_settime
    TSK_getname
    TSK_deltatime
    TSK_tick, TSK_itick
    TSK_stat
セマフォ Semaphore Management SEM Semaphores manager
cre_sem CreateSemaphore SEM_create
del_sem DestroySemaphore SEM_delete
ref_sem GetSemaphoreValue SEM_count
wai_sem PendSemaphore SEM_pend
sig_sem PostSemaphore SEM_post, SEM_ipost
pol_sem    
    SEM_new
    SEM_reset
周期ハンドラ Semaphore Management PRD Periodic function manager
cre_cyc    
sta_cyc MakePeriodic PRD_start
stp_cyc RemovePeriodic PRD_stop
    PRD_getticks
    PRD_tick
イベントフラグ Event and EventBit  
cre_flg LoadEvent  
wai_flg PendEvent  
set_flg SetEventBit  
clr_flg ClearEventBit  
  GetEventBitValue  
  GetEventData  
  GetEventValue  
pol_flg    
  Device Flags  
  CreateDeviceFlag  
  DestroyDeviceFlag  
  PendDeviceFlag  
  PostDeviceFlag  
  Device Driver DEV Device driver interface
    DEV_match
  OpenDevice Dxx_open
  CloseDevice Dxx_close
  SyncRead  
  SyncWrite  
  DeviceIOCtl Dxx_ctrl
    Dxx_idle
    Dxx_init
    Dxx_issue
    Dxx_ready
    Dxx_reclaim
    PIP Buffered pipe manager
    PIP_alloc
    PIP_free
    PIP_reset
    PIP_get
    PIP_put
    PIP_peek
    PIP_getReaderAddr
    PIP_getReaderNumFrames
    PIP_getReaderSize
    PIP_getWriterAddr
    PIP_getWriterNumFrames
    PIP_getWriterSize
    PIP_setWriterSize
    SIO Stream I/O manager
    SIO_bufsize
    SIO_create
    SIO_ctrl
    SIO_delete
    SIO_flush
    SIO_get
    SIO_idle
    SIO_issue
    SIO_put
    SIO_reclaim
    SIO_segid
    SIO_select
    SIO_staticbuf
メッセージバッファ Message  
cre_mbf CreateMessage  
del_mbf DestroyMessage  
rcv_mbf PendMessage  
snd_mbf PostMessage  
  ForwardMessage  
ref_mbf MessageAvailable  
  GetMessageDetails  
  SetMessagePayload  
  GetMessagePayload  
  FreeMessagePayload  
  DestroyMessageAndFreePayload  
  GetMessageReceiveInfo  
  InstallMessageControlSemaphore  
データキュー   QUE Queue manager
cre_dtq   QUE_create
del_dtq   QUE_delete
snd_dtq   QUE_put
rcv_dtq   QUE_get
    QUE_enqueue
    QUE_dequeue
    QUE_empty
    QUE_head
    QUE_insert
    QUE_new
    QUE_next
    QUE_prev
    QUE_remove
メールボックス   MBX Mailboxes manager
cre_mbx   MBX_create
del_mbx   MBX_delete
snd_mbx   MBX_post
rcv_mbx   MBX_pend
ミューテックス   LCK Resource lock manager
cre_mtx   LCK_create
del_mtx   LCK_delete
loc_mtx   LCK_post
unl_mtx   LCK_pend
ref_mtx    
システム構成管理    
def_exc    
att_ini    
vatt_ter    
システム状態管理    
loc_cpu    
unl_cpu    
sns_loc    
sns_ctx    
sns_dpn    
vsns_ini    
    RTDX Real-time data exchange manager
    RTDX_channelBusy
    RTDX_CreateInputChannel
    RTDX_CreateOutputChannel
    RTDX_disableInput
    RTDX_disableOutput
    RTDX_enableInput
    RTDX_enableOutput
    RTDX_isInputEnabled
    RTDX_isOutputEnabled
    RTDX_read Read
    RTDX_readNB
    RTDX_sizeofInput
    RTDX_write
    STS Statistics object manager
    STS_add
    STS_delta
    STS_reset
    STS_set
    SYS System services manager
    SYS_abort
    SYS_atexit
    SYS_error
    SYS_exit
    SYS_printf, SYS_sprintf, SYS_vprintf, SYS_vsprintf
    SYS_putchar
    TRC Trace manager
    TRC_disable
    TRC_enable
    TRC_query
1
系统分类: DSP
用户分类: DSP/BIOS
标签: 无标签
来源: 转贴
发表评论 阅读全文(51) | 回复(0)
总共 , 当前 /