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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> C8051F320 от Sillicon Labs и USB драйвер, USB driver - Virtual COM port.
Kaplinsky
сообщение Nov 17 2005, 13:15
Сообщение #16


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

Группа: Свой
Сообщений: 97
Регистрация: 26-05-05
Из: Киев, Украина
Пользователь №: 5 426



Цитата(Charley @ Nov 13 2005, 21:06) *
По моему я такую же идею встречал на специализированном форуме на сайте www.silabs.ru


А где именно ? Как тема называется непривспомнишь ? А то я там все обсмотрел !!!


--------------------
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание.
Отладка / Софокл, "Аякс".
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 17 2005, 13:51
Сообщение #17


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Если усраивает самому написать Virtual Com Port, то смотрите поиском по сети, найдете массу VCL и ActiveX, правда первыми встречаются платные, но, кто ищет, тот всегда найдет smile.gif


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 5 2015, 14:51
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Освежу тему (уже почти 10 лет ей) biggrin.gif

У кого-то есть раскрытая библиотека USBX_F320_1.LIB? Я так понял силаб её засекретил? Ну сейчас вроде 15ый год уже, к чему эти секреты ихние?
Go to the top of the page
 
+Quote Post
alexunder
сообщение Feb 5 2015, 15:46
Сообщение #19


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(Angelborn @ Feb 5 2015, 17:51) *
Освежу тему (уже почти 10 лет ей) biggrin.gif
У кого-то есть раскрытая библиотека USBX_F320_1.LIB? Я так понял силаб её засекретил? Ну сейчас вроде 15ый год уже, к чему эти секреты ихние?


Думаю, силабс держит патентец на нее. Там сидит функционал для USB-контроллера, зачем она Вам?


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 5 2015, 18:25
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(alexunder @ Feb 5 2015, 17:46) *
Думаю, силабс держит патентец на нее. Там сидит функционал для USB-контроллера, зачем она Вам?


Ну это всёравно что держать патент на первый паровой автомобиль начала века )
А зачем она мне... пишу на асме потихоньку, хотелось бы видеть набор команд для этих функций.

USB_Clock_Start()
USB_Init(USB_VID,USB_PID,USB_MfrStr,USB_ProductStr,USB_SerialStr,USB_MaxPower,US
B_PwAttributes,USB_bcdDevice);
USB_Int_Enable();

Возможно есть примеры на асме без этой мудреной библиотеки, для работы с USB.

Go to the top of the page
 
+Quote Post
Harbinger
сообщение Feb 6 2015, 07:00
Сообщение #21


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Файл, прикреплённый к 10-му сообщению в этой теме.


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 6 2015, 07:10
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(Harbinger @ Feb 6 2015, 09:00) *
Файл, прикреплённый к 10-му сообщению в этой теме.


Да, раньше смотрел, но ничего не понял там crying.gif
Go to the top of the page
 
+Quote Post
alexunder
сообщение Feb 6 2015, 08:05
Сообщение #23


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(Angelborn @ Feb 5 2015, 21:25) *
Ну это всёравно что держать патент на первый паровой автомобиль начала века )

Бывает и такое sm.gif

Цитата(Angelborn @ Feb 5 2015, 21:25) *
А зачем она мне... пишу на асме потихоньку, хотелось бы видеть набор команд для этих функций.
USB_Clock_Start()
USB_Init(USB_VID,USB_PID,USB_MfrStr,USB_ProductStr,USB_SerialStr,USB_MaxPower,US
B_PwAttributes,USB_bcdDevice);
USB_Int_Enable();
Возможно есть примеры на асме без этой мудреной библиотеки, для работы с USB.

