Linux----嵌入式交叉编译环境 底层文件IO操作

简介: Linux----嵌入式交叉编译环境 底层文件IO操作

实验目的

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盘印证交叉编译结果。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
9天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
34 5
|
9天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
26 6
|
9天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
35 6
|
10天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
24 4
|
10天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
28 3
|
10天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
24 3
|
15天前
|
缓存 监控 Linux

热门文章

最新文章