-
Постов
207 -
Зарегистрирован
-
Посещение
-
Ясно. Всем спасибо за ответы.
-
Уважаемые коллеги. Я запутался в некоторых особенностях порта FreeRTOS под Cortex-M3. А именно: в файле freertosconfig.h есть следующие мароопределения: /* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 (lowest) to 0 (1?) (highest). */ #define configKERNEL_INTERRUPT_PRIORITY 255 #define configMAX_SYSCALL_INTERRUPT_PRIORITY 191 /* equivalent to 0xb0, or priority 11. */ /* This is the value being used as per the ST library which permits 16 priority values, 0 to 15. This must correspond to the configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest NVIC value of 255. */ Насколько я понимаю, configKERNEL_INTERRUPT_PRIORITY соответствует наименьшему приоритету NVIC - 15-му. А configMAX_SYSCALL_INTERRUPT_PRIORITY - 11-му. Никак не могу разобраться как и где эти константы используются. Где именно происходит назначение приоритета этими константами. И еще в доках сказано, что нельзя использовать ф-ции FreeRTOS в прерываниях с приоритетом большим чем configMAX_SYSCALL_INTERRUPT_PRIORITY (т.е. как я понял с приоритетами 0-10 в данном случае). Объясните, пожалуйста, почему? Просьба сильно не пинаться, я недавно работаю с данной ОС.
-
try catch + FreeRTOS
Nikitoc опубликовал тема в Программирование
Всем привет. Пытаюсь использовать исключения совместно с FreeRTOS. Вот такой код: try { throw 5; } catch (int a) { if(a == 5) { printf(" Exception occured "); { } работает нормально только до запуска планировщика и создания задач. Если я пытаюсь сделать подобное с работающим планировщиком, то код может отработать, но после него вылетаю в HardFault. В чем может быть причина? Куда копать? Пишу в Keil 4.1 под stm32f205. FreeRTOS 7.1. В настройках среды исключения разрешены (--exceptions). -
SDIO + DMA + FatFs
Nikitoc ответил Nikitoc тема в ARM, 32bit
Привет. Я весь код не писал. Я взял примерчик от ST (который идет с IAR 6.30). А в файле diskio.c (который для FatFS) просто написал вызовы функций чтения/записи, которые из примерчика. -
SDIO + DMA + FatFs
Nikitoc опубликовал тема в ARM, 32bit
Всем привет. Пытаюсь прикрутить известный примерчик от ST (SDIO+DMA для stm32f205) к FatFs. Все функции работают корректно кроме мультиблоковой записи. И именно это выносит мне мозг. Все зависает на функции: SD_Error SD_WaitWriteOperation(void) { SD_Error errorstatus = SD_OK; while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK)) { /*if ((SDIO->STA & 0x03) != 0x00){ printf(" 0x%X ", SDIO->STA); }*/ } if (TransferError != SD_OK) { return(TransferError); } /*!< Clear all the static flags */ SDIO_ClearFlag(SDIO_STATIC_FLAGS); return(errorstatus); } Закомментированный участок кода - это моя отладочная функция. Собственно говоря, когда я начинаю записывать файл мультиблоковая функция нормально отрабатывает несколько раз (5-15, каждый раз по-разному), а затем подвисает. При этом в статусном регистре содержится значение 0x42. Т.е. устанавливаются флаги DCRCFAIL (Data block sent/received (CRC check failed)) и CMDREND (Command response received (CRC check passed)). Почему устанавливается второй флаг - не понимаю. Если есть какие-нибудь мысли или что-то подобное встречалось - просьба поделиться. Заранее благодарен. -
Сергей, спасибо Вам большое. Разжевано предельно понятно :cheers: Систематизация - полезная штука.
-
Всем спасибо за ответы. Вопрос Сергею: я спросил про "неназванную" область оперативной памяти (которая не куча и не стек) потому что столкнулся с этим при работе в Keil uVision (я пишу под Cortex-M3, хотя это наверное не важно). В стартаповом файле конфигурируется куча и стек. Из доступных 16кБ я под стек выделил 1кБ, а куче ничего, т.к. не использую динамического выделения памяти в этом проекте. Так вот, в программе у меня определены два буфера по 4кБ (как глобальные переменные). Получается, что расположены эти два буфера не в стеке (слишком мал) и не в куче (т.к. они определены статически да и под кучу памяти не выделено). Я, конечно, понимаю, что частично ответил на свой вопрос, но все равно хочется больше информации в этом направлении. Может быть управление оперативной памятью зависит от платформы (компилятора)?
-
Возвращение указателя на динамический массив
Nikitoc опубликовал тема в Программирование
Всем привет! Вопросик простой, но для полноты картины происходящего в компиляторе (или в МК) мне нужно этот вопрос разъяснить. Допустим, есть какая-то функция: WORD *Multiple (BYTE A, BYTE B){ WORD *result; result = (WORD *)malloc(1); *result = A * B; return result; } Собственно вопросы: 1. Где необходимо удалять эту переменную result (я имею в виду вызов ф-ции free())? Только в той функции, в которой она была выделена (Multiple()) или же можно сделать это в вызывающей функции по полученному указателю? 2. Я правильно понимаю, что возвращать указатель можно потому, что динамически выделенная переменная помещается в кучу, а не в стек? 3. Как называется область оперативной памяти, которая не отводится под кучу или стек? Как она используется компилятором (что туда "ложится")? -
организация "сети" bluetooth
Nikitoc ответил sevastianovd тема в Wireless/Optic
А можно поподробнее? Как именно называется модуль? Где покупали? По таймингам сети можете сказать какие-нибудь конкретные цифры (макс. скорость на несколько устройств одновременно) или целенаправленно не мерили такие показатели? -
WT21-A-HCI блютуз
Nikitoc ответил Nikitoc тема в Wireless/Optic
Идея реализации стека была отброшена в сторону как слишком трудозатратная. Остановился на WT11i со встроенным стеком iWRAP. В задачу входит передача данных одновременно 5 удаленным клиентам (в одну сторону, пока без подтверждения). Кто-нибудь решал подобную задачу? Мне нужно оценить примерную скорость передачи данных. Какова будет скорость переключения при поочередной передаче? Что следует учитывать при этом? -
stm32f2xx LCD parallel interface
Nikitoc ответил Nikitoc тема в ARM, 32bit
Ага, ясно. Просто нужно указывать адрес такой, чтобы с командой бит Ax был в одном состоянии, а с данными в другом? Спасибо за помощь! -
stm32f2xx LCD parallel interface
Nikitoc ответил Nikitoc тема в ARM, 32bit
Ясно, спасибо. Итак, я подключил индикатор по рекомендациям ST. Остался маленький вопрос по настройке FSMC. Разрядность шины данных указываем 8 и разрешаем мультиплексирование данных адреса. Неясно только какой тип памяти следует указывать контроллеру SRAM или PSRAM. Потому что согласно даташиту:"the address and data values are multiplexed on the databus, valid only with NOR and PSRAM memories". А почему для SRAM мультиплексирование недоступно? В чем функциональная разница между этими типами памяти с точки зрения работы контроллера? -
stm32f2xx LCD parallel interface
Nikitoc ответил Nikitoc тема в ARM, 32bit
Сегодня стал разбираться с индикатором. Оказалось он (UG-6028GDEBF02) может работать лишь в двух режимах: с 8-и или 9-и разрядной шиной данных. А в даташите на контроллер, который в нем используется было указано еще два режима - 16-и и 18-и разрядные. И вот здесь образовалась проблемка - т.к. в аппноутах на stm32 указана лишь возможность подключения к 16-и разрядной памяти я не знаю как подключать индикатор к МК. Просто оставить неподключенными старшие разряды шины данных FSMC? И как тогда настраивать FSMC? Растолкуйте, пожалуйста, кто в курсе. -
WT21-A-HCI блютуз
Nikitoc ответил Nikitoc тема в Wireless/Optic
Может быть кто-то уже запускал HCI? Или есть какие-нибудь примерчики реализации? Все же легче разбираться, когда под рукой "наглядное пособие". -
WT21-A-HCI блютуз
Nikitoc опубликовал тема в Wireless/Optic
Всем привет. Пытаюсь разобраться с модулем WT21 bluegiga. Главное, что мне ясно - это то, что нужно реализовать стек HCI на управляющем этим модулем МК. Но что-то инфы на сайте производителя маловато... В даташите встречается упоминание о неких PS-keys. Что это за настройки? Как к ним добраться? Где почитать о них? Где вообще можно получить подробную инфу о работе с этими модулями (где расписываются команды HCI)? Даташит невнятный какой-то. Буду признателен за любую помощь!