Autor Tema: FreeRTOS en XC8  (Leído 786 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JoshFino

  • PIC10
  • *
  • Mensajes: 1
FreeRTOS en XC8
« en: 04 de Enero de 2016, 03:04:15 »
Saludos compañeros!!
El motivo de este post es para preguntar si alguien a podido echar a andar este RTOS en los PIC18 con el compilador XC8 de microchip, ya que he modificado previamente los archivos del port para hacerlos compatibles con el compilador pero tanto al simular (Proteus) como en físico no funciona!

En Proteus, en la ventana de Simulation Log muestra los siguientes mensajes:
Writing TOSL when stack is empty (STKPTR is ZERO) has no effect
Writing TOSH when stack is empty (STKPTR is ZERO) has no effect
Writing TOSU when stack is empty (STKPTR is ZERO) has no effect
Attempt to execute ilegal opcode (loaded from PC = 0804). Instruction executes as a NOP.
Attempt to execute ilegal opcode (loaded from PC = 080A). Instruction executes as a NOP.

Cabe decir que el programa compila correctamente.

El proyecto es el siguiente:
https://mega.nz/#!OIMCCZIa!SWdWcp0h6YDH1Q9iS4pFGutGha_vMM6yNFTsR72Juv8

Agradezco cualquier ayuda y/o sugerencia, gracias!!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 5948
Re:FreeRTOS en XC8
« Respuesta #1 en: 04 de Enero de 2016, 05:24:59 »
Writing TOSL when stack is empty (STKPTR is ZERO) has no effect
Writing TOSH when stack is empty (STKPTR is ZERO) has no effect
Writing TOSU when stack is empty (STKPTR is ZERO) has no effect

esto es por que cuando se guarda el contexto se guarda tambien eso, y cuando se recupera tambien.

Esto:

Attempt to execute ilegal opcode (loaded from PC = 0804). Instruction executes as a NOP.
Attempt to execute ilegal opcode (loaded from PC = 080A). Instruction executes as a NOP.

Ya es otra cosa.. realmente no se que hay justo en esas posiciones. Ni por que se generaron esos opcode ilegales.
EDIT:
Acabo de mirar el .map y me encuentro que alli parece haber una seccion de constantes (imagino por el nombre) llamada:
                smallconst                     000800  00000E  00080E       400       0  SMALLCON

y que ocupa justo esas posiciones de memoria, la cual Jamas deberia llegar alli si es que son justamente constantes. Debe haber un error en el programa que haga que salte a esa posicion de memoria.
« Última modificación: 04 de Enero de 2016, 14:47:36 por KILLERJC »

Desconectado Arte8bits

  • PIC10
  • *
  • Mensajes: 8
    • Pagina web de Javier Longares
Re:FreeRTOS en XC8
« Respuesta #2 en: 22 de Junio de 2017, 05:39:39 »
Buenas,

En el caso de un PIC18, si quieres programar de algún modo parecido a un RTOS, yo en tu lugar integraría Protothreads, una metodología de programación desarrollada por el SICS (Sweidish Institute of Computer Sciences).

Hace unos años escribí un artículo en español sobre Protothreads, te pongo el enlace por si resulta de tu interés: http://www.javierlongares.com/arte-en-8-bits/protothreads-threads-en-c-sin-sistema-operativo/

Saludos
Te invito a visitar y compartir el contenido de Arte en 8 bits el blog de sistemas embebidos en español.

Javier Longares Abaiz


 

anything