当前位置:文档之家› 华南理工大学 -- 嵌入式实验报告

华南理工大学 -- 嵌入式实验报告

嵌入式操作系统移植:由于嵌入式系统所使用的芯片型号多种多样,很多芯片不能 直接兼容,所以通过修改部分代码,把能在甲芯片上运行的程序,也能在与之不完 全兼容 的乙芯片上正确运行,就叫移植。 2、简单描述什么交叉编译?嵌入式系统中宿主和目标分别指的是什么?
简单地说,就是在一个平台上生成另一个平台上的可执行代码。通过交叉编译工具, 我们就可以在 CPU 能力很强、存储空间足够的主机平台上(比如 PC 上)编译出针对其 他平台的可执行程序。
六、主要代码注释
1、动态加载的内核模块的编程实现 Code:
/* helloModule.c */ #include <linux/init.h>//包含了宏_init,_exit 的定义,_init 告诉编译程序相关的函数和变量仅 用于初始化 #include <linux/module.h>//该文件包含了对模块的结构定义以及版本控制,任何模块程序都 应该包含此头文件 #include <linux/kernel.h>//包含常用的内核函数 MODULE_LICENSE("Dual BSD/GPL");//将模块的许可协议设置为 BSD 和 GPL 双许可. static int __init hello_init(void)//内核模块初始化函数 {
clean: rm -rf hello *.o
开发板 Makห้องสมุดไป่ตู้file 文件:
# test for makefile
#CC = arm-linux-gcc #CFLAGS =
all : hello
hello: hello.o arm-linux-gcc hello.o -o hello
hello.o: hello.c arm-linux-gcc -c hello.c -o hello.o
Makefile 文件:
test for makefile
#CC = gcc #CFLAGS =
all : hello
hello: hello.o arm-linux-gcc hello.o -o hello
hello.o: hello.c arm-linux-gcc -c hello.c -o hello.o
2、Linux 系统中,BusyBox 的作用什么? BusyBox 是很多标准 Linux 工具的一个单个可执行文件,集成压缩了 Linux 的许多
工具和命令,也包含了 Android 系统自带的 shell,但大小却小很多倍。主要应用于嵌入 式 linux 系统,理由是:减小文件尺寸,减轻编译工作量。
I
实 验 一 Linux 环境熟悉实验

点:
实验日期与时间:
预习检查纪录:
31 楼
405 房; 实验台号:
2019.03.22
评 分:
实验教师:
一、预习题
1、简单描述嵌入式系统的定义。什么是嵌入式操作系统移植? 嵌入式系统一般的定义:嵌入式系统是以应用为中心和以计算机技术为基础的,并
且软硬件是可裁减的,能满足应用系统对功能、可靠性、实时性、成本、体积、功耗等 指标的严格要求的专用计算机系统。简单说,嵌入式系统就是应用软件与系统硬件的一 体化。
{
case'+':d=a+b;break;
/*进行加法运算*/
case'-':d=a-b;break;
/*进行减法运算*/
case'*':d=a*b;break;
/*进行乘法运算*/
case'/':d=a/b;break;
/*进行除法运算*/
}
8
printf("%d%c%d=%d\n",a,c,b,d); return 0; }
2、Linux 驱动和普通应用程序的区别在哪里?什么是内核空间和用户空间? Linux 运行在 2 种模式下:内核模式,用户模式。内核模式对应内核空间,而用户
模式对应用户空间。驱动程序作为内核的一部分,它对应内核空间,应用程序不能直接 访问其数据
二、实验内容和实验目标
1、动态加载的内核模块的编程实现; 2、杂项驱动框架的编程实现; 3、具有 Led 控制功能的驱动编程实现。; 以上每项均包括:代码编写、Makefile 实现、具体操作步骤
五、主要代码注释
Linux 系统 shell 操作命令: cd:进入目录(.代表当前目录,..代表上级目录) ls:显示当前目录下文件信息(-a:显示隐藏文件,-l:显示详细信息) touch:创建空文件 cp:复制文件 mv:移动文件,可用于重命名 rm:删除文件 mkdir:创建空目录 rmdir:删除目录 tar:打包和解压缩(-x:解压缩,-c:打包) pwd:显示当前目录的绝对路径 Makefile: print.h://生命 printhello 函数 #include<stdio.h> void printhello(); print.c//printhello 函数的具体实现方式 #include “print.h” void printhello(){ printf(“Hello,world\n”); } main.c://main 函数 #include “print.h” int main(void){ printhello();
二、实验内容和实验目标
1、熟悉 Linux 基本操作与开发环境; 2、熟悉 Makefile 使用及简单编程;
1
三、实验主要过程(主要代码的设计思路和流程)
1、熟悉 Linux 基本操作与开发环境
2、熟悉 Makefile 使用及简单编程
四、实验总结
在本实验,了解到很多 linux 的常用命令,理解并编写简单的 makefile。
2
return 0; } makefile: helloworld:main.o print.o//:左边为生成文件,右边为编译所需的源文件
gcc –o helloworld main.o print.o main.o:main.c print.h
gcc –c print.h print.o:print.c print.h
四、实验结果
5
6
7
五、实验总结
在本实验中,了解了如何将一个内核进行编译并烧写到开发板,了解了怎样通过超 级终端和开发板进行信息交流,了解了一个内核的重要组成文件。并动手实现了一个计 算机小项目。
六、主要代码注释
计算器代码:
#include<stdio.h>
/*函数头:输入输出头文件*/
int main()
clean: rm -rf hello *.o
/*输出结果*/
9
实 验 三 Linux 简单实验(驱动实验)

