自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

转载 【STM32】STM32串口配置的一般步骤(库函数)

STM32串口配置的一般步骤(库函数)(1)串口时钟使能:RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHBxPeriphClockCmd();(2)引脚复用映射:GPIO_PinAFConfig();(3)GPIO端口模式配置:GPIO_Init(); 模式配置为GPIO_Mode_AF(4)串口参数初始化:USART_Init();(5)开启中...

2017-04-06 21:08:00 695

转载 【STM32】串行通信原理

(1)通信接口背景知识 并行通信: --传输原理:数据各个位同时传输 --优点:速度快 --缺点:占用引脚资源多 串行通信: --传输原理:数据按位顺序传输 --优点:占用引脚资源少 --缺点:速度相对慢 串行通信的三种方式(按照数据发...

2017-04-05 23:49:00 199

转载 【STM32】NVIC中断优先级管理

(1)NVIC中断优先级分组 1>,CM4内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且 具有256级的可编程中断设置。 2>,STM32F4并没有使用CM4的内核的全部东西,而只是用了它的一部分。 3>,STM32F40xx/STM32F41xx的92 个中断里面,包括10个内核中断和...

2017-04-05 22:48:00 160

转载 【Linux-驱动】RTC设备驱动架构

在Linux操作系统中,RTC设备驱动的架构如下图所示:RTC设备驱动涉及的文件:class.c、rtc-dev.c : 建立/dev/rtc0设备,同时注册相应的操作函数。interface.c : 作为中间层,做一个传递和封装rtc-s3c.c : 具体的物理实现,各种操作硬件模块的函数其他 rtc-sysfs.c rtc-pro...

2017-03-25 21:02:00 140

转载 【Linux-驱动】在sysfs下创建对应的class节点---class_create

在编写简单字符设备驱动的时候,可以使用宏class_create在sysfs下创建对应的class节点,便于用户管理设备:#define class_create(owner, name) \({ \ static struct lock_class_key __key; \ __class...

2017-03-23 07:24:00 209

转载 【Linux-驱动】将cdev加入到系统中去---cdev_add

在我们已经完成了对cdev结构体的初始化之后,我们需要将这个cdev结构体加入到系统中去,使用函数 cdev_add:/** * cdev_add() 讲一个字符设备加入到系统中去 * @p: 字符设备结构体 * @dev: 设备号 * @count: 设备号的偏移 */int cdev_add(struct cdev *p, dev_t de...

2017-03-23 07:19:00 165

转载 【Linux-驱动】简单字符设备驱动结构和初始化

(1)在编写简单字符设备驱动的时候,首先要申请一个设备结构struct cdev:struct cdev { struct kobject kobj; struct module *owner; /* 所属模块 */ const struct file_operations *ops; /* 对应的操作函数集 */ ...

2017-03-23 07:12:00 148

转载 【Linux-驱动】printk的打印级别

级别: 日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号。printk的日志级别定义在 /include/linux/kernel.h 中:#define KERN_EMERG "<0>" /* system is unusable ...

2017-03-21 21:36:00 114

转载 【Linux 网络编程】REUSADDR

(1)服务器端尽可能使用REUSEADDR。(2)在绑定之前尽可能调用setsockopt来设置REUSEADDR套接字选项。(3)使用REUSEADDR选项可以使得不必等待TIME_WAIT状态消失就可以重启服务器了。eg:int on = 1;setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));转...

2017-03-09 22:20:00 153

转载 【Linux 网络编程】常用TCP/IP网络编程函数

(1)函数socket 1 /**************************************************************** 2 ** 功能:创建一个套接字用于通信 3 ** 参数:domain 指定通信协议族 4 ** type 指定socket类型,流式套接字 SOCK_STREAM 5 ** ...

2017-03-09 22:18:00 82

转载 【Linux 网络编程】常用套接字类型

常用套接字类型<1>流式套接字(SOCK_STREAM)---TCP 提供面向连接的、可靠的传输服务,数据无差错,无重复的发送, 且按发送顺序接收。<2>数据报式套接字(SOCK_DGRAM) 提供无连接服务。不提供无差错保证,数据可能丢失或者重复,并且接收顺序混乱。<3>原始套接字(SOCK_RAW)转载于:http...

2017-03-02 22:39:00 225

转载 【Linux 网络编程】字节序和地址装换

(3)字节序 <1>大端字节序 最高的有效位存储于最低内存地址处,最低有效位存储于最高内存地址处。 <2>小端字节序 最高的有效位存储于最高内存地址处,最低有效位存储于最低内存地址处。   保存0x12345678 ----------------->内存地址增长的方向 12 34 56...

2017-03-02 22:37:00 65

转载 【Linux 网络编程】网络IP地址结构体

(1)IPv4套接口地址结构通常也称为"网际套接字地址结构",它以"sockaddr_in"命名, 定义在<netinet/in.h> struct sockaddr_in{ uint8_t sin_len; //整个sockaddr_in结构体的长度 sa_family sin_fa...

2017-03-02 22:34:00 546

转载 【Linux 网络编程】滑动窗口协议

<1>通知接受窗口(rwnd): 预防应用程序发送的数据超过对方的缓冲区。接收方使用的流量控制<2>拥塞窗口(cwnd): 预防应用程序发送的数据超过网络所承受的能力。发送方使用的流量控制<3>发送窗口取两者较小值<4>慢启动阈值: ssthresh: slow start threshold<5>慢启动阶段: cwnd从...

2017-03-02 07:02:00 108

转载 【Linux 网络编程】数据在网络中传输过程(以ping命令为例)

(1)应用程序ping会判断发送的是主机名还是IP地址,调用函数gethostbyname()解析主机B,将主机转换为一个32位的 IP地址。这个过程叫做DNS域名解析。 (2)ping程序向目的IP地址发送一个ICMP的ECHO包 (3)将目标主机的IP地址转换为48位的硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。 (4)主机B的ARP协议接...

2017-03-02 06:45:00 227

转载 【Linux 网络编程】MTU(Maximum Transmission Uint)

(1)以太网和IEEE802.3对数据帧的长度都是有限制的,其最大分别是1500和1492字节,成为MTU。 (2)如果IP层有一个数据要传输,而且数据的长度比链路层的MTU要大,那么IP层就要进行分片(Fragmentation), 把数据包分成若干片,这样每一片都小于MTU。 (3)当网络上的两台主机进行通信时,两台主机之间要经过多个网络,每个网络链路层可能有不同的...

2017-03-02 06:44:00 89

转载 【Linux 网络编程】TCP/IP四层模型

应用层、传输层、网络层、链路层 链路层:常用协议 ARP(将物理地址转化为IP地址) RARP(将IP地址转换为物理地址) 网络层(IP层):重要协议ICMP IP IGMP 传输层:重要的协议TCP、UDP 应用层:用户自定义协议 tftp telnetTCP的特点: (1)基于字节流 (2)面向连接 (3)可靠传输 (4)缓冲传输...

2017-03-02 06:43:00 111

转载 【Linux 网络编程】端口

(1)众所周知的端口:0~1023,这些端口由IANA分配和控制它们紧密绑定用于一些服务。常用这些端口的通讯 明确表明了某些协议。例如:21端口为ftp服务端口。 (2)注册端口:1024~49151.这些端口不受IANA控制,但是由IANA登记并提欧诺个使用情况清单。它们松散地 绑定一些服务。 (3)动态或者私有端口:从49151~65535.IANA不管这些端...

2017-03-02 06:43:00 148

转载 【Linux 网络编程】OSI七层模型

OSI(Open System Interconnection)开放系统互联模型(1)应用层: 应用层与应用程序界面沟通,以达到展示给用户的目的。(2)表示层: 表示层对网络传输的数据进行交换,使得多个主机之间的传送的信息能够相互理解,包括数据的 压缩、加密、格式转换等。(3)会话层: 管理主机之间会话过程,包括会话建立、终止和会话过程中的管理。(4)传输层: 提供可靠的数据...

2017-03-02 06:41:00 76

转载 【Linux 驱动】简单字符设备驱动架构(LED驱动)

本文基于icool210开发板,内核版本:linux2.6.35;驱动代码:(1)头文件:led.h 1 #ifndef __LED_H__ 2 #define __LED_H__ 3 4 #define LED_MAGIC 'l' 5 #define LED_1_ON _IO(LED_MAGIC, 0) 6 #define LED_1_OFF...

2017-02-22 22:21:00 74

转载 【嵌入式linux】用户登录密码验证配置

在配置BusyBox中配置登录密码: 配置位置BusyBox Setting --> General Configuration --> Support for --long-options [*]表示使用登录 [] 表示不使用登录转载于:https://www.cnblogs.com/...

2017-02-19 16:34:00 484

转载 【Linux 环境搭建】ubuntu下nfs安装与配置

(1)安装   #sudo apt-get install nfs-kernel-server portmap(2)修改配置文件   修改/etc/exports,增加以下内容,   /root/wksp/rootfs *(rw,sync,no_root_squash,no_subtree_check)(3)重启NFS服务   sudo /etc/init.d/nfs-...

2017-02-19 16:01:00 70

转载 【嵌入式 Linux文件系统】如何使用Initramfs文件系统

(1)#cd ../rootfs/  #ln -s ./bin/busybox init 创建软链接    (2)进入Linux内核   #make menuconfig     General setup-->Initial RAM filesystem and RAM disk (initramfs/initrd) support    选择上该选项     Gene...

2017-02-19 15:53:00 177

转载 【嵌入式 Linux文件系统】如何使用NFS文件系统

(1)内核配置   取消选项 General setup-->Initial RAM filesystem and RAM disk (initramfs/initrd) support   进入File system-->Network File systems-->Root file system on NFS 选中(2)启动参数配置   setenv...

2017-02-19 15:53:00 136

转载 【Linux 环境搭建】ubuntu 的samba配置

在/etc/samba/smb.conf的文件末尾增加下面的内容然后重启samba[home] comment = James Harden path = / browseable = yes writable = yes guest ok = yes directory mask = 0700转载于:https://www.cnblogs.c...

2017-02-19 14:41:00 73

转载 【Linux内核】编译与配置内核(arm)

ARM平台使用的内核(1)清除原有的配置与中间文件   make distclean(2)配置内核   make menuconfig ARCH=arm(3)编译内核   make uImage ARCH=arm CROSS_COMPILE=arm-linux- 转载于:https://www.cnblogs.com/jamesharden/p/6414737....

2017-02-19 07:45:00 157

转载 【Linux内核】编译与配置内核(x86)

(1)配置内核  如何配置内核    1. make config 基于文本的交互式配置     2. make menuconfig 基于文本模式的菜单型配置   使用make menuconfig 配置内核     在配置中<>,[]     <>可以用三种选择空白,*或者M,[]可以用两种选择,空白和*。     空白是不选择...

2017-02-19 07:44:00 83

转载 【Linux 源码】Linux源码比较重要的目录

(1)arch   arch是architecture的缩写。内核所支持的每一种CPU体系,该目录下都有对应的子目录。   每个CPU的子目录,又进一步分解为boot、mm、kernel等子目录,分别包含控制系统引导   内存管理,系统调用等。(2)documentation 内核文档(3)drivers 设备驱动目录(4)include   内核所需要的头文件。与平...

2017-02-16 22:17:00 88

转载 【Linux 架构】Linux内核架构

(1)System Call Interface(SCI)------系统调用接口(2)Process Management(PM)-------进程管理模块(3)Memory Management(MM)-------内存管理模块(4)Arch ----------------------------硬件相关部分(5)Device Driver(DD)---------------设备...

2017-02-16 21:56:00 49

转载 【Linux U-boot】U-Boot相关命令

<1> help --帮助命令环境变量相关: <2> printenv --查看环境变量也可以使用缩写:print  查看某一个环境变量的值,例子:printenv bootargs <3> setenv --添加、修改、删除环境变量  setenv name value //添加或者修改环境变量  setenv name ...

2017-02-16 21:37:00 50

转载 【Linux 环境搭建】Ubuntu下安装tftp

1.安装软件 sudo apt-get install tftp-hpa tftpd-hap xinetd 2.修改配置文件 sudo vim /etc/default/tftpd-hpa 删除全部内容然后增加下面的内容 TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/tftpboot" TFTP_ADDRE...

2017-02-16 20:58:00 55

转载 【Linux命令】解压相关命令

xxx.tar.gz : tar xvzfxxx.tar.gzxxx.tar.bz2 : tar -vxjf xxx.tar.bz2转载于:https://www.cnblogs.com/jamesharden/p/6403449.html

2017-02-15 21:23:00 61

转载 【Linux 环境搭建】安装arm-linux-gcc

(1)下载或者拷贝arm-linux-gcc-4.3.2.tgz到Linux环境的任意目录。 解压: tar xvfarm-linux-gcc-4.3.2.tgz ,会解压该文件到当前目录; 拷贝:cp ./usr /usr -rf 此命令会将所有的有关文件拷贝到 /usr/local/arm/4.3.2目录下(2)修改系统变量文件 ...

2017-02-15 20:39:00 78

转载 【C语言--数据结构】线性表链式存储结构

直接贴代码头文件#ifndef __LINKLIST_H__#define __LINKLIST_H__typedef void LinkList;typedef struct _tag_LinkListNode{ LinkList* next;}LinkListNode;LinkList* LinkList_create();v...

2017-02-14 22:35:00 205

转载 【C语言--数据结构】线性顺序表

线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合; 2.线性表中的数据元素之间是有顺序的; 3.线性表中的数据元素个数是有限的; 4.线性表中的数据元素的类型必须相同; 定义: 线性表是具有相同类型的n(>=0)个数据元素的有限序列 (a1,a2,a3.....) a1是表项,n是表长度 性质: 1.a0为线性...

2017-02-14 20:53:00 75

转载 【Linux-驱动】驱动策略----自旋锁

自旋锁自旋锁最多只能被一个内核任务持有。要是锁未被持有,请求它的内核任务便会立即得到它并继续执行。如果一个内核任务试图请求一个已经被别的内核任务持有的自旋锁,那么CPU就会一直尽心循环---旋转---等待锁重新可用。Spinlock_t my_lock = SPIN_LOCK_UNLOCKED;或者在运行时使用:Void spin_lock_init(spinlock_t...

2017-01-18 23:57:00 116

转载 【Linux-驱动】驱动策略----信号量

访问共享资源的代码区块叫“临界区”,临界区需要以某种互斥机制加以保护:自旋锁、信号量等。互斥访问:一个执行单元在访问共享资源的时候,其他的执行单元被禁止访问。信号量:在Liunx中的信号量是一种睡眠锁。假如进程A先持有信号量F,然后进程B试图获取已经被进程A持有的信号量F时(假如信号量F资源值为1),信号量会将B进程推入等待队列,然后让 其睡眠。当持有信号量...

2017-01-18 23:13:00 87

转载 【Linux-设备树】.dtb文件的反汇编

在使用设备树时我们将**.dts文件利用dtc编译器编译为**.dtb文件。在已知**.dtb文件的情况下我们有两种方法可以得到dts源码:方法一:使用fdtdump工具进行反汇编 使用命令:root#fdtdump **.dtb > temp.dts 反汇编生成的内容保存在temp.dts方法二:使用dtc编译器进行反汇...

2017-01-18 21:58:00 388

转载 【Linux-设备树】设备树

Linux3.1之前的版本,对于一般的ARM平台的设备,板级信息一般存放在/arch/arm/mach-**目录下。设备树对应的文件存放在/arch/arm/boot/dts/***.dts目录下设备树引入的目的:避免各个厂商代码的重复,加速linux内核的bsp的开发。编译一个镜像可以支持多个不同设备,只需要编译对应的设备树并打包就可以。设备树:是一种描述板子硬件信息的...

2017-01-18 00:41:00 111

转载 【Linux-设备树】编译器DTC

DTC编译器:设备树源码DTS文件编译为二进制文件DTB。DTC编译器的作用:就是对设备树的源码的文件进行语法检查,根据linux的内核要求检查各个节点以及属性,将设备树源码编译生成二进制文件,以保证内核能启动。DTC编译器源文件所在位置:/scripts/dtc/***编译DTS:在linux源代码的顶层目录下执行命令:make ARCH=arm CROSS_COMPI...

2017-01-18 00:37:00 173

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除