1.面试题目汇总-嵌入式篇_嵌入式 面试题目-程序员宅基地

技术标签: LINUX  

 

1.面试题目汇总-嵌入式篇

https://blog.csdn.net/qq_33443989/article/details/76938304

2017年08月08日 20:18:10 Fogost Tower 阅读数:5014

 版权声明:本文为博主(Tower)自学笔记,欢迎转载! :-) https://blog.csdn.net/qq_33443989/article/details/76938304

自己踩的坑.

存储类: 
1<. SDRAM, SRAM, DRAM, PSRAM,NOR Flash, Nand Flash不同

Tables Chinese Full Name
SDRAM abbr. 同步动态随机存取记忆体 Synchronous Dynamic random access memory
SRAM abbr. 静态随机存储器 Static Random Access Memory
DRAM abbr. 动态随机存取存储器 Dynamic Random Access Memory
PSRAM abbr. 假静态随机存储器 null
NOR Flash 编码型快闪记忆体 null
Nand Flash 储存型快闪记忆体 null

1<. 特点

  • DRAM: 
    1. DRAM是一种电容式随机易失性存储器,断电则丢失存储信息
    2. 三种刷新方式 : 集中式刷新、分布式刷新、异步式刷新
    3. 分类:FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM、WRAM
  • SRAM 
    1. SRAM是一种随机易失性存储器,断电则丢失存储信息
    2. SRAM速度快,内存大,通常用来制作高速缓存
    3. 集成度低,功耗大
  • SDRAM 相关传送门 
    1. 是DRAM的一种,需要不断的刷新来保证数据不丢失
    2. 自由指定地址进行数据读写
    3. 需要同步时钟,内部的命令的发送与数据的传输都以它为基准
  • PSRAM 
    1. 采用 1T+1C的技术 ,体积少,功耗低
    2. I/O接口与SRAM相同
Tables Nor Flash Nand Flash
接口 RAM_Like引脚多 引脚少,复用
容量 小:1/2M 大:128M,xG
读操作 简单(位) 复杂(页)
写操作 发出特定指令 发出特定指令
读取速度 稍快
写入速度 快的多
价格 便宜
优缺点 无坏块 可能有坏块、位交换
纠错   EDC/ECC

相关传送门 
2<. 应用领域

  1. SRAM : 高速缓存
  2. DRAM : PC机内存
  3. SDRAM : 同DRAM
  4. Nor Flash : 做闪存更适合
  5. Nand Flash : 手机、嵌入式设备、PC机内存,是高数据存储密度的理想解决方案。
  6. PSRAM : 主要应用于手机,电子词典,掌上电脑,PDA,PMP.MP3/4,GPS接收器等消费电子产品
  7. Rambus : DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

操作系统类: 
1<. uCo/sII 相关 
http://blog.csdn.net/qq_33443989/article/details/77074141

2<. FreeRTOS 相关

3<. OpenWrt相关

[补充]:添加了操作系统后的优点 :

1<. 没有操作系统:Delay()就是做死功夫。 
2<. 添加了操作系统:Delay()时,会由操作系统进行任务调度,处理其他任务要处理的事情,这样工作效率就提高了。

4<. 系统层的机制

1<. 网络编程

  • 1<. TCP / IP

  • 2<. UDP

  • 3<. 相关: 多路IO复用

2<. 多线程

  • 1<. 进程与线程的区别
