自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fluency的博客

万物皆文件

  • 博客(49)
  • 收藏
  • 关注

原创 sync、fsync、fdatasync

问题描述    某天、测试程序的小哥告诉我程序为什么点击保存配置之后,断电重启设备,保存的配置没有了。    得到反馈我的第一想法就是是不是上位机程序的配置指令没有发送过去,然后自己测试发现指令发了过去、并且用vi命令打开发现保存的参数也正确。然后断电重启。再去看文件中的配置参数没有了。    于是多尝试了几次发现有的时候,配置文件能够保存,有的时候却变成了空文件。推测    考虑到文件系统是Fl...

2018-06-04 19:47:03 393

原创 Source Insight3 看代码神器

Source Insight是一款功能强大的面向项目的编程编辑器,代码浏览器和分析器,可帮助您在工作和计划​​时理解代码。Linux内核代码量大、用Source Insight来查看编辑内核代码已经成为很多嵌入式工程师的选择。材料准备Source Insight3 没有Source Insight 参看这为大佬点击打开链接linux内核源码  内核源码下载创建工程创建一个新的工程 写上你心仪的名字...

2018-05-24 16:42:57 6360

原创 AM3352上移植sqlite3数据库

sqlite简介    SQLite是一个进程库,实现了一个 自包含的, 无服务器, 零配置, 事务性 的SQL数据库引擎。SQLite是一个嵌入式SQL数据库引擎。与大多数其他SQL数据库不同,SQLite没有单独的服务器进程。SQLite直接读取和写入普通磁盘文件。包含多个表,索引,触发器和视图的完整SQL数据库包含在单个磁盘文件中。数据库文件格式是跨平台的 - 您可以在32位和64位系统之间...

2018-05-18 16:35:12 615

原创 STM32的掉电监控PVD

设备在掉电钱及时向flash写入时间,来记录掉电的时间。当下一次上电时读出这个时间。就能知道系统是在什么时候故障掉电的了。#include "head.h"#include "PVD.h"void PVD_Init(void){ EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; N...

2018-05-17 20:44:50 6008 1

原创 STM32的DAC输出驱动电压

目的    项目中的模块对输出电压的改变来控制功率、所以考虑用stm32内部的DAC来输出电压作为驱动。 源代码#include "dac.h"void Dac1_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; DAC_InitTypeDef DAC_InitType; RCC_APB2PeriphClockCmd(RCC_AP...

2018-05-17 20:42:05 11635 3

原创 STM32的内部Flash读写

内部Flash官方手册介绍    STM官方关于stm32F103系列的芯片有一个专门介绍flash读写的手册。STM32F100xx超值型产品闪存编程手册     通过J-Link查看自己的芯片内部的flash大小。我的大小为512k 是high-density         手册中对应的内存表为:    相关库函数在stm32f10x_flash.c文件中官方为我们定义好的很多关于内部fla...

2018-05-17 20:35:23 7475 1

原创 AM3352的I2C驱动与传感器sht20的应用

SHT20传感器    这是一款完全校准的温湿度传感器集成电路芯片,用数字输出 I2C接口。具有良好的长期稳定性和低功耗特性。用于读设备进行温度监控。SHT20的I2C接口    7bit的设备地址:‘1000’000',1bit读写选择(read:'1' write:'0')    command:‘1110’0011’ for temperature, ‘1110’0101’ for rela...

2018-05-16 20:27:27 1617

原创 USB-WIFI RTL8188CU模块驱动

