|
|
  |
Eclipse+STM32F3 Project Template |
|
|
|
Aug 26 2015, 13:28
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361

|
"Запилить" © ... Этимологию и топонимику - в студию !  ... тут уже на днях звучало - "... конфликт поколений. Для нас, любителей пепси, всё вышеперечисленное - надуманные проблемы. Всегда можно настроить виртуалку или обточить напильником гнушный тулчейн. Такого, чтобы не было эмулятора - вообще не бывает, потому что всегда можно найти в коробке дев-борду от FTDI или вообще с ПЛИСиной, за час скомпилить и залить эмулятор джатага, а в среде пропатчить драйвера на предмет проверки "родного" адаптера. Я же говорю, простые и понятые действия. Сиди, нажимай кнопки, подсоединяй провода. ... А нынешнее поколение вообще не будет понимать, как это бывает, что у SOC-а нельзя пин запрограммировать на определённый протокол или сценарий. Будут рассказывать легендЫ ..." ©
Сообщение отредактировал DrGluck - Aug 26 2015, 14:26
--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
|
|
|
|
|
Aug 26 2015, 14:35
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361

|
теперь по теме "Как обращаться к регистрам USB?" © STM32F3DISCOVERY,ST MicroelectronicsФАЙЛ №1 ФАЙЛ №2 32.4 USB functional description ... страница 1061 ...
--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
|
|
|
|
|
Aug 26 2015, 17:57
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-11-05
Из: Россия
Пользователь №: 11 361

|
"... Я просто такими делами не занимался ранее.А литературу доступную не посоветуете по этой теме (написание своих низкоуровневых библиотек под периферию МК) ... " © - вот это уже лучше ... Занимаешься EMBEDDED - копай ... Причем "копай" © - с Пониманием, что и как в каждый момент происходит ... Иначе чем ты отличаешься от 1С-ника ? ... Доступная литература ? ну раз RM - пугает или отталкивает, то есть смысл начать с русскоязычных ресурсов : Микроконтроллеры STM32 «с нуля»( год 2011 ) "Golikov * обычно есть хедер к процу, в котором регистры названы понятным образом, и CMSYS в этом помогает...." ©P.S. Дьявол скрыт в мелочах ... CMSIS - Cortex Microcontroller Software Interface Standard
Сообщение отредактировал DrGluck - Aug 26 2015, 17:32
--------------------
"... Ищущий вечно, однажды найдя, то, что искал бесконечно, мимо прошёл, совершенно беспечно, с кем-то о вечном шутя ..."
|
|
|
|
|
Aug 26 2015, 19:52
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Занимаешься EMBEDDED - копай ... Причем "копай" © - с Пониманием, что и как в каждый момент происходит ... Иначе чем ты отличаешься от 1С-ника ? ... Цитата P.S. Дьявол скрыт в мелочах ... Вы что ли посты себе набиваете? Думаю куб должен файлик заголовочный основной генерить.
|
|
|
|
|
Aug 27 2015, 02:40
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 9-01-14
Пользователь №: 79 952

