四个LED灯分别对应XM0ADDR4~XM0ADDR7 ,与SDRMA的XM1、XM2不冲突
查询s5pv210的datasheet知道其对应着MP0_4[4]~MP0_4[7]
补充
BIC指令
BIC指令的格式为:
BIC{条件}{S} 目的寄存器,操作数1,操作数2
BIC指令用亍清除操作数1的某些位,幵把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,戒一个立即数。操作数2为32位的掩码,如果在掩码中设置了某一位,则清除返一位。未设置的掩码位保持丌变。”
ORR指令
ORR指令的格式为:
ORR{条件}{S} 目的寄存器,操作数1,操作数2
ORR指令用亍在两个操作数上迕行逻辑戒运算,幵把结果放置到目的寄存器中。操作数1应是一个寄存器,操作数2可以是一个寄存器,被移位的寄存器,戒一个立即数。该指令常用亍设置操作数1的某些位。
/**************************************代码分割线*********************************************/
/* led_on.S */
/*MP0_4CON寄存器 0000 = Input 0001 = Output 0010 = EBI_ADDR[0] 0011 ~ 1110 = Reserved 1111 = Reserved*/
.global _start /* 声明一个全局的标号 */
_start:
ldr r0, =0xE0200340/* MP0_4CON寄存器地址赋给r0 */
ldr r1, 0xE0200340 /* E0200340中的值赋给r1 */
bic r1, r1, #0xFFFF0000/* 不干扰0~3的输出控制,原样复制,4~7的全部遮蔽为0 */
orr r1, r1, #0x11110000 /* 4~7设置为输出 */
str r1, [r0]
ldr r0, =0xE0200064/* MP0_4DAT寄存器 */
ldr r1, 0xE0200344
bic r1, r1, #0x000000F0/* 不干扰0~3的输出控制,原样复制,4~7的全部遮蔽为0 */
orr r1, r1, #0x000000F0 /* 4~7设置为输出 */
str r1, [r0] /* 设置GPC0_3为高电平 */
halt:
b halt /* 死循环 */
/********************************************代码分割线**********************************/
makefile
/********************************************代码分割线**********************************/
led_on.bin: led_on.o
arm-linux-ld -Ttext 0xc0008000 -o led_on.elf $^
arm-linux-objcopy -O binary led_on.elf $@
arm-linux-objdump -D led_on.elf > led_on.dis
led_on.o : led_on.S
arm-linux-gcc -c $< -o $@
clean:
rm *.o *.elf *.bin *.dis
/********************************************代码分割线**********************************/
生成的led_on.bin使用tftp c0008000 tftp/led_on.bin下载至c0008000
go c0008000执行