一、 基础内容

1 、Linux内核移植实验

问题回答

1. 交叉编译环境包括哪些工具,它的作用是什么?

答:GNU的交叉编译器,包括以下组件:

(1). Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;

(2). Binutils辅助工具,它是一组二进制工具程序集,包括objdump、objcopy等,能够对二进制文件进行处理;

(3). Gdb调试器,能够对执行程序进行源码或汇编级调试。

2. 简述Linux的启动过程。

答:1.加载BIOS;2.读取MBR;3.Boot

Loader;4.加载内核;5.用户层init根据inittab文件设定运行等级;6.init进程执行rc.sysinit;7.启动内核模块;8.执行不同运行级别的脚本程序;9.执行/etc/rc.d/rc.local。

2、Linux基本应用程序编写实验

问题回答

1. 简述交叉编译的基本概念,简述x86平台和ARM平台编译环境的异同;

答:通常,程序是在一台计算机上编译,然后再分布到将要使用的其他计算机上。当主机系统(运行编译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程就叫做交叉编译。

2. 简述Makefile文件的作用和基本组成;

答:Makefile文件的作用有点类似于DOS下的批处理文件,通过编写Makefile文件,用户可以将一个很复杂的程序(可能包含上百个甚至更多的源文件或者目录)通过简单的make命令进行编译。。Makefile文件描述了整个工程的编译,连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译;需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。

规则:用于说明如何生成一个或多个目标文件,

规则格式如下:

targets:

prerequisites

command

目标 依赖

命令

3. CVT-PXA270中怎样将编写的应用程序下载到Linux中,怎样在Linux中运行该程序?

答:CVT-PXA270通过NFS将主机的/tftpboot/目录挂接到目标机的/mnt/nfs目录中,因此需要将交叉编译的应用程序拷贝到主机的/tftpboot/目录。在bin文件所在目录下使用./bin文件名运行该程序。

3、

Linux驱动程序编写实验

问题回答

1. 简述Linux设备驱动程序的基本概念和编写方法;

答:在Linux中,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分。编写方法:1)

包含文件;2) 模块初始化;3) 设备文件操作函数实现;4)

模块退出操作。

2. 简述Linux应用程序怎样访问设备驱动程序;

答:Linux应用程序调用Linux系统调用,Linux系统调用“调用”驱动程序中实现的文件操作集。Linux用户程序通过设备文件(又名:设备节点)来使用驱动程序操作字符设备和块设备。

二、拓展内容

6、

Linux串口通信实验

问题回答

1. 简述Linux下的串口编程;

答:1).

包含串口编程相关头文件;2). 打开串口:Linux 下串口文件是位于/dev 下,串口一为/dev/ttyS0 ,串口二为/dev/ttyS1 ,打开串口是通过使用标准的文件打开函数open操作;3). 设置串口:最基本的设置串口包括波特率设置,效验位和停止位设置。串口的设置主要是设置struct termios结构体的各成员值;4).读写串口:设置好串口之后,读写串口就很容易了,把串口当作文件读写就可以了。发送数据用write函数,读取串口数据使用文件操作read 函数读取;5). 关闭串口:关闭串口就是关闭文件,用close函数。

代码及注释如下:

#include

#include

#include

#include

#include

#include

#include

#include

#define

TRUE

1

#define

FALSE 0

int speed_arr[] = { B38400, B19200,

B9600, B4800, B2400, B1200, B300,

B38400, B19200, B9600, B4800, B2400, B1200, B300,};

int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300,

38400, 19200, 9600, 4800, 2400, 1200, 300, };

void set_speed(int fd, int

speed)

{

int

i;

int

status;

struct

termios

Opt;

tcgetattr(fd,

&Opt);

for ( i=

0; i

< sizeof(speed_arr) / sizeof(int); i++)

{

if (speed

== name_arr[i])

{

tcflush(fd,

TCIOFLUSH);

cfsetispeed(&Opt, speed_arr[i]);

cfsetospeed(&Opt, speed_arr[i]);

status = tcsetattr(fd, TCSANOW, &Opt);

if (status

!= 0)

perror("tcsetattr fd1");

return;

}

tcflush(fd,TCIOFLUSH);

}

}

int set_Parity(int fd,int

databits,int stopbits,int parity)

