嵌入式面试题收集三

bin文件和elf文件的区别

bin文件
Gcc 编译出来的是ELF文件。通常gcc –o test test.c,生成的test文件就是ELF格式的,在linux shell下输入 ./test就可以执行。

Bin 文件是经过压缩的可执行文件,去掉ELF格式的东西。是直接的内存映像的表示。在系统没有加载操作系统的时候可以执行。

elf文件
elf(executable and link format)文件里面包含了符号表,汇编等。
BIN文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。

两者之间的联系
两种文件都可以运行,机器最终只认BIN,之所以有ELF格式是在有操作系统时,操作系统会根据ELF解析出代码、数据等等,最终仍是以BIN运行。由于elf文件的信息比较全,所以可以用来以单步跟踪的方式运行。关键是看loader。

.
.
.
.

两台linux操作系统之间用什么命令进行文件传输

当两台LINUX主机之间要互传文件时可使用SCP命令来实现
scp传输速度较慢,但使用ssh通道保证了传输的安全性

.
.
.
.
.
.

i++ 和 ++i 的区别

结论:i++:先赋值再++,效率低;++i:先++,再赋值,效率比++i高
原因:i++,加一操作会在下一步才会生效,所以申请了临时变量,暂存了当前值,i++,则没有这一步骤,故效率更高
具体过程:i++:int temp=i; i=i+1; return temp;(i++需要开辟临时变量,效率低)
++i:i=i+1; return i; (++i不需要开辟临时变量,效率高)

.
.
.
.

数组越界访问会有什么后果

数组在初始化的过程中,就已经确定申请一块多大的连续内存。这块内存是合法的,系统知道这块内存有人在用。我们通过地址来访问空间,理论上我们可以通过数组下标加1的方式访问,后面那些未申请的空间。但是如果这段空间存放这重要的资源,数组越界访问,导致资源被覆盖。轻则内存泄露,重则系统崩溃

.
.
.
.
.
.

设备驱动程序中如何注册一个字符设备?分别解释一下它的几个参数的含义。

在这里插入图片描述
用户空间使用open()系统调用函数打开一个字符设备时( int fd = open(“dev/demo”, O_RDWR) )大致有以下过程:
1、在虚拟文件系统VFS中的查找对应与字符设备对应 struct inode节点
2、遍历字符设备列表(chardevs数组),根据inod节点中的 cdev_t设备号找到cdev对象
3、创建struct file对象(系统采用一个数组来管理一个进程中的多个被打开的设备,每个文件秒速符作为数组下标标识了一个设备对象)
4、初始化struct file对象,将 struct file对象中的 file_operations成员指向 struct cdev对象中的 file_operations成员(file->fops = cdev->fops)
5、回调file->fops->open函数

注册一个字符设备有种方法:
方法一:

void cdev_init(struct cdev*cdev ,struct file_operation* fops) 

cdev是一个指向结构体cdev的指针,而fops是指向一个类似于file_operations结构(可以是file_operations结构,但不限于该结构)的指针.

struct cdev* cdev 是内核用来描述一个字符设备

方法二:

int register_chrdev(unsigned int major , const char * name , struct file operations * fopen)

**该注册函数是早期的注册函数,major是设备的主设备号,name是驱动程序的名称,而fops是默认的file_operations结构(这是只限于file_operations结构)对于register_chrdev的调用将为给定的主设备号注册0-255作为次设备号,并为每个设备建立一个对应的默认cdev结构
**

.
.
.
.
.
.

什么是时间复杂度

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值