Autor Tema: Como proteger código en CCS (escribiendo a partir de la linea 50)  (Leído 1437 veces)

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

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Como proteger código en CCS (escribiendo a partir de la linea 50)
« en: 21 de Noviembre de 2019, 16:23:06 »
Cordial saludo, antes de comenzar en C utilice assembler y para proteger el código en un pic 12f508 recuerdo que debía hacerlo  programando a partir de la linea 50 en adelante ya, que si no lo hacia estas primeras lineas se seguían viendo aun con el code protect.
mi duda es como comienzo a programar en CCS a partir de la linea 50 ya que he visto que se presenta el mismo problema.
Gracias de antemano.
« Última modificación: 21 de Noviembre de 2019, 16:26:36 por johenrod »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1190
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #1 en: 21 de Noviembre de 2019, 19:14:56 »
Nunca me ha pasado eso, con ningún microcontrolador PIC de esa familia. Una vez que se activa el bit de CP en el registro de configuración, toda la memoria de código queda protegida.

¿Podrías poner alguna captura de la pantalla cuando lees el microcontrolador, para ver el efecto que mencionas?

elreypic.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 7813
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #2 en: 21 de Noviembre de 2019, 20:24:04 »
Algunos PICs funcionan asi, por ejemplo el que el nombra dice lo siguiente:

Citar
The first 64 locations and the last location (OSCCAL) can be read, regardless of the code protection bit setting.

Yo no le veo sentido de que te compliques moviendo el código, ya que en C, 64 lugares no es NADA, la configuración de los módulos, inicializacion de variables ya es suficiente como para cubrir esos valores.

No creo que tu programa entre en 64 lugares de memoria, el while sin nada de eso ya ocupa 5 lugares.
Sino hay otros PICs que protegen toda la memoria y no solo una parte..

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1190
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #3 en: 21 de Noviembre de 2019, 20:58:38 »
Estás en lo cierto KILLERJC. Nunca me había percatado de ese detalle en estos micros pequeñitos.
Pero al fin y al cabo si queda desprotegida esa sección, no importaría a que no todo el código está accesible.

Y como bien mencionas no vale la pena mover el código 64 lugares solo para protejer el código entero contra lectura.
Pero en caso de querer hacerlo se usa la directiva #ORG (ver manual de CCS página 161).
Esta directiva debe colocarse antes de la función main(), algo parecido a:

#ORG 0X0051
main() {

}

O bien se puede reservar ese segmento dejándolo vacío:

#ORG 0X0000, 0X0050 {}

Nunca he probado esto, pero lo concluí del manual.

elreypic.
« Última modificación: 21 de Noviembre de 2019, 21:01:15 por elreypic2 »

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #4 en: 22 de Noviembre de 2019, 12:15:42 »
cordial saludo, gracias por sus respuestas,,
El inconveniente es que es un proyecto para comercializar, y en ocasiones el código es muy corto y no alcanza a superar 30 lineas (posiciones de memoria), entonces el código se puede ver completico, entonces es por eso mi requerimiento de hacerlo en CCS..
Al programarlo con el pickit3 se ven claramente las primeras lineas de código sin protección

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #5 en: 22 de Noviembre de 2019, 13:54:06 »
voy a probar lo anterior,,,
« Última modificación: 22 de Noviembre de 2019, 13:57:53 por johenrod »

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #6 en: 22 de Noviembre de 2019, 13:56:26 »
Pero en caso de querer hacerlo se usa la directiva #ORG (ver manual de CCS página 161).
Esta directiva debe colocarse antes de la función main(), algo parecido a:

#ORG 0X0051
main() {

}

O bien se puede reservar ese segmento dejándolo vacío:

#ORG 0X0000, 0X0050 {}

Nunca he probado esto, pero lo concluí del manual.
realice lo anterior y saca un error al compilar.........

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1190
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #7 en: 22 de Noviembre de 2019, 15:18:06 »
Que tal johenrod,

¿Probaste las dos opciones y ambas te sacaron error?

¿Podrías indicar cuál es el error que te muestra (en ambos casos)?

elreypic.

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #8 en: 22 de Noviembre de 2019, 18:35:05 »
"elreypic2"
Cordial saludo, en realidad es como lo exponías, sucedía que estaba teniendo problemas para colocar las direcciones de memoria pero, me pegue del datasheet y lo logre. :-/
mil gracias por la ayuda recibida, me siento muy agradecido.

Dejo info al respecto, a alguien mas,,, podría servirle


Código: [Seleccionar]
   #include <12F508.h>
   #FUSES NOWDT,PROTECT //No Watch Dog Timer
   //#use delay(crystal=4000000)
   #use delay(internal=4000000)
   #define LED PIN_B0
   #define DELAY 500
   #ORG 0x50, 0X01FF
   
   void main()
   {
   
      //Example blinking LED program
      while(true)
      {
         output_low(LED);
         delay_ms(DELAY);
         output_high(LED);
         delay_ms(DELAY);
      }
   
   }
   

Código: [Seleccionar]
000 025 A50 A03 20D 643 A14 C01 028 067 2E7 A09 2E8 A08 C4A 027 2E7
010 A0F A12 2ED A06 800 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
020 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
030 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
040 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
050 064 CFF 02B 40B 20B 006 406 C02 02C CFA 02D 903 2EC A59 40B 20B
060 006 506 C02 02C CFA 02D 903 2EC A64 A53 003 FFF FFF FFF FFF FFF
070 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF

Código: [Seleccionar]
000 025 A50 A03 20D 643 A14 C01 028 067 2E7 A09 2E8 A08 C4A 027 2E7
010 A0F A12 2ED A06 800 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
020 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
030 FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF FFF
040 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
050 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
060 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
070 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000

nota: Las lineas superiores corresponden a los archivos de cabecera las cuales no importan mucho ya que  lo que queremos proteger es el código.

" Quería resaltar en rojo los cambios del código , pero no se como hacerlo"
« Última modificación: 22 de Noviembre de 2019, 19:07:20 por johenrod »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1190
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #9 en: 22 de Noviembre de 2019, 19:22:25 »
Pusiste el código pero no el error que te muestra al compilar

elreypic.

Desconectado johenrod

  • PIC12
  • **
  • Mensajes: 72
Re:Como proteger código en CCS (escribiendo a partir de la linea 50)
« Respuesta #10 en: 22 de Noviembre de 2019, 20:01:36 »
Este es el error que mostraba...


 

anything