ARM9-mini2440之点亮第一颗led
- 本文记录mini2440点亮led的操作流程;
- 点亮一颗led代码实现方式:汇编和C;
- 进行了一些功能扩展实验;
基本思路
- 看原理图确定控制led的引脚;
- 看主芯片手册确定如何控制引脚;
- 编写程序;
- 编译;
- 烧录bin文件;
看原理图
mini2440主芯片引脚图:
led电路图:
由于只要点亮一颗led,因此选择nLED_1。由原理图可知:nLED_1接线对应主芯片的GPB5引脚,且当GPB5输出低电平时,nLED_1会被点亮。而引脚则由寄存器控制,因此只要对GPB5引脚相关寄存器进行设置即可。
看芯片手册
S3C2440端口B相关寄存器:
由上图可知,S3C2440的I/O口B相关的寄存器有:
- 控制寄存器
- 数据寄存器
上拉寄存器
S3C2440端口B控制寄存器:
由上图可知,B端口的控制寄存器可以将每个引脚配置为四种模式:
- 00输入模式
- 01输出模式
- 10功能扩展模式
- 11保留模式
若要使GPB5引脚输出低电平,须将GPB5配置为输出模式,即将Bit[11:10]配置为01。
由图“S3C2440端口B相关寄存器”可知,GPBCON的地址为0x56000010,因此将0x400写入地址0x56000010即可。
S3C2440端口B数据寄存器:
由上图可知,引脚的状态与对应的位的状态相同,因而可以通过配置GPBDAT每一位的状态从而配置引脚的状态。
将数据寄存器的bit5配置为0即可把引脚GPB5配置为低电平。
S3C2440端口B上拉寄存器当引脚的驱动能力不足时,需要配置上拉寄存器。由于引脚输出低电平即可点亮led,因此上拉寄存器无需配置。
总结:
以上可知,配置GPB5引脚输出低电平需要两个步骤:
-
配置控制寄存器GPBCON的Bit[11:10]=01,使GPB5引脚为输出模式;
-
配置数据寄存器GPBDAT的Bit5=0,使GPB5引脚输出低电平;
编写代码
完整代码分为两个部分,一个是汇编文件,一个是c文件。
start.S
.text
.global _start
_start:
/* 设置内存: sp 栈*/
ldr sp, =4096 /* nand启动 */
//ldr sp, =0x40000000+4096 /* nor启动 */
/* 调用main */
bl main
halt:
b halt
其中汇编文件中:
/* 设置内存: sp 栈*/
ldr sp, =4096 /* nand启动 */
//ldr sp, =0x40000000+4096 /* nor启动 */
关于设置栈以及S3C2440启动方式的问题,将会在另一篇文章专门解释
led.c
int main()
{
unsigned int *p_con =(unsigned int *) 0x56000010;
unsigned int *p_dat =(unsigned int *) 0x56000014;
/* 配置GPB5引脚为输出模式 */
*p_con = 0x1000;
while(1)
{
/* 配置GPB5引脚输出低电平*/
*p_dat = 0;
}
return 0;
}
编译
编写Makefile:
为了编译方便,采用Makefile进行编译
all:
arm-linux-gcc -c -o start.o start.S
arm-linux-gcc -c -o led.o led.c
arm-linux-ld -Ttext 0 start.o led.o -o led.elf
arm-linux-objcopy -O binary -S led.elf led.bin
arm-linux-objdump -D led.elf > led.dis
clean:
rm *.dis *.o *.elf *bin
makefile编写完成之后,将项目文件夹通过FileZilla上传至Ubuntu虚拟机,使用MobaXterm远程登录Ubuntu,进入终端。
进入目标文件夹后,使用make命令进行编译:
编译成功。ls一下,查看生成的文件
生成了bin文件,确认编译成功。
再将生成的bin文件通过FileZilla下载至本地,开始烧录程序。
这里使用的Ubuntu是韦东山老师的百问网团队制作好的系统,使用的交叉编译工具链是:arm-linux-gcc-3.4.5版本
烧录程序
使用工具: oflash(百问网制作)
- 进入windows下的命令行界面:
- 进入目标目录
- 输入:
oflash led.c
显示如下界面:
- 选择 0.OpenJTAG,将显示如下界面:
- 选择 1.S3C2440,将显示如下界面:
- 选择 0:Nand Flash prog(选择Nor Flash也可,启动时注意启动时须将开关拨至Nor启动),将显示如下界面:
- 依然选择 0:Nand Flash Program,出现如下界面,表明烧录成功: