无题
缩进:
使用 8 个空格的制表符进行缩进。函数参数和长表达式在续行时也使用 8 个空格的缩进。行长度:
每行最大长度为 80 个字符。大括号:
大括号前换行,符合 Linux 风格。空格:
赋值操作符前后留空格。控制语句(如 if, for, while)前留空格。行尾注释前留两个空格。其他:
不允许短的 if 语句、循环语句、函数和代码块写在一行。字符串字面量允许换行。指针对齐方式为右对齐。以下是调整后的 .clang-format 文件,确保更符合 Linux 内核的代码规范:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162---BasedOnStyle: LLVMIndentWidth: 8 # 通用缩进宽度为8个空格UseTab: Never # 不使用制表符,只使用空格TabWidth: 8 # 制表符宽度为8个空格ColumnLim ...
操作系统
1、操作系统概述操作系统概念:操作系统是系统资源的管理者,是管理计算机硬件与软件资源的计算机程序。提供给用户和其他软件方便易用的接口和环境。最接近硬件的软件。
例子用qq和朋友视频聊天step 1、在文件夹中找到qq安装位置(如d:/qq) — 逐层打开文健夹stpe 2、双击qq.exe — 需要把程序相关数据放入内存step 3、qq正常运行 —- 对应进程被处理机(cpu)处理step 4、qq聊天 — 需要将摄像头分配给进程
补充:执行一个程序前,需要将该程序放入到内存中,才能被cpu处理
作为系统资源的管理者,主要提供以下功能: 1 、处理机管理 2、存储器管理 3、文健管理 4、设备管理作为管理者向用户提供的接口:1、GUI图形管理界面 2、交互式命令接口 3、脱机批处理接口作为管理者向应用软件提供接口: 1、系统调用接口
操作系统作为最接近硬件的层次对硬件机器进行了扩展:将cpu、硬盘、磁盘、内存等硬件资源进行协调配合。实现了很多复杂的功能。
2、操作系统的特征
1、并发微观上交替执行,宏观上同时运行。与并行区别是两个或者多个时间同一时间发生。容易混淆。 ...
计算机网络
总览计算机的硬件组成结构(1、早期冯诺依曼计算机、2、现代计算机的结构)
1、计算机网络1.1、计算机网络概述计算机网络 :由若干结点和连接这些结点的链路组成互联网:isp:互联网服务提供商干的就是全世界的网络都连接起来,公众只需交网费就可以接入这个网络,必须使用tcp/ip。Internet互连网:由若干网络和连接这些网络的链路组成,可以使用其他协议。internet
集线器(hub):允许将多台计算机连接起来,实现数据共享。但是,集线器存在数据传输效率低、容易发生数据碰撞的问题。(工作物理层)多台设备同时发送时出现数据碰撞,导致数据丢失。
交换机:将数据包转发到目的主机,实现数据传输的高效。组建计算机网络。( 数据链路层)构建大的计算机网络就可以使用多台交换机。
路由器:可以将两个或者多个计算机网络连接起来,实现数据传输的高效,也称之为互连网。( 网络层)
这里的路由器和家用路由器有区别:家用路由器 = 路由器+交换机+其他功能
2、计算机网络组成了解就可以:
3、电路交换,报文交换,分组交换电路交换:通信主端端之间建立电路,数据传输。通信时间内,通讯线路被占 ...
pcm音频格式详解
1、pcm是什么?pcm是脉冲编码调制,是数字音频的存储格式。
2、pcm的组成pcm音频文件由两部分组成:
头部信息
音频数据
2-1、头部信息头部信息中包含了音频文件的采样率、声道数等信息,用于描述音频文件的属性。
2-2、音频数据音频数据是实际的波形数据,以二进制形式存储在文件中。
3、pcm的采样率采样率是指每秒从录音设备或声音文件里采样的次数,它描述了音频文件的长度。
采样率越高,音频文件的长度就越长。采样率越低,音频文件的长度就越短。
常见的采样率有:
8kHz:电话
16kHz:CD
22.05kHz:低音炮
44.1kHz:CD
48kHz:DVD
采样率越高,音质就越好。采样率越低,音质就越差。
采样率越高,文件大小就越大。采样率越低,文件大小就越小。
用高于采样率的播放器播放高于采样率的音频文件,会降低音质。声音比较尖锐。用低于采样率的播放器播放低于采样率的音频文件,会降低音质。声音比较模糊、低沉。
4、pcm的采样位数采样位数是指每个采样点占用的二进制位数。常见的采样位数有:
8位:表示每个采样点占用的二进制位数为8位
16位:表示每个采样点占用的二进制 ...
数据结构与算法
数据的物理结构数据存储在存储器当中,而存储器相当于内存而言,而光盘,软盘,硬盘等外部存储器的数据组织通常用文件结构来描述。
数据存储的形式有两种:顺序式和链式。、
算法的五个特征:输入,输出,有穷性,确定性和可行性。
特征
解释
输入
0个或者多个
输出
一个或者多个输出
有穷性
不会无限循环
确定性
确定性不会有其他含义
可行性
每一步都是可行的
算法的设计要求1、没有语法错误。2、算法程序对于合法输入能够产生满足要求的输出。3、算法程序对于非法输入能产生满足规格的说明。4、算法对于故意刁难的测试输入都有满足要求的输出结果。
可读性 需要便于后续的修改阅读
健壮性 输入不合理时,算法能够有相应的处理,而不是产生异常、崩溃或者莫名奇妙的结果。 时间效率高和存储量
1、时间复杂度关键在于认识: 时间=执行次数T(n)=O(f(n));这样就可以用O来记时间复杂度一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最优算法。常见的时间复杂度O(1),O(n),O(n^2),O(log(n)),O(nl ...
计算机组成原理
1、计算机发展计算机系统 = 硬件 + 软件
软件分为:
系统软件: 用来管理整个计算机系统的软件(操作系统、标准程序库、数据库管理系统、网络软件(如tcp/ip)、语言处理程序、服务程序(如:调试程序)等)
应用软件: 按任务需要编制的各种程序
早期的计算机是使用手动接线来控制的计算,冯·诺依曼提出了 “存储程序”的概念,即指令以二进制代码的形式事先输入计算机的主存储器中,计算机执行指令的过程就是从主存储器中取出指令并执行的过程。
冯·诺依曼计算机的结构特点1、计算机由五大部件组成。2、指令和数据以同等地位存于主存储器中,可按地址寻址。3、指令和数据用二进制表示。4、指令由操作码和地址码组成。5、存储程序。6、以运算器为中心。(输入/输出设备与存储器之间的数据通过运算器进行传输)
上面经过优化,将存储器放到中心,得到现代的计算机结构。
2、各个硬件的工作原理计算机中,cpu内部由主存储器,控制器,运算器构成
主存储器:由存储体,MAR(Memory Address Register)(存储地址寄存器)和MDR(Memory Data R ...
nfs挂载文件出错
在uboot中设置
12bootargs,setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.8.213:/home/ygc/Desktop/driver/nfs/rootfs,proto=tcp rw ip=192.168.8.50:192.168.8.213:192.168.8.1:255.255.255.0::eth0:off'
但是引导后出现nfs挂载网络根文件系统是出现错误。
1234Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)random: nonblocking pool is initialized
经过各种试验发现是nfs服务的问题。
原因是:ubuntu18.04只支持nfs 3 ...
常见问题汇总
1、挂在busybox的时候出现内核崩溃
解决办法, 原因为没有使用交叉编译器进行编译,在Makefile中定义一下
123CROSS_COMPILE ?= arm-linux-gnueabihf-ARCH ?= arm
如果不定义,需要在编译的时候加上CROSS那一串。
2、popen函数引发僵尸进程目前没有好的办法,将调用频率降低,或者使用fork函数。
错误总结
1、隐式函数错误一般原因写驱动的时候经常遇到报隐式函数的报错,很麻烦,查找了很多原因,一般是函数拼写错误。
2、system命令导致系统问题system会导致系统出现严重的性能消耗,如果在程序中调用,需要单独开启一个线程进行使用,否则会生不可知错误。
3、结构体易错点3-1、第一个易错点采用memset函数初始化结构体,全部成员变量的值清零。
12memset(&queen,0,sizeof(struct st_girl));
注意事项,如果把一个结构体的地址传给子函数,子函数用一个结构体指针(如struct st_girl *pst)来存放传入的结构体的地址,那么,在子函数中只能用以下方法来初始化结构体:
1memset(pst,0,sizeof(struct st_girl));
不能用以下方法来初始化结构体:
1memset(pst,0,sizeof(pst));
因为子函数中用sizeof(pst),得到的不是结构体占用内存的字节数,而是结构体指针变量占用内存的字节数(8字节)
3-2、第二个易错 ...
ARM汇编--初级
1、GNU汇编汇编主要依赖编译器。这里主要学习GNU汇编。
GNU汇编使用与所有架构,并不是ARM独享。
1.1、GNU汇编命令1label: