|
|
  |
Nios II IDE, беспатный... breakpoint?? |
|
|
|
Nov 3 2009, 14:02
|
Местный
  
Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107

|
Уважаемые, подскажите пожалуйста,
У меня есть установленный ква 9 и все что с ним бесплатное с сайта альтеры.
Я генерю процессор в котором: on-chip memory 16k nios II/s cpu pio_0 - input 32pin pio_1 - input, sync IRQ, 1pin poi_2 - output, 8 pin
Далее, запускаю ниос ИДЕ, описываю пустой проект и один файл в нем - main.c Этот файл содержит следующий код:
#include <stdlib.h> volatile long long a,b,c;
int main() { a = 100; b = 0xfff; c = a*b >> 31; return 0; }
в каждой строчке ставлю по бряку и запускаю в симуляторе инструкций.
Зараза, не останавливается...
За сим вопросы: 1. Что я делаю не так здесь? 2. Можно ли в симуляторе посчитать количество тактов на выполнение куска кода? как?
Далее - мне нужно всего лишь вот что от проца: 1. По нарастающему фронту на pio_1 прочитать что на pio_0. 2. Обработать это и данные и выдать на pio_3.
И еще - я вижу, что после компиляции моей проги, инициализация занимает около 8К кода. нельзя ли эту цифру сильно уменьшить путем исключения избыточной инициализации? Ведь нужно только обнулить .bss и проинициализировать .data Если да, то как?
Заранее благодарен.
|
|
|
|
|
Nov 3 2009, 14:24
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(diwil @ Nov 3 2009, 17:02)  Далее - мне нужно всего лишь вот что от проца: 1. По нарастающему фронту на pio_1 прочитать что на pio_0. Мне кажется, что решать эту задачу через два PIO не совсем корректно. Вход в обработчик прерывания PIO может занимать до 105 тактов (это в лучшем случае), Вы уверены, что за это время данные не изменятся? Я бы сделал свой собственный модуль, который защелкивает данные по фронту, и генерит запрос прерывания. А в обработчике процессор считывает уже защелкнутые данные. Цитата(diwil @ Nov 3 2009, 17:02)  И еще - я вижу, что после компиляции моей проги, инициализация занимает около 8К кода. нельзя ли эту цифру сильно уменьшить путем исключения избыточной инициализации? Ведь нужно только обнулить .bss и проинициализировать .data Если да, то как? Ну механизмов много. Например, задание альтернативной точки входа alt_main. Смотрите раздел "Reducing code footprint" в Nios II Software Developer's Handbook
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Nov 3 2009, 15:04
|
Местный
  
Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107

|
Цитата(Stewart Little @ Nov 3 2009, 17:24)  Мне кажется, что решать эту задачу через два PIO не совсем корректно. Вход в обработчик прерывания PIO может занимать до 105 тактов (это в лучшем случае), Вы уверены, что за это время данные не изменятся? Я бы сделал свой собственный модуль, который защелкивает данные по фронту, и генерит запрос прерывания. А в обработчике процессор считывает уже защелкнутые данные. да. защелка сделана. данные остаются неизменными в течении 1250 тактов. Поэтому читаем правильные данные. А вот если обработчик так долго инициализируется, то можно как-либо его избежать? Дело в том, что данные у меня идут потоком в 40кГц и на самом деле там 4х32 линии данных. Как эти данные по фронту импуься запихать в память проца, например через DMA? Прочитал про уменьшение кода. понятно. благодарю.
|
|
|
|
|
Nov 10 2009, 11:09
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
2 Alezi Для затравки читаем это, раздел 8 - "Exception Handling" - там всё написано и написано где есчё посмотреть  . По идее под ответ вам подходит страница 206 Цитата Internal or External Interrupt Controller The Nios II IIC is nonvectored, requiring the processor to dispatch ISRs with a software routine. An EIC, by contrast, can be vectored. With a vectored EIC, such as the Altera® VIC, ISR dispatch is managed by hardware, eliminating the processing time required for ISR dispatch, and substantially reducing hardware interrupt response time. An EIC has no impact on software exception latency or response time. Shadow Register Sets In conjunction with an EIC, shadow register sets speed up hardware interrupt response by making it unnecessary to save registers on the stack. This feature has no impact on interrupt latency, but significantly reduces interrupt response time. Shadow register sets have no impact on software exception response time. ну и дальше по тексту  Я так понимаю у вас там нет VIC в вашей системе, так ? Засандальте его и померяйте время  по идее должно уменьшится
|
|
|
|
|
Nov 10 2009, 12:24
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Цитата(Alezi @ Nov 10 2009, 13:06)  И почему на разных типах процессора это время различается? Конвейер, кэши и пр. Цитата(Alezi @ Nov 10 2009, 13:06)  ... откуда информация про си-код, очень интересно! )) Гугль в помощь : How the IRQ Code Works for the Nios II Processor
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|