Я все-таки не понимаю Вас или Вы не понимаете что есть USBX_F320_1.LIB. Эта "мудрёная" библиотека содержит код высокоуровневых функций типа USB_Clock_Start(), USB_Init() и пр. для работы с USB. На мой взгляд, она исполнена весьма неплохо: инициализация, отправка данных, и пр.. До проекта с F321 я много времени провёл с Cypress FX2 и должен сказать, что реализация USB у Silabs весьма неплохая хоть это и Full Speed. Зачем Вам ее исходники? Оптимизировать? Сомневаюсь, что Вы сделаете лучше чем Silabs, да и потом, Вам потребуется глубокое знание самоё USB и принципов работы подсистемы USB силабсовых МК - где это-то взять?.
Если же Вы желаете просто попрактиковаться программированию на ассемблере для 51, то есть же масса вариантов: напишите поддержку файловой системы для какой-нибудь SPI флеш на ассемблере biggrin.gif


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 6 2015, 08:37
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(alexunder @ Feb 6 2015, 10:05) *
Я все-таки не понимаю Вас или Вы не понимаете что есть USBX_F320_1.LIB. Эта "мудрёная" библиотека содержит код высокоуровневых функций типа USB_Clock_Start(), USB_Init() и пр. для работы с USB. На мой взгляд, она исполнена весьма неплохо: инициализация, отправка данных, и пр.. До проекта с F321 я много времени провёл с Cypress FX2 и должен сказать, что реализация USB у Silabs весьма неплохая хоть это и Full Speed. Зачем Вам ее исходники? Оптимизировать? Сомневаюсь, что Вы сделаете лучше чем Silabs, да и потом, Вам потребуется глубокое знание самоё USB и принципов работы подсистемы USB силабсовых МК - где это-то взять?.
Если же Вы желаете просто попрактиковаться программированию на ассемблере для 51, то есть же масса вариантов: напишите поддержку файловой системы для какой-нибудь SPI флеш на ассемблере biggrin.gif


Наверное всё-таки низкоуровневых )
Нет, вовсе не хочу там что-либо менять, понятное дело что они это всем своим штатом разрабатывали.
Просто нужно написать простую программу для отправки параметров в/из компа по шине USB. Пишу на асме. Вот как туда вставить эти подпрограммы... Что они расходуют, какие ресурсы - хотя бы понимание...
Go to the top of the page
 
+Quote Post
alexunder
сообщение Feb 6 2015, 09:49
Сообщение #25


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(Angelborn @ Feb 6 2015, 11:37) *
Наверное всё-таки низкоуровневых )

я имел ввиду, что функции типа USB_Init, Block_Read и пр. являются высокоуровневыми по отношению к оперированию приемопередатчиком USB, пакетами, токенами и пр. Ну, не важно, в самомо деле.

Цитата(Angelborn @ Feb 6 2015, 11:37) *
Просто нужно написать простую программу для отправки параметров в/из компа по шине USB. Пишу на асме. Вот как туда вставить эти подпрограммы... Что они расходуют, какие ресурсы - хотя бы понимание...

Отлично! Нет ничего проще, чем сделать это с помощью обсуждаемой библиотеки! Вы работаете в Keil? Ну так подключите библиотеку к проекту. Там в пакете USBXpress должны быть и примеры для популярных сред типа Keil и IAR. И там же была информация в PDF-файле о ресурсах, требуемых для библиотеки.
Затем в Вашем ассемблерном проекте вызывайте внешние функции с помощью lcall (только не забудьте, что передача переменных идет через регистры Rx)

Код
;****************************************************************
; Объявления внешних функций из библиотеки Silabs USB_API
; Не забудьте прицепить файл USBX_F320_1.LIB к проекту!
;****************************************************************
extrn number (Flash_Size_L,Flash_Size_H)
extrn code (USB_Clock_Start)
extrn code (_USB_Init)
extrn xdata (?_USB_Init?BYTE)
extrn code (USB_Int_Enable)
extrn code (USB_Int_Disable)
extrn code (Get_Interrupt_Source)
extrn code (USB_Disable)
extrn code (_Block_Read)
extrn code (_Block_Write)


Вызов _BlockRead() Из обработчика прерывания от USB:
Код
MessageDispatcher:
; Получена структура сообщения от хоста. Диспатчим ее
; Считываем структуру из USB_Buffer
    mov      r3, #0x01
    mov      r2, #HIGH(USB_Buffer)
    mov      r1, #LOW(USB_Buffer)
    mov      r5, #0x0E
    mov      r4, #0x00
    lcall    _Block_Read




--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 6 2015, 11:58
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



О, спасибо. Уже начинаю понимать. В кейле конечно работаю. Вот только не совсем понял ссылки на регистры у вас в примере R1-R5. Получается что сама процедура общается с библиотекой на уровне асма как раз через регистры? А где можно почитать про эти сообщения?
В пдф AN169_USBXpress_Programmers_Guide.pdf я не нашёл ничего конкретного, только описания этих подпрограмм.
Go to the top of the page
 
