Перейти к содержанию
    

Еще один девайс из low cost на BF532

Вообщем добрый вечер или день у кого как :)

Сделали платку на Фине и на втором циклоне 2 пишу в данный момент лоадер для прошивания и отладки по RS232 есть идея написать типа консоли позволяющей просматривать содержмое памяти путем посыла команд проц завелся все грузиться светодиод дрыгает плл работает с уартом! Вопрос в том почему то при обращении даже к внутренней памяти для просмотра содержимого по адресу проц виснет и лечиться только перезагрузкой :( пишу на си VDSP 5.0 код

data_to_addr=*((unsigned int *)start_addr); //читаем даннные по заданному адресу

cd_hex(data_to_addr);//переводим в ASCII

soft_uart_tx('|'); //отправляем их в прорт уарт

soft_uart_tx('0'); //отправляем их в прорт уарт

soft_uart_tx('x'); //отправляем их в прорт уарт

soft_uart_tx_mess(rx_data_comm,8,0);//отправляем их в прорт уарт

soft_uart_tx('\n');//отправляем их в прорт уарт

soft_uart_tx(0x0d);//отправляем их в прорт уарт

Вопрос сообственно в том что может мешать просмотру в таком варворском реживе содердимого памяти :)) ну разработка полу кустарная так что просьба тысяци баксов не сулить и джитаг :)) Может просто в синтаксисисе чтото напутанно подскажите плиз !!

собственно проект почти открыт в первой ревизии плат нашел пока три косяка ну не больший по мелочи все лечиться перебросом проводников :)) инфо по плате в прикреплении ! Алтай далеко от москвы так что интересы тут другие не судите строго :)) Рад буду любой посказке

1.pdf

2.pdf

post-8220-1245241929_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да прикольно смотрятся!

Жаль по теме сказать не могу....с аналог девайсез не работал :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините что не в тему, а для чего на плате ставить лэйблы производителей?

Наверное, для того же, для чего стоят на зубилах красные брызговики SPARCO

+10 к мощности

+20 к карме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чё-то там мутно всё как-то...

data_to_addr=*((unsigned int *)start_addr); start_addr

cd_hex(data_to_addr);тут уже data_to_addr

soft_uart_tx('|'); //отправляем их в прорт уарт

soft_uart_tx('0'); //отправляем их в прорт уарт

soft_uart_tx('x'); //отправляем их в прорт уарт

soft_uart_tx_mess(rx_data_comm,8,0); а отправляем вообще rx_data_comm это cd_hex() его устанавливает???

soft_uart_tx('\n');//отправляем их в прорт уарт

soft_uart_tx(0x0d);//отправляем их в прорт уарт

 

Я уже молчу про *((unsigned int *)start_addr); :)

 

ИМХО, нехрен там делать, если нет JTAGа. Вы там запаритесь через UART его отлаживать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

start_addr - очевидно дефайн на область внутренней памяти.

data_to_addr - берем значение по указателю

парсим его в rx_data_comm

и шлем.

так что все нормально.

проблема может быть, если start_addr указывает на недоступную область памяти. Тогда вызывает аппаратное исключение и контроллер "зависнет". Недоступным может быть и внешняя SDRAM и SRAM, если ее правильно не проинициализировать.

 

кстати, отличная идея написать debug-agent который будет по UART выплевывать нужные переменные или области памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как вариант, start_addr может быть не выровнен по 32 битной границе.

Вообще, можно установить обработчики на exception (EVX) и hardware error (IVHW), а в них вывести в uart значение регистра SEQSTAT. По нему можно попытаться определить что именно не понравилось процессору.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за интерес !

Вообщем start_addr - адресс который получин от пользователя в шеснацатиричном виде его тип int 32 разряда

data_to_addr- переменная типа int в которую попадет запрошенные пользователем данные с адреса start_addr

cd_hex(data_to_addr);- функция которая декадирует число шеснацитиричное в массив символов (чисел от 0 до f) и помещает их в массив rx_data_comm который потом отправляеться по уарту на экран терменала вот

Может ктото пример настройки прерывания по понятней выложить а то я с ним еще не разобрался а примеры мудреные те что идут VDSP ?? буду оч презнателен :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В VDSP примеры не мудренные.. Они просто индуские :)

А с прерываниями нет ничего сложного.

#include <sys/exception.h>

EX_INTERRUPT_HANDLER(handler_function_name)
{
  // собственно тут и обрабатываем прерывание
}

void InitInterrupts()
{
  // регистрируем ф-цию handler_function_name как обработчик прерывания
  // ivg7 и разрешаем это прерывание
  register_handler_ex(ik_ivg7, handler_function_name, EX_INT_ENABLE);
}

Детали смотрите в help-е, там все неплохо расписано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буду пробывать эксперементировать разбераться с библиотекой :)) а про продажу ну мона посмотреть в принципе есть щас 12 плат что много для нас так что кто знает :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...