Linux驱动编程实验原理,[Linux驱动编程]实验(一) · Secret114的小站

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

前言

对于这个实验,本人并不是很感兴趣,课也没好好听过几节,所以实验的原理和意义完全不清楚……记录的内容仅仅是操作步骤,大概能看懂是在干什么吧,仅此而已。

实验文件hardware.zip——里面包含着各种硬件代码实例

armlinuxgcc.zip——Linux下arm-gcc 3.4.5版本

实验步骤

在Linux下配置arm-gcc环境

学校机房虚拟机里配置的是RedHat 5,因为我们只是需要一个linux环境可以编译一下代码,最终需要的是编译后的二进制文件,所以这里就大概介绍下。

配置环境这个东西很简单,简单起见,我就不多做解释,直接上操作代码和步骤了——解压文件放置在/opt文件夹下1

2

3

4# unzip armlinuxgcc.zip

# tar -jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2

# mv gcc-3.4.5-glibc-2.3.6/ gcc/#改名

# mv gcc/ /opt#移动到/opt文件夹下

配置环境变量(简单版)1# vim ~/.bashrc

在.bashrc文件最后一行添加如下内容:1export PATH=/opt/gcc/bin:$PATH检查环境

在终端里输入arm-linux-gcc大概就能匹配到arm-gcc命令了。

编写实验代码

Linux驱动编程这门课的实验都是用已有代码的(除了第四次),只需要改一些文件就可以进行编译了,其实只是重在体验操作过程,代码并不是很重要。

本次实验所用代码是/hardware/led_on/文件夹下的led_on.S,需要改动一些数据,以下是改动后的文件代码:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20******************************************************************************

@ File:led_on.S

@ 功能:LED点灯程序,点亮LED1

@******************************************************************************

.text

.global _start

_start:

LDR R0,=0x56000060 @ R0设为GPBCON寄存器。此寄存器

@ 用于选择端口B各引脚的功能:

@ 是输出、是输入、还是其他

MOV R1,#0x00050000

STR R1,[R0] @ 设置GPB5为输出口, 位[10:9]=0b01

LDR R0,=0x56000064 @ R0设为GPBDAT寄存器。此寄存器

@ 用于读/写端口B各引脚的数据

MOV R1,#0x00000200 @ 此值改为0x00000020,

@ 可让LED1熄灭

STR R1,[R0] @ GPB5输出0,LED1点亮

MAIN_LOOP:

B MAIN_LOOP

在上面我们已经把所需要的arm-gcc环境配置好了,接下来直接make命令就会得到一个led_on.bin文件。然后把二进制文件从虚拟机里拖出来,关闭或暂停虚拟机(虚拟机运行的时候占用通讯端口,需要把它关闭才能进行下一步),然后打开程序-通讯-终端(大概是这个样子),准备进入下一步。如果懒得弄了,也可以下载led_on.S、led_on.bin这两个文件直接进行操作。

实验操作通讯设置

改两个参数,一个是第一个改为115200,另一个是最后一个改为“无”。

开启arm板

开启办法:按动arm板上的复位/重启按钮,同时按键盘上的空格。

地址写入1> load ram 0x30000000 0x4000 x //0x30000000为地址,0x4000为代码最大容量

这时候arm板会等待装入程序,我们点击装入程序,然后选择之前拖出来的led_on.bin文件即可。运行程序1> go 0x30000000

实验现象

可以很清楚的看到,在通讯接口旁的led灯从原先两个都亮变成只亮一个……就这么简单。

总结

其实感觉如果认真学的话还是很简单的,不过需要吐槽的是,这一个简单的实验,老师让我们花一上午4个学时实验课的时间做……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值