实验目的
1.掌握烧录最小 Linux 系统方法;
2.掌握文件 IO 打开文件 open 函数;
3.掌握文件 IO 写文件 write 函数;
4.掌握文件 IO 读文件 read 函数;
实验设备
PC 计算机(可以上网),虚拟机软件
VMware-workstation-full-10.0.1,
Ubuntul2.4 虚拟机镜像文件。
实验步骤
1:嵌入式开发环境的搭建(烧录最小Linux系统)
(1)通过串口线连接计算机并使用串口软件使嵌入式平台与计算机连接。
(2)由于嵌入式平台使用安卓系统,则使用fastboot 进行底层刷机。
在对安卓系统下开发板进行 boot初始化过程中,经过查阅资料学习到了通过 fatformatmmc 指令进行 fat 分区格式化,通过 ext3format 进行 ext3 分区格式化,然后在 Linux 最小系统下通过 fastboot指令以及 Windows 系统下调用 fastboot 进行镜像文件的烧录。
(3)通过下载驱动使计算机识别刷机后的嵌入式平台。( 如不下载驱动则无法进行上面镜像文件的下载)
(4)对嵌入式平台进行不同格式下的格式化。
(5)使用 OTG进行最小系统文件的烧录。
(6)
使用串口软件印证是否刷机成功
(7)
通过修改参数文件将编译嵌入式 Linux的工具所在目录添加到 PATH环境变量中 。
(8)使用嵌入式 Linux工具编译程序并分别验证是否能在 pc平台和嵌入式平台运行 。
2:打开文件函数open
1、open函数解释
open 函数可以建立一个到文件或者设备的访问路径。 在打开或创建文件时可以制定文件的属性及用户的权限等各种参数。
第一个参数 path 表示:路径名或者文件名。路径名为绝对路径名,例如开发板中的
led 驱动的设备 /dev/leds。
第二个参数 oflags 表示:打开文件所采取的动作。
2、open函数代码
main 函数如下
程序中打开了三个文件分别属于不同的情况。
/dev/leds 已经在开发板中存在,属于驱动的设备节点,/bin/test1 和
/bin/test2 都不存在。
使用 open 函数调用上面三个文件,如果出错就会打印错误,然后打印句柄。
3、交叉编译下载运行测试
给定实验参考程序open.c,通过使用命令”arm-none-linux-gnueabi-gcc
-o open open.c -static” 编译open文件,并通过SSH将输出文件从虚拟机内传输至U盘中,使用U盘印证交叉编译结果。
最终实验结果如图所示
3、写文件函数write
1、write函数解释
write()函数是用于向打开的文件写数据。
参数 fd,使用
open 函数打开文件之后返回的句柄。
参数*buf,需要写入的数据。
参数 count,将参数*buf
中最多 count 个字节写入文件中。返回值为 size 类型,出错会返回-1,其它数值表示实际写入的字节数。
2、write函数代码 main 函数如下
**
**
在 16 行定义了
buffer_write 字符数组。
在 18 行,进行写操作之前,必须得到文件的句柄,在这一行中使用
open 函数创建和打开文件”/bin/testwrite"。
在
23 行中会调用 write 函数,将 buffer_write 字符数组中的内容写到新
建的文件中。在
31 行调用 close 函数,将"/bin/testwrite"文件关闭。
后面测试的时候可以在超级终端中, 使用
vi 编辑器打开"/bin/testwrite"文
件,可以看到这个文件中有字符
Hello Write Function!.
3、交叉编译下载运行测试
给定实验参考程序write.c,通过使用命令”arm-none-linux-gnueabi-gcc
-o write
write.c
-static” 编译write文件,并通过SSH将输出文件从虚拟机内传输至U盘中,使用U盘印证交叉编译结果。
最终实验结果如图所示
4:读文件函数read
1、read函数解释
read()函数是用于向打开的文件写数据。
参数 fd,使用
open 函数打开文件之后返回的句柄。参数*buf,读出的数据保存的位置。
参数 len,每次最多读
len 个字节。返回值为 ssize 类型,出错会返回-1,
其它数值表示实际写入的字节数,返回值大于 0 小于 len 的数值都是正常的。
2、read函数代码
main 函数如下
在
20 行,使用 open 函数打开或者新建"/bin/testwrite"文件。
在
23 行, 使用 write 函数将 buffer 中的内容写到"/bin/testwrite"文件
中。
在 35 行,使用 read 函数,将"/bin/testwrite"文件中的内容读出来。在 38 行,使用打印函数 printf 打印 read 函数读出的数据。
最终测试的时候,除了会出现"/bin/testwrite"文件,还会打印 read 函数读取的数据。
3、交叉编译下载运行测试
给定实验参考程序read.c,通过使用命令”arm-none-linux-gnueabi-gcc
-o read
read.c
-static” 编译read文件,并通过SSH将输出文件从虚拟机内传输至U盘中,使用U盘印证交叉编译结果。