Перейти к содержанию
    

UniSoft

Свой
  • Постов

    209
  • Зарегистрирован

  • Посещение

  • Победитель дней

    4

Весь контент UniSoft


  1. Скорее всего эта BOOL ClearCommError( HANDLE hFile, // handle to communications device LPDWORD lpErrors, // pointer to variable to receive error codes LPCOMSTAT lpStat // pointer to buffer for communications status ); The ClearCommError function retrieves information about a communications error and reports the current status of a communications device. The function is called when a communications error occurs, and it clears the device's error flag to enable additional input and output (I/O) operations. Эта функция заполняет структуру COMSTAT. И часто используется для того, чтобы определить количество данных в буфере приемника
  2. самое простое это реализовать HID или CDC (т.е. виртуальный ком порт), большинство производителей микроконтроллеров обычно дают примеры реализации таких устройств. а также они обычно не требуют написания своих драйверов (в винде уже есть дрова), иногда просто обходятся немного подправленным inf файлом. Но у этих девайсов есть один недостаток, это скорость... Если нужна высокая скорость, то придется копать в сторону BULK устройств... и к ним придется писать свой драйвер (но можно и схитрить да взять готовый, к примеру из пакета usbio http://www.thesycon.com/eng/usbio.shtml (но тут он демо, по-моему на 240 минут работы) и в нем есть также примеры для PC, и еще тут он используется www.tnkernel.com или еще лучше из PowerPac (там же есть и пример для контроллера и тестовые утилиты для PC под Visual Studio причем на чистом СИ, так что понять легко)) Ну или написать свой BULK драйвер, пример такого драйвера есть в DDK (а ныне WDK). еще можно копнуть в сторону "nrComm Lib Pro" компонентов, правда не знаю поддерживают ли они 6-ой Builder, так вот в них есть компонента для работы с USB. и еще можно тут посмотреть кое-какие идеи https://forums.codegear.com/thread.jspa?thr...2&tstart=30 PS: вот только IAR похоже сильно торопились с релизом PowerPac, и немного накосячили, (пример для контроллера STM32 для usb так и не завелся, хотя в предыдущей версии PowerPac работал сразу) а еще они забыли вложить исходники файлов для работы с USB (в прежней версии они есть), да и без них примеры для PC не скомпилятся. В общем вот эти файлы, во вложении... USBBULK.rar
  3. Там не совсем диф.пара, хотя в некоторых режимах работает как диф.пара. обычный свитч согласен... Под простым решением я имел в виду, реализовать по-простому, без реализации всего Serial Interface Engine (SIE). Сами IO реализовать не сложно, вот тут даже схема есть http://www.usbmadesimple.co.uk/ums_3.htm но вот управление трансмиттером, тут без SIE думаю не обойтись..., но может я чего-то не учел... А реализовать SIE, это фактически весь USB приемник. Не совсем из любопытства... Я только осваиваю программируемую логику, и как то была нужна такая функция, но я не нашел решения... А тут как раз заговорили про двунаправленные порты... Суть в том, чтобы сократить схему, и не использовать внешний коммутатор...
  4. Да не намного и лучше, примерно на одном уровне... к тому же в них есть что-то общее... видимо до какого-то момента это было одно и то-же, но потом разделились и пошли каждый своей дорогой. Фактически PowerPac это embOS от SEGGER. лучше чем uCOS только тем, что все есть (RTOS, TCP/IP, FILESYSTEM, USBHost, USB Device, GUI)... а с uCOS посложнее, хотя и можно найти некоторые части но не все в одной куче... А хуже она тем, что нет исходников... только библиотеки и только для IAR.... Можно конечно купить ее с исходниками, но цена уж больно высокая, да и не думаю, что кто-нибудь предпочтет брать "кота в мешке", без предварительного ознакомления с исходниками, а их, как известно, нету. И еще PowerPac не сильно распространена, так как полные версии появились не давно. А с демо-версиями можно было просто баловаться от нечего делать. Потому большинство и предпочитает uCOS, так как до покупки могут полностью ознакомиться с исходным кодом. Если бы SEGGER открыли исходники, то думаю они бы только выиграли на этом. это мое мнение. Ну это же теперь круто иметь свою ось разработчикам компиляторов, вот и IAR не отстают от других, но так как лично своей оси у них нет, пришлось позаимствовать у SEGGER'а. тем более они уже давно на IAR пашут, и J-Link для них сварганили. embOS тоже есть на www.segger.com (но у них только демки) ограничения для RTOS максимум 3 задачи, если будет больше, то тогда включается временное ограничение в 15 минут (через 15 мин вылетит в ошибку) Файловая система ограничена открытием всего одного файла. USB стек ограничен работой в 15 мин (после чего перестает передавать\принимать данные) по остальным частям не разбирался.
  5. iarchive

    И что, все это делается вручную??? если все это делается в том же IAR, то почему бы просто в настройках проекта не указать, чтобы IAR сразу компилил библиотеку, без лишних ручных манипуляций. Project->Options->General Options вкладка Output -> Otput file = Library
  6. Зато у меня появился вопрос :) С таким двунаправленным портом все понятно, а вот как, например, с портами типа D+, D- от USB ??? возможно ли обойтись простым решением? к примеру есть некий интерфейс, и в нем есть выход, на него нужно коммутировать либо стандартный RS232, либо USB в подобном случае я видел применяли внешний аналоговый коммутатор (IDTQS4A101) Но меня интересует можно ли реализовать это на логике? или все-же проще поставить внешний свитч?
  7. Altium Designer хорошо справляется, да и вобще поддерживает большинство форматов
  8. :) Да нету его там, совсем... Схему бы найти на этот девайс, а бут можно будет считать...
  9. там их много, под разные ж-линки.... штук 8-10 прошивок JLINKv7_v8.rar
  10. Это не совсем так, на M3024 это старая версия железа, по моему <= 5.0 позже они стали использовать at91sam7s64, а привязка (ограничения) зависят от типа лицензии, это прописано в прошивке по адресу 0xFF00 (достаточно немного подправить, и привязанный ж-линк становится полноценным) Сама firmware действительно от 7 версии, но вот бутлоадер, не оригинальный, так видимо переписанный.... и вобще фирмваре должна располагаться с адреса 0x5400 (по крайней мере, в версиях ниже 7.0), а тут вот с адреса 0x2000
  11. может это поможет: Absolute placement (v.5.xx) (in C source) или это Absolute placement (v.5.xx) (in assembler source) Technical Note 36121 Absolute placement (v.5.xx) (in C source) EW targets: ARM EW component: C/C++ compiler Keywords: "@" / #pragma locate, absolute address Last update: July 9, 2008 Background - general There are major changes in the EWARM between version 4.x and version 5.x. The link to the right gives some more information. Background - specific Initializers are no longer allowed for absolute placed constants, which means the following type of C/C++ construction is no longer allowed: int const a @ 10 = 20; Problem There is no way of express the above in an output file in the elf/dwarf format. Solution The solution consists of two changes. In the .c file place the variable in a named segment. In the .icf (for the linker) place the segment at a specific location. The C source can have looked like this in 4.xx: const char RELEASEDATE[16] @ 0x0000FF10 = __DATE__ ; const char RELEASETIME[16] @ 0x0000FF20 = __TIME__ ; This will be changed to this in the .c file in 5.xx: #pragma location = "ConstSection1" __root const char RELEASEDATE[16] = __DATE__ ; #pragma location = "ConstSection2" __root const char RELEASETIME[16] = __TIME__ ; In the .icf file are these lines added: place at address mem: 0x0000FF10 { readonly section ConstSection1 }; place at address mem: 0x0000FF20 { readonly section ConstSection2 }; The Ilink will then place the sections ConstSection1 at address 0x0000FF10, and the section ConstSection2 is placed at address 0x0000FF20. Migration It is also highly recommended that you have a look at the "The migration process" in the above guide. This will give you a good picture of what has to be done to migrate from version 4 to version 5 of the ARM IAR Embedded Workbench. Technical Note 17934 Absolute placement (v.5.xx) (in assembler source) EW targets: ARM EW component: Assembler Keywords: "@" / #pragma locate, absolute address Last update: February 29, 2008 Background - general There are major changes in the EWARM between version 4.x and version 5.x. The link to the right gives some more information. Background - specific The concept of "absolute placement" is removed from the Assembler in EWARM 5.xx. Problem The old (v.4.xx) directives for absolute placement (ORG, ASEG+address and ASEGN) are not available in EWARM 5.xx. Solution The assembler can place CODE and CONST in named segments. The linker can place the named segments at specified locations. The assembler source can look like: NAME get PUBLIC get42 PUBLIC jjj SECTION `.my_rodata`:CONST:NOROOT(2) jjj: DATA DC32 42 SECTION `.my_text`:CODE:NOROOT(2) THUMB get42: LDR R0,get42_0 ;; jjj LDR R0,[R0, #+0] BX LR ;; return Nop DATA get42_0: DC32 jjj END This will direct CONST to the segment .my_rodata and CODE is directed to the segment .my_text In the .icf (Ilink control file) are these lines added: define symbol _my_CODE__ = 0xEEBB0000; define symbol _my_DATA__ = 0xAA110000; place at address mem:_my_CODE__ { readonly section .my_text }; place at address mem:_my_DATA__ { readonly section .my_rodata }; The Ilink will then place the section .my_text at address 0xEEBB0000, and the section .my_rodata is placed at address 0xAA110000. Migration It is also highly recommended that you have a look at the "The migration process" in the above guide. This will give you a good picture of what has to be done to migrate from version 4 to version 5 of the ARM IAR Embedded Workbench.
  12. Всем привет! Кто-нибудь сталкивался с тем, что EWARM 5.10 неверно компилит ассемблерный код..., а именно условные (относительные) переходы (B, BPL, ....). Если кто решил (или знает, как решить) эту проблему, то пожалуйста отзовитесь. Попробуйте откомпилить приложенный пример, а потом обратите внимание на условные переходы (в дизассемблере)... причем это происходит только в режиме CODE16... test.rar
×
×
  • Создать...