15.编写LED程序及反汇编工具


15.1.硬件工作原理及原理图查阅
(1)LED物理特性介绍:LED本身有2个接线点,1个是LED的正极,1个是LED的负极。LED这个硬件的功能就是点亮或者不亮,物理上想要点亮一颗LED只需要给它的正负极上加正电压即可,要熄灭1颗LED只需要去掉电压即可。
(2)查阅原理图了解板载LED硬件接法:查阅原理图,发现GEC210开发板上共有6颗LED(4颗在核心板上D1~D4,2颗在底板上D1和D3);底板D1接法(VDD_5V(5V直流)通过低压差稳压芯片(AMS1086CM-3.3)输出VDD_IO(3.3V直流);即D1正极接3.3V(VDD_IO),负极接地,则该颗LED只要上电就会常亮,即该颗LED是电源指示灯);底板D3接法(D3正极接3.3V,负极接SoC上的1个引脚(GPG0_3));核心板D1~D4的接法(正极接3.3V(VDD_REG1_IO),负极接了SoC上的1个引脚(D1~D4分别对应GPJ2_0~GPJ2_3))。
(3)如何点亮及熄灭LED(GPIO):因为正极已经定了(3.3V),而负极接在了SoC的引脚上,可以通过SoC中编程来控制负极的电压值,因此我们可以通过程序控制负极输出低电平(0V),这样在正负极上就有了压差,LED即可点亮。


15.2.数据手册查阅及相关寄存器浏览
(1)GPIO概念的引入:通用输入输出(general purpose input output);GPIO就是芯片的引脚(芯片上的引脚有些不是GPIO),作为GPIO的这类引脚,其功能和特点是可以被编程控制其工作模式和电压高低等;我们设计电路时就把LED接在了某个GPIO上,这样我们就可以通过编程控制GPIO的模式和输入输出值来操控LED的亮灭。
(2)阅读数据手册GPIO部分:当我们想要通过编程操控GPIO来操作LED时,我们首先需要通读一下S5PV210的数据手册中有关于GPIO的部分,这部分在数据手册的Section2.2中。
(3)GPIO相关的寄存器介绍:我们当前要操作的硬件是LED,但是LED实际是通过GPIO来间接控制的,所以我们要操作的硬件是SoC的GPIO,要操作这些GPIO,必须通过设置它们的寄存器(见图1)。
(4)真正操控LED的硬件主要为GPJ2CON和GPJ2DAT,点亮LED编程步骤:1.操控GPJ2CON寄存器中,选中output模式;2.操控GPJ2DAT寄存器,相应的位设置为0。


15.3.从零开始手写汇编点亮LED
(1)GPxCON和GPxDAT寄存器分析:GPJ2端口共有8个引脚(GPJ2_0~GPJ2_7),相关的重要寄存器为GPJ2CON和GPJ2DAT;GPJ2CON寄存器可设置8个引脚的工作模式(32/8=4,每个引脚对应4bit,譬如GPJ2_0对应的bit位为bit0~bit3);譬如给bit0~bit0写入0b0001,GPJ2_0引脚就工作在输出模式。
(2)从零开始写代码操作寄存器:1.硬件接法和引脚(GPJ2_0、GPJ2_1、GPJ2_2、GPJ2_3),低电平亮/高电平灭;2.GPJ2CON(0xE0200240)寄存器和GPJ0DAT(0xE0200244)寄存器;3.工程管理Makefile、mkv210_image.c、write2sd.sh等文件。
(3)编译下载运行:编译时用我们的工程管理,直接make编译得到led_usb.bin和led_sd.bin;下载运行可使用usb启动dnw下载,也可以用sd卡烧录下载。


15.4.汇编实现LED闪烁效果
(1)闪烁效果原理分析:闪烁 = 亮 + 延时 + 灭 + 延时 + 亮 + 延时…。
(2)延时函数原理:在汇编中实现延时即用一些没有目的的代码来执行消耗时间,达到延时的效果。
(3)汇编编写延时函数:用某个寄存器存放某个数字,然后在循环中每个循环里给数字减1,然后再判断这个数字的值是否为0.如果为0则停止循环,如果不为0则继续循环。
(4)汇编编写及调用函数:汇编中整个汇编的主程序是死循环,该死循环是我们汇编程序的主体,类似于C中的main函数;其它函数必须写在该主死循环程序外面,不然会出错。
(5)总结:汇编编写delay延时函数时,要注意函数的初始化和函数体的位置,不能把初始化写在了循环体内;汇编中调用函数用bl指令,子函数中最后用mov pc, lr来返回。


15.5.汇编实现流水灯效果
(1)流水灯原理分析:流水灯又叫跑马灯,即挨着的LED依次点亮熄灭(同时只有1颗LED亮)。
(2)流水灯编写:用位取反操作符来轻松愉快的实现单颗LED点亮流水效果。
(3)编程操控某个硬件的步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值