自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (6)
  • 收藏
  • 关注

原创 使用VIM 将文本中某个字符串替换成另外一个字符串方法

:s/well/good/ 替换当前行第一个 well 为 good:s/well/good/g 替换当前行所有 well 为 good:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 goodn 为数字,若 n 为 .

2014-08-15 10:00:27 3108 2

原创 shell快捷键使用技巧

Ctrl+p重复上一次命令 Ctrl+a跳到第一个字符前 Ctrl+x同上但再按一次会从新回到原位置 Ctrl+b前移一个字符不删除字符情况下 Ctrl+h删除前一个字符 Ctrl+u删除提示符前的所有字符 Ctrl+w同上 Ctrl+d删除提示符后一个字符或exit或logout Ctrl+e转到字符尾部 Ctrl+f后移一个字符 Ctrl+k删除提示符后

2014-08-14 21:26:06 581

转载 c 结构体之位域(位段)

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位

2014-07-19 16:22:44 629

转载 Python对象的深拷贝与浅拷贝

本文内容是在《Python核心编程2》上看到的,感觉很有用便写出来,给大家参考参考!浅拷贝首先我们使用两种方式来拷贝对象,一种是切片,另外一种是工厂方法。然后使用id函数来看看它们的标示符1234567# encoding=UTF-8 obj = ['name

2014-07-17 21:29:21 586

转载 How to create and apply a patch with Git

Git is quite common nowadays and a lot of people are asking me how they can create a patch file. Creating a patch file with git is quite easy to do, you just need to see how it's done a few times.

2014-07-14 10:12:12 722

转载 Shell 快捷键助你一臂之力

工作以来都在接触Linux和Unix系统,所以对这两类系统用的多,也比较熟悉。渐渐的,Shell中的快捷键也运用自如,一次朋友看到我快捷的操作shell命令,很好奇的建议,什么时候教教他这些快捷方式。特撰写此文,来提高大家的工作效率和保护你们的键盘。下述所有命令在Linux/unix的shell下有效,这里以bash为主。如有出入,以你自己的操作系统为准。开始描述之前,先问几个常见

2014-07-13 10:05:20 636

转载 Makefile中指示符“include”、“-include”和“sinclude”的区别

指示符“include”、“-include”和“sinclude” 如果指示符“include”指定的文件不是以斜线开始(绝对路径,如/usr/src/Makefile...),而且当前目录下也不存在此文件;make将根据文件名试图在以下几个目录下查找:首先,查找使用命令行选项“-I”或者“--include-dir”指定的目录,如果找到指定的文件,则使用这个文件;否则继续依此搜

2014-07-11 14:34:53 488

转载 Makefile自动依赖

Makefile生成自动依赖的方法有两种:1.  将所有.o文件的依赖关系写入单独文件,然后在Makefile中调用该文件2.  每个.c文件对应一个.d文件,将依赖关系写入.d文件中  一、对于第一种方法,Makefile的写法如下:#file startCC = gccSRCS := $(wildcard *.c)OBJS

2014-07-07 16:16:57 804

转载 通用makefile

####################################### Copyright (c) 1997 George Foot ([email protected])# All rights reserved.#######################################目标(可执行文档)名称,库(譬如stdcx,iostr,mys

2014-07-07 11:30:17 545

原创 makefile学习总结-----make的递归执行

make的递归调用指的是:在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件。递归调用在一个村在有多级子目录的项目中非常有用。例如,当前目录下存在一个“subdir”子目录,这个子目录中有描述这个目录编译规则的makefile文件,在执行make时需要从上层目录(当前目录)开始并完成它所有子目录的编译。那么在当前目录下可以使用这样一个规则来实现对它的子目录的编译

2014-07-02 17:32:06 5960

原创 makefile学习总结-----自动化变量

