搜索开发板原理图LED的走线
          
LED8是网线接口的指示灯.
在这里我们尝试用汇编代码控制D10, 也就是LED1,它连接到EINT4/GPF4,读取芯片手册



有原理图可知,如果需要点亮LED1,需要控制s3c2440的GPF4引脚输出低电平.
GPFCON = 0x56000050
GPFDAT = 0x56000054
GPFUP = 0x56000058
=========================
直接set 0x56000050 = 0x100 设置GPF4为引脚为输出模式
set 0x56000054 0x00 设置GPF4输出电平为0
set 0x56000058 0x10 不使能GPF4内部拉高
这样就可以控制改灯常亮,汇编应该怎么写?
首先需要配置交叉工具链才能够编译代码,请参照链接: https://jingyan.baidu.com/article/647f01151899607f2148a8f2.htm


source /etc/profile 使生效

表示已经生效.
如果仍然提示找不到命令,就像下图一样
   
运行 arm-linux-gcc -v的时候也提示 bash: /usr/local/arm/2.3.6/bin/arm-linux-gcc: No such file or directory
这时候应当注意,因为未安装32位库,执行sudo apt-get install lib32ncurses5 lib32z1
执行完再查看命令,如果能查看版本号,说明环境ok了.
代码:
 .text
.global _start
_start:     
            LDR     R0,=0x56000050      @  这是个内存操作命令, 先将寄存器的地址装入R0中
                                        @ 
                                        @ 
            MOV     R1,#0x00000100      @ 将0x00赋值给R1
            STR     R1,[R0]             @ 内存的反向操作, 将R1的值存到R0地址处. 括号代表类似于取指针
            
            LDR     R0,=0x56000054      @ 同样操作
                                        @ 
            MOV     R1,#0x00000000      @ 
                                        @ 
            STR     R1,[R0]             @ 
MAIN_LOOP:                              @ 死循环
            B       MAIN_LOOP
Makefile
led_on.bin : led_on.S # 编译的顺序 -- 预处理, 编译, 汇编, 链接 arm-linux-gcc -g -c -o led_on.o led_on.S # 汇编 arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf #链接并指定运行地址 arm-linux-objcopy -O binary -S led_on_elf led_on.bin #将ELF格式的可执行文件转换成二进制文件 clean: rm -f led_on.bin led_on_elf *.o