{

struct termios options;

if ( tcgetattr(

fd,&options) != 0)

{

perror("SetupSerial

1");

return(FALSE);

}

options.c_cflag

&= ~CSIZE;

switch

(databits)

{

case 7:

options.c_cflag |= CS7;

break;

case 8:

options.c_cflag |= CS8;

break;

default:

fprintf(stderr,"Unsupported data size\n");

return (FALSE);

}

switch

(parity)

{

case 'n':

case 'N':

options.c_cflag &= ~PARENB;

options.c_iflag &= ~INPCK;

break;

case 'o':

case 'O':

options.c_cflag |= (PARODD | PARENB);

options.c_iflag |= INPCK;

break;

case 'e':

case 'E':

options.c_cflag |= PARENB;

options.c_cflag &= ~PARODD;

options.c_iflag |= INPCK;

break;

case 'S':

case 's':

options.c_cflag &= ~PARENB;

options.c_cflag &= ~CSTOPB;

break;

default:

fprintf(stderr,"Unsupported parity\n");

return (FALSE);

}

switch

(stopbits)

{

case 1:

options.c_cflag &= ~CSTOPB;

break;

case 2:

options.c_cflag |= CSTOPB;

break;

default:

fprintf(stderr,"Unsupported stop bits\n");

return (FALSE);

}

if (parity !=

'n')

options.c_iflag |= INPCK;

options.c_cc[VTIME] = 150; // 15 seconds

options.c_cc[VMIN] = 0;

tcflush(fd,TCIFLUSH);

if

(tcsetattr(fd,TCSANOW,&options) != 0)

{

perror("SetupSerial 3");

return (FALSE);

}

return

(TRUE);

}

int OpenDev(char *Dev)

{

int fd = open( Dev, O_RDWR );

if (-1 == fd)

{

perror("Can't Open Serial Port");

return -1;

}

else

return fd;

}

int main(int argc, char

**argv)

{

int fd;

int nread;

char buff[512];

char *dev ="/dev/ttyS0";

fd = OpenDev(dev);

printf("please enter any data to the ttyS0, Enter key to

confirm\n");

if (fd>0)

set_speed(fd,115200);

else

{

printf("Can't Open Serial Port!\n");

exit(0);

}

if

(set_Parity(fd,8,1,'N')== FALSE)

{

printf("Set Parity Error\n");

exit(1);

}

while(1)

{

while((nread = read(fd,buff,512))>0)

{

printf("\nLen %d\n",nread);

buff[nread+1]='\0';

printf("\n%s",buff);

}

}

//close(fd);

//exit(0);

}

8、

Linux端口编程及跑马灯实验

问题回答

1. 简述如何在CVT-PXA270实验箱中对CPU特殊功能寄存器进行访问;

答:许多接口方面的实验都需要在应用程序中对CPU特殊功能寄存器或者其它IO端口进行直接访问,CVT-PXA270提供了一个通用的端口访问驱动程序-directio,通过该驱动程序,应用程序可以直接读写CPU特殊功能寄存器或者其它IO端口。

代码及注释如下:

#include

#include

#include

#include

#include

"../include/directio.h"

#define _DEBUG_ printf

int main(int argc, char

**argv)

{

int led_status = 0;

if(port_init() != 0)

{

_DEBUG_("port open error\n");

_DEBUG_("Please follow

me:\n");

_DEBUG_("

#insmod directio\n");

_DEBUG_("

#mknod /dev/directio c 199 0\n");

_DEBUG_("

#./leddemo\n");

return -1;

}

while(1)

{

_DEBUG_("led blink\n");

port_outl(0xf0005000, led_status);

led_status ^=

0xff;

sleep(1);

}

port_uninit();

}

嵌入式课程设计linux,嵌入式课程设计报告相关推荐

  1. 设计linux软件下载,设计制作编辑器-The LayoutEditor For Linux下载20151012 32位/64位版-西西软件下载...

    The LayoutEditor For Linux是一个程序设计和编辑版面的MEMS /集成电路制造.以及它是适当的多芯片模块( MCM )来,芯片板上(芯) ,低温共烧陶瓷,没有一个功能使布局编辑 ...

  2. linux系统管理课程论文,linux操作系统课程论文论文.doc

    linux操作系统课程论文论文 Linux操作系统课程论文 班 级: 1002 学 号: 姓 名: 2013-11-20 摘 要 本文通过对Linux操作系统和Windows操作系统各自的特点比较,分 ...

  3. 嵌入式课程设计linux,嵌入式系统课程设计--基于U盘的linux操作系统的构建

    嵌入式系统课程设计--基于U盘的linux操作系统的构建 1 课程设计报告课程设计报告 课程名称课程名称 嵌入式系统课程设计嵌入式系统课程设计 设计题目设计题目基于基于 U盘的盘的 linux 操作系 ...

  4. 检索上Linux操作系统课程的教师名,Linux操作系统课程设计.docx

    课 程 设 计 报 告 课程名称 Linux操作系统课程设计 指导教师 起止日期 2016-03-21 至 2016-06-13 学 院 信息与通信工程学院 专 业 电子信息工程 学生姓名 班级/学号 ...

  5. 视频教程-Linux系列课程(基础篇)-Linux

    Linux系列课程(基础篇) 2年JavaEE开发 ,5年资深大数据开发大牛,曾就职于蓝点科技,擅长精准广告系统开发,精通Linux操作系统! 具备丰富的大数据研发和培训经验,熟练运用Hadoop和S ...

  6. 嵌入式linux开发课程设计,嵌入式Linux开发课程设计指导书

    嵌入式Linux开发课程设计指导书 课程编码: 适应专业:计算机专业.电子信息工程专业 学时:3周(计算机专业),2周(电子信息工程专业) 学分: 3(计算机专业),2(电子信息工程专业)时间安排:分 ...

  7. 【嵌入式系统课程设计——纸张计数显示装置设计】

    一.简介 本项目分享的是一个嵌入式系统的课程设计,老师给了多个题目供我们选择.我们组选择的题目是纸张计数显示装置设计,也是2019年全国大学生电子设计竞赛的F题. 有关这个题目的经验分享,网上已经出现 ...

  8. linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc

    linux操作系统课程设计-车辆死锁.doc 键入文字"操作系统原理"课程设计BX090709吴沛儒操作系统原理课程设计报告姓名吴沛儒班级BX0907学号9指导老师胡静二〇一一年十 ...

  9. arm linux嵌入式网络控制系统,基于ARMLinux的嵌入式网络控制系统的研究与设计

    摘要: 随着计算机技术.控制技术和网络技术的蓬勃发展,嵌入式系统与网络控制系统的应用越来越广阔.当前控制系统正经历一场前所未有的变革,远程监控和智能控制成为控制系统发展的重要方向.通过嵌入式网络控制系 ...

最新文章

  1. python笔记九(迭代)
  2. MongoDB 增量备份方案
  3. java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码
  4. linux禁用root登录
  5. hue安装使用,集成数据库
  6. Spring整合MyBatis原理之Mapper接口代理对象的产生以及调用 (三)
  7. 如何将Python程序打包成linux可执行文件
  8. linux 实时显示网速工具nload
  9. macOS上显示隐藏文件
  10. 关于英文论文写作的初步总结和资料推荐
  11. 双系统安装的linux找不到了,双系统,安装linux时找不到硬盘!?
  12. yarn application -kill application_id yarn kill 超时任务脚本
  13. 什么是抖音SEO,抖音seo优化怎么做?抖音seo实操教程
  14. Pascal 过程与函数
  15. 不用再期待别人的认可
  16. python html模板引擎_flask入门2-模板引擎
  17. SOHO中国高管建“老鼠仓”吸钱 大企成空壳谁之责?
  18. 产后一定要喝生化汤吗?
  19. 使用Quitter自动关闭(或隐藏)Mac上的空闲应用程序
  20. PowerPoint如何找回隐藏的iSlide设计工具

热门文章

  1. 从冰雪盛会的幕后赛场,看数字建设者如何保障大型赛事
  2. 拼多多校招-----六一儿童节(python)
  3. CentOS7 配置搭建安装LNMP
  4. Java使用POI实现导出Word文档
  5. 【沐风老师】3DMAX实线转虚线插件DashedShape使用教程
  6. 计算机系统崩溃了怎么办,电脑系统崩溃开不了机怎么办
  7. 记录一下,为什么QQ复制整个文件夹后,仍然没有聊天记录
  8. html防止恶意广告,如何拦截恶意网页和弹窗广告?解决方法
  9. HSSFWorkbook EXCEL导出
  10. 纯JS实现房贷利率报表对比