RTL8188CU模块概述Realtek的8188cu模块WiFi是通过usb接口挂载设备。以下是我对模块使用的所有开发工作。Linux内核驱动适配和编译由于芯片驱动官方已经最高支持kernel Linux3.9版本、在对Linux3.14进行移植时出现较多问题。期间出现了很多的坑。内核配置:进入内核目录,make menuconfig [*] Networking support —> [...

2018-04-25 14:32:28 11289

原创 net-snmp的安装配置和移植应用(2)

一、前篇在(1)中写到主机Ubuntu的snmp服务搭建,下面介绍开发板at91sam9260上的snmp服务的移植二、移植准备(1)交叉编译工具:(2)snmp源码在官网上下载  snmp源码  我下载的是 net-snmp-5.4.4.tar.gz 版本tar -zxvf net-snmp-5.4.4.tar.gz解压三、编译 (1)配置

2018-02-06 14:36:13 637

原创 net-snmp的安装配置和移植应用(1)

一、SNMP简单网络管理协议,作为一种短期的网络管理解决方案,用于管理网络设备。所有支持SNMP协议的设备都提供一个SNMP统一的界面所以作为网络设备,支持SNMP协议是必要的。二、SNMP模型一套完整的的SNMP系统包含三个部分管理信息库(MIB)SNMP设备(Agent)网管系统(NMS)三、SNMP的实现根据SNMP的模型,我用主机Ub

2017-11-29 19:31:11 1623

原创 AT91sam9260上移植ssh服务

一、移植SSH的原因日常调试开发板的Linux系统都是通过ARM的debug串口UART来调试的,当我们的产品封装之后,一般很少留出debug串口为嵌入式工程师提供调试接口。但是网口作为产品与网络交互的唯一接口,对于我们来说是可用的。在ARM调试时候,我们通过的是Linux的shell,通过的是串口与shell进行交互。现在,我遇到一个问题,如何通过网口与ARM的shell进行交互呢?下面我又

2017-11-27 12:02:49 393

原创 AT91sam9260的Telnet远程登录开发板

一、Telnet远程登录协议服务的标准协议,TCP/IP协议中的一员。通过Telnet服务器,可以完成登录开发板的工作。在busybox编译的时候,相关的Telnet指令都有了。本以为直接开启Telnet服务就可以了。 于是直接开启telnetd然后去连接开发板发现错误:我发现我并不知道所谓的登录密码二、用户和用户组在使用telnetd之前我们必须给

2017-11-24 17:18:26 292

原创 Shell脚本写一个应用监控程序

在嵌入式Linux系统中交叉编译一个socket服务器、socket服务存在意外进程结束的现象,下面通过shell脚本完成对socket服务程序的监控。一、PS命令查看Linux程序进程二、shell脚本利用PS命令查看server进程的状态,如死亡、就重新启动。做一个死循环轮训。#################################################

2017-11-20 16:12:11 7947 1

原创 AT91sam9260更改MAC地址的方法

一、u-boot层设置好环境变量。u-boot启动后、我们通常要设置boot的env。包括ipaddr、serverip、ethaddr、bootargs、bootcmd等等。但是mac地址第一次设置之后,就不能再通过命令设置了。打印信息表示这个Mac地址不可覆盖。当然我们可以通过nandflsah工具格式化、重新下载boot。然后就可以定义Mac地址了,当然因为一切都

2017-11-15 14:22:16 984

原创 AT91sam9260的外部硬件时钟

一、时钟RTC外部硬件时钟是用于嵌入式设备配置系统时间用的外设,大家都知道我们的电脑或者手机即使没有电了,很长一段时间过后重启它的时间还是准的。在嵌入式设备中内置硬件时钟,这种时钟功耗非常小,用一个很小的充电电容电磁就可以了。再设备上电时,外部时钟的电池进行充电,然后再断电之后,电池对时钟进行供电,完成时间的记录校准更能。在系统重启时,就会先读取硬件时钟的时间,对系统时间进行匹配。

2017-11-07 16:47:31 701

原创 UDP广播包的发送问题

在拥有多个设备时,如何得知设备是否存在呢?嵌入式设备发送广播包就是一个可行的方案。UDP广播包,打包buf中信息为设备的信息。然后通过UDP广播到网络中。话不多说,直接给出广播包的源代码{CSDN:CODE:2601417}进行arm-linux-gcc交叉编译后,放进开发板运行、发现无法运行?报了一个网络不存在的错误、用route命令、ifconfig命令看一

2017-11-07 15:28:14 7498 2

原创 Linux网络编程--(8)进程间的套接字(域套接字)

一、域套接字不走协议栈若客户端没有绑定地址(套接字文件),系统不会自动分配客户端没有绑定地址,只能发送数据,不能接收数据socket同样也可以用于进程间通信创建套接字时使用本地协议AF_UNIX分为流式套接字和用户数据报套接字和其他进程间通信方式相比使用方便,效率较高常用于前后台进程通Unix域套接字的本地地址结构:listen_fd=socke

2017-11-06 20:18:59 303

原创 Linux网络编程--(7)广播和组播

一、什么是单播在发送者和每一接收者之间需要单独的数据信道。 如果一台主机同时给很少量的接收者传输数据,一般没有什么问题。但如果有大量主机希望获得数据包的同一份拷贝时却很难实现。 这将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。单播的优点:1)服务器及时响应客户机的请求2)服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。

2017-11-06 19:57:41 436

原创 Linux网络编程--(6)网络超时检测

