Dúvidas sobre as últimas alterações no código (SVN r334 em diante)

2 views
Skip to first unread message

Miguel Moreto

unread,
Nov 18, 2014, 2:12:59 PM11/18/14
to br...@googlegroups.com
Prezados desenvolvedores,

reparei que houveram algumas alterações no BRTOS no início desse ano, a partir da revisão de número 334 do SVN. Um parâmetro a mais foi adicionado na função InstallTask.
Com essa alteração, ao fazer o update do brtos meus programas deixaram de funcionar e tive que reverter o brtos para uma revisão anterior (333).

Eu gostaria de saber o que significa esse novo parâmetro (OS_CPU_TYPE *TaskHandle) da função InstallTask e como fazer para atualizar meus códigos que estão usando a versão 1.77 do BRTOS para essa nova versão. Não encontrei nada sobre isso na documentação, é algo ainda experimental?

Desde já agradeço!

Abraços,

Miguel Moreto

Carlos Henrique Barriquello

unread,
Nov 18, 2014, 2:34:06 PM11/18/14
to br...@googlegroups.com
Olá Miguel,

esta funcionalidade permite passar um ponteiro "*TaskHandle" na criação da tarefa para receber a id da tarefa no sistema. Ela útil para usar com as funções BlockTask e UnBlockTask que recebem a id da tarefa como argumento. Mas caso você não vá utilizar esta funcionalidade, pode-se passar o ponteiro *TaskHandle como NULL para manter a compatibilidade do seu código.

Abraço,
Carlos H. Barriquello



--
Você recebeu essa mensagem porque está inscrito no grupo "BRTOS" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para brtos+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para br...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/brtos.
Para mais opções, acesse https://groups.google.com/d/optout.

Gustavo Denardin

unread,
Nov 19, 2014, 10:43:15 AM11/19/14
to br...@googlegroups.com
É exatamente isso Miguel. Faltou uma definição para manter compatibilidade com as versões antigas, mas simplesmente passar o novo argumento como NULL resolve o problema de compatibilidade.

Abraço,
Gustavo Weber Denardin
 

--

Miguel Moreto

unread,
Nov 19, 2014, 10:52:44 AM11/19/14
to br...@googlegroups.com
Obrigado Gustavo e Carlos!

apenas confirmem se eu entendi bem a finalidade desse novo argumento: a ideia é que a própria tarefa possa se bloquear e desbloquear?

aproveitando, apenas uma pergunta rápida (só para não abrir outro tópico): o port do BRTOS para a placa STM32F4 Discovery (STM32F407) é para funcionar direto com a ST NucleoF401-RE (STM32F401RE). Ambas são cortex M4. Claro, fazendo as devidas alterações no clock. Eu tenho uma placa dessas e em breve quero testar o BRTOS nela.

Abraços!

Moreto
--

Miguel Moreto

Gustavo Denardin

unread,
Nov 19, 2014, 11:22:12 AM11/19/14
to br...@googlegroups.com
Olá Miguel. A finalidade é prover um handler para as tarefas (assim como no linux há o handler para as threads), que pode ser utilizado em muitos casos. Um dos casos mais comuns são as funções de bloqueio e desbloqueio da tarefa. Qualquer processo ou interrupção utilizando as funções BlockTask e UnBlockTask pode bloquear ou desbloquear uma tarefa se utilizar o handler da tarefa que deseja bloquear como parâmetro. Ainda, a própria tarefa também pode se bloquear, mas por razões obvias outra tarefa ou uma interrupção deverá reativá-la.

Por exemplo, vc instalou a tarefa dessa forma:

OS_CPU_TYPE TaskHandler1; // note que a variável é global

  if(InstallTask(&System_Time,"System Time",512,31, &TaskHandler1) != OK)
  {
    // Oh Oh
    // Não deveria entrar aqui !!!
    while(1){};
  };


Então, para bloquear a tarefa é só usar o handler:
BlockTask(TaskHandler1);

e para desbloquear:
UnBlockTask(TaskHandler1);

No futuro o handler pode ser utilizado para mais funcionalidades. Entendeu?


Quanto ao port para a placa ST NucleoF401-RE, deve funcionar sim. Ambos os kits que você citou utilizam processadores ARM Cortex-M4F, ou seja, são compatíveis. No entanto, você deve verificar a compatibilidade da IDE utilzada (CoIDE). A IDE é que prove o suporte as bibliotecas CMSIS (configuração do microcontrolador) e as configurações de linker para esse microcontrolador (tamanho e endereço da FLASH/RAM, por exemplo). Se os endereços forem os mesmos é possível que o projeto do STM32F4 Discovery funcione no ST NucleoF401RE.

Qualquer dúvida estamos a disposição.
Abraço,

Gustavo Weber Denardin

Miguel Moreto

unread,
Nov 19, 2014, 11:30:33 AM11/19/14
to br...@googlegroups.com
Obrigado Gustavo!

agora entendi perfeitamente, eu não tinha me dado conta de que o handler era global. Realmente faz mais sentido.

Quanto a IDE, já tenho o COIDE configurado incluindo clocks (84MHz) e os endereços de flash e ram que são diferentes. Tá funcionando bem. Postei um projetinho no github: https://github.com/miguelmoreto/NucleoF401-COIDE-blink

Achei legal que o STlink da placa tem uma USART ligada no microcontrolador que acaba virando uma Virtual Com Port. Muito útil, não precisa mais aqueles adaptadores chatos.

Quando eu tiver um projeto do BROS funcionando, eu posto um também.

Abraços,

Moreto
Reply all
Reply to author
Forward
0 new messages