|
sam9xe MMU EMAC uIP |
|
|
|
Aug 12 2011, 18:22
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809

|
Здравствуйте! Модифицировал простой работающий на at91sam9xe-ek пример basic-emac-uip-helloworld-project из IAR 6, добавил поддержку d-cache и i-cache. После чего он частично перестал работать. Функция EMAC_Poll() возврашает код "нет принятых данных". Ниже вывод программы в терминале: CODE PreInitMMU InitMMU - done. -- Basic EMAC uIP Project 1.7-rc1 -- -- AT91SAM9XE-EK -- Compiled: Aug 11 2011 14:49:07 -- - MAC 0:45:56:78:9a:bc - Host IP 192.168.0.201 - Router IP 192.168.0.77 - Net Mask 255.255.255.0 -I- ** Valid PHY Found: 0 -I- AutoNegotiate complete P: Link detected P: clock time initialize - TC0 P: APP Init ... hello-world Код проекта в приложении:
at91sam9xe_ek_basic_emac_uip_helloworld_prj.rar ( 470.7 килобайт )
Кол-во скачиваний: 75Помогите разобраться!
|
|
|
|
|
 |
Ответов
|
Aug 16 2011, 20:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
1. Если честно, то так как вы инициализируете таблицу TTB ни без поллитры, ни с поллитрой не понять. В ecos есть хороший пример, как это внятно сделатъ. 2. Затем я бы перепроверил, действительно ли буфера и прочее попали в некешируемую область. 3. Внимателъно проверить правильно ли инициализирована структура дескриптора.
|
|
|
|
|
Aug 22 2011, 07:22
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809

|
Цитата(sergeeff @ Aug 17 2011, 00:00)  2. Затем я бы перепроверил, действительно ли буфера и прочее попали в некешируемую область. Здравствуйте! Сегодня вышел на работу, перепроверил еще раз таблицы трансляции, нашел ошибку. Изменил icf, адреса сегментов таблиц, но не поменял адрес таблицы второго уровня в коде. Мои изменения за беспокойство! Всем спасибо! Добавляю работающий код (к проекту basic-emac...).
const_flash.rar ( 1.9 килобайт )
Кол-во скачиваний: 85
|
|
|
|
|
Aug 22 2011, 07:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(taoga @ Aug 22 2011, 10:22)  Здравствуйте! Сегодня вышел на работу, перепроверил еще раз таблицы трансляции, нашел ошибку. Изменил icf, адреса сегментов таблиц, но не поменял адрес таблицы второго уровня в коде. Мои изменения за беспокойство! Всем спасибо! Добавляю работающий код (к проекту basic-emac...).
const_flash.rar ( 1.9 килобайт )
Кол-во скачиваний: 85А вспомните, как вы первый раз ответили насчет проверенных-перепроверенных таблиц? Руками заполненная таблица в 4096 байт постоянный потенциальный источник проблем.
|
|
|
|
|
Aug 22 2011, 18:24
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809

|
Цитата(sergeeff @ Aug 22 2011, 11:52)  А вспомните, как вы первый раз ответили насчет проверенных-перепроверенных таблиц? Руками заполненная таблица в 4096 байт постоянный потенциальный источник проблем. Мои извинения за беспокойство! Всем спасибо!
|
|
|
|
|
Aug 26 2011, 18:03
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809

|
Здравствуйте! Заменил uIP на lwIP 1.3.2. За основу взял простой пример
tcpecho_raw.rar ( 3.58 килобайт )
Кол-во скачиваний: 85Как и раньше не использую SDRAM и соответственно в настройках lwIP все по минимуму. Получил скорость 1,7 Мбайт/сек. Пока не смог модифицировать проект для передачи потока данных от микроконтроллера в ПК. В связи с этим вопрос: Почти все примеры для TCP из lwIP используют методику запрос/ответ, т.е. на запрос с ПК возвращается порция данных. Как сделать, что-бы на запрос началась непрерывная передача данных? Как правильно использовать tcp_write не из callback функций, т.е. чтобы контроллер выступал инициатором передачи данных?
|
|
|
|
|
Sep 5 2011, 09:45
|
Участник

Группа: Участник
Сообщений: 51
Регистрация: 8-10-09
Пользователь №: 52 809

|
Цитата(taoga @ Aug 26 2011, 22:03)  Здравствуйте! Заменил uIP на lwIP 1.3.2. За основу взял простой пример
tcpecho_raw.rar ( 3.58 килобайт )
Кол-во скачиваний: 85Как и раньше не использую SDRAM и соответственно в настройках lwIP все по минимуму. Получил скорость 1,7 Мбайт/сек. Пока не смог модифицировать проект для передачи потока данных от микроконтроллера в ПК. В связи с этим вопрос: Почти все примеры для TCP из lwIP используют методику запрос/ответ, т.е. на запрос с ПК возвращается порция данных. Как сделать, что-бы на запрос началась непрерывная передача данных? Как правильно использовать tcp_write не из callback функций, т.е. чтобы контроллер выступал инициатором передачи данных? Исправил ошибки, все заработало, без оптимизации lwip с драйверами Atmel. Lwip 1.3.1, raw TCP/IP без FreeRtos. Данные "заталкиваю" в стек из основного цикла программы. Для размера сегмента: 512 байт - скорость 7 Мбайт/сек. 1024 байт - 10 Мбайт/с. Больше не экспериментировал, т.к. в проекте не используется SDRAM. Все буферы в SRAM.
|
|
|
|
Сообщений в этой теме
taoga sam9xe MMU EMAC uIP Aug 12 2011, 18:22 aaarrr Вы буферы EMAC не закэшировали ли часом? Aug 12 2011, 19:45 taoga Цитата(aaarrr @ Aug 12 2011, 23:45) Вы бу... Aug 13 2011, 05:16 taoga Цитата(aaarrr @ Aug 12 2011, 23:45) Вы бу... Aug 15 2011, 10:29  taoga Цитата(taoga @ Aug 15 2011, 14:29) EMAC_H... Aug 16 2011, 09:56   aaarrr Цитата(taoga @ Aug 16 2011, 13:56) Может ... Aug 16 2011, 10:21 sergeeff Надеюсь область периферии не забыли тоже объявить ... Aug 16 2011, 15:52 taoga Цитата(sergeeff @ Aug 16 2011, 19:52) Над... Aug 16 2011, 16:42 taoga Цитата(sergeeff @ Aug 17 2011, 00:00) 1. ... Aug 17 2011, 04:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|