реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Работа с AVR - CDC
Oleg_IT
сообщение May 24 2007, 07:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Сделал связь AVR с PC через USB на libusb. Работает. Но для этого на РС нужно ставить драйвера, для заказчика это не удобно. Решил перейти на AVR – CDC. Взял проект AVR-CDC.2006-08-28 на ATtiny45. Не работает. Загружаю их прошивки cdctiny45.hex или cdctiny45r.hex, по осциллографу вижу, что какой-то обмен идёт, но РС пишет Unknown Device. Работаю в IAR проект для ATtiny45 не компилится из-за старой не решённой проблеме:
Error[e16]: Segment NEAR_Z (size: 0x8c align: 0) is too long for segment definition. At least 0x1 more bytes needed. The problem occurred while processing the
segment placement command "-Z(DATA)NEAR_I,NEAR_Z=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE:+_..X_EXT_SRAM_SIZE", where at the
moment of placement the available memory ranges were "DATA:d5-15f,DATA:15f--1"

Кто сделал такое устройство, помогите разобраться.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 24 2007, 07:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Oleg_IT @ May 24 2007, 10:29) *
Сделал связь AVR с PC через USB на libusb. Работает. Но для этого на РС нужно ставить драйвера, для заказчика это не удобно. Решил перейти на AVR – CDC. Взял проект AVR-CDC.2006-08-28 на ATtiny45. Не работает. Загружаю их прошивки cdctiny45.hex или cdctiny45r.hex, по осциллографу вижу, что какой-то обмен идёт, но РС пишет Unknown Device. Работаю в IAR проект для ATtiny45 не компилится из-за старой не решённой проблеме:
Error[e16]: Segment NEAR_Z (size: 0x8c align: 0) is too long for segment definition. At least 0x1 more bytes needed. The problem occurred while processing the
segment placement command "-Z(DATA)NEAR_I,NEAR_Z=_..X_SRAM_BASE-_..X_SRAM_END,_..X_EXT_SRAM_BASE:+_..X_EXT_SRAM_SIZE", where at the
moment of placement the available memory ranges were "DATA:d5-15f,DATA:15f--1"

Кто сделал такое устройство, помогите разобраться.

Re: ошибка
попробуйте в настройках проекта отобрать пару байтов у стека, и добавить для переменных.
Re: CDC
Я лично не верю в устойчивую работу этой связи. Мне предлагали поисследовать, я отказался.
А Вы согласились? smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение May 24 2007, 07:55
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



У меня CSTACK 0x10, RSTACK 8, меньше не могу, лезут другие ошибки. Модель памяти Small. Откуда ещё байтики можно безболезненно изъять?

Цитата(Dog Pawlowa @ May 24 2007, 11:40) *
Re: CDC
Я лично не верю в устойчивую работу этой связи. Мне предлагали поисследовать, я отказался.
А Вы согласились? smile.gif

Советуете остаться на libusb и уговорить заказчика?
Go to the top of the page
 
+Quote Post
GDI
сообщение May 24 2007, 07:56
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Error[e16]: Segment NEAR_Z (size: 0x8c align: 0) is too long for segment definition. At least 0x1 more bytes needed.

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


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
KRS
сообщение May 24 2007, 08:03
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(GDI @ May 24 2007, 11:56) *
Такая ошибка у кого то уже была и решилать увеличением размера стека, если я не путаю, попробуйте поиск по форуму.

NEAR_Z - это не стек это сегмнт данных которые заполняются 0
всего 1 байта не хватает smile.gif
Надо убрать перменную какую нибудь 1
может перенести ее GPIORx у 45 тиньки есть 3 регистра в портах общего назначения вот 3 байта и освободится
Go to the top of the page
 
+Quote Post
GDI
сообщение May 24 2007, 08:12
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Необходимые размеры стека, да и адреса размещения блоков в памяти можно узнать если сделать листинг линкера, лучше в хтмлл формате со всеми галками.

Цитата
NEAR_Z - это не стек это сегмнт данных которые заполняются 0

Вот именно - не хватает байта, просто сегмент и стек перекрываются... или еще с чем то конфликтует... надо посмотреть чего там линкер наразмещал.

2OlegIT проект программатора AVR910USB от prottosa сделан тоже на CDC он разместил исходники - они компилируются в ИАРе, правда у него мега8.... а проблемы с сегментом вроде были у кого то кто его проект хотел на мега48 переделать..


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 24 2007, 08:13
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Oleg_IT @ May 24 2007, 10:55) *
Советуете остаться на libusb и уговорить заказчика?

