欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 21:50:36
...

1:硬件部分连接图
嵌入式Linux-JZ2440-02课 GPIO口实验
2:对应到芯片上的连接图
嵌入式Linux-JZ2440-02课 GPIO口实验

比如我们要控制LED1,根据硬件逻辑是:
GPF4引脚输出1(高电平):LED1灯灭。
GPF4引脚输出0(低电平):LED1电亮。
3、如何让引脚输出高/低电平?
(1)配置引脚功能
(2)输出引脚:写值到某个寄存器; 输入引脚:读寄存器的值。
4:查看数据手册设置相应的寄存器,配置引脚
嵌入式Linux-JZ2440-02课 GPIO口实验
嵌入式Linux-JZ2440-02课 GPIO口实验

这里要用到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中
观察现象:灯亮

相关标签: Linux学习