- 博客(80)
- 资源 (7)
- 收藏
- 关注
原创 数据结构---树
文章目录树树定义树分类树的存储操作树树是一种非线性结构树定义专业定义:有且只有一个称为根的节点有若干个互不相交的子树,这些子树本身也是一棵树通俗的定义:树是由节点和边组成每个节点只有一个父节点但可以有多个子节点但有一个节点例外,该节点没有父节点,此节点称为根节点专业术语节点 父节点 子节点子孙 堂兄弟深度:树中节点的最大层次(从根节点到最底层...
2019-06-23 10:45:41
333
原创 数据结构---递归
文章目录递归递归对于编程的重要性递归的定义函数调用的详解递归满足的三个条件循环和递归的比较用递归解决汉诺塔问题递归递归对于编程的重要性递归对你的编码能力是个质的飞跃,如果你想成为一个很厉害的程序员,数据结构是必须要掌握的,计算机特别适合用递归的思想来解决问题,但是我们人类用递归的思想来考虑问题就会感到十分困扰,这也是很多学过递归的人一直都搞不明白的地方!递归的思想是软件思想的基本思想之一,...
2019-06-19 21:45:04
356
原创 数据结构---队列(c语言)
文章目录队列队列定义分类循环队列的讲解循环队列算法的实现(c语言)队列队列定义一种可是实现“先进先出”的存储结构分类链式队列:用链表实现静态队列:用数组实现静态队列通常都必须是循环队列,为了减少内存浪费循环队列的讲解静态队列为什么是循环队列循环队列需要几个参数来确定两个参数:两个参数不同场合有不同的含义,类似如下:(1)front:指向第一个元素(2) rea...
2019-06-16 15:21:12
644
原创 数据结构---栈(c语言)
文章目录栈栈定义栈的分类栈的算法(c语言实现)栈的应用栈栈定义一种可以实现“先进后出” 的存储结构,栈类似于箱子栈的分类静态栈 (类似于用数组实现)动态栈 (类似于用链表实现)栈的算法(c语言实现)#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef enum ...
2019-06-16 11:24:00
262
原创 数据结构---离散存储(链表)
文章目录离散存储(链表)链表定义:分类算法:链表的优缺点:单链表实现代码(c语言实现)离散存储(链表)链表定义:(1)n 个节点离散分配;(2)彼此通过指针相连;(3)每个节点只有一个前驱节点,每个节点只有一个后续节点;(4)首节点没有前驱节点,尾节点没有后续节点。专业术语:首节点:第一个有效节点尾节点:最后一个有效节点头节点:头结点的数据类型和首节点类型一样第一个有效节...
2019-06-10 21:49:55
651
转载 typedef的用法
文章目录tyoedef 的用法typedef 的四种用法:小心使用 typedef 带来的陷阱tyoedef 的用法C语言允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数...
2019-06-10 14:32:21
622
原创 数据结构---连续存储数组的算法
文章目录数据结构之模块一:线性结构数据结构之模块一:线性结构线性结构:把所有节点用一根直线穿起来连续存储(数组)(1)什么叫数组:元素类型相同,大小相等(2)数组的优缺点:优点:数组定义简单,而且访问很方便缺点:数组中所有元素类型都必须相同数组大小必须定义时给出,而且大多数情况下,数组空间的大小一旦确定后就不能更改数组的空间必须是连续的,这就造成数组在内存中分配空间时必须找...
2019-06-08 17:00:20
312
原创 算法的时间复杂度和空间复杂度
文章目录算法时间复杂度推导大O阶方法函数调用的时间复杂度分析常见的时间复杂度最坏情况与平均情况算法空间复杂度算法时间复杂度算法时间复杂度定义:在进行算法分析时,语句总的执行次数T(n)是关于问题规模 n 的函数,进而分析T(n)随 n 的变化情况并确定T(n) 的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模 n 的增大,算法执行时间的增长率...
2019-06-04 16:50:19
432
原创 嵌入式之旅之bootloader介绍
文章目录BootLoader概念为什么需要进行 bootloader 移植?BootLoader 的启动流程内存分布一个嵌入式系统从软件角度来看分为三个层次:引导加载程序包括固化在固件(firmware)中的boot程序(可选),和BootLoader两大部分。Linux内核特定于嵌入式平台的定制内核文件系统包括了系统命令和应用程序。BootLoader概念BootLoade...
2019-05-16 10:36:14
477
原创 Linux内核配置编译初探
文章目录内核配置问题怎么配置内核具体实现三种image关系内核配置问题在进行 linux 内核配置时,我们需要思考几个问题:(1)配置哪些目录需要编译(2)配置哪些文件需要编译(3)编译时,到底文件时哪个目录比如 <mach/hardware.h>解决方法:Makefile make主目录 Makefilearch下的Makefile相关联通过 in...
2019-05-13 21:37:28
391
原创 linux内核之并发与竞态详述
文章目录竞 态信号量和互斥体Linux信号量的实现信号量初始化自旋锁自旋锁的API自旋锁初始化使用信号量与自旋锁的时机锁的顺序规则竞 态为了详细叙述竞态的概念,我们结合一段 write函数中的片段分配内存的代码来解释:if(!dptr->data[s_pos]){ dptr->data[s_pos] = kmalloc(quantum,GFP_KERNEL); if(!dp...
2019-05-12 15:09:31
413
原创 Linux安装tengine(centos)
文章目录Linux安装tengine步骤Linux安装tengine步骤首先linux需要安装 tengine 依赖的包(通过 yum 安装)[root@localhost ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel解压 tengine 包[root@localhost ~]# tar -zxvf ten...
2019-05-08 21:06:15
713
原创 linux设备驱动之块设备驱动程序的设计
文章目录块设备块设备体系结构体系结构层次块设备驱动程序设计块设备描述设备注册设备操作I/O请求请求队列块设备完整驱动程序块设备驱动测试数据访问流程BIO__make_request块设备块设备将数据存储在固定的块中,每个块的大小通常在512字节到32768字节之间。磁盘、SD卡都是常见的块设备。块设备与字符设备的区别:在与读写数据的基本单元不同。块设备读写数据的基本单元为块,例如磁盘通常...
2019-05-07 21:21:15
1189
原创 linux驱动之终端控制体系与串口驱动程序设计
文章目录数据通信异步通信传送方式终端概述控制台伪终端终端体系终端体系---串口数据流串口驱动描述串口驱动注册UART端口描述操作串口添加端口串口驱动程序设计在介绍终端控制体系之前,要先普及 一下数据通信的基本方式。数据通信数据通信的基本方式可分为并行通信与串行通信两种:并行通信:利用多条数据线将数据的各位同时传送。它的特点是传输速度快,适用于短距离通信。串行通信:利用一条数据线将数据一...
2019-05-07 10:59:14
226
原创 linux驱动程序之PCI驱动程序设计
文章目录PCI驱动描述PCI驱动注册使能PCI设备获取PCI配置寄存器基地址中断部分代码PCI驱动描述在linux内核中,PCI驱动使用 struct pic_driver 结构来描述:struct pci_driver{ /*以上还有很多成员*/ //id_table 中包含了PCI设备的相关信息 const struct pci_device_id *id_table; int...
2019-05-06 21:14:01
503
原创 linux设备驱动之PCI总线概述
文章目录总线概念PCI总线PCI总线体系结构PCI设备寻址PCI寻址配置寄存器总线概念总线是一种传输信号的信道;总线是连接一个或多个半导体的电气连线。总线由电气接口和编程接口组成,对于软件设计人员来说,重点关注编程接口。PCI总线PCI(Perpheral Component Interconnect)(外围设备互联),是在桌面及更大型的计算机上普遍使用的外设总线。PCI总线优点:在...
2019-05-06 16:04:06
1016
原创 linux输入子系统
文章目录输入子系统设备描述设备注册、注销驱动实现事件支持报告事件报告结束实例分析输入子系统为了实现按键、触摸屏、鼠标等输入型设备的驱动程序设计,linux推荐使用的方法是input输入子系统。输入型设备都可以利用input接口函数来实现设备驱动。体系结构输入子系统由驱动层,**输入子系统核心层(input core)和事件处理层(event handler)三部分组成。**一个输入事件...
2019-05-03 15:51:22
471
原创 linux网卡驱动之CS8900A网卡驱动程序
文章目录CS8900A芯片介绍以太网帧CS8900A寄存器代码分析CS8900A芯片介绍CS8900芯片是Cirrus Logic公司生产的一种局域网处理芯片,在嵌入式领域中使用非常常见。它的封装是100-pin TQFP,内部集成了在片RAM、10BASE-T收发滤波器,并且提供8位和16位两种接口,一般在单片机中,使用了CS8900的8位接口模式。该芯片突出特点:使用灵活其物理层接...
2019-05-03 14:23:20
550
原创 linux网络驱动之网卡驱动程序的设计
文章目录设备描述设备注册sk_bufferskb操作函数设备打开数据发送数据接收接收流程中断处理设备描述每个网络接口都由一个 net_device(位于 <linux/netdevice.h>头文件的的第840行) 结构描述,该结构可用于如下内核函数动态分配:*struct net_device *alloc_netdev (int sizeof_priv,const char...
2019-05-02 19:19:59
895
原创 linux网络体系结构
文章目录协议栈协议简介网络接口层网际层传输层应用层Linux网路子系统系统调用接口协议无关接口网络协议设备无关接口驱动程序协议栈linux优点之一在于它丰富而稳定的网络协议栈。其范围从协议无关层(例如通用socket层接口或设备层)到给中具体的网路协议实现。协议简介对于网络的理论介绍一般采用OSI(Open System Interconnection)模型,但是Linux中网络栈的介绍一...
2019-05-02 16:40:53
719
原创 USB驱动程序设计之三USB鼠标驱动程序设计
文章目录USB驱动程序简介USB驱动程序描述USB设备列表注册驱动Linux USB 描述符设备描述设备描述**配置描述:**接口描述接口设置接口描述符端点描述USB URBURB定义URB处理流程创建URB初始化URB提交URB处理URBUSB鼠标驱动程序分析设计USB驱动程序简介USB设备驱动程序(层次划分)USB设备驱动程序位于不同的内核子系统和USB主控制器之间,USB核心为USB...
2019-05-02 14:40:08
1164
原创 USB驱动程序之一(USB介绍、USB数据传输、USB设备枚举)
文章目录USB简介USB系统架构USB系统拓扑结构USB主控制器USB HUBUSB设备USB设备逻辑结构USB描述符设备描述符配置描述符接口描述符端点描述符USB数据传输控制传输中断传输等时传输批量传输USB设备枚举USB设备枚举八步USB简介一、USB定义USB(Universal Serial Bus),通用串行总线,是一种外部总线标准,用于通讯规范电脑与外部设备的连接和通讯。USB...
2019-04-29 20:51:05
1660
原创 linux设备驱动之mini6410按键驱动程序(普通版与输入子系统版)
文章目录mini6410硬件资源配置寄存器配置GPIO口按键驱动程序应用程序mini6410硬件资源按键驱动用到的是中断处理,中断处理的函数学习在上一篇博客中断处理中有,可以参考中断处理函数描述总共有 8 个用户测试用按键,它们均从 CPU 中断引脚直接引出,属于低电平触发,这些引脚也可以复用为 GPIO 和特殊功能口。硬件显示图如下:配置寄存器GPNCON为GPN的配置寄存器,...
2019-04-25 16:50:21
318
原创 linux设备驱动之中断处理
文章目录中断概念中断实现中断注册中断标志**共享中断**:中断处理程序释放中断中断概念为什么需要中断?外设的处理速度一般慢于CPUCPU不能一直等待外部事件,所以设备必须有一种方法来通知CPU它的工作进度,这种放法就是中断。中断实现在 linux 驱动程序中,为设备实现一个中断包含两个步骤:向内核注册中断实现中断处理函数中断注册request_irq 用于实现中断的注册...
2019-04-24 16:06:24
1813
原创 linux设备模型之platform驱动程序
文章目录platform总线platform驱动的设计流程平台设备描述平台设备资源平台驱动描述平台驱动注册platform代码展示platform总线platform 驱动与传统的设备驱动模型相比,优势在于 platform 机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性。platform驱动的设计流程platform_d...
2019-04-24 14:36:08
355
原创 linux设备模型之总线设备驱动模型
文章目录总线总线的描述总线的注册/删除总线方法总线属性实例:创建总线总线总线是处理器和设备之间的通道,在设备模型中,所有的设备都通过总线相连,甚至是内部虚拟的“platform”总线。在Linux设备模型中,总线由 bus_type 结构表示,定义在<linux/device.h>中。总线的描述总线的注册/删除总线的注册使用:bus_register(struct bu...
2019-04-23 16:46:08
419
原创 linux设备模型之kobject与kset
文章目录sysfs文件系统kobject在 kobject 和 kset 之前,先介绍与它们相关联的 sysfs 文件系统sysfs文件系统linux2.6内核引入了sysfs文件系统,sysfs被看成是与proc同类别的文件系统。Sysfs把连接在系统上的设备和总线组织成分级的文件,使其从用户空间可以访问到。sysfs被加载到/sys/目录下,它的子目录包括:Block:在系统中发现...
2019-04-18 20:04:54
472
原创 嵌入式linux之/proc文件系统(介绍加实例验证)
文章目录/proc文件系统介绍/proc文件系统特点内核描述创建proc文件创建目录删除目录/文件读写实现流程mini6410下的实例代码在/proc下先创建目录后创建文件/proc文件系统介绍/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息。/proc下面的每一个文件都绑定于一个内核函数,用户读取其中的文件时,该函数动态地生成文件的“”内容“”比如:通过/pr...
2019-04-17 16:54:00
751
原创 linux中进程控制和进程调度(包含一些面试基础题)
文章目录进程控制进程和程序:进程和线程的区别:进程的四要素Current进程的创建进程销毁进程调度调度策略调度类调度时机进程控制进程和程序:程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。进程是一个执行中的程序。它是动态的实体。进程和线程的区别:进程是资源分配的最小单位,线程是调度的最小单位。在linux系统中,进程有独立的用户空间,如果没有独立的用户空间,但是有用...
2019-04-17 10:01:02
1821
原创 linux驱动程序函数之字符驱动程序的设计
文章目录linux驱动程序的分类驱动程序的安装linux驱动程序的使用及设备号等设备号的分配创建设备文件(2种方法)linux驱动程序的分类字符设备驱动网络接口驱动块设备驱动Linux系统将设备分为三种类型,每个模块通常实现为其中的某一类:字符模块、块模块、网络模块,这三种类型如下:字符设备字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实...
2019-04-15 21:49:01
732
1
原创 linux内核重要函数(kmalloc等)
文章目录内核内存分配函数永久内存映射区内核链表内核定时器度量时间差延时执行内核内存分配函数函数名 kmalloc头文件<linux/slab.h>函数原型: void *kmalloc(size_t size,int flags)参数:(1)size:需要分配的内存大小(2)flag:分配标志,它控制 kmalloc 的行为GFP_ATOMIC:用来在进程上下文中...
2019-04-14 17:37:06
2359
原创 USB驱动程序设计之二(Linux USB架构及相关的USB协议)
文章目录Linux USB架构Mass StorageUSB HID(Human Interface Device)RNDISLinux USB架构Mass Storage开发板作为Host 主机时,在开发板中插入U盘进行试验。一、Mass storage 介绍mass storage 是USB协议中的一部分, 是大容量存储器或者海量存储器的意思。我们的U盘就是利用的这个协议开发和制...
2019-04-13 21:15:14
1711
原创 基于mini6410的Linux内核与根文件系统制作(linux 2.6.38)
文章目录内核制作文件系统的介绍制作根文件系统busybox的buzhong补充说明内核制作一、清除此前内核的留下的文件及补丁等(make distclean) xxx@xxx-virtual-machine:~/mini6410/linux-2.6.38$ make distclean二、进行内核的配置(make menuconfig ARCH=arm ) xxx@xxx-v...
2019-04-13 14:05:06
382
原创 uboot之uboot目录及uboot基础命令(mini6410)
文章目录什么是ubootuboot源码目录uboot的编译(基于mini6410)uboot中的常用命令什么是ubootU-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。U-Boot的作用是系统引导。U-Boot从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就...
2019-04-12 21:39:08
587
原创 linux内核模块基础知识
linux内核模块linux内核模块机制:动态将组件加入到内核内核模块本身并不被编译进内核文件(zImage或bzImage),在内核运行期间动态的安装或卸载内核模块的程序结构:模块加载函数(必须):module_init()的宏来指定模每一种y块卸载函数(必须):module_exit()的宏来指定每一种语言第一次都是从hello world开始的,内核模块也不例外下面是一个简...
2019-04-12 10:15:59
666
原创 linux内核的配置与编译
linux内核的配置与编译(基于linux2.38)步骤:一、清除临时文件、中间文件和配置文件(命令可选)make clean:删除产生的文件,但是保留配置文件make mrproper:删除产生的文件 + 保留配置文件make distclean:mrproper + 补丁和IDE留下的文件(比较干净)二、确定目标系统的软硬件配置情况:如:CPU、网卡型号、网络协议等三、使用如...
2019-04-12 09:30:56
245
原创 linux 内核基础
linux基础linux 由用户空间和内核空间构成,两者进行切换可以通过:系统调用硬件中断用户空间可以划分为:应用程序c库(glibc)内核空间可以分为系统调用接口内核体系结构相关代码再补充一下ARM的七种工作模式:(1)用户模式(usr) (2)快速中断(fiq) (3)外部中断(irq)(4)管理模式(svc)(5)数据访问中止(abt)(6)系统模式(sys...
2019-04-12 09:00:11
206
原创 mini6410 LED驱动程序及LED测试程序的设计
在mini6410中,LED驱动程序是第一个操作硬件相关的驱动程序。对于以后的嵌入式linux驱动程序起到一定的引导作用在操作所用到的mini6410的I/O口之前,就需要设置他们用到的寄存器。我们需要调用一些现成的函数或者宏,在此用到的是 readl 和 writel,它们将直接对相应的寄存器执行读取和写入的操作。相关的寄存器如下除此之外,还需要调用一些和设备驱动密切相关的基本函数,如...
2019-04-11 20:33:58
732
2
原创 ubuntu18.04中没有/etc/rc.local文件的解决方法
ubuntu18.04不再使用 inited 管理系统,改用 systemd但是个人认为开机启动的rc.local更加好用,所以可以自己配置rc.local1.实现原理systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc...
2019-04-03 17:47:00
28472
2
原创 ubuntu18.04安装tftpd服务器
ubuntu18.04安装tftpd服务器欢迎使用Markdown编辑器在连接mini6410开发板的的时候会在uboot命令下使用tftp命令从linux的tftpd服务器中下载文件时候,所以要在ubuntu中安装tftp服务器端tftpd。ubuntu18.04 安装tftpd服务器1.安装命令: sudo apt-get install tftpd-hpatftpd配置:...
2019-04-03 17:22:02
3552
S3C6410_用户手册.pdf
2019-08-23
使用python实现mapreduce(wordcount).doc
2019-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