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灯流水点亮
ARM汇编语言(3)(寄存器读写控制外设)的更多相关文章
- 痞子衡嵌入式:i.MXRT1010, 1170型号上不一样的SNVS GPR寄存器读写控制设计
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1010, 1170型号上不一样的SNVS GPR寄存器读写控制设计. 痞子衡之前两篇文章 <在SBL项目实战中妙用i ...
- ARM汇编语言
---恢复内容开始--- arm汇编语言 汇编语言是一种程序设计语言,arm处理器是一种16/32位的嵌入式RISC微处理器.一开始我把这混为一谈了.ARM汇编的特点:汇编语言,又叫助记符语言. 1) ...
- Android ARM汇编语言
简介 ARM是Advanced RISC Machine的首字母缩写,它可以称之为一家嵌入式处理器的提供商,也可以理解为一种处理器的架构,还可以将它作为一套完整的处理器指令集. 原生程序与ARM汇编语 ...
- 【基于Android的ARM汇编语言系列】之三:ARM汇编语言程序结构
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...
- ARM处理器的寄存器,ARM与Thumb状态,7中运行模式
** ARM处理器的寄存器,ARM与Thumb状态,7中运行模式 分类: 嵌入式 ARM处理器工作模式一共有 7 种 : USR 模式 正常用户模式,程序正常执行模式 FIQ模式(Fast ...
- 【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集
作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...
- TLV320AIC3268寄存器读写
该芯片支持I2C和SPI读写寄存器,本人用的是SPI1接口. 以下是对手册中SPI接口读写寄存器相关内容的翻译(英文版可以看手册的94页~) 在SPI控制模式下,TLV320AIC3268使用SCL_ ...
- ARM汇编语言基础
ARM 与 Thumb 寄存器对应关系 PC寄存器: ARM状态为R15,Thumb状态为PC LR寄存器: ARM状态为R14,Thumb状态为LR SP寄存器: ARM状态为R13,Thumb状态 ...
- ARM汇编语言(1)(基本概念)
1.***.s文件为汇编语言文件格式: 2.ARM寄存器(以Samsung芯片为例) 2.1.要介绍arm寄存器之前我们要先了解一下arm处理器的工作模式: Arm处理器有七种工作模式,为的是形成不同 ...
随机推荐
- 改动Dialog窗口的类名
VS2013 的MFC project(project名: MobileLink).想要改动窗口的类名时,发现不是像设置窗口名一样调用一个函数能够实现的. 实现的注意问题,请看凝视. (1) 改 ...
- windwos at 以及shutdown使用方法
at 12:00 shutdown -r如果今天12点没过去,今天12点重启,如果今天12点已经过去,明天12点重启.每天12点重启的命令是at 12:00 /every:Monday,Tuesday ...
- android 从Activity 获取 rootView 根节点
private static View getRootView(Activity context) { return ((ViewGroup)context.findViewById(android. ...
- init: cannot execve(‘XXX’):Permission denied问题
近期在给android 4.3系统进行root时候,一直出现例如以下的红色权限问题 : 7.695741] Freeing init memory: 236K [ 8.555286] ini ...
- LaTex的注释
在LaTex中的注释有以下3种 1.注释一行:使用%注释一行文字, 在%后的文字都不予编译: 2.注释一段:使用\iffalse .... \fi 包含一段文字,被包含的文字被注释掉了: 3.注释一段 ...
- Servlet容器 Jetty
http://www.oschina.net/p/jettyJetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语 ...
- 用Fiddler 发送post请求
在调试web api的时候,若是get 请求,可以直接在浏览器里查看结果,如果是put,或者post请求在浏览器地址栏里就没有办法了. 下面介绍一下,如何利用fiddler模拟post请求. 也可以用 ...
- Android面试常问到的知识点
一.算法,数据结构 1.排序算法 2.查找算法 3.二叉树 4.广度,深度算法: 二.java基础 1.集合Collection,List,Map等常用方法,特点,关系: 2.线程的同步,中断方式有几 ...
- 将本地web项目发布到ubuntu上并运行 第一个本地的.net core2.0项目
前置条件 ubuntu已安装dotnet 发布版本dotnet与发布机一致 这里用的是vm 所以直接把本地web项目拷贝到vm中运行的ubuntu系统中 web站点需要将 webapplication ...
- pandas数据处理基础——基础加减乘除的运算规则
上周公司对所有员工封闭培训了一个星期,期间没收手机,基本上博客的更新都停止了,尽管培训时间不长,但还是有些收获,不仅来自于培训讲师的,更多的是发现自己与别人的不足,一个优秀的人不仅仅是自己专业那块的精 ...