一,网络超时的原因在网络通信中,有很多操作会使得进程阻塞,超时检测的必要性就体现了出来避免进程在没有数据时无限制地阻塞,设定的时间到时,进程从原操作返回继续运行。二、网络超时的解决办法(1)设置socket的属性struct timeval t = {5, 0}if (setsockopt(listenfd, SOL_SOCKET, SO_RCVTIMEO, &t,

2017-11-06 19:51:36 563

原创 Linux网络编程--(5)Linux常见服务器模型

一、循环服务器一个服务器同一时刻只能响应一个客户端的请求。(1)TCP循环服务器服务器运行后等待客户端的连接请求服务器接受一个客户端的连接后开始处理,完成客户的所有请求后断开连接循环服务器一次只能处理一个客户端的请求只有在当前客户的所有请求都完成后,服务器才能处理下一个客户的连接/服务请求如果某个客户端一直占用服务器资源,那么其他的客户端不能被处理,TCP服务器一般很少

2017-11-06 19:31:00 1089

原创 Linux网络编程--(4)UDP编程

一、UDP协议的概念UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。UDP协议全称是用户数据报协议[1]  ,在网

2017-11-06 09:53:31 175

原创 AT91sam9260的u-boot移植

一、准备条件u-boot源码:VMware虚拟机和Ubuntu系统提供交叉编译的环境,Ubuntu版本10.04交叉编译工具链:arm-linux-gcc4.0.0二、移植步骤把源码拷贝进Ubuntu系统的文件夹中,用tar命令解压观察u-boot的目录结构:常用的board(板级目录)include(头文件 也是配置文件)drivers(驱动文件)等等(1)上

2017-11-02 19:59:43 907

原创 VS2017输出乱码问题解决

在VS2017上的第一个C++程序:想通过输入输出留想控制台输出中文,但是去发现中文出现乱码现象:这个现象的原因是使用的是UTF-8的无BOM在工具的扩展更新中下载这个然后再文件中找到高级保存选项把编码和行尾选项换成然后再运行程序:就可以显示中文了。

2017-11-01 11:32:59 4454

原创 Linux网络编程--(3)TCP编程

TCP传输协议的概念TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内[1] 另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层

2017-10-31 20:56:30 232 1

原创 stm32的UART串口通信

问题:  手上有一款AT91SAM9260的开发板。开发板上跑的是2.6版本内核的Linux系统,现在想通过UART来完成stm M0与开发板的通信。一、关于AT91开发板上的UART相关知识都在我的上篇博客中说明:http://blog.csdn.net/qq_37474534/article/details/78405446AT91部分的UART通信已经完成就绪:二、stm M0的

2017-10-31 20:19:53 1909

原创 AT91Sam9260的UART串口

一、通信基础1、串行通信的基本概念在通信领域内,有两种数据通信的方式:并行通信和串行通信,串行通信:计算机与I/O设备之间的数据传输的各位是按顺序依次进行传送,通常数据在一根数据线或者一对差分线上传输。并行通信:计算机与I/O设备之间通过多条传输线交换数据,数据的各位同时传送。2、串行通信的特点串行通信速度慢,但是传输设备成本低,可以用现有的通讯手段和通信设备进行远程通信。

2017-10-31 17:00:51 1279

原创 Linux网络编程--(2)网络编程基础

一、IP地址(1)IP的概念:Internet Protocol网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。(2)IP的分类:

2017-10-30 20:25:10 215

原创 Linux网络编程--(1)网络体系架构

一、网络的体系架构1、OSI模型网络体系结构指的是网络的分层结构以及每层的使用的协议集合。OSI协议(国际标准化组织)参考模型:分为7层但是由于OSI的分层过于复杂,TCP/IP模型将网络体系架构分为4层,被广泛应用。2、在tcp/ip模型中四层的功能:网络接口层(物理层、链路层): 传输物理信号,接口,信号形式【高通】,曼彻斯特

2017-10-30 19:36:29 946

原创 Linux应用编程基础--(10)进程间通信system V

IPC通信介绍:IPC(Inter-Process Communication,进程间通信)对象的介绍注意:在IPC的通信模式下,不管是使用消息队列还是共享内存,甚至是信号灯,每个IPC的对象都有唯一的名字,称为"键"(key)。通过"键",进程能够识别所用的对象。"键"与IPC对象的关系就如同文件名称于文件,通过文件名,进程能够读写文件内的数据,甚至多个进程能够公用一个文

2017-10-29 17:30:42 192

原创 Linux应用编程基础--(9)进程间通信

进程间通信概述:详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果

2017-10-29 17:21:34 202

原创 Linux应用编程基础--(8)线程间的同步和互斥

前提引入:多进程 共享同一个进程的地址空间,优点是进程间容易通信,即通过全局变量即可完成多线程见的通信。但是缺点是 当多线程同时访问共享对象时,需要引入同步和互斥机制。一、线程间互斥1,互斥机制的概念:通过互斥锁来保证共享数据操作的完整性,互斥锁只有两种状态:上锁和解锁。具有唯一性和排他性,对文件来说访问者无序。也可把互斥锁看做是某种意义上的全局变量,同

2017-10-28 15:50:18 223

原创 Linux应用编程基础--(7)多线程编程

一、线程基础:由于进程的地址空间是私有的,因此在进程间上下文切换时,系统开销比较大,为了提高系统性能,许多操作系统引入了轻量级进程的概念,也被成为线程。线程是内核里调度的最小单位。在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么,只是维护应用程序所需的各种资源。而线程则是真正的执行实体,为了让进程完成一定的工作,进程必须至少包含一个线程。进程

2017-10-28 15:42:21 171

原创 Linux应用编程基础--(6)守护进程

一、Linux 守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数

2017-10-28 15:20:18 310

原创 AT91Sam9260的SPI

一,SPI的定义SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,具有简单易用的特性,如今越来越多的芯片集成了这种通信协议。二、SPI的通信原理通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传

2017-10-27 11:15:02 802

原创 Linux应用编程基础--(5)多进程编程基础2

一、进程组一个或多个进程的集合进程组ID: 正整数两个函数getpgid(0) getpgrp()函数原型为:#includepid_t getpgrp(void);#includepid_t getpgid(pid_t pid);返回值,若成功则返回进程组ID,出错返回-1进程组id = 父进程id,即父进程为组长进程 组长进程  

2017-10-14 20:47:35 189

原创 Linux应用编程基础--(4)多进程基础1

要想进行多进程编程,我们需要先了解一下Linux中多进程的机制:一、Linux下的多任务机制:RTOS(实时操作系统)时间片转轮和内核抢占多任务处理:指的是用户可以在同一时间内运行多个应用程序,每一个正在执行的应用程序叫做任务。多任务操作系统中3个基本概念:任务、进程、线程二、进程的基本概念:进程是指一个具有独立功能的程序在某个数据集合上

2017-10-14 20:35:04 309

原创 stm32内部温度芯片的驱动及应用实现

stm32F0304是M0系列控制器、使用它来控制微波模块。它的内部内置有温度传感器芯片,用来检测芯片的温度。闲话少说,我们来看芯片手册对这个模块怎么描述:温度传感器是通过ADC_IN16信道来传输值,传感器在温度变化时会产生一个线性的电压变化,然后把这个电压变化转变称数值输出、传感器提供良好的线性度。所以要对芯片进行校准,以发挥骑良好的性能。在应用介绍中给出了他的温度计算

2017-10-14 20:00:29 3557

原创 Linux应用编程基础--(3)文件库

一、获取文件属性我们可以使用stat()/fstat()/lstat()函数来获取某个文件的属性信息。注意:stat既是Linux系统的用于查看文件属性的指令,又是在编程过程中可以使用的一个获取文件属性信息的函数。其中stat()函数可以根据文件名(可带路径)获取文件的属性信息;fstat()函数可以根据已打开文件的文件描述符获得该文件的属性信息;lstat()函数用法类似于stat(

2017-10-12 20:52:18 214

原创 Linux应用编程基础--(2)文件IO

上一章介绍了标准IO编程、下面说一下文件IO。相关函数的区别:一、Linux文件I/O概述1、POSIX规范POSIX(Portable Operating System Interface,可移植操作系统接口规范)标准最初由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师

2017-10-11 20:47:05 192

原创 Linux应用编程基础--(1)标准IO

一、文件与文件类型1、文件定义定义:文件(File)是一个具有符号名字的一组相关联元素的有序序列。文件可以包含的内容十分广泛,操作系统和用户都可以将具有一定独立功能的一个程序模块、一组数据或一组文字命名为一个文件。文件名:这个数据有序序列集合(文件)的名称。2、文件的分类文件由许多种,运行的方式也各有不同。在Windows中,我们是通过文件的后缀名来对文件分类的。例如.txt、

2017-10-11 20:34:34 321

空空如也

空空如也

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

TA关注的人

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