嵌入式程序设计大作业

发布 2022-10-21 09:05:28 阅读 7317

大连理工大学。

本科实验报告。

课程名称: 嵌入式程序设计

学院(系): 软件学院

专业: 嵌入式

2024年 5月 28日。

实验3: arm7/uclinux 驱动设计实验。

一、 实验目的和要求。

通过实验了解 uclinux 设备驱动程序模块结构;

通过实验掌握 uclinux 字符设备驱动程序编写;

通过实验了解 embest edukit iii 44b0核心子板 led驱动程序原理。

二、 实验原理和内容。

1. uclinux设备驱动程序概述。

uclinux 设备驱动程序为特定的硬件提供给用户程序的一组标准化接口,它隐藏了设备工作的细节。用户程序通过标准化系统调用,这些调用和特定的硬件是无关的,再由 uclinux内核调用特定的设备驱动程序操作和控制特定的实际的硬件设备。

uclinux 系统的设备分为三种类型,分别是字符设备(character device),块设备(block device)和网络接口(network interface)。

字符设备是能够像字节流一样被访问的设备,一般不使用缓存技术。字符设备驱动程序最少应实现 open、close、read 和 write 系统调用。典型的字符设备例子是终端设备(/dev/console)和串口(/dev/ttys0)。

2. led 电路设计。

三、 主要仪器设备。

硬件:pc 机,embest edukit iii 44b0 核心子板,embest arm 标准/增强型**器。

套件; 软件:redhat 9.0 操作系统、uclinux 交叉编译工具链、flash 烧写工具、超级终。

端。四、实验步骤与操作方法。

1. 编译驱动程序。

当把 led 设备驱动程序编写好以后,需要把它编译进内核。当用户打开设备时,还需要一个在/dev 目录的设备文件名称,这样驱动程序才能工作。下面分步骤来介绍如何把驱动程序编译进内核以及创建设备文件名称。

1)在/uclinux-dist/ 目录下新建名为 led 的文件夹,把 led 驱动程序和makefile复制到其中。

2)修改/uclinux-dist/ 文件,在 makefile 中添加如下加粗**。

# makefile for led drivers

#mod-subdirs :=dio hil mtd sbus video macintosh usb input telephony ide \

message/i2o message/fusion scsi md ieee1394 pnp isdn atm \

fc4 net/hamradio i2c acpi bluetooth usb/gadget

subdir-y :=parport char block net sound misc media cdrom hotplug

subdir-y +=led

subdir-m :=subdir-y)

3)修改/uclinux-dist/文件,在“drivers-y :=之后,添加如下。

加粗**,这样在连接 uclinux 内核映像文件时,能把 连接进去。

drivers-n :=

drivers-y :=

drivers-$(config_acpi_boot) +drivers/acpi/

drivers-$(config_parport) +drivers/parport/

drivers-y +=drivers/char/ \

drivers/block/ \

drivers/misc/ \

drivers/net/

drivers-y +=drivers/led/

4)修改/uclinux-dist/vendors/embest/edukit/makefile文件, 在”drivers =”后,添加如下加粗**“led0,c,60,0”。其中 led0 为设备名称,c 代表字符设备,60 为主。

设备号,最后一个 0 是从设备号。主设备号与驱动程序注册时的主设备号要求一致,否则用户程序用设备文件名称请求打开设备时,内核无法根据主设备号找到对应的。

设备驱动程序。

devices =

tty,c,5,0 console,c,5,1 cua0,c,5,64 cua1,c,5,65 \

led0,c,60,0 \

5)完成以上修改后,重新构造 romfs和内核映像文件,并烧录到开发板的 flash上。

6)最后,启动 uclinux。使用 cp 命令,简单测试一下 led驱动程序。把任意一个文件复制到 led 设备上,检查是否能点亮其中某个 led。

例如在 uclinux 输入终端执行如下命令:

cp /bin/init /dev/led0

观察并记录实验现象。

2. 测试驱动程序。

