Código de luz del agua del ensamblaje Tiny4412, operación con LED de metal descubierto Tiny4412

  
 

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:

Copyright © Conocimiento de Windows All Rights Reserved