本帖最后由 Trundeng 于 2022-1-12 20:51 编辑
一、前提.实践《【正点原子】STM32MP1嵌入式Linux C应用编程指南V1.0.pdf》
1.此文档,学习到了一个理念:“Linux系统下,一切皆文件”。
2.学习之前,自个定位的一个理念:在Linux下,用相当多的功能、特性。
二、摘录一,应用编程概念
1.“系统调用(system call)其实是 Linux 内核提供给应用层的应用编程接口(API),是 Linux 应用层进入 内核的入口。精通接口规则,可以无视硬件做对接做设计。脱离应用编程接口将无法使用操作系统。” 待续。。。。 三、摘录二,文件IO基础 1.“硬件操作代码与用户逻辑代码没有隔离,没有操作系统支持,代码编译之后直接在硬件平台运 行,俗称“裸跑”。” ps,学艺不精裸跑多了,容易系统崩溃。
2.很多函数存在版本差异。要确定Linux系统glibc版本。(ls -l libc.so.6)
相关函数如果有版本更新,出现矛盾,要习惯用 man来查细节。
3.个别函数推荐
a.错误打印使用 perror.
b. main 函数使用 return 和_exit() 的区别
c. pread , pwrite 函数使用。
ps:在文档48页,简单入门VS软件。个别推荐的函数基于高版本的Linux系统,与时俱进。
待续。。。。
四、摘录三,应用。
1.应用一体验玩直接写硬盘的例程。对比写40M的文件,还是能明显看到性能差别。 “使用 time 命令得到的程序运行时间大约是 0.13~0.14 秒左右,相比直接 I/O 方式的 2.7 秒,时间上提升
了 20 倍左右(测试大小不同、每次写入的大小不同,均会导致时间上的差别),原因在于直接 I/O 方式每
次 write()调用均是直接对磁盘发起了写操作,而普通方式只是将用户空间下的数据拷贝到了文件 I/O 内核
缓冲区中,并没直接操作硬件,所以消耗的时间短,硬件操作占用的时间远比内存复制占用的时间大得多”
使用我的电脑实测:直接I/O方式 0.48秒,普通方式0.058秒。不同电脑配置差别如此大。=============往下的学习基于 【正点原子】STM32MP1嵌入式Linux C应用编程指南V1.4.pdf
2.初步实践“Linux一切皆文件的理念” 如图所示,仿佛玩出密码要求包含特殊字符的内涵
|