进程原语 线程原语 描述
fork pthread_create 创建新的控制流
exit pthread_exit 从现有的控制流中退出
waitpid pthread_join 从控制流中得到退出状态
atexit pthread_cancel_push 注册在退出控制流时调用的函数
getpid pthread_self 获取控制流的ID
abort pthread_cancel 请求控制流的非正常退出

  • 2<. 线程相关函数

    • 1<. 作用比较两个线程 ID 是否一致。 
      int pthread_equal(pthread_t tid1, pthread_t tid2); 
      返回值:如果相等返回非0,否则返回0 
      线程ID 使用 pthread_t 数据类型来表示。Linux 使用 unsigned long int 表示pthread_t 数据类型。Solaris 9 把 pthread_t 数据类型表示为 unsigned int。FreeBSD5.2.1 和 MAC OS X 10.3 用一个指向 pthread 结构的指针来表示pthread_t 数据类型。 因此如果需要考虑移植性,必须使用函数来对两个线程ID进行比较。

    • 2<. 获取线程自身的线程ID。 
      pthread_t pthread_self(void); 
      返回值:调用线程的线程ID

    • 3<. 创建线程: 
      int pthread_create(pthread_t restrict tidp, const pthread_attr_t *restrict attr, void (*start_rtn)(void), void *restrict arg); 
      返回值:若成功返回0;如果失败,返回错误编号

    • 4<. 线程终止 
      如果进程中的任意线程调用了 exit_Exit或者 _exit 函数,那么整个进程就会退出。与此类似,如果信号的默认动作是终止进程,那么,把该信号发送到线程会终止整个进程。

      在不终止整个进程的情况下,单个线程可以通过下列三种方式退出:
      1)线程只是从启动例程中返回,返回值作为线程的退出码。
      2)线程可以被同一进程中的其他线程取消。
      3)线程调用 pthread_exit。
      
      void pthread_exit(void *rval_ptr);
      
      进程中的其他线程可以通过调用 pthread_join 函数访问到这个指针。
      int pthread_join(pthread_t thread, void **rval_ptr);
      返回值: 若成功返回0,失败返回错误编号。
      
      调用这个函数后,调用线程将一直阻塞,直到指定的线程以前面提到的3种方式退出, 
      
      如果线程只是从它的启动例程中返回, rval_ptr将包含返回码。如果线程被取消,由rval_ptr 指定的内存单元就置为 PTHREAD_CANCELED。
      
      如果线程已经处于分离状态, pthread_join 调用就会失败,返回 EINVAL。
      如果 rval_ptr 为 NULL,则调用pthread_join 函数将等待指定的线程终止,但是并不获取线程的终止状态。
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
    • 5<. 请求取消同一进程中的其他线程 
      int pthread_cancel(pthread_t tid); 
      返回值:若成功则返回0,否则返回错误编号

      在默认情况下,pthread_cancel 函数会使得由 tid 标识的线程的行为表现为如同调用了参数为 PTHREAD_CANCELD的pthread_exit函数,但是,线程可以选择忽略取消方式或者是控制取消方式。注 意,pthread_cancel并不等待线程终止,它仅仅是提出请求.

      线程可以安排它退出时需要调用的函数,这与进程可以用 atexit 函数安排进程退出时需要调用的函数是类似的。这样的函数称为:线程清理处理程序(thread cleanup handler)。线程可以建立多个清理处理程序。处理程序记录在栈中,也就是说他们的执行顺序与他们注册时的顺序相反。

      void pthread_cleanup_push(void (rtn)(void ), void *arg); 
      void pthread_cleanup_pop(int execute);

      当线程执行以下动作时调用清理函数,调用参数为arg,清理函数 rtn 的调用顺序是由pthread_cleanup_push 函数来安排的。 
      1)调用pthread_exit时。 
      2)响应取消请求时。 
      3)用非零 execute参数调用 pthread_cleanup_pop 时。

    如果execute 参数为0,清理函数将不被调用。无论是否为0,pthread_cleanup_pop都将删除上次 pthread_cleanup_push 调用建立的清理处理程序。

    注意: 
    1)如果线程是通过从它的启动例程中返回而终止的话(例如通过return函数),那么它的清理处理程序就不会被调用。 
    2)清理处理程序是按照与他们安装时相反的顺序被调用的。 
    3)这些函数有一个限制,由于他们可以实现为宏,所以必须在与线程相同的作用域中以匹配对的形式使用,否则,程序编译可能通不过。 pthread_cleanup_push 的宏定义可包含字符{,在这种情况下,对应的匹配字符 } 就要在 pthread_cleanup_pop 定义中出现。

    • 6<. pthread_detach 函数。 
      int pthread_detach(pthread_t tid); 
      返回值:若成功返回0,失败返回错误编号 
      在默认情况下,线程的终止状态会保存到对该线程调用 pthread_join,如果线程已经处于分离状态,线程的底层存储资源可以在线程终止时立即被收回。对分离状态的线程进行 pthread_join 的调用会产生失败,返回 EINVAL。pthread_detach 调用可以用于使线程进入分离状态。

