Placa de desenvolvimento Mini STM32 v3.0 + Display de 2.8" + touchscreen + SD Card breakout.
Mais um update ao desenvolvimento para esta placa, apesar da ST fornecer já um biblioteca com drivers para esta placa é muito mais simpático programar com um RTOS (Real Time Operating System) que basicamente é um sistema operativo destinado a execução de várias tarefas capaz de responder a eventos quer externos quer internos.
Apesar de já ter utilizado outros RTOS, actualmente utilizo o Chibios vister ter boa documentação implementado de uma forma, pode se dizer, bonita, ter HAL integrado, ter outros projectos opensource integrados e fácil desenvolvimento quer de aplicações quer de novas funcionalidades.
O ChibiOS tem a seguinte estrutura:
Não vou entrar em muitos detalhes acerca do conteúdo de cada pasta, mas é pesquisando no site do ChibiOS facilmente encontram boa documentação.
Neste momento utilizo a versão 2.7.0 unstable e para utilizar esta placa tive que criar um nova board nas fontes do ChibiOS. Portei de uma board já existente e adaptei a minha placa tendo em conta o manual e os shcematics da placa.
De seguida criei um demo para esta placa e testei a parte do sistema operativo.
Resultado Final:
*** ChibiOS/RT test suite****** Kernel: 2.7.0unstable*** Compiled: Jul 3 2014 - 12:30:48*** Compiler: GCC 4.8.2 20130624 (prerelease)*** Architecture: ARMv7-M*** Core Variant: Cortex-M3*** Port Info: Advanced kernel mode*** Platform: STM32F10x Performance Line Medium Density*** Test Board: Mini stm32 v3.0------------------------------------------------------------------------------- Test Case 1.1 (Threads, enqueuing test #1)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 1.2 (Threads, enqueuing test #2)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 1.3 (Threads, priority change)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 1.4 (Threads, delays)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 2.1 (Semaphores, enqueuing)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 2.2 (Semaphores, timeout)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 2.3 (Semaphores, atomic signal-wait)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 2.4 (Binary Semaphores, functionality)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.1 (Mutexes, priority enqueuing test)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.2 (Mutexes, priority inheritance, simple case)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.3 (Mutexes, priority inheritance, complex case)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.4 (Mutexes, priority return)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.5 (Mutexes, status)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.6 (CondVar, signal test)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.7 (CondVar, broadcast test)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 3.8 (CondVar, boost test)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 4.1 (Messages, loop)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 5.1 (Mailboxes, queuing and timeouts)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 6.1 (Events, registration and dispatch)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 6.2 (Events, wait and broadcast)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 6.3 (Events, timeouts)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 7.1 (Heap, allocation and fragmentation test)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 8.1 (Memory Pools, queue/dequeue)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 9.1 (Dynamic APIs, threads creation from heap)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 9.3 (Dynamic APIs, registry and references)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 10.1 (Queues, input queues)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 10.2 (Queues, output queues)--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.1 (Benchmark, messages #1)--- Score : 129511 msgs/S, 259022 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.2 (Benchmark, messages #2)--- Score : 101477 msgs/S, 202954 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.3 (Benchmark, messages #3)--- Score : 101477 msgs/S, 202954 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.4 (Benchmark, context switch)--- Score : 447056 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.5 (Benchmark, threads, full cycle)--- Score : 73509 threads/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.6 (Benchmark, threads, create only)--- Score : 113172 threads/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)--- Score : 28169 reschedules/S, 169014 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.8 (Benchmark, round robin context switching)--- Score : 241560 ctxswc/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.9 (Benchmark, I/O Queues throughput)--- Score : 410168 bytes/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.10 (Benchmark, virtual timers set/reset)--- Score : 345800 timers/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.11 (Benchmark, semaphores wait/signal)--- Score : 455580 wait+signal/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.12 (Benchmark, mutexes lock/unlock)--- Score : 518076 lock+unlock/S--- Result: SUCCESS------------------------------------------------------------------------------- Test Case 11.13 (Benchmark, RAM footprint)--- System: 468 bytes--- Thread: 72 bytes--- Timer : 20 bytes--- Semaph: 12 bytes--- EventS: 4 bytes--- EventL: 16 bytes--- Mutex : 16 bytes--- CondV.: 8 bytes--- Queue : 36 bytes--- MailB.: 40 bytes--- Result: SUCCESS----------------------------------------------------------------------------Final result: SUCCESS
Downloads:
Referências:
Sem comentários:
Enviar um comentário