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

UniSoft

Свой
  • Постов

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

  • Посещение

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

    4

Сообщения, опубликованные UniSoft


  1. Какая функция winapi вызывает IOCTL_SERIAL_GET_COMMSTATUS?

    Скорее всего эта

     

    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. Время традиционных СОМ-портов ушло. Теперь доминирует USB, по этому если требуется обеспечить работу прибора совместно с РС - следует применять именно USB. Собственно вопрос о том как используя Borland C++ Builder 6 создать необходимое ПО для РС, а именно в той части как обеспечить диалог по USB? Гуглил много, но самая популярная книга рассматривает это по в разрезе Visual C. Спасибо.

    самое простое это реализовать 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 приемник.

     

    т.к. вопрос ваш, надо понимать, был задан из чистого любопытства...

    Не совсем из любопытства...

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

    А тут как раз заговорили про двунаправленные порты...

     

    а по поводу коммутации RS и USB, я, честно говоря, не представляю, в чём там суть...

    Суть в том, чтобы сократить схему, и не использовать внешний коммутатор...

  4. IAR в составе своей Embedded Workbench дает PowerPac. Буду благодарен, если профессионалы скажут свое мнение об этой РТОС . Например, чем она хуже (или лучше) популярной uCOS-II?

    Да не намного и лучше, примерно на одном уровне...

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

    Фактически PowerPac это embOS от SEGGER.

     

    лучше чем uCOS только тем, что все есть (RTOS, TCP/IP, FILESYSTEM, USBHost, USB Device, GUI)...

    а с uCOS посложнее, хотя и можно найти некоторые части но не все в одной куче...

    А хуже она тем, что нет исходников... только библиотеки и только для IAR....

    Можно конечно купить ее с исходниками, но цена уж больно высокая, да и не думаю, что кто-нибудь предпочтет брать "кота в мешке", без предварительного ознакомления с исходниками, а их, как известно, нету.

    И еще PowerPac не сильно распространена, так как полные версии появились не давно. А с демо-версиями можно было просто баловаться от нечего делать.

    Потому большинство и предпочитает uCOS, так как до покупки могут полностью ознакомиться с исходным кодом.

    Если бы SEGGER открыли исходники, то думаю они бы только выиграли на этом. это мое мнение.

     

    А почему она теперь PowerPac? А embOS тоже есть?

    Ну это же теперь круто иметь свою ось разработчикам компиляторов,

    вот и IAR не отстают от других, но так как лично своей оси у них нет, пришлось позаимствовать у SEGGER'а.

    тем более они уже давно на IAR пашут, и J-Link для них сварганили.

    embOS тоже есть на www.segger.com (но у них только демки)

     

    Что может эта демка (какие ограничения)?

    ограничения для RTOS

    максимум 3 задачи, если будет больше, то тогда включается временное ограничение в 15 минут (через 15 мин вылетит в ошибку)

    Файловая система ограничена открытием всего одного файла.

    USB стек ограничен работой в 15 мин (после чего перестает передавать\принимать данные)

    по остальным частям не разбирался.

  5. ...

    И что, все это делается вручную???

    если все это делается в том же IAR, то почему бы просто в настройках проекта не указать,

    чтобы IAR сразу компилил библиотеку, без лишних ручных манипуляций.

    Project->Options->General Options вкладка Output -> Otput file = Library

  6. Нет,после такого объяснения их просто не может быть :a14: Спасибо!

    Зато у меня появился вопрос :)

    С таким двунаправленным портом все понятно,

    а вот как, например, с портами типа D+, D- от USB ???

    возможно ли обойтись простым решением?

     

    к примеру есть некий интерфейс, и в нем есть выход, на него нужно коммутировать либо стандартный RS232, либо USB

    в подобном случае я видел применяли внешний аналоговый коммутатор (IDTQS4A101)

    Но меня интересует можно ли реализовать это на логике? или все-же проще поставить внешний свитч?

  7. Да, и еще вопрос - какой программой можно просмотреть файлы в оригинальном (первом) сообщении?

     

    PS. Похоже, Протел. Только у меня его нет, надо будет поставить... :laughing:

    Altium Designer хорошо справляется, да и вобще поддерживает большинство форматов

  8. Все чудесатее и чудесатее :)

    Похоже, что у вас Маша, есть машина времени. На сайте сеггера о в8 ничего нет, а прошивка подписана строкой

    J-Link ARM V8 compiled Jan 29 2010 19:34:13

    :)

     

    И кстати, про версия выглядит полностью оригинальной. В смысле имеющей "большой" фирменный бутлоадер, а не "тощий" рукописный.

    Да нету его там, совсем...

     

    Схему бы найти на этот девайс, а бут можно будет считать...

  9. Боюсь это клон желтого прилоченого к IAR-у jlink-а

    Черный оригинальный jlink от Segger-а сделан на M3024

    Это не совсем так, на M3024 это старая версия железа, по моему <= 5.0

    позже они стали использовать at91sam7s64,

    а привязка (ограничения) зависят от типа лицензии,

    это прописано в прошивке по адресу 0xFF00 (достаточно немного подправить, и привязанный ж-линк становится полноценным)

     

     

    Это действительно фирмварь семерки? Т.е есть фичи сериальной отладки? Запишите кто-нибудь в проц и скажите что оно говорит в сеггеровской тулзе ПЖЛста!

    Сама firmware действительно от 7 версии, но вот бутлоадер, не оригинальный, так видимо переписанный....

    и вобще фирмваре должна располагаться с адреса 0x5400 (по крайней мере, в версиях ниже 7.0), а тут вот с адреса 0x2000

  10. может это поможет:

    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.

  11. Всем привет!

     

    Кто-нибудь сталкивался с тем, что EWARM 5.10 неверно компилит ассемблерный код..., а именно условные (относительные) переходы (B, BPL, ....).

    Если кто решил (или знает, как решить) эту проблему, то пожалуйста отзовитесь.

     

    Попробуйте откомпилить приложенный пример, а потом обратите внимание на условные переходы (в дизассемблере)...

    причем это происходит только в режиме CODE16...

    test.rar

×
×
  • Создать...