Jump to content

    
Sign in to follow this  
shamrel

Короткие вопросы по DSP BIOS

Recommended Posts

Уважаемые Знатоки, мастера и Гуру! Нужна ваша помощь в освоение DSP/BIOS. Читаю документацию, однако после прочитанного все равно остаются вопросы. Для того что бы упростить процесс общения, предлагаю следующий формат. Задаю вопросы, предполагающие однозначный ответ: да ли нет (иногда несколько да/нет на вопрос ).

Я Искренне надеюсь, что подобный формат позволит другим новичкам разобраться с DSP/BIOS.

Текущие вопросы возникли после изучения Using DSP/BIOS in C2800 Applications with High Interrupt Rates и экспериментирования с TMS320F28069. Я понимаю, что в spraax9 все написано.

 

1. При настройке HWI в Configuration Tools, после активации (установка галочки ) Dispatcher предлагается выбрать Interrupt Mask IER0. Там где в маске единичка (например, маска 0х0100, единичка в восьмом бите) та группа прерываний будет отключена при вызове обработчика (в примере девятая группа PIE_INT9_x)?

2. Если мне не допустимы (или не нужны) вложенные прерывания я в маску должен записать все единички?

3. После выхода из обработчика прерывания (HWI с использованием Dispatcher) текущее прерывание включается автоматически? Или нужно «взводить» его руками?

4. После выхода из обработчика другие прерывания включаются заново, если были запрещены маской (см. первый вопрос.)?

 

Share this post


Link to post
Share on other sites
Я Искренне надеюсь, что подобный формат позволит другим новичкам разобраться с DSP/BIOS.

и я крайне искренен в своих надеждах =) ждем помощи

Share this post


Link to post
Share on other sites
3. После выхода из обработчика прерывания (HWI с использованием Dispatcher) текущее прерывание включается автоматически? Или нужно «взводить» его руками?

4. После выхода из обработчика другие прерывания включаются заново, если были запрещены маской (см. первый вопрос.)?

в этой ветке форума указал на юзер гайд и главу, которую надо прочитать. там есть важное замечаение. по-моему, оно Вам подходит :

"When configuring an interrupt with the Configuration Tool, DSP/BIOS plugs

in the corresponding ISR (interrupt service routine) to the appropriate

location of the interrupt service table. However, DSP/BIOS does not enable

the interrupt bit in IER. It is your responsibility to do this at startup or

whenever appropriate during the application execution.

"

Как я сам понял, нужно ручками взводить

Edited by beaRTS

Share this post


Link to post
Share on other sites
1. При настройке HWI в Configuration Tools, после активации (установка галочки ) Dispatcher предлагается выбрать Interrupt Mask IER0. Там где в маске единичка (например, маска 0х0100, единичка в восьмом бите) та группа прерываний будет отключена при вызове обработчика (в примере девятая группа PIE_INT9_x)?

2. Если мне не допустимы (или не нужны) вложенные прерывания я в маску должен записать все единички?

3. После выхода из обработчика прерывания (HWI с использованием Dispatcher) текущее прерывание включается автоматически? Или нужно «взводить» его руками?

4. После выхода из обработчика другие прерывания включаются заново, если были запрещены маской (см. первый вопрос.)?

Вот еще подробности, относящиеся к Вашим вопросам, найденные при чтении DSP/BIOS User’s Guide (я читаю применительно к С6000 spru303b.pdf). Раздел 4.2.3 "Context and Interrupt Management within Interrupts" стр 91 (по ихнему стр 4-14): (переводить лень=) )

"HWI_enter and HWI_exit both take four parameters:

-- The first two, ABMASK and CMASK, specify which A, B, and control

registers are to be saved and restored by the ISR.

-- The third parameter, IEMASK, is a mask of those interrupts that are to be

disabled between the HWI_enter and HWI_exit macro calls.

When an interrupt is triggered, the processor disables interrupts globally

(by clearing the GIE bit in the control status register (CSR)) and then

jumps to the ISR set up in the interrupt service table. The HWI_enter

macro reenables interrupts by setting the GIE in the CSR. Before doing

so, HWI_enter selectively disables bits in the interrupt enable register

(IER) determined by the IEMASK parameter. Hence, HWI_enter gives

you control to select what interrupts can and cannot preempt the current

HWI function.

When HWI_exit is called, the bit pattern in the IEMASK determines what

interrupts are restored by HWI_exit by setting the corresponding bits in

the IER. Of the interrupts in IEMASK, HWI_exit restores only those that

were disabled with HWI_enter. If upon exiting the ISR you do not wish to

restore one of the interrupts that was disabled with HWI_enter, do not set

that interrupt bit in IEMASK in HWI_exit. HWI_exit does not affect the

status of interrupt bits that are not in IEMASK.

"

предыстория страницей ранее о том, что такое HWI_enter & HWI_exit:

"When a hardware interrupt preempts the function that is currently executing,

the HWI function must save and restore any registers it uses or modifies.

DSP/BIOS provides the HWI_enter assembly macro to save registers and the

HWI_exit assembly macro to restore registers. Using these macros gives the

function that was preempted the same context when it resumes running.

These macros also handle which interrupts are disabled while the ISR runs.

In order to support interrupt routines written completely in C, DSP/BIOS

provides an HWI dispatcher that performs these enter and exit macros for an

interrupt routine."

 

т.е. ответы на Ваши вопросы, наверно, (пусть меня поправят знатоки, которые молчат) такие:

1. ДА

2. ДА

3. Кажись, автоматически разрешаются те, что были маской запрещены для прерывания

Edited by beaRTS

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this