$@  代表规则中的目标文件名。如果目标是一个文档(Linux中,一般称.a文件为文档),那么它代表这个文档的文件名。在多目标的模式规则中,它代表的是哪个触发规则被执行的目标文件名。  $%  规则的目标文件是一个静态库文件时,代表静态库的一个成员名。例如,规则的目标是“foo.a(bar.o)”,那么,“$%”的值就为“bar.o”,“$@”的值为“foo.a”。如果目标不是函数库文

2014-07-02 15:34:47 534

原创 makefile学习总结-----搜索目录

在一个较大的工程中,一般会将源代码和二进制文件(.o文件和可执行文件)安排在不同的目录来进行区分管理。这种情况下,我们需要使用make提供的目录自动搜索依赖文件功能(在指定的若干个目录下搜索依赖文件)。书写makefile时,指定依赖文件的搜索目录。当工程的目录结构发生变化时,我们就可以不更改Makefile的规则,而只更改依赖文件的搜索目录。本节我们将详细讨论在书写Makefile时如何使用

2014-07-02 15:02:50 3224

原创 makefile学习总结-----通配符使用

Maekfile中表示一个单一的文件名时可使用通配符。可使用的通配符有:“*”、“?”和“[…]”。在Makefile中通配符的用法和含义和Linux(unix)的Bourne shell完全相同。例如,“*.c”代表了当前工作目录下所有的以“.c”结尾的文件等。但是在Makefile中这些统配符并不是可以用在任何地方,Makefile中统配符可以出现在以下两种场合:1.        可以用

2014-07-02 10:51:52 4289

原创 makefile学习总结-----基础知识

Makefile的内容在一个完整的Makefile中,包含了5个东西:显式规则、隐含规则、变量的定义、指示符和注释。关于“规则”、“变量”和“Makefile指示符”将在后续的章节进行详细的讨论。本章讨论的是一些基本概念。²       显式规则:它描述了在何种情况下如何更新一个或者多个被称为目标的文件(Makefile的目标文件)。在书写Makefile是需要明确地给出目标文件、目标的依

2014-07-02 10:04:05 672

原创 单链表插入c语言实现

