嵌入式软件开发笔试面试题总结(四)

哎,最近一直忙于秋招,主要找嵌入式软件开发的工作。。。。
下面是我分享的一些面试总结。
在这里插入图片描述

嵌入式开发流程

照着软件工程的说法说下去,需求分析,搭建大概的架构,然后再进行详细地设计,在这个设计阶段有两个,一个是软件设计,一个是硬件设计。然后再进行代码编写、调试软件。硬件。最后生成产品。

gcc编译

Linux系统中,它是用来编译c语言的编译工具。
gcc main.c 会产生一个由main.c编译后的a.out可执行文件。

简单说一下程序是如何从一个文本文件编译成可执行程序的,四个步骤:
预处理——>编译——>汇编——>链接
gcc -E main.c 只做预处理
gcc -S main.c 程序做到编译处理
gcc -c main.c 程序做到汇编处理
gcc -c main.c -o main.o 做到汇编处理,然后生成main.o二进制文件(重点)
gcc -l dir 将头文件的搜索路径添加到dir目录中,意思就是可以从dir目录搜索头文件
gcc -L dir 将库文件的搜索路径添加到dir目录中,意思就是可以从dir目录搜索库文件
头文件就是 *.h的文件,库文件就是 lib 或者 so 或者.a的文件
这里可以想一想如何制作库文件。
gcc main.c -lm 这个是链接库文件(math库),在c文件里导入了#include<math.h> 就要用到
如果导入了线程相关库 gcc main.c -lpthread
gcc -g 可执行程序中包含调试信息
gcc -v 输出gcc版本信息,很多软件命令都是-v输出版本信息。

vim编辑器

是一个文本编辑器,在Linux系统下,经常拿来修改配置文件,初学者就是使用vim编辑器编辑c语言的。
文本查找:
查找变量x,在视图模式下,就是不可编辑的那个模式 /x 就可以找到第一个。在回车之后,按n键同方向转到下一个匹配的字符串,按N键反方向转到上一个匹配的字符串。
文本替换:
:s/str1/str2 将str1替换为str2

Linux进程通信方式

传统通信方式:
1.管道

//需要的头文件
#include <unistd>
//创建一个int型,空间为2的数组
int fd[2];
//将这个数组放进pipe函数,这是无名管道
pipe(fd);
pid_t pid = fork();
if(pid < 0){
	//pid<0 说明进程创建失败
	perror("fork");//输出错误信息
}
else if(pid == 0){
	//子进程
	close(fd[0]);	//关闭读端
	write(fd[1], "Hello", 6);	//向管道写数据
}
else{
	//父进程
	close(fd[1]);	//关闭写端
	char buf[100] = {0};
	read(fd[0], buf, sizeof(buf));	//读到buf里面
	printf("%s\n", buf);
}

2.有名管道
linux中可以创建管道文件 mkfifo f1

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char *argv[])
{ 
    pid_t pid = fork();
    if(pid < 0){
        perror("fork");
        return -1;
    }else if(pid == 0){
        //写
        int fd = open("f1",O_WRONLY);
        char buf[100]={0};
        while(1){
            gets(buf);
            write(fd,buf,strlen(buf));
        }
    }else{
        //读
        int fd = open("f1",O_RDONLY);
        char buf[100] = {0};
        while(1){
            read(fd,buf,sizeof(buf));
            printf("buf=%s\n",buf);
            memset(buf,0,sizeof(buf));
        }
    }
    return 0;
} ```
3.信号
ipc对象:
4.共享内存
5.消息队列
6.信号灯集
网络通信:
7.网络套接字(socket),这个比较重要,用于网络编程。

2023828日,作者表示,就这么点内容也好意思说是面试总结?
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式软件开发中,Linux驱动开发是非常重要的一部分。Linux操作系统的开源性和广泛应用,使得嵌入式系统中的硬件设备驱动程序多数基于Linux内核开发。 在Linux驱动开发中,PDF是一种常见的文档格式,因此在面试过程中可能会问到与PDF相关的问题。首先,我们需要了解PDF是一种可移植文档格式(Portable Document Format),由Adobe Systems开发。它的特点是可以跨平台,无论在哪个操作系统上都可以准确地显示文档内容,而无需考虑字体、图像、布局等问题。 在Linux驱动开发中,可能会涉及到与PDF相关的场景。例如,当某个嵌入式系统需要支持PDF文档的生成或解析时,就需要相应的驱动程序来完成这一功能。在开发PDF驱动程序时,需要了解PDF文件的结构和编码方式,以及实现文档生成、解析和渲染等功能。 此外,在嵌入式系统中,为了优化系统性能和资源利用率,可能会使用轻量级的PDF解析库或驱动程序。这些小型驱动程序可以在资源有限的嵌入式设备上运行,同时保证PDF文档的正确显示和使用。 在面试过程中,可能会问到如何开发或优化嵌入式Linux系统中的PDF驱动程序。我们可以根据具体问题来回答,例如采用适合嵌入式系统的轻量级PDF解析库、优化文件缓存和渲染处理、合理管理CPU和内存资源等。 总之,在嵌入式软件开发Linux驱动开发的面试中,涉及到PDF的问题通常与PDF的生成、解析和显示相关。在回答这类问题时,我们应该了解PDF文件的特点和结构,以及如何在嵌入式系统中开发高效、稳定的PDF驱动程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值