4.艰难学习Linux之GPIO(二)

前言:上一节,在程序下载流程上耽误了一些时间,现在正式开始GPIO的使

用了。

开始跟着韦老师的视频学习,发现GPIO点灯操作和单片机没有太大的区别,主要也是将相应的管脚配置为输出,然后输出高低电平,来控制灭亮。

    那就涉及到了GPFCON(控制相应管脚输入输出)GPFDAT(控制高低电平)

GPFCON地址0x56000050,GPFDAT地址0x56000054.

    虽然操作相差不大,但是汇编的操作和makefile的使用,启动文件跳转流程

还比较生疏,这里还是有必要学习一下得,教程控制开的是第一个灯,那么我

打开第二个灯意思一下,然后跟着写一下makefile。

1.开始用汇编编写第一个点灯程序

这下可以复习以前的知识了,主要用到LDR  MOV  STR几个指令

LDR伪指令,将常数或地址加载到寄存器。

MOV传送指令,这里用的立即寻址方式

STR R1,[R0] 将R1的内容存储到R0指向的存储单元。

B跳转指令。

 

这里用到的makefile比较简单,为.s->.o->.elf->.bin

编译 链接,生成最终文件。

 

以前单片机在开发工具下开发,一般都给你提供了启动文件,现在要自己写启动文件。以前编译代码也很简单,开发工具都做了。现在要在linux环境下,要一条条指令编译,还好有makefile,写好了makefile,一make就生成了,然后将生成文件下载到开发板。

2.Makefile一般的执行流程:

(1)预处理

(2)编译             .c--》.s汇编文件

(3)汇编             .s--》.o文件

(4)链接             多个.o文件生成elf格式文件

(5)然后生成机器可识别的二进制文件。

Makefile里面有一句指令指定了代码段从0地址开始

 

扯了这么多,先将写的第一个汇编点灯,生成一下,看下效果吧。

 

3.2440有两种启动方式nand启动和nor启动。

(1)nand启动会自动将前4k拷贝到SRAM

CPU然后从0地址执行

这两部分硬件自动的。

(2)NOR启动,0地址是指向nor flash,指令从0地址开始执行。

           NOR可以像内存一样读数据不能像内存一样写数据

 

4.main 函数是被启动文件调用,没什么特别之处。

那么现在就开始学习启动文件的编写吧,先说一下他的过程。

硬件方面的初始化

(1)关看门狗

(2)初始化时钟(上电默认才12M)

(3)初始化SDRAM

软件方面初始化

(0)设置堆栈

(1)设置返回地址

(2)调用 main

(3)清理工作

 

启动文件的流程已经知道了,其实实际只用到了其中的一部分,编写也很简单,但是现在还是对汇编指令不是太熟悉,所以书写上还是有些麻烦,对于点灯操作已经点的不想再点了,但是自己写启动文件,然后在写个C语言点灯程序,再逐条编译一下,然后下载进行,感觉还是棒棒哒。启动文件只是现在学习写一下,以后就直接调用就行了,其实整个驱动也是,只要都整明白了,需要自己写的部分也很少。不闲扯了开始自己的第一个启动文件编写。

然后用C语言循环点灯,按键点灯,和普通单片机没有太大区别,就不在这写太多了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值