|
|
  |
C8051F320 от Sillicon Labs и USB драйвер, USB driver - Virtual COM port. |
|
|
|
Nov 17 2005, 13:15
|

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

|
Цитата(Charley @ Nov 13 2005, 21:06)  По моему я такую же идею встречал на специализированном форуме на сайте www.silabs.ruА где именно ? Как тема называется непривспомнишь ? А то я там все обсмотрел !!!
--------------------
Смотреть в себя, зреть муки свои, зная, что сам ты виновник мук - вот истинное страдание. Отладка / Софокл, "Аякс".
|
|
|
|
|
Feb 5 2015, 14:51
|
Участник

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

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

Группа: Участник
Сообщений: 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.
|
|
|
|
|
Feb 6 2015, 07:10
|
Участник

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

|
Цитата(Harbinger @ Feb 6 2015, 09:00)  Файл, прикреплённый к 10-му сообщению в этой теме. Да, раньше смотрел, но ничего не понял там
|
|
|
|
|
Feb 6 2015, 08:05
|

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

|
Цитата(Angelborn @ Feb 5 2015, 21:25)  Ну это всёравно что держать патент на первый паровой автомобиль начала века ) Бывает и такое  Цитата(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 флеш на ассемблере
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Feb 6 2015, 08:37
|
Участник

Группа: Участник
Сообщений: 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 флеш на ассемблере  Наверное всё-таки низкоуровневых ) Нет, вовсе не хочу там что-либо менять, понятное дело что они это всем своим штатом разрабатывали. Просто нужно написать простую программу для отправки параметров в/из компа по шине USB. Пишу на асме. Вот как туда вставить эти подпрограммы... Что они расходуют, какие ресурсы - хотя бы понимание...
|
|
|
|
|
Feb 6 2015, 09:49
|

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, и значит, мы умрем.
|
|
|
|
|
Feb 6 2015, 11:58
|
Участник

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

|
О, спасибо. Уже начинаю понимать. В кейле конечно работаю. Вот только не совсем понял ссылки на регистры у вас в примере R1-R5. Получается что сама процедура общается с библиотекой на уровне асма как раз через регистры? А где можно почитать про эти сообщения? В пдф AN169_USBXpress_Programmers_Guide.pdf я не нашёл ничего конкретного, только описания этих подпрограмм.
|
|
|
|
|
Feb 6 2015, 12:41
|

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, и значит, мы умрем.
|
|
|
|
|
Feb 6 2015, 13:13
|
Участник

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

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

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, и значит, мы умрем.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|