数据结构与算法
数据的物理结构数据存储在存储器当中,而存储器相当于内存而言,而光盘,软盘,硬盘等外部存储器的数据组织通常用文件结构来描述。
数据存储的形式有两种:顺序式和链式。、
算法的五个特征:输入,输出,有穷性,确定性和可行性。
特征
解释
输入
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、元器件1-1、施密特触发器:
迟滞特性:施密特触发器有两个不同的阈值电压,一个用于从低电平转换到高电平(称为上阈值电压),另一个用于从高电平转换到低电平(称为下阈值电压)。这种迟滞特性使得施密特触发器对输入信号的噪声不敏感。
输入输出关系:当输入电压超过上阈值电压时,输出会跳变到高电平;当输入电压低于下阈值电压时,输出会跳变到低电平。
应用广泛:施密特触发器常用于信号整形、脉冲产生和噪声抑制等场合。施密特触发器在数字电路和模拟电路中都有广泛应用,特别是在需要对不稳定的输入信号进行处理的场景中。如将输入信号进行整形、转化为方波。
1-2、sd卡sd卡是一种广泛使用的存储设备,它基于闪存技术。也就是nand闪存。主要外形有两种,一种是micro sd卡,也就是tf卡,一种是sd卡。下面是两者的区别:卡上标签参数解读:c:写速度等级,u:读速度等级,v:视频的读写速度sd卡和micro sd卡的区别:就是多了一根电源线,sd卡三根电源线,micro sd有两根。
1-2-1、总线类型扩展–扇区和簇的关系定义
扇区(Sector)扇区是磁盘(包括 SD 卡等存储设备)物理结构中的最小可 ...
计算机组成原理
1、计算机发展计算机系统 = 硬件 + 软件
软件分为:
系统软件: 用来管理整个计算机系统的软件(操作系统、标准程序库、数据库管理系统、网络软件(如tcp/ip)、语言处理程序、服务程序(如:调试程序)等)
应用软件: 按任务需要编制的各种程序
早期的计算机是使用手动接线来控制的计算,冯·诺依曼提出了 “存储程序”的概念,即指令以二进制代码的形式事先输入计算机的主存储器中,计算机执行指令的过程就是从主存储器中取出指令并执行的过程。
冯·诺依曼计算机的结构特点1、计算机由五大部件组成。2、指令和数据以同等地位存于主存储器中,可按地址寻址。3、指令和数据用二进制表示。4、指令由操作码和地址码组成。5、存储程序。6、以运算器为中心。(输入/输出设备与存储器之间的数据通过运算器进行传输)
上面经过优化,将存储器放到中心,得到现代的计算机结构。
2、各个硬件的工作原理计算机中,cpu内部由主存储器,控制器,运算器构成
主存储器:由存储体,MAR(Memory Address Register)(存储地址寄存器)和MDR(Memory Data R ...
计算机网络
总览计算机的硬件组成结构(1、早期冯诺依曼计算机、2、现代计算机的结构)
1、计算机网络1.1、计算机网络概述计算机网络 :由若干结点和连接这些结点的链路组成互联网:isp:互联网服务提供商干的就是全世界的网络都连接起来,公众只需交网费就可以接入这个网络,必须使用tcp/ip。Internet互连网:由若干网络和连接这些网络的链路组成,可以使用其他协议。internet
集线器(hub):允许将多台计算机连接起来,实现数据共享。但是,集线器存在数据传输效率低、容易发生数据碰撞的问题。(工作物理层)多台设备同时发送时出现数据碰撞,导致数据丢失。
交换机:将数据包转发到目的主机,实现数据传输的高效。组建计算机网络。( 数据链路层)构建大的计算机网络就可以使用多台交换机。
路由器:可以将两个或者多个计算机网络连接起来,实现数据传输的高效,也称之为互连网。( 网络层)
这里的路由器和家用路由器有区别:家用路由器 = 路由器+交换机+其他功能
2、计算机网络组成了解就可以:
3、电路交换,报文交换,分组交换电路交换:通信主端端之间建立电路,数据传输。通信时间内,通讯线路被占 ...
ubuntu
文件目录linux目录从/开始/bin 大部分系统的命令/boot 引导文件,启动相关的目录/dev 设备文件目录,Linux下一切设备皆文件/etc:系统配置文件/home 用户目录,一个用户对应一个文件夹/lib 库文件/lib64 64位库文件/libx32 32位库文件/lost+found 文件系统错误恢复文件/media 媒体文件目录/mnt 挂载目录/opt 第三方软件安装目录/proc 虚拟文件系统,存放进程和内核信息/root 超级用户目录/run 运行目录/sbin 超级用户可执行文件/srv 服务器数据目录/sys 虚拟文件系统,存放硬件信息/tmp 临时文件目录/usr 用户程序目录/var 变量文件目录
1 、ubuntu 24.041-1、输入完密码或者安装完系统后黑屏两步:vmware关闭3D加速、配置grub文件
123456vim /e ...
应用代码库
调试篇1、log彩色打印命令
我们常用的printf函数输出来的颜色是终端的配色。
如果想要输出不同的颜色进行区分,
就需要用到printf的控制命令:\033[m。
控制命令以\033[开头,
以m结尾,
而中间则是属性码,
属性代码之间使用;分隔,
如\033[1;34;42m。而属性代码的含义见下面的表格
示例:
12345678910111213141516171819202122232425262728293031323334353637383940414243#include <stdio.h>void printf_red(const char *s){ printf("\033[0m\033[1;31m%s\033[0m", s);}void printf_green(const char *s){ printf("\033[0m\033[1;32m%s\033[0m", s);}void printf_yellow(const char *s){ ...
技巧类
linux命令类和shell技巧类1、dd命令可以拷贝一切,内存,磁盘,当设备出现问题,可以通过dd命令将内存数据拷贝出,无敌。
2、软连接自己想要的软件直接到官网下载,或者交叉编译器可以直接使用此方法 。
1ln -s 【目标】 【链接到目标地址】
都是绝对地址。
另一种是设置环境变量的方式,设置的地址在/etc/profile
类似:export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
/usr/local/bin/放置了一些软件的启动地址。~/bashrc放置的是用户的一些个性化设置,也可以将环境变量放到里面。
bashrc的作用:1、可以在利用命名函数alias定制需要的指令;2、设定环境路径;3、提示符设置。
3、vim中w ! sudo tee %%为当前文件,上面的作用主要是缺少sudo时,可以直接采用上面命令保存vim,避免尴尬。
4、grep -nR可以查看引用的字符串5、find ./ ...
arm-A7中断
有时候我们很多文件需要链接到指定的区域,或者叫做段里面,比如在 Linux 里面初始化函数就会放到 init 段里面。因此我们需要能够自定义一些段,这些段的起始地址我们可以自由指定,同样的我们也可以指定一个文件或者函数应该存放到哪个段里面去。
要完成这个功能我们就需要使用到链接脚本,看名字就知道链接脚本主要用于链接的,用于描述文件应该如何被链接在一起形成最终的可执行文件。其主要目的是描述输入文件中的段如何被映射到输出文件中,并且控制输出文件中的内存排布。比如我们编译生成的文件一般都包含 text 段、 data 段等等。
链接脚本的语法很简单,就是编写一系列的命令,这些命令组成了链接脚本,每个命令是一个带有参数的关键字或者一个对符号的赋值,可以使用分号分隔命令。像文件名之类的字符串可以直接键入,也可以使用通配符“*”。最简单的链接脚本可以只包含一个命令“SECTIONS”,我们可以在这一个“SECTIONS”里面来描述输出文件的内存布局。我们一般编译出来的代码都包含在 text、 data、 bss 和 rodata 这四个段内,假设现在的代码要被链接到 0X10000000 这个地址 ...
uboot详解--初级
从事嵌入式音视频AI开发中,需要多次使用uboot这个bootleader,本文用来记述我工作学习中所学到的知识点和心得本文主要是为了能够运行起uboot,裁减后面有时间再学习。首先第一步,删除uboot目录下没有用的到的配置文件,太多了,不需要,架构和板子支持的没法动,删除就会出错。
链接脚本详解• 拿到半导体厂商给的uboot,进行第一次编译,编译后得到一个链接文件。从链接文件开始分析,链接的后缀为.lds在使用imx6ull进行编译时,要把程序的起点链接到0x878000000
1arm-linux-gnueabihf-ld -Ttext 0X87800000 -o ledc.elf $^
这样所有文件都会链接到这个地址区。
分析得到uboot程序启动入口为_start。
123OUTPUT_FORMAT( ("elf32-littlearm", , "elf32-littlearm", , "elf32-littlearm") )OUTPUT_ARCH(arm)ENTRY(_start)
•上面代码 ...
驱动编写(linux)
前置123456789101112131415161718192021222324252627282930查看设备节点驱动注册成功生成设备节点ls /dev/ 查看加载的设备查看设备号主设备号 cat /proc/devices 包括字符设备和块设备MISC设备驱动次设备号cat /proc/misc主次设备号等信息ls /dev/dev_name -al查看类class_create函数创建成功后,使用命令ls /sys/class查看查看设备device_create函数创建成功后,使用命令ls /dev/查看查看已加载的模块lsmod设备树查看设备树节点ls /proc/device-tree查看设备树属性在设备树相应目录下,cat [Properties]查看内核打印信息dmesg查看设备树节点ls /proc/device-tree
https://zhuanlan.zhihu.com/p/425420889 文章记录
1、字符设备1-1、加载驱动模块12比如insmod drv.ko
如果drv.ko设备存在了依赖关系,那么就必须先加载所依赖的模块, ...