点:
实验日期与时间:
预习检查纪录:
31 楼
405 房; 实验台号:
2019.04.12
评 分:
实验教师:
一、预习题
1、Linux 嵌入式驱动下,请简单描述一下字符型驱动和块驱动的定义,分别举例。 字符型驱动:
gcc –c print.c clean://清理过程文件
rm helloworld main.o print.o
3
实 验 二 Linux 内核构建与编译

点:
实验日期与时间:
预习检查纪录:
31 楼
405 房; 实验台号:
2019.03.29
评 分:
实验教师:
一、预习题
1、如何裁剪 Linux 内核,请简单描述一下过程。 (1).创建交叉编译环境; (2).准备内核源代码包; (3).配置和编译内核: cd /opt/FriendlyARM/tiny210/linux/linux-3.0.8 # 进入内核源代码目录 cp mini210_linux_defconfig .config # 根据开发板来创建内核配置文件 make menuconfig # 进行内核配置 make # 编译内核 生成内核镜像文件 arch/arm/boot/zImage; (4).生成文件系统。
3、请问 Linux 嵌入式操作系统中,我们采用的终端物理设备是什么?采用什么协议进 行通讯?
嵌入式设备;串口协议
二、实验内容和实验目标
1、Linux 内核编译; 2、文件系统的构建; 3、熟悉系统烧写过程及程序运行;
三、实验主要过程(主要代码的设计思路和流程)
1、解压 linux 核心压缩包: cd /mnt/hgfs/ cp linux-3.0.8-20121030.tgz /root/ cd /root/
三、实验主要过程(主要代码的设计思路和流程)
1)动态加载的内核模块的编程实现 2)杂项驱动框架的编程实现 3)具有 Led 控制功能的驱动编程实现。
10
四、实验结果
11
12
13
五、实验总结
通过这次实验,深刻了解到嵌入式驱动模块的开发和安装过程,更加深刻的了解到超级 终端与电脑上的工程的关系。了解到驱动模块的组成和使用方法,结合实际硬件可以比较清 楚的理解驱动模块。
4
tar xvf linux-3.0.8-20121030.tgz cd Linux-3.0.8/ 2、观察核心中包括哪些重要文件: 3、进入内核源代码目录: cd Linux-3.0.8/ 根据开发版来创建内核配置文件: cp mini210_linux_defconfig .config 此处采用缺省配置; 进行内核配置 make menuconfig,不做任何修改保持退出; 编译内核 make; 生成内核镜像文件 arch/arm/boot/zImage 4、编写计算器代码; 5、启动超级终端并配置端口 连接开发板的 RS232 端口和配置的相应端口,将生成的 hello 文件传送到开发板上,通 过超级终端执行得到结果;
相关主题