自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ce123的技术博客

专注于嵌入式软件开发

  • 博客(437)
  • 资源 (24)
  • 收藏
  • 关注

原创 Linux下多任务间通信和同步-概述

Linux下进程间通信-概述Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的集合System V IPC(贝尔实验室)和socket的进程间通信机制(BSD)的优势.Unix进程间通信(IPC)方式包括管道,FIFO以及信号.System V进程间通信(IPC)包括System V消息队列,System V信号量以及System V共享内存区.Posix 进程间通信(IP

2013-10-07 10:16:49 3815 4

原创 linux下alias命令

linux下alias命令 在linux下经常要切换目录,比较麻烦,然后就想到了alias命令,利用alias可以把很长的命令变成任意我们喜欢的简短命令.将该命令的用法整理一下,便于以后查看方便.功能说明:设置指令的别名。语  法:alias[别名]=[指令名称]参  数:若不加任何参数,则列出目前所有的别名设置。举       例:root@czu:~/projects/myshell/srce

2013-10-05 23:54:58 2275

原创 在线C语言编译器/解释器

在线C语言编译器/解释器 本文介绍两个C语言在线解释器/编译器,这些工具可以提高代码片段检测方便的工作效率,并可以保证这些代码的正确性,而且还可以和别人一起编辑/分享之间的代码,这样可以共同分析代码并相互协助完成代码段的检查.1.Codepad Codepad(http://codepad.org/)是一个简单的在线IDE编译器,适用于团队协作工作,帮助代码生成一个简短的URL,这样就可以和其他人

2013-09-26 08:24:59 26196 1

原创 Vim winmanager文件浏览自动更新

Vim winmanager文件浏览自动更新 使用winmanger插件时发现其中引用的fileexplorer不能自动更新到当前文件夹,进行如下修改就OK啦.修改winfileexplorer.vim中的FileExplorer_Start()函数:function! FileExplorer_Start()let b:displayMode = "winmanager"call s:Edi

2013-09-24 20:59:50 2640

原创 linux的多任务编程-线程池

linux的多任务编程-线程池简介 在嵌入式系统环境下,由于系统资源和任务的特点,多线程成了实现多任务处理的重要方式.在一些常见的应用环境中,如Web服务器,Email服务器以及数据库服务器等都具有一个共同点:单位时间内必须处理很多并发的连接请求,但处理时间却相对较短.传统多线程方案中我们采用的服务器模型则是一旦接受到请求之后,即创建一个新的线程,由该线程执行任务.任务执行完毕后,线程退出,这就是

2013-09-24 13:39:14 3615 3

原创 改变Vim中注释的颜色

改变Vim中注释的颜色 Vim中注释的颜色非常暗,看的很吃力,非常不爽,如下所示:在/etc/vim/vimrc中增加如下一句:highlight Comment ctermfg=green guifg=green效果如下:

2013-09-20 12:14:14 3447 1

原创 windows下如何用wireshark抓本地回路抓包

windows下如何用wireshark抓本地回路抓包 心血来潮,想用wireshark抓取本地回路的测试包,结果发现怎么都抓不到127.0.0.1的tcp数据包,不管怎么看,都没有127.0.0.1的数据包。呕血弄了一早晨,发现如果是tcp客户端向别的IP通信wireshark都能正常截获,如果是本机则没有一点动静能截获到。  不甘心,网上搜搜本地回路用wireshark抓包的说法,才知道,原来

2013-09-17 17:29:31 13109

原创 Linux的多任务编程-线程

Linux的多任务编程-线程线程的基本概念 Linux操作系统很早就具备这些多进程功能了.但有时人们认为用fork()来创建一个新进程的代价还是太大,如在Web服务器中,通常采取的多进程方案是一旦接收到访问请求后,即创建一个新的进程,由该进程执行任务,当任务执行完毕后,该进程退出.如果有大量的请求在很短的时间中频繁的访问该服务器,那么服务器耗费在创建进程,销毁进程中的机时便十分可观. 线程的出现使

2013-09-16 22:00:25 3901 1

原创 深入浅出进程与线程的基本概念

深入浅出进程与线程的基本概念 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。  1.  计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。  2.  假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义

2013-09-16 13:04:14 3091 2

原创 Linux的多任务编程-进程

Linux的多任务编程-进程 进程是构成Linux系统应用的一块基石,它代表了一个Linux系统上的绝大部分活动,不管你是系统程序员,应用程序员,还是系统管理员,弄明白Linux的进程管理将使你"一切尽在掌握". 一个正在运行的程序(或者叫进程),是由程序代码,数据,变量(占用着系统内存),打开的文件(文件描述符)和一个环境组成.通常,Linux系统会让进程共享代码和系统库,所以在任何时刻内存里都

2013-09-16 09:15:35 5532

原创 Ubuntu下vim中ctags的配置方法

Ubuntu下vim中ctags的配置方法 ctags可以建立源码树的索引,使程序员在编程时能迅速定位函数,变量,宏定义等位置去查看原型.以下是在Ubuntu下vim中ctags的下载安装和配置过程:下载并安装ctags 在终端输入如下命令:apt-get install ctags建立源码索引 比如我经常需要查阅Linux的内核代码,而这些代码放在/root/linux-2.6.14目录下,那么

2013-09-16 07:23:28 7274

原创 Linux的多任务编程-基本概念

Linux的多任务编程-基本概念概述 当操作系统使用某种策略允许两个或更多进程并发共享一个CPU时,它称作多任务运行,或多道程序运行.在规定的时间片过期或某些事件发生前,一直执行某个进程.然后,操作系统切换到另一个进程.这种切换十分迅速,给人一种这些进程是同时执行的错觉.而事实上,同一时刻在一个CPU上只能激活一个进程.这种进程间的切换在所有进程完成前一直进行.并发共享策略决定何时切换进程.该策略

2013-09-16 06:36:17 4968 2

原创 CME ERROR's

CME ERROR'sCME ERROR's (GSM Equipment related codes) Error DescriptionCME ERROR: 0Phone failureCME ERROR: 1No connection to phoneCME ERROR: 2Phone adapter link reservedCME ERROR: 3Operation not allowe

2013-09-15 16:22:09 7528

原创 警告: 隐式声明与内建函数‘exit’不兼容 [默认启用]

警告: 隐式声明与内建函数‘exit’不兼容 [默认启用] 最近在学习linux下的多任务编程,用到exit等函数时,经常出现该警告,查找资料后发现,原因其实很简单,没有把stdlib.h头文件包含进来,加上就没问题了.以此类推,编译后出现警告:隐式声明与内建函数’XXX’不兼容的问题所在都是因为没有包含相应的头文件,加上就OK.类似的问题:警告: 隐式声明与内建函数‘strlen’不兼容 [默认

2013-08-24 10:14:38 9983

原创 Ubuntu启动进入initramfs错误的解决办法

Ubuntu启动进入initramfs错误的解决办法[问题产生] 打开机器,系统启动,一下子屏蔽闪出很多不应该看到的文字,最后停留在initramfs这里,这时如果运行exit可以进入系统,则说明rootdelay时间太短了.[解决办法] 修改grub菜单中的相应的Ubuntu引导命令,在启动时的grub中操作方法可以看屏幕的提示:linux /boot/vmlinuz-********-gene

2013-08-24 10:13:45 6721

原创 如何在SourceInsight中选中匹配的大括号中的内容

如何在SourceInsight中选中匹配的大括号中的内容 要分析的代码很长,多个for,if等分析嵌套在一起,代码有点乱,找到了这个分支的头,却不知道尾在哪,找到了尾却不知道哪是开头,在网上找了一下资料,发现SourceInsight有一个功能可以实现选中匹配大括号中的内容,分析比较长分支的代码非常有用. 在要进行匹配的第一个大括号前面双击,如下图,想要选中if后"{……}"的范围,在if后的第

2013-08-20 18:51:42 11220

原创 linux终端开发环境的配置

linux终端开发环境的配置 在终端下开发linux程序一般是通过ssh连接到安装有ssh服务器的linux(这里是Ubuntu 11.04)上,ssh客户端有很多,比如SecureCRT,开发工具一般使用vim,下面我们介绍如何搭建开发环境:Ubuntu 11.10 系统启动默认进入终端具体解决的步骤是这样的:vim /etc/default/grub修改GRUB_CMDLINE_LINUX_D

2013-08-07 19:45:59 5414 1

原创 面向报文(UDP)和面向字节流(TCP)的区别

本文简要分析了面向报文(UDP)和面向字节流(TCP)的区别,通俗易懂,值得一读!

2013-07-19 08:56:53 39478 5

原创 TCP的推送比特PSH(Push)

TCP的推送比特PSH(Push) PSH是TCP报头中的一个标志位,发送方在发送数据的时候可以设置这个标志位.当两个应用程序进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应.在这种情况下,TCP可以使用推送(push)操作.这时,发送端TCP将推送比特PSH置为1,并立即创建一个报文段发送出去.接收TCP收到推送比特置1的报文段,就尽快地(即"推送向前")交付

2013-07-19 08:52:44 11986

原创 linux内核中send与recv函数详解

主要讲解了send与recv函数的参数和基本原理.

2013-07-17 16:02:14 5405

原创 C语言中的三字母词(trigraph)

本文介绍了ANSI C标准中的三字母词(trigraph),包括三字母词的简单定义,作用,编程中可能会犯的一些错误,如何编译等,最后还留了一个简单的问题。

2013-07-07 17:04:34 4707 1

原创 详解C语言的类型转换

详解C语言的类型转换1.自动类型转换字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参

2013-06-17 00:41:13 15743 8

原创 C语言中的转义字符

C语言中的转义字符简介 在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、+和空格符等都是可显示字符。 另一类字符却没有这种特性。它们或者在键盘上找不到对应的一个键(当然可以用特殊方式输入),或者当按键以后不能显示键面上的字符。其实,这类字符是为控制作用而设计的,故称为控制字符。 在C语言中,

2013-06-11 10:35:11 33022

原创 国际C语言混乱代码大赛代码赏析(一)

国际C语言混乱代码大赛代码赏析(一) 近段时间在看《C专家编程》,里面提到国际C语言混乱代码大赛(The International Obfuscated C Code Contest IOCCC)。IOCCC有许多令人捧腹之处,不管你是自己编写还是时候分析获胜者的代码,都能够以令人惊讶的方式扩展你的知识。通常有10种类型的获胜者:“对规则的最奇怪的滥用”,“最具创意的源代码布局”,“最简单的单行

2013-06-11 09:40:29 11732 14

原创 linux内核中memcpy和memmove函数的区别和实现

linux内核中memcpy和memmove函数的区别和实现Kernel version:2.6.32CPU architecture:ARMAuthor:ce123(http://blog.csdn.net/ce123)嵌入式开发交流群:280352802,欢迎您的加入!memcpy是把src指向的对象中的size个字符拷贝到dest所指向的对象中,返回指向结果对象的指针.   memmove也

2013-06-03 08:20:58 14676 3

原创 浅谈编程语言的类型系统

浅谈编程语言的类型系统 类型系统(type system)是一门编程语言最核心也是最基础的部分。无论该语言基于何种编程范式,都必须在开天辟地之初首先对类型系统作出明确的定义。这是因为,编程语言虽然五花八门,千奇百怪,但是归根结底,编程语言最终的目标,本质上无非是回答两个问题:如何表示信息;如何处理信息。 无论是面向过程的编程语言、面向对象的编程语言、函数式编程语言、并行编程语言或者其他任何千奇百怪

2013-05-28 09:02:15 5201 4

原创 C语言中的#,##

C语言中的#,## 今天在分析一份源码的时候遇到了如下代码:#define CASE(x,y) case x: _bsd_setlasterror(anApplInstance, BSD_ ## y); break觉得其中的##很有意思,于是就将这个知识点整理一下。#和##都是预处理指令,我们先看#。 #用来把参数转换成字符串,请看下面的两个例子。例子一:#include #include

2013-05-25 15:59:41 17586 5

原创 深入浅出C语言中的柔性数组

深入浅出C语言中的柔性数组 在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如:typedef struct test { int a; double b; char *p; }; p指向字符串。这种方法造成字符串与结构体是分离的,不利

2013-05-25 14:46:03 19992 2

原创 Source Insight中文注释间隔过大的解决办法

Source Insight中文注释间隔过大的解决办法 修改注释的字体即可,修改步骤如下:OPtion->Style Properties,在左边的Style Name中选中Comment,修改Font Name为自己想要的即可.点击Done退出.

2013-05-21 20:10:18 5359

原创 华为软件编程规范学习(十一)--代码测试、维护

华为软件编程规范学习(十一)--代码测试、维护11-1:单元测试要求至少达到语句覆盖11-2:单元测试开始要跟踪每一条语句,并观察数据流及变量的变化11-3:清理、整理或优化后的代码要经过审查及测试11-4:代码版本升级要经过严格测试11-5:使用工具软件对代码版本进行维护11-6:正式版本上软件的任何修改都应有详细的文档记录其他11-1:发现错误立即修改,并且要记录下来11-2:关键的代码在汇编

2013-05-13 22:52:57 3124

原创 华为软件编程规范学习(十)--代码编辑、编译、审查

华为软件编程规范学习(十)--代码编辑、编译、审查10-1:打开编译器的所有告警开关对程序进行编译10-2:在产品软件(项目组)中,要统一编译开关选项10-3:通过代码走读及审查方式对代码进行检查说明:代码走读主要是对程序的编程风格如注释、命名等以及编程时易出错的内容进行检查,可由开发人员自己或开发人员交叉的方式进行;代码审查主要是对程序实现的功能及程序的稳定性、安全性、可靠性等进行检查及评审,可

2013-05-09 15:30:10 3428

原创 华为软件编程规范学习(九)--质量保证

华为软件编程规范学习(九)--质量保证9-1:在软件设计过程中构筑软件质量9-2:代码质量保证优先原则    (1)正确性,指程序要实现设计要求的功能。    (2)稳定性、安全性,指程序稳定、可靠、安全。    (3)可测试性,指程序要具有良好的可测试性。    (4)规范/可读性,指程序书写风格、命名规则等要符合规范。    (5)全局效率,指软件系统的整体效率。    (6)局部效率,指某个

2013-05-09 15:28:59 3925

原创 华为软件编程规范学习(八)--可测性

华为软件编程规范学习(八)--可测性8-1:编程时要经常注意代码的效率说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。8-2:在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效

2013-05-06 23:34:33 2613

原创 华为软件编程规范学习(六)--函数、过程

华为软件编程规范学习(六)--函数、过程6-1:对所调用函数的错误返回码要仔细、全面地处理6-2:明确函数功能,精确(而不是近似)地实现函数设计6-3:编写可重入函数时,应注意局部变量的使用(如编写C/C++语言的可重入函数时,应使用auto即缺省态局部变量或寄存器变量)说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。6-4:编写

2013-05-06 09:37:06 3463

原创 华为软件编程规范学习(七)--可测性

华为软件编程规范学习(七)--可测性7-1:在同一项目组或产品组内,要有一套统一的为集成测试与系统联调准备的调测开关及相应打印函数,并且要有详细的说明说明:本规则是针对项目组或产品组的。7-2:在同一项目组或产品组内,调测打印出的信息串的格式要有统一的形式。信息串中至少要有所在模块名(或源文件名)及行号说明:统一的调测信息格式便于集成测试。7-3:编程的同时要为单元测试选择恰当的测试点,并仔细构造

2013-05-05 23:12:41 3985

原创 华为软件编程规范学习(五)--变量、结构

华为软件编程规范学习(五)--变量、结构5-1:去掉没必要的公共变量说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度。5-2:仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。5-3:明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及

2013-05-05 16:59:25 3292

原创 华为软件编程规范学习(四)--可读性

华为软件编程规范学习(四)--可读性4-1:注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。示例:下列语句中的表达式word = (high if ((a | b)&& (a & c))           (2)if ((a | b) 如果书写为:high a | b && a& ca | b 由于

2013-05-05 12:24:23 3001

原创 华为软件编程规范学习(三)--标识符命名

华为软件编程规范学习(三)--标识符命名3-1:标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解 说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。示例:如下单词的缩写能够被大家基本认可。temp 可缩写为  tmp  ;flag 可缩写为  flg  ;statistic 可缩写为  s

2013-05-05 10:47:24 3765

原创 华为软件编程规范学习(二)--注释

华为软件编程规范学习(二)--注释2-1:一般情况下,源程序有效注释量必须在20%以上 说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2-2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,

2013-05-05 09:26:05 5062

原创 华为软件编程规范学习(一)--排版

软件编程规范学习(一)--排版1-1:程序块要采用缩进风格编写,缩进的空格数为4个说明:对于由开发工具自动生成的代码可以有不一致。1-2:相对独立的程序块之间、变量说明之后必须加空行示例:如下例子不符合规范。int ni;if (!valid_ni(ni)){ ... // program code}repssn_ind = ssn_data[index].repssn_index

2013-05-05 08:59:52 5206

dlt-viewer_2.20.0

GENIVI DLT Viewer,已经编译好了,可以直接使用,结合博客一起使用. https://ce123.blog.csdn.net/article/details/108314216

2020-09-21

U-Boot详细移植过程.doc

U-Boot详细移植过程 配合文档https://ce123.blog.csdn.net/article/details/104141326看

2020-05-24

ARM9嵌入式Linux开发-LCD

ARM9嵌入式Linux开发-LCD https://ce123.blog.csdn.net/article/details/104141326

2020-04-26

adc_ts.rar

ARM9嵌入式Linux开发-ADC和触摸屏 博客地址:https://blog.csdn.net/ce123_zhouwei/article/details/105776841

2020-04-26

ARM9嵌入式Linux开发-I2C接口

ARM9嵌入式Linux开发-I2C接口,文档地址: https://ce123.blog.csdn.net/article/details/104141326

2020-04-05

ARM9嵌入式Linux开发-通用异步收发器UART

ARM9嵌入式Linux开发-通用异步收发器UART,文章地址 https://ce123.blog.csdn.net/article/details/105328492

2020-04-05

ARM9嵌入式Linux开发-系统时钟和定时器

ARM9嵌入式Linux开发-系统时钟和定时器的demo 结合博客一起看https://ce123.blog.csdn.net/article/details/105172923

2020-03-29

ARM9嵌入式系统学习-中断体系结构

ARM9嵌入式系统学习 中断体系结构,结合博客一起看,博客的地址为 https://ce123.blog.csdn.net/article/details/105027063

2020-03-22

ARM9嵌入式系统学习-NADN FLASH控制器源码

ARM9嵌入式系统学习 NADN FLASH控制器的源码,结合博客一起看,博客的地址为 https://ce123.blog.csdn.net/article/details/104872847

2020-03-15

简易堆分配器

自己实现了简易堆分配器,经过测试可以使用.如果大家在使用的过程中发现问题,还请告诉我.

2014-03-21

linux下多线程文件服务器

linux下多线程文件服务器 http://blog.csdn.net/ce123_zhouwei/article/details/17066313文章的附件

2013-12-24

AMR音频文件格式分析(AMR音频文件)

AMR音频文件格式分析(AMR音频文件)

2013-12-12

winmanager

Vim的winmanager插件,vim主页打不开,上传上来,免费供大家下载

2013-09-21

taglist_45.zip

Vim的TagList插件,vim主页打不开,上传上来,免费供大家下载

2013-09-21

GeekOSproject3

GeekOS的project3,结合博客中有一篇文章对其进行了详细分析,希望对大家有帮助(http://blog.csdn.net/ce123/article/details/6581275#comments).

2013-03-20

arm栈帧回溯

arm栈帧回溯,自己实现arm-linux下的栈帧回溯,没有使用glibc的backstrace()和backtrace_symbols(),可以很好的调试segment fault问题。

2013-02-13

图解__arch_copy_from_user函数

图解__arch_copy_from_user函数,可以很清楚的数据的拷贝过程。

2013-01-08

图解ARM-Linux的启动全过程_修正版

图解ARM-Linux的启动全过程:内核自解压阶段——>内核引导阶段——>内核初始化阶段——>BusyBox初始化阶段。

2012-05-04

图解ARM-Linux的启动全过程

图解ARM-Linux的启动全过程:从内核的自解压到引导阶段,再到内核初始化,自后是文件系统的初始化。

2012-05-04

图解U-Boot:第二阶段源码分析

图解U-Boot:第二阶段源码分析(清晰)

2012-03-04

S3C2440时钟详细描述

S3C2440时钟详细描述 S3C2440时钟详细描述

2011-03-15

基于ARM和Linux的嵌入式远程视频监控系统设计.pdf

基于ARM和Linux的嵌入式远程视频监控系统设计

2011-03-15

Win32汇编语言简明教程

Win32汇编语言简明教程(适合反向工程和反病毒方向读者)

2011-01-17

grub4dos初级教程图文版

grub4dos初级教程图文版,非常适合初学者

2011-01-17

空空如也

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

TA关注的人

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