3<. IPC

  • 1<. 进程间通信

    • 管道 : 无名 / 有名
    • 信号
    • 消息队列
    • 共享内存
  • 2<. 进程间的数据保护机制

    • 信号量
    • 互斥锁

4<.文件访问

  • 常见函数

    • fstat()
    • flseek()
    • select()
  • 退出函数的区别

    • __exit()
    • exit()
    • close()
    • return()

5<. 架构层机制:

  • Cache写机制:Write-through与Write-back && Write-Through和Write-Back的区别
当CPU采用高速缓存时,它的写内存操作有两种模式:
  一种称为“穿透”(Write-Through)模式,在这种模式中高速缓存对于写操作就好像不存在一样,每次写时都直接写到内存中,所以实际上只是对读操作使用高速缓存,因而效率相对较低。
  另一种称为“回写”(Write-Back)模式,写的时候先写入高速缓存,然后由高速缓存的硬件在周转使用缓冲线时自动写入内存,或者由软件主动地“冲刷”有关的缓冲线。
  • 1
  • 2
  • 3

dma_alloc_writecombine 于 mmap 在 LCD 驱动下如何关联到一起的


总线类: 
1<. SPI细节

1<. 引脚定义

(1)MOSI – 主器件数据输出,从器件数据输入 
(2)MISO – 主器件数据输入,从器件数据输出 
(3)SCLK –时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2 
(4)NSS – 从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select) 
示意图

2<. 特点

1<. 时钟极性 CPOL: (Clock Polarity)

  1. 当CPOL为0时,时钟空闲时电平为低;
  2. 当CPOL为1时,时钟空闲时电平为高;

2<. 时钟相位 CPHA:(Clock Phase)

  1. 当CPHA为0时,时钟周期的前一边缘采集数据,时钟周期的后一边缘输出数据;
  2. 当CPHA为1时,时钟周期的后一边缘采集数据,时钟周期的后一边缘输出数据;

3<. 四种工作组合: 
CPOL和CPHA,分别都可以是0或时1;如下图所示:

SPI工作状态

3<. 应用领域 
EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间,LCD显示屏。

2<. I2C细节

1<. 引脚定义

(1)SDA– 串行数据线 
(2)SCL– 串行时钟线

2<. 特点 
由Philips公司开发的一种简单、双向二线制同步串行总线。

1<. 起始和停止时序 

2<. 传送(位)时序 
这里写图片描述

3<. 应答时序 
这里写图片描述

3<. 应用领域 
NVT2003,04,06系列,摄像头。

3<. I2S细节

1<. 引脚定义

(1)SCLK/BCLK–串行时钟/位时钟,对应数字音频的每一位数据 
(2)LRCK/VXFS– 帧时钟,切换左右声道的数据 
(3)SDATA– 串行数据,二进制补码表示的音频数据

2<. 特点 
集成电路内置音频总线,是Philips公司为数字音频设备之间的音频数据传输而制定的一种总线标准

1<. 总体传输时序 
这里写图片描述

2<. 不同模式下的DSP同I2S设备 
这里写图片描述

3<. 应用领域 
WM8976 / UDA1341TS等

4<. DMA细节

1<. 引脚定义

(1) 
(2) 
(3)

2<. 特点 
DMA方式在数据传送过程中,没有保存现场、恢复现场之类的工作。

1<. 大概流程图 
这里写图片描述

2<. 三种传输方式

  1. 单元传送方式(单字节传送方式)
  2. 块传送方式(连续传送方式)
  3. on-the-fly传送方式(请求传送方式)

3<. 应用领域 
主存和外设之间

5<. FSMC细节

1<. 引脚定义 
>

2<. 特点

1<.

2<.

3<. 应用领域

6<. USB细节

1<. 引脚定义

(1)红色-USB电源:标有-VCC、Power、5V、5VSB字样 
(2)绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+ 
(3)白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT- 
(3)黑色-地线:GND、Ground

2<. 特点

1<. 多种规范版本:USB1.1 / USB2.0 / USB3.0 / USB3.1 / USB OTG