int list_insert(Node **linkp, int newValue){ Node *current; Node *newNode; while (((current = *linkp) != NULL) && (current->value < newValue)) { linkp = &(current->link); } newNode = (No

2014-06-28 10:49:26 1074

原创 常见字符串函数实现

1. strlenint strlen(const char * string){ assert(string != NULL); int lenth = 0; while(*string++) { lenth++; } return lenth;}2. strcatchar * strcat(char *

2014-06-25 22:27:08 572

转载 ucos中的三种临界区管理机制

熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界去管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。同样是通过关中断来保护临界区,OS_ENTER_CRITICAL/OS_EXIT_CRITICAL一共实现了三种实现方式,如下所示:[cpp] view plaincop

2014-06-17 09:32:36 734

转载 const和volatile

const和volatile放在一起的意义在于:(1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心;(2)另一个程序段则完全有可能修改,因此编译器最好不要做太激进的优化。“const”含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。“volatile”的含义是“请不要做没谱的优化,这个值可能变掉的”,而并非“你可以修

2014-06-15 14:40:22 548

转载 git commit简介

在用git来进行版本控制时,我需要执行git commit命令,将索引内容添加到仓库中。示例1:git commit  -m "提交的描述信息"如果我们这里不用-m参数的话,git将调到一个文本编译器(通常是vim)来让你输入提交的描述信息可能一天下来,你对工作树中的许多文档都进行了更新(文档添加、修改、删除),但是我忘记了它们的名字,此时若将所做的全部更新添加

2014-06-13 09:37:31 750

转载 git add

一、前言git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。二、基本git add 表示 add to index only files created or modified and not those deleted 我通常是通过git add 的形式把我们添加到索引库中,可以是文件也可

2014-06-13 09:36:47 611

转载 Python Split函数的用法总结

字符串的split用法说明:Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!!这里这样写的原因只是为了方便理解,仅此而已。由于敢接触Python,所以不保证以后还有没有其他用法,所以会在后面不断加入。。。1.按某一个字符分割,如‘.’1str = ('www.google.com')

2014-05-28 14:03:20 3253

转载 python中的深拷贝和浅拷贝理解

在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用。以下分两个思路来分别理解浅拷贝和深拷贝:利用切片操作和工厂方法list方法拷贝利用copy中的deepcopy方法进行拷贝1、利用切片操作和工厂方法list方法拷贝代码场景:有一个小伙jack,tom通过切片操作拷贝

2014-05-27 18:04:40 475

转载 vim行内移动光标

vim在同一行内跳转是操作最多的,而且vim提供了足够强大的跳转方法, 主要分为两类:一种是在单词的移动,一种是基于搜索的跳转。按单词移动我们知道,英文文档的主体是单词,通常用空白字符(包括空格、制表符和回车换行符)来分隔单词。vim中提供了许多命令来按单词移动。w 将光标右移一个字。光标停留在下一个字的字首位置。W 将光标右移一个字。光标停留在下一个字的字首位

2014-05-23 09:04:25 3636 2

原创 python随笔1(5.22)

1.如果在函数的开头写下字符串,它就会

2014-05-22 21:57:01 497

转载 #!/usr/bin/env python与#!/usr/bin/python的区别

脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找pytho

2014-04-22 20:41:30 419

转载 git push 的总结

$ git push ssh://[email protected]/rt4ls.git master // 把本地仓库提交到远程仓库的master分支中$ git remote add origin ssh://[email protected]/rt4ls.git$ git push origin master 这两个操作是等价的,第二个操作的第一行的意思是添加一个标记

2014-04-22 20:37:10 592

转载 python2和python3的区别

1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果。 Py3.1性能比Py2.5慢15%,还有很大的提升空间。 2.编码 Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:     >>> 中国 = 'china'     >>>

2014-04-15 14:09:00 399

原创 关于ldr、adr指令的总结

主要是区分三条指令: ldr r0, _start adr r0, _start ldr r0, =_start_start: nop其中:ldr r0, _start 的意思是将标号_start处内存中的数据(即机器码或数据)存放到r0寄存器中,是一条伪指令adr r0, _start的意思是将

2014-03-02 13:45:32 1102

原创 SPI、ADS1158、LTC1660调试过程

最近在调试CMC Demo板上的SPI接口,由于需要调试芯片以及板子上的外围电路等是否有问题,又加上对相关知识不是太熟悉,所以也调试了大概两周时间,特将调试过程记录下来。1、关于SPI SPI用的是查询的方式进行发送和接收数据,关于CMC上SPI 的配置主要是相位、极性、位宽、发送/接收FIFO的深度、波特率等的设置。另外比较重要的是驱动程序尤其是发送接收函数的编写。2、关于ADS11

2014-03-01 19:44:46 2718

原创 单链表反转C语言实现

typedef struct node{ int num; struct node *next;}Node,*pNode;pNode CreatLinkList(int a){ pNode p; pNode q; p = q = (pNode)malloc(sizeof(Node)); p->num = a; while (a--) { p->next = (

2014-03-01 19:19:12 2176

原创 通配符与正则表达式区别(二)

Explain 1:1、正则表达式是用来匹配字符串的,这个就不解释了2、通配符是用来通配的,也就是shell在做Pathname Expansion时用到的Explain 2:通配符,说白了一般只用于文件名匹配,它是由shell解析的。所谓的系统level的概念非常含糊,什么是系统level的?我们知道shell是一个命令解释器,它是内核的外壳,用于完成操作系统使用者与内核的沟

2014-03-01 10:19:41 726

原创 通配符与正则表达式区别(一)

通配符与正则表达式很容易混淆,首先要明白二者是不同的,个人感觉通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序,这些文本处理工具正是由于支持正则表达式才变得强大。通配符 [a-z]或[12]:匹配方括号中指定范围内的单个字符或方括号列出的其

2014-02-25 20:17:09 1240

转载 断言(ASSERT)的用法

断言(ASSERT)的用法  我一直以为assert仅仅是个报错函数,事实上,它居然是个宏,并且作用并非“报错”。  在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正

2014-02-23 18:47:27 580

转载 编程珠玑番外篇-C.正则表达式精义-1

很多天前和 zuola 聊天, 偶然提到正则表达式, zuola 说, 会正则表达式的都是牛人. 我说, 其实不难, 买本书看看就会了. 这几天, zuola 又在我博客上留言说会正则表达式才是真的程序员, 因此我想, 还是写篇比较浅显的教程, 让 zuola 同学快速成为牛人吧.对于普通人来说, 正则表达式是比较难的. 从我个人的体验来看也是一样. 这个难, 主要在于两方面: 1. 接受

2014-02-22 20:35:34 846

原创 Makefile 中:= ?= += =的区别

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE    VRE = “Hello World!”elseendififeq ($(OPT),define)    VRE ?= “Hello World! First!”endif

2014-02-22 14:04:45 532

转载 可重入和不可重入

重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果假设有这么个函数void fun(){//...这个函数对FLOAT寄存器进行操作}假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存

2014-02-15 15:46:22 535

原创 μcosii内核心跳的设计

近些天在学习μcosii内核的移植,基本上能正常工作,现在大概来梳理一下,已做备忘,主要是内核心跳这一块。1 首先在OS_CPU.H中做OS_TICKS_PER_SEC的宏定义,如#define OS_TICKS_PER_SEC        100表示内核一秒钟内有100个心跳2 心跳主要是用硬件定时器TIMER0来支持,所有要对TIMER0设置:    void Timer0Ini

2014-01-01 21:29:55 735

转载 uCOS任务堆栈的理解

堆栈作用的就是用来保存局部变量,从本质上讲也就是将CPU寄存器的值保存到RAM中。在uCOS中,每一个任务都有一个独立的任务堆栈。为了深入理解任务堆栈的作用,不妨分析任务从“出生”到“消亡”的整个过程,具体就是分析任务的建立,运行,挂起几种状态中任务堆栈的变化情况。  现在假设系统运行着一个由用户创建的用以完成打印工作的任务TPrint。TPrint最初通过OSTaskCreate()函数

2013-12-16 15:10:53 1107

转载 STMFD和LDMFD指令个人理解分析

LDM/STM指令主要用于现场保护,数据复制,参数传送等。STMFD指令STMFD  Rn{!},{reglist}{^}  STMFD SP!,{R0-R7,LR}对于这条指令伪代码的解释,网上是这么说的:SP = SP - 9×4;  address = SP;  for i = 0 to 7    Memor

2013-12-15 15:22:58 895

转载 S3C2440系统时钟

系统时钟MINI2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的晶振提供频率来运行,也就是说CPU,内存,UART等需要用到时钟频率的硬件都工作12MHz下,而S3C2440A可以正常工作在400MHz下,两者速度相差可想而知,就好比牛车和动车。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,其工作效率也很低,比如,我们电脑里面经常提到的超频

2013-12-10 20:09:55 656

最新STM32用户手册

最新的完整的STM32用户手册,通过该手册可以更好的在STM32上编程

2014-02-22

嵌入式linux移植教程

文章介绍了嵌入式Linux在移植过程中需要注意的事项以及移植的步骤

2013-09-28

ubuntu入门到精通

该文档以入门的程度介绍了有关ubuntu操作系统的基本知识,让初学者由浅入深的掌握ubuntu

2013-03-03

ARM指令码格式大全

这个文档中详细的介绍了常用的ARM指令码,可以帮助我们记忆

2013-03-03

ARM开发入门者读物

帮助ARM开发的初级者迅速入门,在了解嵌入式用途的基础上更好的掌握这门技术

2012-12-11

PLC考试复习试题填空题综合题解答题

给出了考试模板 一、填空题 1. PLC的存储器分两大部分,是 系统存储器 与 用户存储器 。 2. 高速计数器HC的寻址格式是 HC+高速计数器号 。 3. S7-200型PLC的定时器包括 TON 、 TOF 、 TONR 三种类型。

2011-04-17

空空如也

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

TA关注的人

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