1)准备实验环境,使用 embest edukit44b0目标开发板附带的串口线分别连接到目标板上的 uart0 和 pc机的串口,将 embest **器的 jtag接口与 embest edukit

的 jtag 接口相连,**器的 parallel 接口与 pc机的并口相连。

2)在 pc 机上运行 windows 附件中自带的超级中断串口通信程序(波特率位停止位、无检验位、无硬件流控制);或者使用其它串口通信程序。

3)交叉编译 led 测试程序 test-led。

4)编译好测试程序后,启动目标板的 uclinux 操作系统,在 pc 机上观察超级终端程序主窗口,可以看到如下界面:

sash command shell (version 1.1.1)

在 pc 机上运行 tftp 服务端程序,设置好传送文件路径,通过以太网使用 tftp 把。

test-led **到/var目录下。在 uclinux的输入终端里输入如下命令:

cd var

var> tftp –g 192.168.0.101 –r ./test-led (此处 ip地址可能不同)

5)修改 test-led 程序的属性,使其拥有可执行属性,然后运行 test-led。观察 test-led

点亮目标开发板上的 led的情况,并描述。

var> chmod 777 test-led

var> .test-led

2. 编写驱动程序。

编写测试程序,让各个 led以人眼能够识别的频率依次闪烁,每个 led持续闪烁大约3 秒钟,找到编号为 1-4 的 led在实验板上的布局,绘制布局图,添加到实验报告中。

四、 实验数据记录和处理。

驱动程序**:

linux/deriver/led/

led driver for embest edukit ii

copyright (c) 2005 embest <>

#include

#include

#include

#include

#include

#include //error codes

#include //size_t

#include //mdelay

#include

#include

#undef debug

#ifdef debug

#define trace(str, args...printk("led: "str, ## args)

#else#define trace(str, args...

#endif

/trace没用。

#define led_major 60设备号。

#define led_devname "led设备名称。

#define gpc_mask (3<<8掩码。pc8/pc9

#define gpf_mask (3<<3掩码。pf3/pf4

#define get_data(c, f) (u8)( c&0x80)>>5) |c&0x100)>>7) |f&0x10)>>3) |f&0x08)>>3) )

/把b、f的值组合为一个8位数据。

/ pc8pc9pf4 pf3

#define set_data(t, c, f) (c = t&0x08)<<5) |t&0x04)<<7)),f = t&0x02)<<3) |t&0x01)<<3))

/给b、f 赋值。

/ t3210

pc8 pc9 pf4 pf3

#define led_lock(u) down(&u->lock信号量。

#define led_unlock(u) up(&u->lock信号量。

struct unit定义一个结构类型,成员是整型指针,代表各个口寄存器,以及两个变量。

struct semaphore lock定义信号量。

u32 *pconcpconb register */

u32 *pdatcpdatb register */

嵌入式系统设计大作业

1 51 叙述jtag接口在嵌入式开发中的作用。2 叙述嵌入式平台的搭建过程,以linux为例。3 给出现今有哪些用于嵌入式开发的芯片名称,他们分别是哪些公司的产品?体系结构是什么?4 现今较流行的嵌入式操作系统有哪些?5 pxa270嵌入式开发板的接口有哪些?6 请写出nor flash和nand...

嵌入式大作业

黑龙江科技学院。计算机与信息工程学院。嵌入式大作业。专业班级学号。成绩。姓名教师。2010年12月24日。前导问题 1.选a,完全独立完成2.一 基础问题。1.答 嵌入式系统是指用于执行独立功能的专用计算机系统,作为装置或设备的一部分。嵌入式系统通常由嵌入式微处理器 嵌入式操作系统 应用软件和外围设...

嵌入式大作业

一。简述jtag接口在嵌入式开发中的作用?1关于jtag jtag joint test action group,联合测试行动小组 是一种国际标准测试协议,主要用于芯片内部测试及对系统进行 测试。jtag技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路tap test access po...