随笔分类 -  嵌入式100题

嵌入式100题,题目为网上搜索,答案来源为个人总结以及网上搜索。主要为了总结自己的知识点,以及增加自己对知识点的掌握。
摘要:一个程序从开始运行到结束的完整过程(四个过程) 1、编译预处理:处理伪指令 1> 头文件包含 2> 宏定义 3> 条件编译 #if #endif gcc -E xxx.c -o xxx.i 2、编译:把预处理之后的文件进行语法分析,生成汇编代码 gcc -S xx.i -o xx.s 3、汇编:将汇 阅读全文
posted @ 2021-02-26 17:11 角色人生 阅读(1057) 评论(0) 推荐(0)
摘要:大小端的区别以及各自的优点,哪种时候用 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据的低位保存在内存的低地址中 阅读全文
posted @ 2021-02-26 17:09 角色人生 阅读(1160) 评论(0) 推荐(0)
摘要:linux下检查内存状态的命令 通过“top”命令可以时时查看内存使用状态。 通过“free -m”命令查看内存使用情况。 通过“cat /proc/meminfo”命令查看内存的更详细的状态。 阅读全文
posted @ 2021-02-26 14:23 角色人生 阅读(495) 评论(0) 推荐(0)
摘要:为什么自旋锁不能睡眠 而在拥有信号量时就可以? 自旋锁自旋锁禁止处理器抢占;而信号量不禁止处理器抢占。 基于这个原因,如果自旋锁在锁住以后进入睡眠,由于不能进行处理器抢占,其他系统进程将都不能获得CPU而运行,因此不能唤醒睡眠的自旋锁,因此系统将不响应任何操作(除了中断或多核的情况,下面会讨论)。而 阅读全文
posted @ 2021-02-26 14:22 角色人生 阅读(918) 评论(0) 推荐(0)
摘要:linux内核同步方式总结 每CPU变量: 正如其名,每cpu变量即为每个CPU都有自己的变量,各个CPU仅访问自己的每CPU变量,可以想象每CPU变量一般的数据结构是一个数组。 type name[CPU_COUNT]; 因此每CPU变量解决的是多CPU之间可能发生的竞争条件,而因内核抢占而产生了 阅读全文
posted @ 2021-02-26 14:20 角色人生 阅读(476) 评论(0) 推荐(0)
摘要:Bootloader的作用、为什么需要Bootloader? 1、Bootloader的作用: 简单的说,BootLoader就是在操作系统运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统做好准备。对于Bootloader 阅读全文
posted @ 2021-02-26 14:17 角色人生 阅读(1114) 评论(0) 推荐(0)
摘要:linux的内核是由bootloader装载到内存中的? linux的内核的确是由bootloader装载bai到内du存中的。linux的bootloader有2个部分zhi组成:bootstrap和uboot。所以更准确点的说法是dao:linux的内核是由uboot装载到内存中的。内核文件本身 阅读全文
posted @ 2021-02-26 14:16 角色人生 阅读(533) 评论(0) 推荐(0)
摘要:Bootloader多数有两个阶段的启动过程 bootloader一般都是分为两个阶段的,第一个阶段使用汇编来实现,它完成一些依赖于CPU体系结构的初始化,并调用第二阶段的代码;第二阶段则通常使用C语言来实现,这样可以实现更复杂的功能,而且代码会有更好的可读性和移植性。 两个阶段如下: 一、第一阶段 阅读全文
posted @ 2021-02-26 14:15 角色人生 阅读(763) 评论(0) 推荐(0)
摘要:bootloader内核 根文件的关系 一般来说,为了使开发板成功运行linux系统,我们需要完成以下三个方面的开发工作: bootloader(启动装载) kernel(内核) rootfs(根文件系统) bootloader: 对于bootloader,我们一般用u-boot来制作。 当开发板烧 阅读全文
posted @ 2021-02-26 14:14 角色人生 阅读(654) 评论(0) 推荐(0)
摘要:内核态,用户态的区别 就像世界上的人并不平等一样,并不是所有的程序都是平等的。世界上有的人占有资源多,有的人占有资源少,有的人来了,别人得让出资源,有的人则专门为别人让出资源。程序也是这样,有的程序可以访问计算机的任何资源,有的程序则只能访问非常受限的少量资源。而操作系统作为计算机的管理者,自然不能 阅读全文
posted @ 2021-02-26 14:12 角色人生 阅读(506) 评论(0) 推荐(0)
摘要:系统调用的作用 1、 操作系统作为用户和硬件的接口,向上提供一些简单易用的服务,主要包括命令接口和程序接口,其中程序接口由一组系统调用组成。 2、用户接口: 命令接口: 联机命令接口(用户说一句系统做一句);脱机命令接口(用户说一堆系统做一堆)。 程序接口: 由一组系统调用组成,通过程序间接使用。 阅读全文
posted @ 2021-02-26 14:11 角色人生 阅读(823) 评论(0) 推荐(0)
摘要:系统调用read()/write(),内核具体做了哪些事情 用户空间read()-->内核空间sys_read()-->scull_fops.read-->scull_read(); 该过程分为两个部分:用户空间的处理和核心空间的处理。在用户空间中通过 0x80 中断的方式将控制权交给内核处理,内核 阅读全文
posted @ 2021-02-26 14:09 角色人生 阅读(667) 评论(0) 推荐(0)
摘要:用户空间与内核通信方式有哪些? 系统调用,提供特定的用户空间与内核空间的信息传递。 信号,内核空间出现一些异常时候会发送信号给进程,如SIGSEGV、SIGILL、SIGPIPE等。 /proc,proc可以读取内核空间的信息并且设置部分属性的值,需要循环检测。 文件,可以通过指定文件的读写操作来实 阅读全文
posted @ 2021-02-26 14:06 角色人生 阅读(598) 评论(0) 推荐(0)
摘要:Linux内核的组成 一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络接口。 1、内存管理: 内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。 Linux内存管理支持虚拟内存,而多余出的这部分 阅读全文
posted @ 2021-02-26 14:04 角色人生 阅读(518) 评论(0) 推荐(0)
摘要:STL底层数据结构实现 vector底层数据结构为数组,支持快速随机访问。 list底层数据结构为双向链表,支持快速增删。 deque底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问deque是一个双端队列(double-ended 阅读全文
posted @ 2021-02-26 14:02 角色人生 阅读(407) 评论(0) 推荐(0)
摘要:vector和deque的比较 vector的底层实现时数组;而deque的底层实现时“中央控制区”和缓冲的结构。 vector的内存空间时连续的;而deque的内存空间是一种假的连续,实际上是不连续的。 vecotr的支持数组的随机访问;而deque虽然也是支持使用[]的运算符,但实际上是需要通过 阅读全文
posted @ 2021-02-26 14:00 角色人生 阅读(397) 评论(0) 推荐(0)
摘要:vector list异同 Vector: 连续存储的容器,动态数组,在堆上分配空间。 底层实现:数组。 两倍容量增长:vector 增加(插入)新元素时,如果未超过当时的容量,则还有剩余空间,那么直接添加到最后(插入指定位置),然后调整迭代器。如果没有剩余空间了,则会重新配置原有元素个数的两倍空间 阅读全文
posted @ 2021-02-26 13:58 角色人生 阅读(412) 评论(0) 推荐(0)
摘要:快排的partition函数与归并的Merge函数 代码: 三个函数: 基准插入函数:int getStandard(int array[],int low,int high) (返回基准位置下标) 递归排序函数:void quickSort(int array[],int low,int high 阅读全文
posted @ 2021-02-26 13:56 角色人生 阅读(437) 评论(0) 推荐(0)
摘要:快速排序 快速排序:快速排序有两个方向,左边的i下标一直往右走,当a[i] <= a[center_index],其中center_index是中枢元素的数组下标,一般取为数组第0个元素。而右边的j下标一直往左走,当a[j] > a[center_index]。如果i和j都走不动了,i <= j,交 阅读全文
posted @ 2021-02-26 13:55 角色人生 阅读(471) 评论(0) 推荐(0)
摘要:归并排序 归并排序:归并排序是把序列递归地分成短序列,递归出口是短序列只有1个元素(认为直接有序)或者2个序列(1次比较和交换),然后把各个有序的段序列合并成一个有序的长序列,不断合并直到原序列全部排好序。可以发现,在1个或2个元素时,1个元素不会交换,2个元素如果大小相等也没有人故意交换,这不会破 阅读全文
posted @ 2021-02-26 13:53 角色人生 阅读(451) 评论(0) 推荐(0)