A partir de hoy, inicié oficialmente el desarrollo de tiny4412. Hoy observé principalmente el proceso de inicio y el mapeo de memoria del Tiny4412 y la hoja de datos del Exynos4412. Escribí un programa de marquesina con el sumidero (más adelante habrá una versión en lenguaje C). Salir), déjeme hablar sobre mi entorno de desarrollo:
Placa de desarrollo: Tiny4412 versión mejorada (la placa inferior es Tiny4412ADK 1312)
Herramientas de desarrollo: UltraEdit
Anfitrión: VmWare Ubuntu12.04 (64 bits)
Herramientas de compilación: arm-linux-gcc4.5.1
Para facilitar la gestión de clasificación, hemos abierto especialmente un área de aprendizaje Tiny4412, espero ayudar a todos, ingrese a continuación El tema, hablar sobre el programa de marquesina.
I. Descripción del principio de control de la placa base tiny4412
Primer vistazo al diagrama esquemático:
diagrama esquemático de tiny4412-led
diagrama esquemático de tiny4412-led
Como se muestra en la figura anterior, el Tiny4412 tiene 4 LED de usuario. Los cuatro pines son GPM4_0 ~ GPM4_3. Se puede ver en el principio de que cuando el pin IO está alto, el LED está apagado, cuando el pin IO está bajo. El LED es brillante. El trabajo que tenemos que hacer es establecer GPM4_0 ~ GPM4_3 como la función de salida, y el nivel de control y salida puede ser alto o bajo.
Segundo, descripción del programa
1.led.S
Por el diagrama esquemático se sabe que el programa solo realiza dos pasos;
Primer paso: Establezca GPM4CON en GPM4_3 correspondiente registro de control GPM4CON, de modo que los cuatro pines GPM4_0 ~ GPM4_3 sean funciones de salida.
Tiny4412-GPM4CON
Paso 2: configure los 4 bits correspondientes de GPM4DAT en 0, haga que GPM4_0 ~ GPM4_3 sea bajo, 4 LED están todos encendidos, espere un período El tiempo establece el 0º bit en 0 y los bits restantes en 1, de modo que solo la primera luz está encendida; espere un momento para establecer el 1er bit en 0, y los bits restantes en 1, de modo que solo la segunda luz esté encendida; espere un momento El segundo bit se establece en 0, y los bits restantes se establecen en 1, de modo que solo la tercera luz está encendida; espere un momento para establecer el tercer bit en 0, y los bits restantes en 1, de modo que solo la cuarta luz esté encendida; espere un momento para que GPM4_0 ~ GPM4_3 es de alto nivel y las 4 luces LED están apagadas. Esto logra el efecto marquesina.
En el código del programa, también hay explicaciones relacionadas aquí.
.text.globl _start_start: /** establece GPM4 como salida * /ldr r0, = 0x110002E0 //La dirección de GPM4CON es 0x110002E0ldr r1, [r0] //Lee el valor original bic r1, r1, # 0xff00 //Borrar bit [15: 8] bic r1, r1, # 0xff //Borrar bit [7: 0] orr r1, r1, # 0x1100 //Establecer bit [15: 8] en 0b00010001orr r1, r1, # 0x11 //Establezca el bit [7: 0] en 0b00010001str r1, [r0] //Escriba GPM4CON /** establezca GPM4DAT como bajo Para leds * /ldr r0, = 0x110002E4 //La dirección de GPM4DAT es 0x110002E0ldr r1, [r0] //Leer El valor original leds_loop: bic r1, r1, # 0xf //borrar bit [0-3] a 0 brillante completo str r1, [r0] //escribir GPM4DATldr r2, = 0xffffffbl delayorr r1, r1, # 0xe //establecer Bit [0] es 0 LED1 es brillante str r1, [r0] //Escribir GPM4DATldr r2, = 0xffffffbl delaybic r1, r1, # 0x3 //Establecer bit [1] en 0 LED2 está encendido orr r1, r1, # 1str r1, [r0] //Escribe GPM4DATldr r2, = 0xffffffblbl delaybic r1, r1, # 0x6 //Establecer bit [2] en 0 LED3 está encendido orr1, r1, # 2str r1, [r0] //Escribir GPM4DATldr r2, = 0xffffffbl delaybic r1, r1, # 0xc //Establezca el bit [3] en 0 LED4 en orr r1, r1, # 4str r1, [r0] //escriba GPM4DATldr r2, = 0xffffffbl delayorr r1, r1, # 0xfstr r1, [r0] //Escriba GPM4DAT all off ldr r2, = 0xffffffbl delayb leds_loophalt_loop: b halt_loopdelay: //programa de retardo de caballos sub r2, r2, # 1 //sub sustracción cmp r2, # 0x0 //Compare r0 con 0 bne delay //b es jump une no es igual, desigual desigual a delaymov pc, lr /lr almacenado en la siguiente instrucción al llamar a la función, deje que el puntero del Pc apunte a lr para completar la función Volver
2. Descripción de MakeFile
led.bin: led.Sarm-linux-gcc -c -o led.o led.Sarm-linux-ld -Tled.lds -N led.o -o led. Elfarm-linux-objcopy -O binario -S led.elf led.binarm-linux-objdump -D -m arm led.elf > led.disclean: rm -f * .dis * .bin * .elf * .o
Cuando ejecutamos el comando make en el directorio donde se encuentra el Makefile, el sistema hará lo siguiente:
Si desea probar un sistema de escritorio que no sea Mac y Windows , Linux definitivamente debería
El método de operación del disco U en Linux y los métodos de operación en el sistema de Windows aú
un resumen en la empresa para llevar a cabo una gestión unificada de las cuentas y contraseñas pa
Descripción del requisito compilar e instalar MySQL, PHP , y Apache para trabajar a. El proceso
Interpretación de varias palabras clave en el lenguaje Verilog HDL
Selección de idioma de Xwindow bajo el sistema operativo Linux
Acerca de la gestión de memoria Linux El conocimiento detallado de los principios de
Introducción a las tres herramientas de seguridad de red más utilizadas en el sistema Linux
Instrucciones de instalación fáciles para el cliente NetWare en Linux
Iniciar el proceso de entrar en el brazo del núcleo de Linux
Cuando el comando de Linux para ver la memoria y la interpretación de los comando muestra
Cómo obtener la información de la placa base en el sistema Linux
Método de montaje para partición de disco y disco duro móvil bajo Linux
archivos por lotes de DOS para convertir a Shell script
Cambie rápidamente Nginx como un servidor proxy de front-end de sitio web
30 instancias de la aplicación de registro de Windows 98
¿Qué servicios puede cerrar Win10? Sistema de optimización Win10 habilidades de servicio
¿Qué debo hacer con win10 edge confuso?
Win7 cómo iniciar la aceleración
¿Dónde está la herramienta de captura de pantalla de win10? ¿Cómo usarla?
Linux y win7 problema de error de tiempo del sistema dual
sistema de métodos Win10 para crear cuentas locales
¿Win10 cómo resolver los errores después de configurar la voz predeterminada de UGNX en chino?