嵌入式Linux-JZ2440-02课 GPIO口实验

1:硬件部分连接图
这里写图片描述
2:对应到芯片上的连接图
这里写图片描述

比如我们要控制LED1,根据硬件逻辑是:
GPF4引脚输出1(高电平):LED1灯灭。
GPF4引脚输出0(低电平):LED1电亮。
3、如何让引脚输出高/低电平?
(1)配置引脚功能
(2)输出引脚:写值到某个寄存器; 输入引脚:读寄存器的值。
4:查看数据手册设置相应的寄存器,配置引脚
这里写图片描述
这里写图片描述

这里要用到GPF组的寄存器:
GPFCON寄存器:用来配置引脚的功能;
GPFDAT:引脚的值。

5:看下对应的汇编代码重点内容

@******************************************************************************
@ File:led_on.S
@ 功能:LED点灯程序,点亮LED1
@******************************************************************************       

.text
.global _start
_start:     
            LDR     R0,=0x56000050      @ R0设为GPFCON寄存器。此寄存器
                                        @ 用于选择端口B各引脚的功能:
                                        @ 是输出、是输入、还是其他
            MOV     R1,#0x00000100        
            STR     R1,[R0]             @ 设置GPF4为输出口, 位[8:7]=0b01
            LDR     R0,=0x56000054      @ R0设为GPBDAT寄存器。此寄存器
                                        @ 用于读/写端口B各引脚的数据
            MOV     R1,#0x00000000      @ 此值改为0x00000010,
                                        @ 可让LED1熄灭
            STR     R1,[R0]             @ GPF4输出0,LED1点亮
MAIN_LOOP:
            B       MAIN_LOOP

6:Linux下我们需要重点关注的是Makefile重点内容**
Makefile

led_on.bin : led_on.S
    arm-linux-gcc -g -c -o led_on.o led_on.S        #-g:加入调试信息 -c只编译不连接
    arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf  #-Ttext 0x0000000:指定代码段地址0.
    arm-linux-objcopy -O binary -S led_on_elf led_on.bin  #-O:使用指定格式来输出文件
    # binary:二进制的 -S:不从源文件复制重定位信息和符号信息到目标文件中去
clean:
    rm -f   led_on.bin led_on_elf *.o

这是一篇简单了解Makefile的文章 可以看看简谈Makefile与交叉编译工具链

7:通过DNW把.bin文件烧写到S3C2440的NAND FLASH中
观察现象:灯亮

猜你喜欢

转载自blog.csdn.net/qq_35989861/article/details/81301331