Пн апр 27, 2020 23:19:36
void LED0Tgl_TaskCode (void *p_arg)
{
RTOS_ERR err;
const OS_TICK delay = 5000;
Mem_SegCreate( "Msg Pool Mem",
&MsgPoolMemSeg,
(CPU_ADDR)&MsgPoolMem,
MSG_POOL_SIZE,
LIB_MEM_PADDING_ALIGN_NONE,
&err);
APP_RTOS_ASSERT_DBG((RTOS_ERR_CODE_GET(err) == RTOS_ERR_NONE), 1);
Common_Init(&err);
APP_RTOS_ASSERT_CRITICAL(err.Code == RTOS_ERR_NONE, ;);
while (DEF_ON)
{
GPIO_PinOutToggle(gpioPortF, LED0_PIN);
OSTimeDly(delay, OS_OPT_TIME_DLY, &err);
if (RTOS_ERR_CODE_GET(err) != RTOS_ERR_NONE)
{
///
}
}
}
и во вторую задачу вообще не входит.RTOS_ERR_WOULD_OVF [30]
#if (OS_CFG_TMR_EN == DEF_ENABLED)
static CPU_STK TimerTaskStk[LAB_OS_TMR_TASK_STK_SIZE];
#define TIMER_TASK_CFG .TmrTaskCfg = \
{ \
.StkBasePtr = &TimerTaskStk[0], \
.StkSize = LAB_OS_TMR_TASK_STK_SIZE, \
.Prio = LAB_OS_TMR_TASK_PRIO, \
.RateHz = LAB_OS_TMR_TASK_RATE_HZ \
},
#else
#define TIMER_TASK_CFG
#endif
CPU_Init();
CMU_ClockEnable(cmuClock_GPIO, true);
Ср апр 29, 2020 23:00:08
timer_frequency = sleeptimer_hal_get_timer_frequency();
CMU_ClockFreqGet(cmuClock_RTCC)
Ср апр 29, 2020 23:30:28
Чт апр 30, 2020 16:30:14
OS_ASSERT_DBG_ERR_SET((OSCfg_TickRate_Hz <= sl_sleeptimer_get_timer_frequency()), *p_err, RTOS_ERR_INVALID_CFG, ;)
Чт апр 30, 2020 21:30:58
Чт апр 30, 2020 22:42:56
sleeptimer_osc = cmuOsc_LFRCO;
sleeptimer_select = cmuSelect_LFRCO;
#else
#error "The definition of BSP_LF_CLK_SEL in bsp_cfg.h is not handled."
#endif
#if ((SL_SLEEPTIMER_PERIPHERAL == SL_SLEEPTIMER_PERIPHERAL_RTCC) || (SL_SLEEPTIMER_PERIPHERAL == SL_SLEEPTIMER_PERIPHERAL_RTC))
#if (SL_SLEEPTIMER_PERIPHERAL == SL_SLEEPTIMER_PERIPHERAL_RTCC)
#if defined(_SILICON_LABS_32B_SERIES_2)
sleeptimer_clock = cmuClock_RTCC;
#else
sleeptimer_clock = cmuClock_LFE;
#endif
#elif (SL_SLEEPTIMER_PERIPHERAL == SL_SLEEPTIMER_PERIPHERAL_RTC)
sleeptimer_clock = cmuClock_LFA;
#endif
CMU_ClockSelectSet(sleeptimer_clock, sleeptimer_select);
#elif (SL_SLEEPTIMER_PERIPHERAL != SL_SLEEPTIMER_PERIPHERAL_PRORTC)
#error "Invalid peripheral selected for SL_SLEEPTIMER in sl_sleeptimer_config.h"
#endif
CMU_OscillatorEnable(sleeptimer_osc, true, false);
Чт апр 30, 2020 23:20:50
Также уверен, что скоро измените своё мнение по этому поводу. Тактирование у EFM32 совершенно прозрачное по сравнению с другими моделями АРМ. Может оно выглядит сложным только сразу после 8- и 16-битных МК.Я думал, что у MSP430 замороченная система тактирования, а у Cortex M4 это вообще головоломка.
Take it easy. После недели работы с ARM будете конфигурировать любую периферию на уровне регистров в течении получаса с перекурами. А пока с библиотекой периферии вообще проблем не вижу - заполнил структуру (и то, большая часть её уже заполнена дефолтно) и передал её в API функцию.Но убило не это, а инициализация DCDC преобразователя - это какие-то вилы))) Это неделю надо безвылазно разбираться с регистрами, чтобы прикинуть что к чему)))
Как я понял, Вам это уже удалось. С USB и MQTT я под RTOS не работал, а вот для Bluetooth - пару недель назад представил сюда статью, скоро опубликуют, надеюсь.светодиодиками поморгать из операционной системы. Ну это для начала.
Пт май 01, 2020 03:05:57
Как я понял, Вам это уже удалось.
а вот для Bluetooth - пару недель назад представил сюда статью, скоро опубликуют, надеюсь.
Пт май 01, 2020 09:05:48
Пт май 01, 2020 13:54:41
Где бы почитать что есть что? IAR формирует map файл и в нём всё расписано. Здесь ж не понимаю, что вошло в прошивку, а что нет( Сколько ОЗУ занято...section size addr
.text 32740 0
.ARM.exidx 8 32740
.data 284 536870912
.bss 15228 536871196
.heap 3072 536886424
.stack_dummy 1024 536886424
.ARM.attributes 46 0
.comment 126 0
.debug_info 161910 0
.debug_abbrev 14073 0
.debug_loc 32912 0
.debug_aranges 3984 0
.debug_ranges 3504 0
.debug_line 50293 0
.debug_str 34601 0
.debug_frame 16040 0
.stabstr 223 0
Total 370068
Пт май 01, 2020 20:07:14
Пт май 01, 2020 21:58:58
Пт май 01, 2020 23:04:37
Сб май 02, 2020 04:10:48
Мигание светодиодов с микроамперным потреблением можно добиться и без платы за флеш для RTOS.
OS_TRACE_INIT необходим только для Segger System View.
В студии можно запускать загрузочный адаптер только для отладки кода или измерения потребления, но не оба сразу.
уменьшает головную боль состыковки временных требований обработки событий стека и приложения.
В любом случае для Bluetooth следует просто купить Силлабовский Bluetooth модуль
Сб май 02, 2020 04:39:31
Я не знаю что Вы делаете в программе, но для RTOS нужно разрешить сбор статистики в os_cfg.h, см. лучше статью. Кроме того, возможно что с SDK 2.7.x что-то ещё недоделано. Поэтому и рекомендовал прошлую стабильную и хорошо отлаженную версию 2.6.4, где всё работает как доктор прописал.Блин, а почему у меня в uc/Probe одни нули?
На силлабовской плате дефолтно работает DC-DC конвертер. Его можно отключить, будет менее шумно, см. графики в первой часи статьи про Bluetooth. Кроме того, при работе RTOS помимо мигания светиком могут работать ещё какие-то потоки, например, сбор статистики, что тоже добавит шума. Если значения тока стоят стабильно, у меня-бы это вызывало больше подозрений.А нет ощущения, что этот амперметр подвирает?
RAIL у силлабов - это Radio Abstraction Interface Layer. Фактически планировщик для работы радио, типа своей маленькой RTOS. Сейчас RAIL работает в купе с Micrium.У них пакет вроде RAIL называется.
Для субггц имеется протокол Z-wave, у Силлабов он, вроде, стабильный после 20 лет разработки. Недавно был вебинар про него, если интересно могу поискать линк на его видео-запись.Не знаю, как он для субгигарца - не разбирался ещё.
У силлабов много ранзых Bluetooth модулей, я рекомендуюА как он называется?
Сб май 02, 2020 13:10:52
Я не знаю что Вы делаете в программе, но для RTOS нужно разрешить сбор статистики в os_cfg.h, см. лучше статью. Кроме того, возможно что с SDK 2.7.x что-то ещё недоделано. Поэтому и рекомендовал прошлую стабильную и хорошо отлаженную версию 2.6.4, где всё работает как доктор прописал.
void OSIdleEnterHook (void)
{
EMU_EnterEM2(true);
}
На силлабовской плате дефолтно работает DC-DC конвертер. Его можно отключить, будет менее шумно, см. графики в первой часи статьи про Bluetooth. Кроме того, при работе RTOS помимо мигания светиком могут работать ещё какие-то потоки, например, сбор статистики, что тоже добавит шума. Если значения тока стоят стабильно, у меня-бы это вызывало больше подозрений.
Сейчас RAIL работает в купе с Micrium.
Для субггц имеется протокол Z-wave, у Силлабов он, вроде, стабильный после 20 лет разработки. Недавно был вебинар про него, если интересно могу поискать линк на его видео-запись.
У силлабов много ранзых Bluetooth модулей, я рекомендую
https://www.mouser.com/Search/Refine?Keyword=bgm13p
См. также эту ветку насчёт Bluetooth модулей и пр.
Ср май 06, 2020 23:12:25
void InitUART0 (void)
{
RTOS_ERR err;
USART_InitAsync_TypeDef usart_initasync = USART_INITASYNC_DEFAULT;
GPIO_PinModeSet(gpioPortA, 1, gpioModeInput, 0);
GPIO_PinModeSet(gpioPortA, 0, gpioModePushPull, 1);
//GPIO_PinModeSet(gpioPortA, 5, gpioModePushPull, 1); <-from VCOM
CMU_ClockEnable(cmuClock_USART0, true);
usart_initasync.enable = usartDisable;
USART_InitAsync(USART0, &usart_initasync);
USART0->ROUTELOC0 = USART_ROUTELOC0_RXLOC_LOC0 | USART_ROUTELOC0_TXLOC_LOC0;
USART0->ROUTEPEN |= USART_ROUTEPEN_TXPEN | USART_ROUTEPEN_RXPEN;
USART_IntEnable(USART0, USART_IEN_RXDATAV);
USART_IntEnable(USART0, USART_IEN_TXC);
NVIC_EnableIRQ(USART0_RX_IRQn);
NVIC_EnableIRQ(USART0_TX_IRQn);
USART_Enable(USART0, usartEnable);
IO_Init(&err);
APP_RTOS_ASSERT_DBG((RTOS_ERR_CODE_GET(err) == RTOS_ERR_NONE), 1);
Serial_Init(&err);
APP_RTOS_ASSERT_DBG((RTOS_ERR_CODE_GET(err) == RTOS_ERR_NONE), 1);
}
Чт май 07, 2020 00:55:50
Чт май 07, 2020 02:18:27
Migration Guide: from FreeRTOS to Micrium OS (секция 10).
Пт май 08, 2020 17:26:49
См. KA и NKA типы ISR.