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

Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.

К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

Я не настаиваю на своей правоте. Наработки я не то чтобы скрываю, просто не афиширую. Было пару случаев, когда ими воспользовались сторонние люди, но ничего кроме реакции "круто, оно работает" ничего не получил. Чтобы довести код до совершенства нужна как минимум соответствующая квалификация: от "молодых" толку мало, а у "старичков" нет времени и желания ковыряться в чужом коде, когда уже есть или свои наработки, или стандартные библиотеки. Имя мне делает не то как я пишу код, а то что готовое изделие работает, обладает соответствующим функционалом, при определенной стоимости и времени разработки. Это с одной стороны. С другой стороны: все люди разные,у каждого свое мировоззрение. Не редко приходилось сталкиваться с разработчиками, более авторитетными чем я, и склонять к своему мнению - хм, не тут-то было. Тряся кодом ничего не докажешь, нужно время чтобы заметить разницу в подходах к программированию в целом. Начинать нужно со студентов. Года два назад помогал с одной разработкой родному ВУЗу - провел несколько семинаров для аспирантов. Приглашали вести курс на постоянной основе, но времени к сожалению нет.

По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше. Ничего оригинального в них нет. Хотя замахнулся на USB HID "свисток" с управлением входами-выходами, показанием температуры, возможностью подключения монето- и купюроприемников, приема ИК-кодов, проигрывания музыки через бузер (по нотам и длительностям), пробрасыванием RS-232, функциями сторожевого таймера, расчета MD5 для выполнения функций взаимной авторизации как ПК, так и USB-устройства (типа аппаратный ключ). Это для платежных систем, музыкальных автоматов. Работает без драйверов, можно втыкать-вытыкать устройство на горячую - демо-ПО все отслеживает и не падает. Вот наработки - вопросов от сообщества пока нет))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хих стандартное заблуждение)... скрывая наработки вы как раз ничего не приобретаете. Кроме вас есть еще много людей кто тоже поднял USB на этих процессорах. А вот раскрыв их вы можете получить, ревизию вашего кода, большее число тестировщиков, почет уважение, сообщество программистов, имя и так далее... Да прямых денег вам никто не даст, а косвенно может много сохранить.

К примеру превратить 1-3 дня на подъем + недельная отладка, в просто 1 день, но это не ваш случай...

Это стандартное заблуждение :rolleyes:

 

Наверно любой широкодоступный код годится для надежной работы, но требует оптимизации. И тот, кто потратил время на доводку такого кода (Free RTOS, scmRTOS, Fat FS и т.п.) вряд ли будет его раскрывать, если зарабатывает на этом. Оригинальность она ведь тоже денег стоит.

 

Кстати, а кто это будет бесплатно тестировать, трассироать и утсранять баги в коде, хотелось бы услышать? Скорее всего народ сделает так, как написать выше, т.е. соптимизирует для себя и всё. Конечно, я сужу исключительно по себе, но кто так не делает? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поводу раскрытия: мои реализации USB CDC и HID приведены несколькими постами выше...

В примере USB_HID не хватает файла stm32f10x_map.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В примере USB_HID не хватает файла stm32f10x_map.h

Во вложенном архиве.

include.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во вложенном архиве.

Спасибо!

Сейчас Keil считает ошибкой следующую конструкцию:

typedef struct sPORT
{
    BYTE    report;                // Report = 3 (in/out), size = 33 + 1
    union
    {
        struct
        {
            BYTE    length;                // 0..32
            BYTE    data[32];
        };
        struct
        {
            BYTE    command;
            WORD    baud;
            BYTE    parity;
            BYTE    stop;
        };
    };
} sPORT;

Сначала пишет предупреждения на внутренние структуры:

type.h(45): warning: #40-D: expected an identifier

А потом уже ошибку на объединение:

type.h(53): error: #618: struct or union declares no named members

 

Это поправил, добавил имен. Но еще не находится WORKLED_bit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это поправил, добавил имен. Но еще не находится WORKLED_bit

Думаю, что в define.h должно быть так:

#define     WORKLED_bit                        PER_BIT_ADDR(GPIOA_ODR, WORKLED)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь осталось последнее. Кейл создает скаттер-файл следующего вида.