|
DrGluck, Нет, RM не пугает.Наоборот даже,цели образовательные.Хотелось бы самому сделать. Литературы типа "Микроконтроллеры STM32 «с нуля»" прочитал и усвоил уже достаточно.
Golikov A., Куб или копипаста хидера под камень- простейший вариант.Чему-то новому для себя так не научиться.
Главный вопрос был в том,чтобы выяснить кривые у меня руки(что я как-то неправильно создаю проект в Eclipse, да так,что нема регистров USB в шаблонном проекте от GNU) или это такие шаблоны. На этот вопрос ответ нашёл в README.txt шаблонного проекта.
Теперь у меня и цель сформулировалась.
Камней всяких разных у ST(да и не только) целая куча.Под эту кучу камней есть свои собственные хидера.При создании хидера(типа stm32f4xx.h) в нём описывают всю периферию,регистры и варианты битов,которыми можно наполнить регистры(типа GPIO_BRR_BR_0) для настройки.
Так вот хотелось бы увидеть труд/книгу/цикл статей,которые описывают концепцию создания таких хидеров.И, если получится,самому сделать хидер с описанием USB для STM32F3. Т.е. подпилить(дополнить) хидер имеющийся в шаблонном проекте от GNU. А потом реализовать CDC.
|
|
|
|
|
Aug 27 2015, 08:07
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(gazpar @ Aug 27 2015, 05:40)  Так вот хотелось бы увидеть труд/книгу/цикл статей,которые описывают концепцию создания таких хидеров. Тоже хотелось бы узнать, что курят их авторы. Вот мой для usb F107: CODE struct otg_fs { struct global { uint32_t volatile GOTGCTL; // OTG control and status 0x000 uint32_t volatile GOTGINT; // OTG interrupt flags 0x004 uint32_t volatile GAHBCFG; // AHB configuration 0x008 uint32_t volatile GUSBCFG; // USB configuration 0x00C uint32_t volatile GRSTCTL; // Core reset 0x010 uint32_t volatile GINTSTS; // Core interrupt flags 0x014 uint32_t volatile GINTMSK; // Core interrupt mask 0x018 uint32_t volatile GRXSTSR; // Receive status debug read 0x01C uint32_t volatile GRXSTSP; // OTG status read and pop 0x020 uint32_t volatile GRXFSIZ; // Receive FIFO size 0x024 uint32_t volatile DIEPTXF0_HNPTXFSIZ; // Non periodic / EP0 Tx FIFO size 0x028 uint32_t volatile HNPTXSTS; // Non periodic Tx FIFO/queue status 0x02C uint32_t reserved30[2]; // Reserved 0x030 uint32_t volatile GCCFG; // General core configuration 0x038 uint32_t volatile CID; // Product ID 0x03C uint32_t reserved40[48]; // Reserved 0x040-0xFF uint32_t volatile HPTXFSIZ; // Host periodic Tx FIFO size 0x100 uint32_t volatile DIEPTXF[3]; // Device IN endpoint Tx FIFO size 0x104 uint32_t reserved110[188]; // Reserved 0x110-0x3FF };
struct host { uint32_t volatile HCFG; // Configuration 0x400 uint32_t volatile HFIR; // Frame interval 0x404 uint32_t volatile HFNUM; // Frame number/time remaining 0x408 uint32_t reserved40C; // Reserved 0x40C uint32_t volatile HPTXSTS; // Periodic Tx FIFO / queue status 0x410 uint32_t volatile HAINT; // All channels interrupt flags 0x414 uint32_t volatile HAINTMSK; // All channels interrupt Mask 0x418 uint32_t reserved41C[9]; // Reserved 0x41C-0x43F uint32_t volatile HPRT; // Port control and status 0x440 uint32_t reserved444[47]; // Reserved 0x444-0x4FF struct { uint32_t volatile HCCHAR; // Characteristics 0x500, 0x520...0x5E0 uint32_t reserved504; // Reserved 0x504 uint32_t volatile HCINT; // Interrupt flags 0x508 uint32_t volatile HCINTMSK; // Interrupt mask 0x50C uint32_t volatile HCTSIZ; // Transfer size 0x510 uint32_t reserved[3]; // Reserved 0x514-0x51F } Channel[8]; uint32_t reserved600[128]; // Reserved 0x600-0x7FF };
struct device { uint32_t volatile DCFG; // Configuration 0x800 uint32_t volatile DCTL; // Control 0x804 uint32_t volatile const DSTS; // Status 0x808 uint32_t reserved0C; // Reserved 0x80C uint32_t volatile DIEPMSK; // IN endpoint interrupt mask 0x810 uint32_t volatile DOEPMSK; // OUT endpoint interrupt mask 0x814 uint32_t volatile DAINT; // All endpoints interrupt flags 0x818 uint32_t volatile DAINTMSK; // All endpoints interrupt mask 0x81C uint32_t reserved820[2]; // Reserved 0x820-0x827 uint32_t volatile DVBUSDIS; // VBUS discharge time 0x828 uint32_t volatile DVBUSPULSE; // VBUS pulsing time 0x82C uint32_t reserved830; // Reserved 0x830 uint32_t volatile DIEPEMPMSK; // IN endpoint FIFO empty mask 0x834 uint32_t reserved838[50]; // Reserved 0x838-0x8FF struct in_ep { uint32_t volatile DIEPCTL; // Control 0x900, 0x920, 0x940, 0x960 uint32_t reserved904; // Reserved 0x904 uint32_t volatile DIEPINT; // Interrupt flags 0x908 uint32_t reserved90C; // Reserved 0x90C uint32_t volatile DIEPTSIZ; // Transfer size 0x910 uint32_t reserved914; // Reserved 0x914 uint32_t volatile DTXFSTS; // Tx FIFO status 0x918 uint32_t reserved91C; // Reserved 0x91C } IN_endpoint[4]; uint32_t reserved980[32 + 64]; // Reserved 0x980-0xAFF struct out_ep { uint32_t volatile DOEPCTL; // Control 0xB00, 0xB20, 0xB40, 0xB60 uint32_t reservedB04; // Reserved 0xB04 uint32_t volatile DOEPINT; // Interrupt flags 0xB08 uint32_t reservedB0C; // Reserved 0xB0C uint32_t volatile DOEPTSIZ; // Transfer size 0xB10 uint32_t reservedB14[3]; // Reserved 0xB14-0xB1F } OUT_endpoint[4]; uint32_t reservedB80[32 + 128]; // Reserved 0xB80-0xDFF
struct generic_ep { uint32_t volatile CTL; // Control 0x00 uint32_t reserved04; // Reserved 0x04 uint32_t volatile INT; // Interrupt flags 0x08 uint32_t reserved0C; // Reserved 0x0C uint32_t volatile TSIZ; // Transfer size 0x10 uint32_t reserved14[3]; // Reserved 0x14-0x1F }; };
struct gating { uint32_t volatile PCGCR; // Power and clock gating 0xE00 uint32_t reservedE04[127]; // Reserved 0xE04-0xFFF };
struct fifo { uint32_t volatile FIFO; // FIFO data 0x1000 uint32_t Reserved[1023]; // Reserved 0x1004-0x1FFF };
struct rx_fifo : public fifo { public: void * read(void * to, uint_fast16_t size); };
struct tx_fifo : protected fifo { public: void write(void const * from, uint_fast16_t size); };
global Global; host Host; device Device; gating Gating; union { rx_fifo Rx_FIFO; tx_fifo Tx_FIFO[8]; }; };
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 28 2015, 03:25
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Цитата Куб или копипаста хидера под камень- простейший вариант.Чему-то новому для себя так не научиться. Что-то я перестал понятно писать что ли.... АРМ фирма что делает ядро, провела некоторую работу и создала писание некого стандарта CMSIS. В результате этого действа переход между процами разных производителей на одном ядре АРМ проходит более гладко. Потому что у всех теперь практически единая система наименования регистров и даже если есть отличия, то они минимальны и понятны. В результате к каждому процу есть заголовочный файл в котором близко к этому стандарту уже наименованы все регистры проца, каждому адресу в циферках стоит правильное имя. Кейлы и IAR дают этот файл, как выбираете семейство проца. Я предположил что для эклипса это не так, но этот же файл должен дать куб. Переписывать этот файл не только лишняя работа, но и неправильно концептуально! Он порождение стандарта, и значит должен быть именно таким, следование стандарту облегчает работу с кодом и вам и другим людям. Дальнейшие сборы правильных регистров в структуры и прочее - это уже ваше дело. Обычно я в своих проектах их не собираю, пишу единый С файл работы с модулем, такой некий драйвер, и там к регистрам обращаюсь напрямую по именам. Я предлагал только это в ответ на Цитата Т.е. брать эти(USB peripheral registers base address 0x4000 5C00) циферки(адреса), и прописывать их в имеиющемся хидере, как регистры USB? а использование полностью библиотек куба - это на ваше усмотрение, конечно, но по мне они ужасны...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|