Duda con modo kernel y CNC

Iniciado por achernar_, 21 Agosto 2012, 23:43 PM

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

achernar_

Hola, mi duda es la siguiente, para controlar una máquina frezadora a contról numérico, utilizo el mach3 un programa que hace de interfaz entre el usuario y la frezadora (conectada al puerto paralelo de la computadora).

Mach3 usa un driver para controlar el puerto paralelo, estoy investigando porqué porque estoy intentando hacer un soft similar pero simplificado. Quiero saber cuales son las ventajas del modo kernel. Pero ya se me acabaron las palabras para google.

Esto es lo que dice en el manual del mach3:

CitarMach3 debe ser capaz de enviar muy exactamente las señales de control a los ejes de la máquinaherramienta.
Windows carga y ejecuta programas normales de usuario cuando no tiene nada mejor para
hacerse. Así Mach3 no es un "programa normal de usuario"; éste debe estar al nivel más bajo dentro
Windows (esto es el manejo de interrupciones). Además para hacer esto se requiere posiblemente alta
velocidad (cada eje puede requerir atención 45.000 veces por segundo), el driver necesita sintonizar su
propio código. Windows no permite esto (este es un truco que juegan los virus) así ello se tiene que
solicitar un permiso especial. Este proceso requiere los reinicios de PC. Así si usted no ha realizado los
reinicios solicitados entonces Windows puede presentar la pantalla azul de muerte y el driver puede ser
corrompido. La única salida de esto será desinstalar manualmente el driver

Me gustaria saber si alguien me pudiera expandir un poco mas detalladamente esta expicación. Encuentro solo información de como programar drivers, que me va a resultar util, pero también quiero saber porque en este caso resulta necesario programar un driver ¿Si la computadora se relentiza por algún motivo, el driver sigue ejecutandose con la misma velocidad?¿Tiene acceso al timer de un modo diferente?¿Puede trabajar mas rápido?¿o mas constantemente?¿Por qué?

Bueno Muchas gracias por haber leido hasta el final  ;D espero una mano porque estoy medio estancado

Ah algo más:

Citarhttp://2004.encuentrolinux.cl/docs/presentaciones/pdf/presentacion-cduclos.pdf


La programación en modo Kernel debiera utilizarse
en situaciones donde el rendimiento es crítico y en
aquellas situaciones donde se requiere acceso a
hardware que no es accesible a las aplicaciones de
usuario.
La programación en modo Kernel no sirve para
todas las situaciones


Desventajas:
● Los recursos disponibles en modo Kernel son por
lo general muy limitados
● Ausencia de printf (Cuidado con el uso de printk)
● No hay aritmética de punto flotante
● El flujo del tiempo no es lineal

Tengo una habilidad sorprendente para hacer cosas que no sorprenden.

0xDani

Pues eso lo que viene a decir es que es un programa que necesita de un rendimiento y de acceso al hardware que no se puede obtener programando un programa normal de usuario, y tiene que recurrir a programar un driver. En tu post citas dos fuentes, una habla en el contexto de windows y otra en el de linux, ¿en cual quieres programarlo?.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

achernar_

daniyo gracias por la respuesta, pienso programarlo en windows con el masm32 si fuese necesario realmente programar un kernel. Noto que según la explicacion uno puede acceder con otras posibilidades al puerto paralelo, pero queria saber bien el motivo. Dejando de lado este ejemplo uno puede decir que en una carrera entre una Ferrari y un caballo en una autopista ganaria un Ferrari por su potencia y en un camino de montaña un caballo por la considerable distancia que le otorgan sus patas entre su cuerpo y el piso.

Mi duda es cuales son las caracteristicas de la programación en modo kernel que la hacen favorita al momento de tener que programar el puerto paralelo, porque no se puede hacer desde un programa por ejemplo en vb6. Porque en tal caso esto parece una cuestion mas de velocidad que de acceso a cierto privilegios (supongo desde mi ignorancia) porque entonces un programa en modo kernel parece poder manejar mayor velocidad?
Tengo una habilidad sorprendente para hacer cosas que no sorprenden.

0xDani

Pues lo primero decirte que yo tambien hablo desde mi ignorancia, pero supongo que la diferencia entre hacer algo en modo kernel y en modo usuario es que si quieres manejar hardware por ejemplo, y si no quieres que se te cuelgue el congelador, necesitaras mas privilegios, por ejemplo si windows da un pantallazo azul(lo cual no seria raro :¬¬ ) querras que tu driver siga funcionando, sin embargo no creo que sea facil hacer un programa con interfaz grafica desde el modo kernel.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

achernar_

Bueno, creo que solucioné el problema reduciendo considerablemente el flujo de informacion desde la computadora a la placa controladora, parece más facil programar un pic que un driver para este caso. Gracias. Saludos.
Tengo una habilidad sorprendente para hacer cosas que no sorprenden.