嵌入式实验报告

时间:2024.4.20

嵌入式实验报告

一、搭建linux系统下的交叉编译环境

1、  Linux源码/linux工具包/crosstools_all.tar.bz2 

2、  #cd /opt/HK

3、  #tar xvfj crosstools_all.tar.bz2 -C /

4、  执行解压命令之后,就把交叉编译器分别安装到”/usr/local/arm/”目录下的“2.95.3”和“3.3.2” “3.4.1 ”目录中

5、  还会安装制作文件系统的软件到/usr/local/sbin/

6、  3.3.2版本的交叉编译器用来编译Qtopia/Embedded

7、  2.95.3版本的交叉编译器用来编译VIVI以及移植boa等

8、  3.4.1_softfolat版本的交叉编译器用来编译内核、busybox、u-boot和各种应用程序等

9、  接下来配置系统环境变量,然后执行命令: #sudo gedit /etc/profile

10、  把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在其他目录下使   用这些工具。然后在“profile”文件里面添加如下信息 :

if [ "`id -u`" -eq 0 ]; then

export PATH="$PATH:/opt/hk/usr/local/arm/2.95.3/bin"

 export PATH="$PATH:/opt/hk/usr/local/arm/3.3.2/bin"

 export PATH="$PATH:/opt/hk/usr/local/arm/3.4.1/bin"

 export PATH="$PATH:/opt/hk/usr/local/sbin"

fi      (PATH等号两端不要空格 )

11、  使用命令:source /etc/profile使环境变量生效

12、  -/bin/sh: ./hello: not found 

13、  arm-linux-readelf -a hello

14、  找到需要的库ld-linux.so.2

15、  到编译器下找到相关的库拷到开发板/lib下

二、CAN总线驱动程序实现

1.文件操作接口的实现

    CAN设备驱动程序最终提供给应用程序的是一个流控制接口,主要包括open, close(或realse3、read, write, ioctl等操作.添加设备驱动程序,实际上就是给上述操作编写相应的程序代码。对于字符设备和块设备,Linux内核对这些操作作了统一的抽象,而每一个设备都会用一个特殊的设备文件来表示,通过虚拟文件系统,应用程序得到一组与具体设备无关的系统调用。而虚拟文件系纺的主体就是结构体file operations,每一种文件系统都有自己的file operations数据结构,结构体中的每一个成员都是一个函数指针,实际上实现了对于不同操作的函数跳转功能,例如open是指向具体文件系统用来实现打开设备文件操作的入口函数。可以说file_operations实现了标准文件操作到硬件设备操作的映射.

根据CAN控制器的特点,CAN设备驱动程序实现了结构体中一部分重要的操作,在Linux 2.4.18内核中,具体声明的实现如下:

static struct fiel_operations s3c2410_fops{

owner: THIS MODULE,

write:  s3c2410 mcp2510 write,

read:   s3c2410_mcp2510 read,

ioctl:   s3c2410. mcp2510 ioctl,

open:    s3c2410  mcp2510 open,

release: s3c2410 mcp2510 release,

};

    在s3c2410ee fops中声明的每一个成员功能描述如下(未声明的成员值为0):

    (1} s3c2410 mcp2510 open负责对将要进行的1/0操作做好必要的准备工作,主要包括限制CAN打开次数、清空3个发送缓冲区和2个接收缓冲区等。

    (2) s3c2410_mcp2510_release负责CAN设备关闭时的操作,包括还原打开次数,关闭中断等。

    (3) s}c2410 mcp2510 ioctl负责CAN设备读写操作之外的工作特性设置,主要完成设置工作模式、数据帧ID、设备滤波器、总线波特率等工作。

    (4} s3c2410 mcp2510 write负责处理CAN总线数据的发送方法.

(5)s3c2410 mcp2510 read负责处理CAN总线数据的接收方法。

2.驱动程序入口的实现

驱动程序在加载到内核中时,会首先运行驱动程序的初始化函数,然后等待系统调用在file_operations数据结构中定义的相关函数,实现对设备的操作.CAN设备的初始化函数主要负责创建CAN设备的节点设备文件、注册CAN设备的中断处理函数、初始化MCP2510等工作。初始化函数工作流程如图所示

    主要程序代码如下:

static int一  iuit s3c2410 mcp2510 init(void)