LR_IROM1 0x08000000 0x00080000  {  ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00010000  {; RW data
   .ANY (+RW +ZI)
  }
}

И выдает ошибку

USB_CDC.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.

Это связано с тем, что в проекте стартап написан на C, и секции RESET нет. Что бы такого здесь подправить? Можно свой ассемблерный стартап создать, но интересно именно на C испытать...

Еще не нахожу, где же настраиваются частоты, PLL. То, что в Кейле вызывается в первую очередь после сброса (функция SystemInit()).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что бы такого здесь подправить. Можно свой ассемблерный стартап создать, но интересно именно на C испытать...

В кейле я не силен...

От стартапа ничего особенного не надо: инициализировать данные и передать управление в main().

Можно и на asm.

А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,

что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.

Обсуждаемые исходники всего лишь демонстрация этого утверждения.

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

Стартап и размещения для линкера это только часть неприятностей (другие неприятности связаны с использованием

особенностей gcc, например, те же анонимные структуры и объединения; а еще и обработчики прерываний надо по

особому оформлять). Тут я видел два пути: либо запускать под gcc, либо скопировать частично исходник в свой (ваш) проект.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какая цель запуска именно этих исходников? Если я правильно помню начало разговора, то идея была в том,

что в некоторых случаях (например, USB для STM32) проще написать самому, чем использовать библиотеку.

Цель та же - понять USB в STM32. От примеров из библиотеки голова кругом идет. Хочу пройтись по функциям, минимально необходимым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Цель та же - понять USB в STM32. От примеров из библиотеки голова кругом идет. Хочу пройтись по функциям, минимально необходимым.

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

Как написать стартап на С в кейл, по моему, заслуживает отдельной темы))... Хотя для Cortex-M3 все пишется достаточно

просто на ЯВУ С. Правда, я не сторонник настраивать PLL и другую периферию до вызова main().

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго дня.

Недавно тоже начал разбираться с USB-HID (STM32F4-DISCOVERY).

До этого, ООЧЕНЬ давно, работал с контроллерами, так что небольшое представление о них имею. С этой платой начал только разбираться, поэтому в его регистрах пока не очень.

По поводу ST-библиотеки - ужас+вынос_мозга, потыкал-повключал примеры и все, даже в голову мысли не пускаю об её использовании в своих проектах.

То, что я изобретаю велосипед (да еще и не оптимальной конструкции) - это все понятно. Но то, что это будет МОЙ велосипед - это и есть радость разработчика.

adnega, спасибо за исходники, скачал, начал разбирать их.

ViKo, у Вас получилось запустить на stm32f4?

 

Есть вопрос по файлу stm32f10x_map.h

/* System Control Space memory map */
#define SCS_BASE              ((u32)0xE000E000)

Откуда взялся адрес 0xE000E000? (в референс мануале на stm32f10xx не нашел такого адреса)

 

И ещё:

/*------------------------ SystemTick ----------------------------------------*/
typedef struct
{
  vu32 CTRL;
  vu32 LOAD;
  vu32 VAL;
  vuc32 CALIB;
} SysTick_TypeDef;

- этих регистров не нашел в доке, вообще про SysTick там пара фраз.

 

Подскажите, где искать, если кто знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...ООЧЕНЬ давно, работал с контроллерами

Контроллеры из "ООЧЕНЬ давно" похожи на современные как велосипед на трактор... Вам стоит начать "от печки" - почитать про Cortex-ы вообще. Там, например, Вы сразу найдете ответы на заданные Вами вопросы.

Я, кстати, тоже "велосипедист", CMSIS не использую, но ST-шные примеры, ввиду многократно обсуждавшегося качества их доки - элемент необходимый. Мне, например, они помогли написать простенькое и устойчивое Bulk-устройство, читаемое (мною) гораздо легче, чем код от ST.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Знаете, ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности.

Если бы я нашел ответы на свои опросы, то и не задавал бы их вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...ответы в виде "читайте доку", "курите мануал" - это или от незнания, или от жадности...

Как знаете... Хотите код посмотреть - без проблем. Только если "ST-библиотеки - ужас+вынос_мозга", то вряд ли на этом этапе это поможет Вам построить свой велосипед...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, где искать, если кто знает.

На сайте ARM в документации на ядро Cortex-M3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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