Tuesday, December 13, 2016

0b00 Binary Options

El método tofile () de la matriz numpy se utilizó para escribir una matriz de números enteros de 32 bits sin signo como un archivo binario (test. bin). A continuación, c se utilizó para leer uint32t del archivo. El problema es que el programa c no leyó el valor correcto. Cómo corregir que el editor Hex muestra el test. bin es correcto porque el valor aumenta uno por uno, como se esperaba. Salida de fileio. py: test. bin: (en el editor hexadecimal. Vim con comando xxd) salida de fileio. cpp: Parece que el intercambio de bytes no es el único problema. El programa c ni siquiera leer todos los enteros 8bit correctamente, como en: No hay número 9,10,11,12,13, a pesar de estos números existen en la vista de editor hexadecimal de test. bin. Posiblemente las preguntas relacionadas: salida de readbinary. cpp (tiene 9,10,11,12). Calculadora binaria Utilice las calculadoras siguientes para realizar la suma, resta, multiplicación o división de dos valores binarios, convertir de valor binario a valor decimal o viceversa. Tenga en cuenta que debido a la limitación de la precisión de la computadora. Esta calculadora sólo puede tomar hasta 32 bits de valor binario o valores decimales de hasta 10 dígitos. El sistema binario es un sistema numérico que utiliza sólo dos símbolos, 0 y 1. Debido a su facilidad de implementación en los circuitos electrónicos digitales que utilizan el sistema binario, Puertas lógicas, todas las computadoras modernas utilizan el sistema binario internamente. Las siguientes son algunas conversiones típicas entre valores binarios y valores decimales. Decimal 0 0 en decimal binario 1 1 en decimal binario 2 10 en decimal binario 3 2 1 11 en decimal binario 4 2 2 100 en decimal binario 7 2 2 2 1 111 en decimal binario 8 2 3 1000 en decimal binario 10 2 3 2 1010 en decimal binario 16 2 4 10000 en decimal binario 20 2 4 2 2 10100 en binario Adición binaria La adición de binarios es similar al sistema decimal. La única diferencia es el remanente cuando el resultado es 2. 0 0 0 0 1 1 1 0 1 1 1 0, carry 1 10 Sustracción binaria La substracción funciona de la misma manera: 0 - 0 0 0 - 1 1, borrow 1 -1 1 - 0 1 1 - 1 0 El cargador de arranque OpenSDAv1 (ver 8220OpenSDA en el Freedom KL25Z Board 8220) está utilizando los archivos S-Record (S19) estándar de la industria. Sin embargo, la nueva placa FRDM-K64F (véase 8220FTF: FRDM-K64F, Kinetis Design Studio y Kinetis SDK 8220) tiene OpenSDAv2 en él, que es un cargador de arranque mbed. Así que cómo crear archivos con un IDE distinto de mbed para ese cargador de arranque que está presente en la tarjeta FRDM-K64F por defecto. Bueno, crear archivos binarios es una cosa, pero tenerlo trabajando con el gestor de arranque mbed es otro reto. FRDM-K64F con cargador de arranque mbed MSD mbed Bootloader y archivos binarios El firmware mbed que se ejecuta en el Kinetis K20 de la placa FRDM-K64F tiene tres funciones: mbed Dispositivos USB Interfaz de depuración como dispositivo HID USB implementando el puente CMSIS-DAP Serial a USB Lamentablemente no es una clase de dispositivo USB CDC, por lo que requiere un controlador USB propietario mbed para esto). MSD (dispositivo de almacenamiento masivo) USB Bootloader. Es interesante ver que la interfaz de depuración utiliza un USB HID (Human Interface Device Class). Así que para el host esto se parece a un teclado o un ratón (que son dispositivos HID también). La ventaja de este enfoque es que no se necesitan controladores en el host. Sin embargo, el interfaz HID es muy lento en comparación con otras clases de dispositivos (bueno, un teclado o un ratón no tiene que ser muy rápido), por lo que esto probablemente explica por qué la velocidad de la interfaz de depuración mbed es algo aceptable, pero no tan rápido como, p. Un PampE Multilink o Segger J-Link La tercera función es de interés aquí: el firmware mbed OpenSDAv2 se parece a un dispositivo de memoria USB (stick) donde puedo copiar archivos a él, y se programa el procesador de destino. Esta funcionalidad también existe en el firmware de OpenSDAv1 para otras tarjetas (por ejemplo, FRDM-KL25Z). Mientras que el firmware de OpenSDAv1 acepta archivos Motorola S19, por razones extrañas el cargador de arranque MSD de mbed solo acepta archivos binarios (.BIN). Yo prefiero mucho los archivos S19 estándar, ya que son fácilmente generados por cualquier herramienta, y hay muchas herramientas para convertir / tratar / cambiar archivos S19. No está claro para mí por qué el cargador de arranque mbed sólo acepta archivos BIN: los archivos S19 son estándar de la industria, fáciles de generar y manejar. Sí, los archivos S19 utilizan dos bytes para cada byte de código porque es un formato ASCII. Eso haría una diferencia si la velocidad de conexión al cargador de arranque sería limitada, pero esto no es el caso con OpenSDAv2: me refiero a USB no es un 8216few bytes por segundo8217 protocolo de comunicación donde un protocolo binario tendría sentido Crear archivos binarios con GNU ARM Plugins de Eclipse Tanto mi Kepler de Eclipse (ver 8220GNU Herramientas Adicionales: Crear Imagen de Flash, Tamaño de Impresión y Opciones de Listado Extendido 8220) y también KDS incluyen los plugins de GNU ARM Eclipse. CodeWarrior tiene un complemento un poco antiguo / similar también, vea Generación de Registros 8220S con gcc para ARM / Kinetis 8221 cómo crear archivos S19 / binarios con CodeWarrior. Para generar un archivo binario para el gestor de arranque mbed MSD, vaya a la configuración del proyecto (menú Proyecto gt Propiedades) ya la pestaña Toolchains en C / C Build gt Configuración: Crear Flash Image Habilitar 8216Create flash image8217 y pulse el botón 8216Apply8217. A continuación, cambie a la pestaña 8216Tool Settings8217, vaya a la configuración general de 8216Cross ARM GNU Crear Flash Image8217 y elija 8216Raw binary8217: Creando la prensa binaria sin formato 8216Ok8217 y construya su proyecto. El archivo binario se creará en la carpeta de salida del proyecto: Binary File Created Bugs in mbed Bootloader Hasta ahora todo bien, si no hubiera un error en el gestor de arranque MSD de mbed. Existen dos problemas asociados con el cargador de arranque MSD de la unidad I8217m (y he perdido mucho tiempo descubriendo el problema. Es especialmente malo, ya que podría bloquear su placa, y puede ser difícil recuperar la placa, consulte 8220Recovering FRDM-K64F mbed Board 8221): La placa obtiene bricked si el archivo binario tiene todos los bits de seguridad de flash establecidos en 0xFF, o si los campos de configuración de flash están faltando / no están configurados en la aplicación. Consulte 8220How (no) para proteger mi microcontrolador 8221 en este problema. Incluso si el campo de seguridad de puerta trasera de NVFSEC de la configuración de flash está configurado propery, el cargador de arranque mbed arruinará el tablero. Tenga en cuenta que los dos problemas anteriores no están presentes si se utiliza OpenSDAv1, PampE Multilink o Segger J-Link (para mí otra buena razón para gastar poco dinero una buena pieza de depuración sonda en comparación con perder mucho tiempo). KEYEN Ajustes de FSEC: Clave de puerta trasera Seguridad Habilitar El problema es con el KEYEN (2 bits) en la configuración de FSEC (seguridad de Flash). El manual de referencia de K64F lo documenta de la siguiente manera: KEYEN Bits en FSEC (Fuente: Manual de Referencia de Freescale K64F) Los ajustes 0b00, 0b01 y 0b11 desactivan las teclas de puerta trasera y 01 es la forma preferida. Sin embargo, de alguna manera el gestor de arranque mbed sólo parece aceptar 0b11. De alguna manera la librería mbed usa 0b11, pero si está utilizando otras bibliotecas / cadenas de herramientas o Procesador Experto, entonces es muy probable que use el valor por defecto 0b01, que luego bloquea mi placa FRDM-K64F. Esto se puede reproducir fácilmente con un pequeño ejemplo. En el código de inicio de ejemplo que se utiliza a continuación con el SDK de Kinetis, los ajustes de configuración del flash se configuran después de la tabla de vectores: Configuración de Flash en el código de inicio MK64F Si la última palabra es 0xFFFFFF7E, se brick su placa, mientras 0xFFFFFFFE funciona correctamente. Ambos valores funcionarán de acuerdo con el manual de referencia de Freescale. El mismo problema si I8217m con el experto del procesador y desea cargar ese archivo binario generado con el cargador de arranque MSD de mbed: El ajuste correcto de la configuración de Flash causa el problema con el cargador de arranque mbed El valor (correcto) 0x7EU bricks the board. La solución es utilizar 0xFEU en su lugar (vea 8220Desactivar mi Generación de código 8221 cómo cambiar el código manualmente). He presentado ese problema, así que espero que sea abordado por una actualización de la mbed bootloader. Hasta entonces, por lo menos para saber una razón por la que los ladrillos de la placa es mejor que no saber Resumen El cargador de arranque mbed MSD requiere archivos binarios (.BIN). Generar archivos binarios es muy posible con las herramientas GNU y fácil con los complementos de compilación GNU ARM Eclipse (ver gnuarmeclipse. livius. net/blog/). El cargador de arranque mbed actual tiene un problema con los bits de seguridad de FSEC: si no se configuran de la manera que el gestor de arranque los espera, bloqueará el tablero. Formas de cómo recuperar el tablero se tratan en 8220Recovering FRDM-K64F mbed Junta 8220. Admito que este problema no se produce si usted está dentro del sistema 8216mbed8217: pero espero que mbed llegará a un punto que será más fácil de ser Usado con las herramientas 8216offline8217 también. Estoy deseando que llegue. Hola Erich, Gracias por un mensaje más útil. Sin embargo, I8217m no es capaz de generar el archivo. bin a un ejemplo que he descargado (developer. mbed. org/users/mbedofficial/code/TCPSocketHelloWorld/). He comprobado las configuraciones y todo está bien, incluso generé el. bin a otro proyecto en la misma ruta. Me pregunto si el problema es sobre los archivos. cpp. Cualquier idea de lo que podría estar sucediendo Hi Aline, no, C (. Cpp) los archivos son, sin duda no es un problema. ¿Qué tipo de mensaje de error se ve en la vista de la consola Hay un problema conocido con la generación de dichos archivos, documentado en mcuoneclipse / 2013/06/12 / traps-and-pitfalls-no-hexbins19-file-created-with-gnu / Soy consciente de. Espero que esto ayude. Hola Gracias por su respuesta, y lo siento teniendo tanto tiempo para responder a usted. I8217m recibiendo el siguiente mensaje en la consola: 8220arm-none-eabi-g: error: opción de línea de comandos no reconocida 82168211gc-sections8221 justo después de una línea extense donde encuentro muchos archivos. o citados. Traté de encontrar algo útil en algunos puestos, pero nada parecía ser aplicable a mi caso. Por lo tanto, isn8217t la generación del archivo bin porque es incluso el acabado de la construcción. Pero de ese mensaje no sé qué puedo hacer. 8211gc-sections es una opción de vinculador (no compilador). Parece que usted está utilizando esa opción de vinculador para la compilación de archivos Hola de nuevo Erich I8217m tipo de nuevo para el KDS, por lo que realmente don8217t saber cómo solucionar este problema, si I8217m utilizando ese enlazador en lugar de un compilador. Lo que puedo decir es que cuando descargué el ejemplo, se produjo un error en el proyecto: 8220make: TCPSocketHelloWorld. elf Error 18221. Así que leí que debería cambiar el constructor Current de GNU Make Builder a CDT Internal Builder. Y desde entonces tengo este error con las secciones gc. ¿Tienes una idea de cómo resolver ese Gracias, Aline Hi Aline, De dónde has descargado ese proyecto Me parece que este proyecto es un proyecto para algunos Eclipse distribución / plugins, pero no para los plugins de GNU ARM Eclipse como son En KDS Tengo el enlace para descargar (disponible en mi primer post) de mbed sitio web. Pensé que con algunas configuraciones sería capaz de utilizar el ejemplo. En cualquier caso, I8217ve cambió a un ejemplo de KSDK, y está funcionando bien. Muchas gracias por la ayuda. Saludos cordiales, Aline. Hola, i8217m tener algunos problemas cuando dragampdrop el archivo bin en el MSD. Si genero el archivo con KDS conseguí un archivo fail. txt con un mensaje de error: 8220El firmware de interfaz ABORTED de programación. La imagen está intentando fijar la seguridad bits8221, y si construyo el mismo código en CodeWarrior 10.6 el tablero se reinicia pero nada sucede. El programa es un parpadeo simple led.


No comments:

Post a Comment