Нельзя доверять левым решениям.
Потом начнется - на этом компьютере работает, на этом не работает, кто виноват.
И я догадываюсь, кто будет виноват smile.gif
P.S. Могу ошибаться.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение May 24 2007, 08:16
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



При ошибке линковщик мапа не делает, и посмотреть размещение негде. Компилится и линкуется, например на ATmega32 (но тоже не работает), но там же всё по-другому.
Попробую поискать, где байтик сэкономить можно.
Go to the top of the page
 
+Quote Post
KRS
сообщение May 24 2007, 08:22
Сообщение #9


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Oleg_IT @ May 24 2007, 12:16) *
При ошибке линковщик мапа не делает, и посмотреть размещение негде. Компилится и линкуется, например на ATmega32 (но тоже не работает), но там же всё по-другому.
Попробую поискать, где байтик сэкономить можно.

Там же есть GPIORx туда можно 3 переменных перенсти вот и будет 3 байта
Go to the top of the page
 
+Quote Post
GDI
сообщение May 24 2007, 08:34
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Надо искать где определен этот сегмент NEAR_Z и рыть там


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение May 24 2007, 10:20
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Цитата(KRS @ May 24 2007, 12:22) *
Там же есть GPIORx туда можно 3 переменных перенсти вот и будет 3 байта


Есть, но они заняты под программный USART.
И ещё, говорят, что CDC меняет номер COM порта при следующих подключениях.
Go to the top of the page
 
+Quote Post
GDI
сообщение May 24 2007, 12:57
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Может при последующих включениях в другие порты? Я могу говорить про программатор от проттоса, который я уже упоминал, при перевключении в тот же порт - нопер порта не меняется, при включении в новый порт он требует установить драйвера и встает другим номером, и это естественно. Номер порта в последствии можно поменять.
Про проблемы с номером порта я слышал у ftdi без подключения микросхемы еепром.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение May 24 2007, 16:35
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Цитата
usbdrv.h:
Hardware Prerequisites:
=======================
USB lines D+ and D- MUST be wired to the same I/O port. D+ must (also) be
connected to INT0. D- requires a pullup of 1.5k to +3.5V (and the device
must be powered at 3.5V) to identify as low-speed USB device. A pullup of
1M SHOULD be connected from D+ to +3.5V to prevent interference when no USB
master is connected. We use D+ as interrupt source and not D- because it
does not trigger on keep-alive and RESET states.

As a compile time option, the 1.5k pullup resistor on D- can be made
switchable to allow the device to disconnect at will. See the definition of
usbDeviceConnect() and usbDeviceDisconnect() further down in this file.
...
usbconfig.h:
/* ---------------------------- Hardware Config ---------------------------- */

#define USB_CFG_IOPORTNAME D
/* This is the port where the USB bus is connected. When you configure it to
* "B", the registers PORTB, PINB and DDRB will be used.
*/
#define USB_CFG_DMINUS_BIT 3
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
* This may be any bit in the port.
*/
#define USB_CFG_DPLUS_BIT 2
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
* This may be any bit in the port. Please note that D+ must also be connected
* to interrupt pin INT0!
*/


Обратите внимание на usbdrv.h и usbconfig.h
Возможно не правильно определены D+ D- и USB_CFG_IOPORTNAME
Отсюда может быть неопределенное устройство.
Вы используете те же линии, что и в примерах, которые прошивали?
Go to the top of the page
 
+Quote Post
Oleg_IT
сообщение May 25 2007, 04:50
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Один к одному собрал. И D- c D+ менял, не помогает. По осциллографу вижу вроде бы как одни нули уходят в РС, уловить сложно быстро всё происходить, а пишущего нет.
Go to the top of the page
 
+Quote Post
GDI
сообщение May 25 2007, 10:27
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Там еще есть режим отладки через уарт, но проблема я так понял при компиляции и расположение выводов никак не поможет... надо убрать ошибку сперва.

И еще, может попробовать использовать последнюю версию юсб драйвера?

Кстати на сайте http://www.recursion.jp/avrcdc/ есть версия от 7апреля 2007 г. может там эта проблема решена?

http://electronix.ru/forum/lofiversion/ind.../t13883-50.html тут что то про сегменты обсуждалось


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 14:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016