Autor Tema: Proteger PIC17C44 (SOLUCIONADO)  (Leído 3015 veces)

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

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Proteger PIC17C44 (SOLUCIONADO)
« en: 10 de Abril de 2015, 15:04:19 »
Hola amigos, tengo un gran problema y es que tengo un código para este PIC y me han pedido unas copias, lo que no consigo es proteger el código para que no puedan leer y sacar más copias, el programador que tengo es un Galep5 y no tiene la opción de CP, hay que hacerlo modificando los bits y yo con eso me pierdo, he estado leyendo el datasheet del este micro y logro entender como hacerlo.
Espero alguna ayudita.
Muchas gracias.
« Última modificación: 15 de Abril de 2015, 17:16:05 por danitut »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Proteger PIC17C44
« Respuesta #1 en: 10 de Abril de 2015, 16:45:14 »
hola danitut, jamas he utilizado ese programador  :? no se ni cual es, de todas formas el que mejor te puede ayudar con este problema creo que es planeta9999, es un experto encriptando codigo botloader y ahora mismo esta llevando un post para encriptar en un ST, quizás puedas coger ideas de hay o aclararte las ideas.



http://www.todopic.com.ar/foros/index.php?topic=44131.0

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #2 en: 10 de Abril de 2015, 18:38:12 »
Gracias por tu respuesta juaperser1, yo creo que tiene que ser una tontería, lo que pasa es que no logro entender como hay que configurarlo, en teoría es modificando los bits, aquí es donde yo me pierdo, voy a adjuntar unas capturas de pantalla de la parte del datasheet donde dice lo que hay que modificar y la parte del sofware del programador que hay que configurar a ver si así me podéis ayudar.
Mil gracias

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re: Proteger PIC17C44
« Respuesta #3 en: 10 de Abril de 2015, 18:59:30 »
aaa ok ok te entendi mal, culpa mia. En los bit de configuración dispones de una serie de bit (o fuses como lo quieras llamar) que te permiten proteger el código como lectura escritura etc. ha bit para la memoria de programa la epprom flash etc etc.

hechale un vistazo a esto:

http://tecbolivia.com/index.php/articulos-y-tutoriales-microcontroladores/34-entendiendo-los-bits-de-configuracion-en-el-pic16-de-microchip

hay mucha información por internet, te aconsejo que leas un poco sobre el tema y luego acude a la hoja de datos de tu microcontralador y asi activa en tu codigo los fuses que creas necesarios para protegerlo.

debes tener en cuenta algunas cosas, como por ejemplo que si activas la proteccion de lectura de la memoria donde tienes el programa, cuando intentes verificar una correcta programacion te dara error, y deberas asegurarte de otra manera que el dispositivo a sido programado correctamente.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger PIC17C44
« Respuesta #4 en: 10 de Abril de 2015, 19:50:01 »
Pero ese es un poco diferente a los comunes.. Creo que esa es su confusion. lo que el NO leyo en el datasheet es esto:

Citar
The microcontroller and protected microcontroller modes only allow internal execution. ..... The protected microcontroller mode also enables the code protection feature

The extended microcontroller mode accesses both the internal program memory as well as external program memory

The microprocessor mode only accesses the external program memory. Microprocessor mode is the default mode of an unprogrammed device

El PIC tiene la opcion de ajustarse y seguir ejecutando codigo desde una memoria externa. De todas formas para habilitar la proteccion de codigo los valores de los bits PM2:PM0 deberia ser 000.
Esto hace que solamente funcione con el codigo de la memoria interna al PIC

En el MPLAB deberias poder poner los fuses como queres. Y eso solo iria al .hex en el cual tu programador deberia grabarlo

EDIT: No aparece en el MPLAB X el modelo. asi que dberias grabarlo a mano a los valores.

Con los bits de configuracion parece ser que es 
( 0xFFE6 )

0xE6 --- PM1 = 1, PM0 = 0, WDT activado postscaler en 64 , Oscillador XT
0xFF ---- PM2 = 1

PMx = 110 Microcontroller Mode

Y lo que deberia ser para activar el codigo es:

0xA6 ---- PM1:PM0 = 0 , WDT con postscaler en 64, Oscilador XT
0x7F ---- PM2 = 0

PMx = 000 Protected Microcontroller

Y quedaria algo asi 0x7FA6 el codigo a grabar, a no ser que tambien quieras quitar el WDT
« Última modificación: 11 de Abril de 2015, 01:03:52 por KILLERJC »

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #5 en: 12 de Abril de 2015, 15:05:14 »
Hola KILLERJC y gracias por tu pronta respuesta, no he podido contestar antes porque he estado fuera el finde...
Bueno no consigo ver la linea donde tengo que modificar lo que me has puesto, te adjunto una captura de pantalla a ver si es alguna de estas lineas.
Muchas gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger PIC17C44
« Respuesta #6 en: 12 de Abril de 2015, 19:24:29 »
El .hex abrilo con el notepad de windows. especialmente las ultimas lineas

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #7 en: 13 de Abril de 2015, 12:06:43 »
El .hex abrilo con el notepad de windows. especialmente las ultimas lineas
Ya lo abrí con el Wordpad de Windows, me pasa lo mismo  :oops: me pierdo....
He hecho una captura de pantalla con el editor de texto del software del programador y del Wordpad
Mil gracias

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger PIC17C44
« Respuesta #8 en: 13 de Abril de 2015, 12:33:49 »
En fin, yo tome ese camino por que pense que ibas a hacer eso o estaba mas complejo. pero parece que se te complico demasiado.