{·······················

init MCP2510(Bandltate 250khps);

ret} register cl}rdev{0, DEVICE NAME, &s3c2410_fops);

Major=ret;

·······················

ret}equest irq(MCP2510 IRQ, s3c2410 isr_mcp2510, SA

DEVICE NAME, s3c2410 isr mcp2510);

#ifdef CONFIG DEVFS FS

devfs spi_di}---devfs_mk},dir(NULL, "can",NULL);

devfses spirav}-devfs register(devfs_spi dir,"0",DEVFSee FL DEFAULT,Major,

SPIRAW MINOR, S IFCHR!S}IRUSR!Ses IWUSR,&s3c2410 fops, NULL);

#endif

························}

    在Linux系统里,启动程序通过调用register chrdev向系统注册字符型设备驱动程序.register chrdev定义为:

    #include <Linuxlfs.h>

    #include <Linux/errno.ls}

    int register chrdev(unsigned int major, const char *name, struct file operations

'fops);

    其中,major是为设备驱动程序向系统申请的主设备号,如果为0则系统为此驱动程序动态地分配一个主设备号.~是设备名。fops就是前面所说的对各个调用的入口点的说明。此函数返回0表示成功。如果是动态分配主设备号成功,此函数将返回所分配的主设备号.如果register_chrdev操作成功,设备名就会出现在/pros/devices文件里。

    在使用ARM Linux时,通过配置内核,使其支持设备文件系统devfs ( device file system ),从而可以实现对动态分配的主设备号的管理。宏定义CONFIG DEVFS FS用来判断系统在配置时是否使用了设备文件系统,然后通过devfs_registerQ函数创建设备文件系统的CAN设备节点。

    同时,CAN设备驱动程序通过调用requesE irq数来申请中断,向系统注CAN设备的中断处理函数为s3c241U isr mcp2510.request irq函数原型如下:

        #include <Linwc/sched.h>

      int request irq(unsigned int irq,

            void (*hamdlerxint irq,void dev_id,struct pt regs *regs},

                unsigned long flags,

                const char *device,

                void *dev id};

    参数irq表示所要申请的硬件中断号。handler为向系统登记的中断处理子程序,中断产生时由系统来调用。flags是申请时的选项,它决定中断处理程序的一些特性,设置为SAJNTERRUPT,表示中断处理程序是快速处理程序,该中断处理程序运行时,其他终端都被屏蔽.device为设备名,将会出现在iprocl interrupts文件里。dev id为申请时告诉系统的设备标识。

三、心得体会

  在嵌入式的学习过程中,让我了解了什么是嵌入式系统。它就是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能、可靠性、成本、体积、功耗有严格要求的计算机系统。他一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统、用户应用程序四个部分组成,用于实现对其他设备的控制、监视或管理功能。嵌入式系统已经应用于科学研究、工业控制、军事技术、交通通信、医疗卫生、消费娱乐等领域,人们日常使用的手机、PDA、汽车、智能家电、GPS等均是嵌入式系统的典型代表。

  首先,在老师的讲解下学会了安装Linux系统,在笔记本上安装双系统Windows、Ubuntu,熟悉了文件系统、分区和挂载等概念,加深了对Linux中基本概念的理解,熟悉Linux文件系统目录结构。

  其次就是安装好了之后,老师就更深一步的教我们应用了。在这是老师首先交给我们的是一些简单的命令应用,Linux具有很丰富的命令,绝大多数命令具有大量的参数。在老师的讲解下,我逐渐掌握了Linux操作的一些基本命令,如:用户系统相关命令、文件目录相关命令、压缩打包相关命令以及网络相关命令等。在实验中,学会了怎么搭建嵌入式Linux开发环境,主要包括串口传输、USB口传输、NFS传输的相关软件安装和TFTP的配置,以及交叉编译环境的搭建。在对于这部分的学习中,让我知道了命令对于嵌入式的重要性。它是linux的重要内容,linux中所有的功能都是通过命令执行。

  此外,通过实例学习,如:文件的I/O编程、进程的控制和进程间的通信、多线程编程、嵌入式Linux网络编程、嵌入式Linux设备驱动开发和Qt图形编程等,我对嵌入式有了更深入的认识。

  我学习的体会是这样的: 开始时,由于是刚刚入门,对老师说的好多东西是好奇的,好多名词也是新鲜的,不太懂什么意思,感觉学习起来很难。但是慢慢的,通过基本命令的学习和实验操作,对嵌入式有了进一步的了解并产生了兴趣。这门课的学习为以后自学嵌入式打下了一定的基础。


第二篇:嵌入式实验报告一


杭州电子科技大学

实验报告

课程名称:     嵌入式系统软件设计        姓名:      戴嵊舟、陈振强          

实验项目:     熟悉ARM开发环境        班级:       08092712                 

指导教师:            任彧               学号:  08927212、08927104          

日    期:         20##-05-05         

更多相关推荐:
嵌入式实验报告模板

武汉大学计算机学院08级嵌入式系统设计实验报告班级08级计科5班指导老师武小平学期20xx20xx第1学期小组成员目录一设计题目选择3二实验目的3三实验内容3四实验设备3五实验步骤5六实验结果及测试5七实验总结...

嵌入式系统实验报告

嵌入式系统实验报告姓名:##学号:##班级:计算机科学与技术非师范121班实验一LCD控制一、实验目的1、初步掌握液晶显示屏的使用及其电路设计方法。2、掌握S3C44B0X处理器的LCD控制器的使用。3、通过实…

嵌入式实验报告

嵌入式实验报告姓名邓庆学号1075490019学院通信工程学院实验一电源复位时钟管理单元一实验目的1了解如何配置不同的时钟2如何使用MRCC的功能而读取芯片上不用的时钟的当前状态和频率3如何处理外部4MHZ的石...

嵌入式系统实验报告

嵌入式系统实验报告学院测量与通信工程学院专业信号与信息处理学生姓名姜元学号1320xx0050指导教师董静薇一实验目的了解BootLoader的基本概念和框架结构了解BootLoader引导操作系统的过程掌握b...

嵌入式系统实验报告

嵌入式系统实验报告小组成员指导老师实验三键盘及LED驱动实验一实验目的1学习键盘及LED驱动原理2掌握ZLG7289芯片的使用方法二实验内容通过ZLG7289芯片驱动17键的键盘和8个共阴极LED将按键值在LE...

嵌入式系统实验报告

大连理工大学本科实验报告课程名称嵌入式系统实验学院系电子信息与电气工程学部专业自动化班级0804学号20xx81197学生姓名何韬20xx年11月18日大连理工大学实验报告学院系电信专业自动化班级0804姓名何...

嵌入式系统实验报告书

郑州航空工业管理学院嵌入式系统实验报告书院系姓名专业学号指导老师电子通信工程系电子信息工程电子通信工程系20xx年11月制实验一认识嵌入式开发平台一实验目的认识UPNETARM2410S嵌入式开发平台了解使用的...

嵌入式实验报告

嵌入式系统设计实验报告班级学号姓名成绩指导教师20xx06141实验一11实验名称UPnet3000实验台基本结构及使用方法12实验目的1熟悉UPnet3000嵌入式实验开发平台的核心硬件电路和外设2掌握ARM...

嵌入式实验报告一

实验报告学院光电信息与通信工程专业电子信息工程班级学号100420xx010583学生姓名成绩实验项目嵌入式信息系统实验实验日期20xx1126指导教师实验一系统固件编译与烧写一实验目的掌握编译OMAP44...

ARM7电子时钟嵌入式_课程设计报告

河海大学计算机及信息工程学院常州课程设计报告题目专业学号通信工程0862310315授课班号学生姓名指导教师完成时间目录摘要2第一章时钟设计3第一节课题目标3第二节程序和芯片的初始化4第三节构建功能模块5第四节...

嵌入式实验报告

实验一Android开发环境搭建一实验目的1了解Android项目环境的各个组成部分2掌握项目环境搭建方法3掌握每个软件的基本使用方法二实验主要仪器设备和材料硬件微型计算机软件EclipseJDKSDKADT三...

嵌入式实验报告五

嵌入式系统开发基础实验五西北农林科技大学嵌入式系统开发基础实验报告五学院班级电信班姓名学号20xx嵌入式系统开发基础实验五实验五图形界面应用程序设计一实验目的1了解在Linux下安装Qt以及QtEmbedded...

嵌入式实验报告(29篇)