+Quote Post
alexunder
сообщение Feb 6 2015, 12:41
Сообщение #27


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(Angelborn @ Feb 6 2015, 12:58) *
А где можно почитать про эти сообщения?

Нигде. Напишите код с вызовом нужной функции, к примеру Block_Write(), на Си и откомпилируйте с выставленной настройкой генерации ассемблерного листинга (где-то в кейле есть, может даже по-умолчанию стоит), то в нем после компиляции увидите как происходит вызов библиотечной функции и передача параметров в функцию на ассемблере.
Только тут надо быть очень внимательным, ибо вероятность понаделать ошибок из-за невнимательности на ассемблере гораздо выше чем на Си. Посему настоятельно рекомендую писать программы для работы с USB (да и вообще более менее сложные вещи) именно на Си. Кейл имеет хороший компилятор.

Цитата(Angelborn @ Feb 6 2015, 12:58) *
В пдф AN169_USBXpress_Programmers_Guide.pdf я не нашёл ничего конкретного, только описания этих подпрограмм.

Было где-то, про модель памяти и указания какие регистры задействованы и не подлежат изменению после вызова USB_init(). Не помню точно (3 года уже прошло), в пакете должен быть мануал, не верю что в новых версиях он стал хуже.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Angelborn
сообщение Feb 6 2015, 13:13
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 12-06-07
Пользователь №: 28 387



Цитата(alexunder @ Feb 6 2015, 14:41) *
Нигде. Напишите код с вызовом нужной функции, к примеру Block_Write(), на Си и откомпилируйте с выставленной настройкой генерации ассемблерного листинга (где-то в кейле есть, может даже по-умолчанию стоит), то в нем после компиляции увидите как происходит вызов библиотечной функции и передача параметров в функцию на ассемблере.
Только тут надо быть очень внимательным, ибо вероятность понаделать ошибок из-за невнимательности на ассемблере гораздо выше чем на Си. Посему настоятельно рекомендую писать программы для работы с USB (да и вообще более менее сложные вещи) именно на Си. Кейл имеет хороший компилятор.

Т.е. вы предлагает просто дизассемблировать отдельные функции? Вариант.
Наверное нужно на си переходить. Ассемблер хорош для небольших программ, хотя на нём пишу давно.

Цитата
Было где-то, про модель памяти и указания какие регистры задействованы и не подлежат изменению после вызова USB_init(). Не помню точно (3 года уже прошло), в пакете должен быть мануал, не верю что в новых версиях он стал хуже.

Почитаю, спасибо.
Go to the top of the page
 
+Quote Post
alexunder
сообщение Feb 6 2015, 14:09
Сообщение #29


unexpected token
****

Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987



Цитата(Angelborn @ Feb 6 2015, 14:13) *
Т.е. вы предлагает просто дизассемблировать отдельные функции? Вариант.

Нет! Я говорю об ассемблерном листинге, который генерируется любым компилятором Си (если выставлена соответствующая опция). Это будет точный ассемблерный код Вашей программы, написанной на Си. Чтоб потестировать, создайте пустой Си-проект в кейле для 8051, например и напишите что-то типа
void main
{
a = 5;
b = 6;
_BlockRead();
}
скомпилируйте и посмотрите листинг, оттуда станет ясно, что "находится внутри сишной программы". Это не позволит Вам заглянуть в библиотеку Silabs, т.к. она уже откомпилирована и является сборником бинарного кода (который можно дизассемблировать, только вот зачем?), но дасть понять как работает компилятор Си. Впрочем, думаю все это есть в описании к C51 от Keil, но я никогда его не читал...



--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 7 2015, 17:55
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Angelborn @ Feb 6 2015, 17:58) *
Получается что сама процедура общается с библиотекой на уровне асма как раз через регистры? А где можно почитать про эти сообщения?
В пдф AN169_USBXpress_Programmers_Guide.pdf я не нашёл ничего конкретного, только описания этих подпрограмм.

Порядок вызова функций, передачи им и возврата от них аргументов называется "Соглашения вызова" или "Calling conventions". И искать их описание следует в описании компилятора.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 16:39
Рейтинг@Mail.ru


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