- 博客(70)
- 收藏
- 关注
原创 用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。程序实现以及注释如下:#! /bin/bash#cp.sh#shell脚本的第一行是必须按照上面那种格式写,因为它表示的含义是#当前的shell脚本使用/bin/bash处理;第二行一般写脚本的文件名。#1.echo 在屏幕上输出后面的字符串,和C的printf功能一样。echo -e "...
2018-08-11 16:46:34
4349
1
原创 GIT GUI的基本操作
1.先在本地建立文件夹,可以与GIT中一致: 2.进入项目文件夹后右键,选择建立新仓库,打开已经存在等,这里选择建立新仓库。 3.点击Remote按钮先将Git上代码克隆到本地: 4.填写项目名称和对应的地址: 5.在项目进行中获取项目最新改动。 操作流程 初始化(Git init) ...
2018-08-11 16:45:47
1508
转载 I2C理解
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。1.1 I2...
2018-07-09 18:15:27
1250
转载 ST_LINK/V2 SWIM和SWD、JTAG下载口说明
LED状态说明闪烁红色:ST-LINK/V2连接到计算机后,第一次USB枚举过程红色:ST-LINK/V2与计算机已建立连接闪烁绿色/红色:目标板和计算机在进行数据交换绿色:通讯完成橙色(红色+绿色):通讯失败-----------------------------------------------------------------------------------------------...
2018-05-10 14:22:14
4844
转载 各种存储器的介绍
存储器分为两大类:ram和rom。 ram就不讲了,今天主要讨论rom。 rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了prom,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下,想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再
2018-01-19 17:45:24
763
原创 推挽输出,开漏输出等8中IO模式的总结
(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_Mode_Out_PP 推挽输出(7)GPIO_Mode_AF_OD 复用开漏输出(8)GPIO_Mode_AF_PP 复用推挽输出对于刚入门的新手,
2018-01-19 11:40:10
2777
原创 位置式PID 增量式PID
在电子数字计算机直接数字控制系统中,PID控制器是通过计算机PID控制算法程序实现的。计算机直接数字控制系统大多数是采样-数据控制系统。进入计算机的连续-时间信号,必须经过采样和整量化后,变成数字量,方能进入计算机的存贮器和寄存器,而在数字计算机中的计算和处理,不论是积分还是微分,只能用数值计算去逼近。 在数字计算机中,PID控制规律的实现,也必须用数值逼近的方法。当采样周期相当短时,用求和代
2017-12-05 22:52:16
1639
转载 互补滤波原理
先介绍一下互补滤波的基本概念,这是阿莫论坛上一个会员的总结:对mpu6050来说,加速度计对四轴或小车的加速度比较敏感,取瞬时值计算倾角误差比较大;而陀螺仪积分得到的角度不受小车加速度的影响,但是随着时间的增加积分漂移和温度漂移带来的误差比较大。所以这两个传感器正好可以弥补相互的缺点。不过要怎么弥补呢?经过上面的介绍是否感觉到可以用滤波器做文章呢?这里讲的互补滤波就是在短时间内采用陀螺仪得到的角度
2017-11-23 19:28:46
7274
3
原创 (三)驱动开发字符设备过程
1,字符设备驱动框架 作为字符设备驱动要素: 1,必须有一个设备号,用在众多到设备驱动中进行区分 2,用户必须知道设备驱动对应到设备节点(设备文件) linux把所有到设备都看成文件 crw-r----- 1 root root 13, 64 Mar 28 20:14 event0 crw-r----- 1 root root 13, 65 Mar 28 2
2017-09-24 04:48:10
346
原创 (二)驱动模块开发过程
驱动模块开发:1,参数传递 加载ko: insmod hello.ko myname="george" myvalue=33 用途: wifi驱动,wifi硬件中内部也运行内部代码,原厂开发,这些代码叫做固件--firmware.bin 装载wifi驱动,必须告诉固件到文件在哪里 insmod rtxxx.ko path=/lib/modules/firmwar
2017-09-24 04:46:20
363
原创 (一)驱动开发之环境搭建
Linux驱动开发环境搭建 1,ubuntu中配置编译环境 设置交叉工具链: tar -xvf gcc-4.6.4.tar.xz -C ~/Linux_4412/toolchain 设置环境变量: vim ~/.bashrc 最后面添加 export PATH=$PATH:/home/george/Linux_4412/toolchain/gcc-4
2017-09-24 04:45:10
827
1
原创 (三)linux内核移植、网卡移植过程、第三方驱动移植
CPU与设备连接描述 - 设备树DeviceTreeCPU与设备连接描述 - 设备树DeviceTreeDevice Tree是描述硬件信息的数据结构用于管理 硬件拓扑和硬件资源信息。Device Tree由一系列被命名的结点(node)和属性(property)组成,而结点本身可包含子结点。所谓属性,其实就是成对出现的name和value。帮助
2017-09-22 10:36:35
1855
原创 (六)Linux内核分析
编译内核 make uImage编译设备树 make dtbsu-boot启动阶段U-Boot 2013.01 (Aug 24 2014 - 12:01:19) for FS4412CPU: Exynos4412@1000MHzBoard: FS4412DRAM: 1 GiB……Loading: *######################Star
2017-09-22 10:20:44
316
原创 (二)ARM的汇编指令
指令机器码: ARM 采用的是32位架构 ARM 指令集(32-bit) Thumb 指令集(16-bit ) ARM instruction set encoding 指令的机器码 (如指令 moveq r0,r1 机器码 0x01A00001 ) 31 ~ 28 24
2017-09-22 00:34:30
393
原创 (一)ARM体系结构.硬件组成原理.工作模式
ARM 体系: ARMv4 ARMv5 ARMv6 ARMv7 ARM CPU: arm7 arm9 arm10 arm11 arm-cortex-a8 流水线: 3 5 6 8 频率(MHZ) 80
2017-09-21 23:47:03
2094
翻译 查看设备挂载信息
系统# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsus
2017-09-19 16:48:46
10488
转载 http://blog.youkuaiyun.com/hzwy23/article/details/8214029
错误提示:bash: ./arm-linux-gcc: No such file or directory我的ubuntu 12.04 64位虚拟机,使用开发板厂商提供的交叉编译器,每次输入arm-linux-gcc时,都有上面的错误提示。猜想这个交叉编译器可能是在32位机器上编译出来的。相当值钱做android编译的时候,google提示要安装一个库,可以让64位机器运行32位机器上编译出来
2017-09-19 00:51:23
434
翻译 ubuntu linux下制作win10启动盘
Linux下有很多工具可以制作启动盘,不过我们可以使用linux下的一条命令来完成-----dd操作方法: 1 卸载你的U盘 假设你的u盘对应的设备是sdb1(可以使用df查看或者fdisk) sudo umount /dev/sdb12 写入linux(ubuntu fedora .....)系统 sudo dd if=系统路径 of=/dev/sdb例如 sudo dd if=....
2017-08-17 03:57:56
18049
1
原创 (五)linux下c语言实现在线词典
一.客户端代码:#include #include #include /* 套接字用的头文件*/#include #include #include //inet_addr ip地址格式的转换#include #include #include #define R 1//user - register#define L 2//
2017-08-14 16:34:43
4547
2
转载 linux下的守护进程
1、 守护进程的概念:守护进程(Daemon)是一种运行在后台的一种特殊的进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在Linux中,每个系统与用户进行交流的界面成为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且
2017-08-03 04:07:32
276
原创 创建进程,分析父子进程关系以及结束进程。
一创建进程: pid_t fork(void); pid_t等价与有符号整型失败-1,成功时父进程返回子进程进程号,子进程0;父子进程 就是fork返回值区分。 例子:二.结束进程: exit/_exit (int status) 只有status第八位才有效。 其中exit结束时会刷新流的缓冲区。。 _exit不会刷新。
2017-08-02 03:11:29
1672
2
原创 进程的介绍和linux中进程的命令解释
一.进程控制块(pcb):1.包含进程标识pid 2.进程用户 3.进程状态优先级 4。文件描述符表二.前台进程可以向终端输入输出,后台进程不能输入只能向终端输出 后台进程运行用./a.out &三。ps 查看系统进程 ps -ef(显示所有进程)ps -ef|more 一屏幕一屏幕的输出。ps -ef|grep test直接用名字查看进程 ps aux显示进程当前状态四.top 查
2017-08-02 02:29:36
256
转载 <Uinx 环境高级编程笔记>
以前经常遇到两种I/O操作一类是f打头的fopen, fread, fwrite一类是没有f打头的open, read, fwrite原来一个是UNIX I/O(在类Unix系统上实现),另一类是标准I/O(在很多系统上都有实现,包括windows) 使用标准I/O的好处因为在出UNIX的很多操作系统(包括Windows, linux)上都实现了此库,所有有利于软件的移植。
2017-08-02 01:55:53
311
原创 (七)linux下共享库开发的流程
一.共享库:没复制函数,只是记录了用了哪些符号,在哪用。代码少,多程序可共享一个库。但是运行时还需要共享库。升级方便。系统更多的使用的是共享库。二创建和使用:1。确定函数和函数接口2。编译gcc -c -fPIC hello.c bye.c -Wall 其中-fPIC告诉编译器生成位置无关代码,可被加载到任意空间执行生成了.o文件3。创建共享库common 用gcc -shared
2017-08-01 22:08:38
312
原创 (六)linux下c语言实现静态库的开发
一。库:二进制文件,包含代码可被调用。linux下库放的路径是/lib/usr/lib 下面linux下右静态库和共享库。二。静态库 用的话同时把代码拷贝过来了。对运行环境要求少,启动速度会更快。但是占用了太多磁盘和内存空间 静态库升级后,需要重新编译链接。三。静态库创建:1.明确库功能和接口,即参数和返回值。2。编写源码。3。编译用gcc -c hello.c -Wall 4.
2017-08-01 21:16:36
346
原创 (八)linux下编程实现ls功能的打开、访问 、关闭目录以及提取属性。
opendir函数用打开一个目录文件:#includeDIR *opendir(const char *name);DIR是用来描述一个打开的目录文件结构体类型一 readdir访问目录二。修改文件访问权限#include中 int chmod(const char *path,mode_t mode);int fcmod(int fd,mode_t mode);
2017-08-01 20:29:45
376
原创 c语言 linux下文件i/o 实现文件的复制
#include#include#include#include#include#define N 64int main(int argc,char *argv[]){ int fds,fdt,n; char buf[N]; if(argc { printf("usage : %s \n",argv[0
2017-08-01 18:49:08
2827
原创 (九)linux下文件io与c的标准io对比
一.c的标准ioc函数中就有遵循ANSIC 带缓冲 文件IO遵循POSIX操作系统移植方便无缓冲。二.标准空通过流即FILE,而文件IO是通过文件描述符fd,也是一组函数,只在遵循posix操作系统下使用。三.linux中标准io基于文件io实现。每个打开的文件对应一个文件描述符,从0开始依次递增。四.open函数在fcntl.h中(const *path,int oflag,...)
2017-08-01 17:50:23
569
原创 (十)linux下用标准i/o实现格式化输出并且把时间每隔一秒输出到文件中
一格式化输出1。int printf();格式化好的字符串放到终端输出。2。int fprintf(FILE *stream,const char *fmt,...);可以输出到指定的流中。3。sprintf(char *s,const char *fmt);以指定格式把字符串输出到缓冲区中。FILE *fpchar buf[64]以指定年月日写入文件和缓冲区fpr
2017-08-01 15:48:03
1796
原创 (十一)linux下用c语言 实现file流的刷新和定位的相关函数
一.用fflush函数将缓冲区中的内容写到文件中#includeint main(){ FILE *fp; if((fp = fopen("test.txt","w"))==NULL)//普通文件 默认全缓冲 只有当缓冲区满或关闭才写道文件里 { perror("fopen"); return -1; }
2017-08-01 15:44:56
1005
原创 (四)Linux下c语言用fread()和fwrite()实现文件复制
1.fput/fget按字符读取函数 : 可以读取文本文件和二进制文件,但是读单个字符效率比较低。2.fgets/fputs按行读取函数:只能处理文本文件,不能二进制文件,因为二进制包含0,0是终止符所以不能读。3.fread/fwrite按对象结构体读取:都可以读/所以推荐这种用法。#include#define N 64int main(int argc,char
2017-08-01 14:55:24
3923
翻译 (三)linux下c语言用fgets()函数统计一个文本文件包含多少行
/* 统计一个文件有多少行*fgets()函数是一个行缓冲的函数*行缓冲的函数一般有4种情况来刷新缓冲区:*1:缓冲区满了*2:用fllush刷新缓冲区函数*3:流的关闭*4:遇到‘\n’*fgets()达到文件尾或读出错返回NULL。可以用foef()来判断是*出错,还是达到了文件尾。*注意点:fgets(buf,N,fp)*1:如果buf有N个字节,buf满了,则buf中有* N-1个字
2017-08-01 13:40:14
1487
原创 标准io的文件复制功能
一.代码#includeint main(int argc,char *argv[]) //文件名要通过命令行参数传进来{ FILE *fps,*fpd; int ch; if(argc { printf("Usage :%s \n",argv[0]); return -1; } if((
2017-08-01 12:31:28
755
原创 算法 c语言 快速排序
#include#define N 8void show(int a[]);extern int quickpass(int a[],int i,int j);extern void quicksort(int a[],int low,int high);int main(){ int a[N] = {50,36,66,76,36,12,25,95};
2017-07-31 16:43:23
360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人