2<. 多种接口版本:A型公口 / B型5Pin / B型4Pin / 4Pin / B型8Pin / 2×4 / Micro USB 
这里写图片描述

3<. Linux内核里与之相关的结构体

struct usb_device 
struct usb_device_descriptor 
struct usb_host_config 
struct usb_config_descriptor 
struct usb_interface_assoc_descriptor 
struct usb_interface_descriptor

3<. 应用领域 
emmmm

1<. 低速 IC,传输速率1.5MBit/S 
EM78M612: 16PIN,18PIN,20PIN,24PIN,112 BYTE RAM,2K ROM带有A/D,EEPROM,PWM功能,有EP0和EP1两个端点。 
EM78M611: 20PIN,24PIN,40PIN,44PIN(QFP),144BYTE RAM,6K ROM,A/D,EEPROM,PWM功能,有EP0,EP1,EP2三个端点。

2<. 全速 IC:传输速率12MBit/S 
EM78M680:20PIN,24PIN,40PIN,44PIN(QFP),271 BYTE RAM,6K ROM,A/D,EEPROM,PWM功能,有5个端点。 
EM77F900: 100PIN;1.3K RAM,16K FLASH,48MHz (1 clocks/cycle);带A/D,PWM,SPI,USB HUB,BB等功能,有4个端点. 
USB控制芯片:CY7C68013,CH375,CP2102,TL16C750等

3<. 高速IC:传输速度480Mbit/s 
USB控制芯片:FT2232H,cy7c68013等

7<. CAN细节

1<. 引脚定义

相关传送门

2<. 特点 
控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898)。

1<. 每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性

2<.

3<. 应用领域 
汽车控制和嵌入式局域网通信领域。

8<. ADSL细节

1<. 详细解释

相关传送门

2<. DSL家族 
定义: xDSL(数字用户线路,DigitalSubscriberLine)是以铜质电话线为传输介质的传输技术组合

HDSL / SDSL :

属于对称的T1/E1(1.544Mbps/2.048Mbps)传输. 其中HDSL的有效传输距离为3-4公里,且需要两至四对铜质双绞电话线;SDSL最大有效传输距离为3公里,只需一对铜线。

VDSL / ADSL / RADSL

属于非对称式传输.

3<. 应用领域 
通过一条电话线,以比普通MODEM快一百倍,浏览因特网,通过网络学习、娱乐、购物,享受到先进的数据服务如视频会议、视频点播、网上音乐、网上电视、网上MTV的乐趣,已经成为现实。


工具实用类:

1<. GitHub 相关传送门

2<. EDA 工具之 Quartus


基本电路知识类:

1<. 整流电路 
桥式整流电路:常用来将交流电转变为直流电. 
这里写图片描述

2<. 重要参数

2<. 功放

1<. 应用范围 
2<. 常用的电路结构 
3<. 重要参数

3<. 一些题目

1<. 求下列电路的Rab电阻 
面试的小题目 
2<. 功放


计算机语言类:

1<. PID算法

1<. P:比例,I:微分,D:积分 
2<. 详细参数说明

比例调节作用:按比例反应系统的偏差 
系统一旦出现了偏差,比例调节立即产生调节用作于减少偏差。 
比例作用大,可以加快调节,减少误差, 
影响:过大的比例调节,使系统的稳定性下降,甚至造成系统的不稳定。

积分调节作用:使系统消除稳态误差,提高无差度 
存差即动,无差即止,积分调节输出一常值。 
积分作用的强弱取决与积分时间常数Ti 小强大弱, 
影响:加入积分调节可使系统稳定性下降,动态响应变慢。 
组合:PI调节器或PID调节器。

微分调节作用:反映系统偏差信号的变化率 
超前控制作用:偏差未成形就已消除,改善系统的动态性能。 
特点:具有预见性,当输入没有变化时,微分作用输出为零。微分作用不能单独使用。 
影响:微分作用对噪声干扰有放大作用。 
组合: PD控制器或PID控制器。

2<. Linux内存分配机制 
http://blog.csdn.net/qq_33443989/article/details/77073789 
3<. memXXX 家族

4<. va_list如何实现可变长参数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ysh1042436059/article/details/86444734

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf