zoukankan      html  css  js  c++  java
  • ARM汇编语言(3)(寄存器读写控制外设)

    DAY4:ARM汇编(4

    一,GPIO编程

        连接内存(二级cache),用来寻址;连接外设,用来控制

     

    1,GPIO,General-Purpose IO ports,通用输入输出端口,可以把一个GPIO理解为从CPU内部引出的引脚,这个引脚可以用于不同的目的,可与不同的硬件相连接,比如可以接到内存上用来寻址,也可以接到LED上用来控制LED。

    (1)控制寄存器

    控制GPIO的使用方式

    (2)数据寄存器

    用来设置引脚的电平是高还是低

    (3)上拉/下拉使能寄存器

    稳定引脚的电平

    二,Exynos4412开发板GPIO

    Exynos4412芯片的GPIO特性包括以下:

    1,46个可中断通用控制I/O;

    2, 172个外部中断;

    4,32个外部可唤醒中断

    5,252个多路复用I/O口;

    ,LED相关的寄存器,以FS4412为例

    1,控制寄存器

    2,数据寄存器

    3,上/下拉使能寄存器

    点亮LED:

    1,配置引脚功能,配置为输出

    0x1100_0000 +  0x0C40 = 0x11000C40

    四,交叉编译工具链的使用

    1,arm-linux-gcc

    arm-linux-gcc –c -o link.o link.S

    .c .S文件编译输出.o文件

    在编译裸机程序时需要添加 选项 -nostdlib

    不连接系统标准启动文件和标准库文件,只把指定的文件传递给连接器。

    这个选项常用于编译内核、bootloader等程序,它们不需要启动文件、标准库文件。

    2,arm-linux-ld

    arm-linux-ld -Ttext 0x40008000 link.o -o link_tmp.elf

    arm-linux-ld -Tmap.lds link.o -o link_tmp.elf

    .o文件链接为可执行的elf文件,elf文件是linux下的可执行程序,其中-T选项指定了代码段的地址,-T后也可以后接一个链接器脚本文件。

    3,arm-linux-objcopy

    arm-linux-objcopy用来进行可执行程序文件的格式转换,在arm程序开发过程中,一般会用其来将ELF格式的可执行文件转换为二进制格式的文件

    arm-linux-objcopy -O binary -S link_tmp.o link

    4,arm-linux-objdump

    用来对格式为elf、arm的裸机可执行程序进行反汇编。

    arm-linux-objdump –D elf_file > dis_file //反汇编elf格式的文件

    #或者

    arm-linux-objdump –D –b binary –m arm bin_file > dis_file //反汇编arm裸机程序

    五,要安装的工具

    1,交叉编译工具链,gcc-4.6.4.tar.xz -- 安装文档【系统移植实验手册】中的第一个实验

    2,安装SecureCRT,安装包SecureCRT-v8.0.4,其中有破解的文档readme.txt

    3,安装串口驱动,蓝线装CH340,灰线装PL2302

    4,【SecureCRT下使用Kermit协议传输文件】,描述了怎么用secureCRT下载文件

    六,交叉编译工具链

    1,tar -xvf gcc-4.6.4.tar.xz

    2,进入到解压后的gcc-4.6.4/bin目录下

    3,键入pwd命令,保存显示的路径

    4,sudo vim /etc/profile

    5,在最后一行添加

    export PATH=${PATH}:gcc-4.6.4/bin的全路径

    6,source /etc/profile

    7,arm-linux-gcc -v

    七,下载程序

    SecureCRT下使用Kermit协议传输文件

    1,在SecureCRT中输入命令   loadb 0x40008000

    2,在SecureCRT中选择Transfer-->Send Kermit-->选择要传输的文件

    3,执行裸机程序,在SecureCRT中输入命令 go 0x40008000

    作业:

    ,LED灯点亮

    对照开发板手册,查找LED所使用的GPIO

    1,实现对FS4412开发板,4个LED灯流水点亮汇编代码。

    2,汇编调用C实现LED灯流水点亮

  • 相关阅读:
    activiti笔记三 Activiti问题重现
    [转]电子商务文件存储及读取服务的设计和开发思路
    powerdesigner设置mysql唯一键,非主键
    git使用笔记
    activiti笔记二:用户任务
    解决方案:elipse一直loading descriptor for...
    activiti笔记一:流程图xml文件
    RabbitMq汇总
    docker汇总
    Zookeeper
  • 原文地址:https://www.cnblogs.com/-lhy-to-s/p/10404019.html
Copyright © 2011-2022 走看看