Del archivo pic17c44.inc

Código: ASM
  1. _PMC_MODE                       EQU     H'7FAF'
  2. _XMC_MODE                       EQU     H'FFBF'
  3. _MC_MODE                        EQU     H'FFEF'
  4. _MP_MODE                        EQU     H'FFFF'
  5.  
  6. _WDT_NORM                       EQU     H'FFF3'
  7. _WDT_OFF                        EQU     H'FFF3'
  8. _WDT_64                         EQU     H'FFF7'
  9. _WDT_256                        EQU     H'FFFB'
  10. _WDT_1                          EQU     H'FFFF'
  11.  
  12. _LF_OSC                         EQU     H'FFFC'
  13. _RC_OSC                         EQU     H'FFFD'
  14. _XT_OSC                         EQU     H'FFFE'
  15. _EC_OSC                         EQU     H'FFFF'

Deberias usar esto (asumineod que usas cristal, el WDT lo tenes activado y con un preescaler de 64, y queres el modo protegido)

Código: ASM
  1. __CONFIG     _PMC_MODE & _WDT_64 & _XT_OSC

Pone esa linea al principio de tu programa

PMC = Protected Microcontroller Mode

WDT = Watchdog timer, tome que estaba activado con un preescaler de 64, si no lo tenes activado pones _WDT_OFF

XT = de cristal

Te pido perdon por que la complique ya que vi que en la lista del MPLAB X no aparecian los PIC17C44 , y crei que no daban soporte al mismo, pero cuando observe vi que deberia haber un include y es ahi donde suelen poner los codigos para los fuses.
Lo que hace es un AND de cada unos de los valores:

0x7FAF & 0xFFF7 & 0xFFFE = 0x7FA6

Pero bueno, selecciona si vas a usar el WDT o no. el valor de arriba es el que da haciendo eso y se carga en los bits de configuracion. No te importan los valores solo que escribas el config bien y los valores los calcula solo el MPLAB, era solo para demostrastelo

« Última modificación: 13 de Abril de 2015, 12:40:52 por KILLERJC »

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #9 en: 13 de Abril de 2015, 12:46:57 »
Y pides perdón??
Perdón tendría que pedir yo por mi desconocimiento....
Lo ultimo que me comentas va a ser un poco difícil, ya que no tengo el código fuente, simplemente tengo el programa convertido a .hex en un micro no protegido contra lectura.
No me cansaré de dar la gracias.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger PIC17C44
« Respuesta #10 en: 13 de Abril de 2015, 12:57:47 »
Si tenes el .hex entonces abrilo con el bloc de notas, copiate las ultimas 5 lineas (deberia estar en la 2da del fondo hacia arriba como mucho, pero por las dudas) y ahi vemos que palabra de configuracion tiene escrita.

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #11 en: 13 de Abril de 2015, 13:05:10 »
Si tenes el .hex entonces abrilo con el bloc de notas, copiate las ultimas 5 lineas (deberia estar en la 2da del fondo hacia arriba como mucho, pero por las dudas) y ahi vemos que palabra de configuracion tiene escrita.
Las últimas es la captura que mandé en el otro post, o te refieres a las últimas que tienen algo de código que no sean todo ceros???
Esto es lo ultimo que viene antes de los ceros.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Proteger PIC17C44
« Respuesta #12 en: 13 de Abril de 2015, 13:13:31 »
Que tal danitut,

Puedes resolver tu problema de forma mas fácil usando el MPLAB (digamos la version 8.83) importas tu archivo .HEX seleccionando el micro correcto (PIC17C44) y leugo en el MENU das click izquierdo en "Configure" y luego en Configuration Bits. Ahi se abre la ventana en donde simplemente seleccionas la option "Prot. Microcontroller" (asegurate que la opcion de Configuration Bits set in code, esté deshabilitada, para que puedas realizar los cambios necesarios).
Una vez hecho esto vas nuevamente al MENU "file" y seleccionas Export... Al abrirse la ventana, habilitas la opcion Configuration bits, luego en la pestaña de File format, seleccionas Intel 32-bit HEX(INHX32). Le das click izquierdo en OK y se abrirá una ventana para guardar el nuevo archivo .HEX. Le das el nombre que quieres, selecciona la ubicación y listo. Ya has generado tu nuevo HEX con el codigo protegido.

Saludos,

Elreypic.

P.D si tienes problemas, y pudieras mandarme tu archivo .HEX en un mensaje privado podria ayudarte más fácilmente.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Proteger PIC17C44
« Respuesta #13 en: 13 de Abril de 2015, 13:16:43 »
Yo no podia hacer eso por que en el MPLAB X ya no aparece en la lista :/

Y danitut si podes hacer eso es mas simple, sino me referia a las ultimas lineas del todooooo el archivo. las ultimas no deberian ser puros ceros.

Desconectado danitut

  • PIC10
  • *
  • Mensajes: 8
Re: Proteger PIC17C44
« Respuesta #14 en: 15 de Abril de 2015, 17:15:26 »
Bueno cualquiera de las dos maneras en principio son válidas, he probado con esa versión de MPLAB y me ha dejado modificar los bits de configuración y con la opción de KILLRJC al poner en la casilla de Configuration Word de mi programador poniendo 7FA6, también me da error al verificar, con lo cual está protegido contra lectura.
Muchas gracias por vuestra ayuda.


 

anything