Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.08.2010, 17:12
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
MMNET1001 + Ethernet
Здравствуйте.
Имеется некое устройство MMNET1001.
Требуется принимать данные по Ethernet. Не знаю с какой стороны подступиться: скачал документацию на само устройство, скачал документацию на контроллер AT91SAM9260, скачал Keil RealView Microcontroller Development Kit v4.12 и RealView Real-Time Library v4.12. Ищу, читаю ничего не понимаю, не знаю с какой стороны подступиться. В мануале ничего не сказано про то как все это связанно с языком СИ. Как все это конфигуровать?
Я с контроллерами никогда дела не имел и вообще не представляю как с ними работать, как подключать, как программировать и не знаю с чего начать. С Keil тоже.
Мне бы еще найти простенькие примеры с подробнейшим описанием, где было бы написано как включать, как программировать, что за что отвечает и т.д. И желательно на русском.
Люди добрые подскажите как быть в такой ситуации? С чего начать? Может кто поделится хоть какой-нибудь информацией или что-то посоветует?
Заранее спасибо.
|
|
|
|
03.08.2010, 20:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: MMNET1001 + Ethernet
начинайте отсюда: https://kazus.ru/forums/showthread.php?t=14719 тема большая, и работы Вам предстоит много. Но дорогу осилит идущий. А устройство вкусное
__________________
misterdi<@>i.ua
|
|
|
Сказали "Спасибо" MisterDi
|
|
|
03.08.2010, 22:01
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Да, спасибо я это сейчас и читаю.
|
|
|
|
03.08.2010, 22:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Читайте лучше как поставить линукс на свою плату. Тогда и эзернет сам заработает.
Описание на польском имеется.
Иначе до эзернета Вам предстоит долгий путь.
|
|
|
|
04.08.2010, 07:21
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Цитата:
|
Тогда и эзернет сам заработает.
|
А что значит сам заработает?
|
|
|
|
04.08.2010, 12:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Сообщение от ZED®
|
А что значит сам заработает?
|
Это значит что стек TCP/IP неотъемлемая часть ОС линукс. Если сборка будет под Вашу плату, то и драйвер под Ваш PHY там уже интегрирован. Значит все заработает "из коробки". Вы вот тут на форуме сообщения как то пишете. Значит у Вас TCP/IP уже работает на компе. Много Вы для этого кода написали?
|
|
|
|
04.08.2010, 14:19
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Классное объяснение ![Респект!](images/smilies/icon_respect.gif)
Было бы круто, а куда он будет это все записывать во внутреннюю память или во Flash?
И еще хотел спросить, в документации на MMNET указано, что на него нужно ставить Linux 2.6.29.3, а можно поставить Linux 2.6.32?
Последний раз редактировалось ZED®; 05.08.2010 в 08:10.
|
|
|
|
05.08.2010, 11:46
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Жалко, что тема, которую посоветовал MisterDi не продолжается, у автора видимо творческий кризис. После адресного пространства нет статей, а жаль очень хорошо объяснял.
|
|
|
|
01.11.2010, 23:26
|
|
Частый гость
Регистрация: 03.08.2010
Сообщений: 23
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Доброго всем здравия!!!
Начал разбираться с EMAC для AT91SAM9260. Имеется документация на сам контроллер и тестовый пример для IAR под названием basic-emac-uip-webserver-project-at91sam9260-ek. В этой теме далее планируется задавать вопросы, которые касаются проблемы запуска Ethernet на вышеупомянутом контроллере и просто непонятные вещи.
Первый вопрос заключается в следующем. В файле emac.h имеются некоторые указатели на функции:
Код:
|
/// Callback used by send function
typedef void (*EMAC_TxCallback)(unsigned int status); // EMAC_TxCallback - указатель на функцию, возвращающую void и принимающую unsigned int
typedef void (*EMAC_RxCallback)(unsigned int status); // EMAC_RxCallback - указатель на функцию, возвращающую void и принимающую unsigned int
typedef void (*EMAC_WakeupCallback)(void); // EMAC_WakeupCallback - указатель на функцию, возвращающую void и принимающую void |
Далее они используются, например в функции EMAC_Handler, которая управляет прерываниями, расположенной в emac.c:
Код:
|
volatile EmacTxTDescriptor *pTxTd;
volatile EMAC_TxCallback *pTxCb; |
Код:
|
if (rxTd.rxCb) {
rxTd.rxCb(rxStatusFlag);
} |
Код:
|
if (*pTxCb) {
(*pTxCb)(txStatusFlag);
} |
Я так понял это так называемые обратные функции, но что они делают нигде не определено (по-крайней мере я не нашел). Вопрос собственно для чего они нужны?
Еще один вопрос, что выполняет следующий кусок кода в той же функции EMAC_Handler и для чего он нужен? Можно ли обойтись без всего этого?
Код:
|
// Check the buffers
while (CIRC_CNT(txTd.head, txTd.tail, TX_BUFFERS)) {
pTxTd = txTd.td + txTd.tail;
pTxCb = txTd.txCb + txTd.tail;
// Exit if buffer has not been sent yet
if ((pTxTd-›status & EMAC_TX_USED_BIT) == 0) {
break;
}
// Notify upper layer that packet has been sent
if (*pTxCb) {
(*pTxCb)(txStatusFlag);
}
CIRC_INC( txTd.tail, TX_BUFFERS );
}
// If a wakeup has been scheduled, notify upper layer that it can send
// other packets, send will be successfull.
if( (CIRC_SPACE(txTd.head, txTd.tail, TX_BUFFERS) ›= txTd.wakeupThreshold)
&& txTd.wakeupCb) {
txTd.wakeupCb();
} |
И еще один вопрос. В функции EMAC_Init, расположенной в emac.c есть следующие строки:
Код
Код:
|
// Инициализация дескриgторов передающего буфера.
for(Index = 0; Index ‹ TX_BUFFERS; Index++) {// Цикл по количеству передающих буферов
// Инициализация адресов дескрипторов передающего буфера
Address = (unsigned int)(&(pTxBuffer[Index * EMAC_TX_UNITSIZE]));
txTd.td[Index].addr = Address; // Нет Маски, т.к. Слово 0 - адрес начала буфера
txTd.td[Index].status = EMAC_TX_USED_BIT; // Установка для всех буферов бита used!!!
}
txTd.td[TX_BUFFERS - 1].status = EMAC_TX_USED_BIT | EMAC_TX_WRAP_BIT; |
Строка txTd.td[Index].status = EMAC_TX_USED_BIT; устанавливает биты 31 в слове 1 ВСЕХ дескрипторов в единицу, тогда как в документации сказано, что этот бит должен быть установлен только для первого буфера, а при инициализации все биты 31 из слова 1 должны быть сброшены:
Цитата:
|
This bit is only set for the first buffer in a frame unlike receive where all buffers have the Used bit set once used.
Mark all entries in this list as owned by EMAC, i.e. bit 31 of word 1 set to 0.
|
Вопрос: Пример не соответствует документации? Будет ли он работать и как все таки правильно?
|
|
|
|
08.11.2010, 16:14
|
|
Временная регистрация
Регистрация: 16.05.2007
Сообщений: 59
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 9 сообщении(ях)
|
Re: MMNET1001 + Ethernet
Сообщение от ZED®
|
В файле emac.h имеются некоторые указатели на функции:
|
Это не указатели на функции, это задание типа с помощью typedef.
Сообщение от ZED®
|
Вопрос: Пример не соответствует документации? Будет ли он работать и как все таки правильно?
|
В документации сказано про прием, а не про передачу.
ZED®, посмотрите лучше как поляки запускают и юзают линукс на этой плате, а то вы как-то с места в карьер.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:14.
|
|