自定义博客皮肤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)
  • 收藏
  • 关注

原创 #pragma comment

#pragma comment一.简介#pragma comment( comment-type ,["commentstring"] )comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一.commentstring是一个为comment-type提供附加信息的字符串.二.参数使用说明compiler:放置编译器的版本或者名

2013-04-29 17:27:59 2562

原创 控制linux动态链接库导出函数

控制linux动态链接库导出函数 在linux中,我们可以通过-fvisibility=default|internal|hidden|protected来控制导出函数。 在GCC帮助文档 -fvisibility=default|internal|hidden|protected参数下有这样一段描述:a superior solution made possible by this option

2013-04-29 14:05:10 3036

原创 local function definitions are illegal解决办法

local function definitions are illegal解决办法 改动了一下程序,出现了好多"local function definitions are illegal"错误. 出现这个错误的原因就是少了一个右大括号“}”,报错的个数和这个函数的位置有关,好像也和作用域有关,或者和它的使用频度有关,反正报错的个数不太一样,是主应用程序的一个函数少了一个“}”. 解决方法:如果

2013-04-29 14:01:43 87715 2

原创 基于状态机编程思想的串口接收程序

基于状态机编程思想的串口接收程序 状态编程思想的理论知识可以参考之前写的一篇博客(http://blog.csdn.net/ce123/article/details/8222673),本文介绍一个例子--串口接收.状态机的状态定义如下:typedef enum{ IS_NULL = 0, IS_START, //已接收到起始符号,准备接收长度 IS_LEN, //已经接收到长度,准

2013-04-29 13:18:18 6517 1

原创 VS2012中的R6002 - floating point support not loaded错误

VS2012中的R6002 - floating point support not loaded错误一.问题描述 由于项目的需要,最近在VS2012中调试算法.出问题的代码片段如下(由printf函数引起的runtime error):fprintf(fpWrite2,"里程: %010f ",stpSample->buf[12] + stpSample->buf[13] * 256 + s

2013-04-27 15:49:06 14574

原创 好久没有更新博客了

好久没有更新博客了 2012年2月19日踏上去深圳的车,20日下午到公司,21日开始上班.接触了一个新的领域(MEMS传感器),这一个月来一直忙这个事,最近才有点头绪,好久没有更新博客了.接下来的一段时间会好好整理一下最近接触的MEMS传感器,并继续深入研究嵌入式底层的一些基本原理,坚持自己的嵌入式开发之路.

2013-03-31 22:33:10 2014 2

原创 linux内核中的信号机制--从用户层到内核层

linux内核中的信号机制--从用户层到内核层Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123)1.简介 如果进程要处理某一信号,那么要在进程中注册该信号。注册信号主要用来确定信号值及进程针对该信号值的动作之间的映射关系,即进程将要处理哪个进程和该信号被传递给进程时,将执行何种操

2013-02-23 08:17:22 5045 3

原创 linux内核中的信号机制--信号处理

linux内核中的信号机制--信号处理Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 当进程被调度时,会调用do_notify_resume()来处理信号队列中的信号。信号处理主要就是调用sighand_struct结构中对应的信号处理函数。do_notify_resume(

2013-02-21 22:04:59 14447 7

原创 linux内核中的信号机制--信号发送

linux内核中的信号机制--信号发送Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 应用程序发送信号时,主要通过kill进行。注意:不要被“kill”迷惑,它并不是发送SIGKILL信号专用函数。这个函数主要通过系统调用sys_kill()进入内核,它接收两个参数: 第一个

2013-02-07 10:30:28 6382

原创 linux内核中的信号机制--信号机制的管理结构

linux内核中的信号机制--信号机制的管理结构Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 信号只是一个数字,数字为0-31表示不同的信号,如下表所示。 编号 信号名 默认动作 说明 1 SIGHUP 进程终止 终端断开连

2013-02-07 10:21:13 3789

原创 linux内核中的信号机制--一个简单的例子

linux内核中的信号机制--一个简单的例子Author:ce123(http://blog.csdn.net/ce123) 信号机制是类UNIX系统中的一种重要的进程间通信手段之一。我们经常使用信号来向一个进程发送一个简短的消息。例如:假设我们启动一个进程通过socket读取远程主机发送过来的网络数据包,此时由于网络因素当前主机还没有收到相应的数据,当前进程被设置为可中断等待状态(TASK_IN

2013-02-04 09:57:37 4625

原创 linux内核中的likely和unlikely

linux内核中的likely和unlikelyKernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123)GCC version:arm-linux-gcc-3.4.1 看内核时经常遇到if(likely( )){}或是if(unlikely( ))这样的语句,不甚了解,例如(选自ker

2013-01-11 16:23:56 3578

原创 linux内核中的文件描述符(六)--fd的分配--expand_files

linux内核中的文件描述符(六)--fd的分配--expand_filesKernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 我们先贴出expand_files函数的源码:int expand_files(struct files_struct *files, int nr)

2013-01-11 15:34:48 5382

原创 linux内核中的文件描述符(五)--fd的分配--locate_fd

linux内核中的文件描述符(五)--fd的分配--locate_fdKernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 继续上一篇博客的内容,分析另一个文件描述符fd的分配函数locate_fd。dup系统调用用于复制一个文件描述符对应的文件,返回值是个文件描述符。在前面的文章

2013-01-10 13:02:15 4677

原创 linux内核中的文件描述符(四)--fd的分配--get_unused_fd

linux内核中的文件描述符(四)--fd的分配--get_unused_fdKernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 在linux内核中主要有两个函数涉及到文件描述符的分配:get_unused_fd和locate_fd。本文主要讲解get_unused_fd,将会在

2013-01-10 09:23:06 7958 2

原创 linux内核中的文件描述符(三)--fd的回收

linux内核中的文件描述符(三)--fd的回收Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123)1.close函数上图说明了close(fd)的执行过程,主要包括两部分:释放文件描述符fd,关闭文件file。//fs/open.casmlinkage long sys_clo

2013-01-10 08:29:50 13974

原创 linux内核中的文件描述符(二)--socket和文件描述符

linux内核中的文件描述符(二)--socket和文件描述符Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) socket和文件系统紧密相关,我们可以通过文件系统的open、read、write和close等操作socket。下面是一个简单的例子。/*************

2013-01-09 10:55:59 8999 1

原创 linux内核中的文件描述符(一)--基础知识简介

linux内核中的文件描述符(一)--基础知识简介Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) 作为文件的使用者,进程理所当然的要将所使用的文件记录于自己的控制块中,也就是task_struct。另外,由于进程所对应的程序也是一个文件,因此进程控制块还必须记录这个文件的相关

2013-01-08 16:31:17 6899 1

原创 linux内核中的copy_to_user和copy_from_user(二)—图解__arch_copy_from_user

linux内核中的copy_to_user和copy_from_user(二)—图解__arch_copy_from_userKernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123) __arch_copy_from_user函数实现数据的拷贝,当地址没有按4字节对齐,拷贝数据时需要进

2013-01-08 16:15:14 8754 1

原创 linux内核中的copy_to_user和copy_from_user(一)

linux内核中的copy_to_user和copy_from_user(一)Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.csdn.net/ce123)1.copy_from_user 在学习Linux内核驱动的时候,经常会碰到copy_from_user和copy_to_user这两个函数,设备驱动程

2013-01-06 19:45:53 65018 4

原创 ARM中的预取命令pld的使用

ARM中的预取命令pld的使用Kernel version:2.6.14CPU architecture:ARM920T 最近在分析ARM Linux的copy_from_user,主要功能由__arch_copy_from_user实现,该函数定义在linux/arch/arm/lib/uaccess.S文件中,使用汇编实现,部分源码如下:ENTRY(__arch_copy_from_user)

2013-01-06 10:07:16 14773 12

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

警告: 隐式声明与内建函数‘strlen’不兼容 [默认启用] 添加string.h头文件即可解决问题。strlen原型是在这里声明的。此类问题的解决方法相同。

2013-01-03 22:05:49 10813

原创 linux内核中的get_user和put_user

linux内核中的get_user和put_user内核版本:2.6.14CPU平台:arm嵌入式开发交流群:289195589,欢迎加入! 在内核空间和用户空间交换数据时,get_user和put_user是两个两用的函数。相对于copy_to_user和copy_from_user(将在另一篇博客中分析),这两个函数主要用于完成一些简单类型变量(char、int、long等)的拷贝任务,对于一

2013-01-03 21:35:04 33482

原创 glibc中的printf如何输出到串口

glibc中的printf如何输出到串口内核版本:2.6.14glibc版本:2.3.6CPU平台:arm嵌入式开发交流群:289195589,欢迎加入! printf的输出不一定是串口,也可以是LCD,甚至是文件等,这里仅以输出到串口为例。本文分析了printf和文件描述符0、1和2以及stdout、stdin和stderr的关系,通过这篇文章可以知道文件描述符0、1和2为什么对应着stdout

2013-01-03 10:36:00 5394

原创 linux内核中的IS_ERR

linux内核中的IS_ERR()、PTR_ERR()和ERR_PTR()在看内核源码的时候,经常会遇到IS_ERR,比如在 linux/arch/arm/kernel/sys_arm.c中asmlinkage int sys_execve(char __user *filenamei, char __user * __user *argv, char __user * __user *

2013-01-02 13:14:44 16375 3

原创 linux内核中的typeof

linux内核中的typeof内核版本:2.6.14嵌入式开发交流群:289195589,欢迎加入! 今天分析内核时又看到了typeof,只知道它大概是返回变量的类型,后来上网查了下发现这个关键字在linux中用的非常多。如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp)返回的是exp的数据类型大小,那么typeof(exp.)返回的就是exp的数据类型。下面是linux内核

2013-01-01 23:30:09 3946

原创 arm中的armeb(armbe)和armel(armle)

arm中的armeb(armbe)和armel(armle)ARMEB = ARM EABI Big-endian ,也有称为ARMEB     #大端字节序 ARMEL = ARM EABI Little-endian,也有称为ARMLE    #小端字节序EABI = Embedded Application Binary Interface

2013-01-01 16:52:54 9616 3

原创 linux内核中的dup系统调用

linux内核中的dup系统调用内核版本:2.6.14嵌入式开发交流群:289195589,欢迎加入! dup系统调用的服务例程为sys_dup函数,定义在fs/fcntl.c中。sys_dup()的代码也许称得上是最简单的之一了,但是就是这么一个简单的系统调用,却成就了linux系统最著名的一个特性:输入/输出重定向。sys_dup()的主要工作就是用来“复制”一个打开的文件号,并使两个文件号

2012-12-31 08:16:03 6396

原创 linux内核中的fastcall和asmlinkage宏

linux内核中的fastcall和asmlinkage宏内核版本:2.6.14嵌入式开发交流群:289195589,欢迎加入! 在linux内核中我们都会经常见到FASTCALL和armlinkage,它们各有什么不同呢?下面我们来具体分析一下。 在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢?对x86比较了解的话,应该知道这些函数参数和函数内部局部变

2012-12-31 08:12:19 8700

原创 linux-2.6.14移植到S3C2440

linux-2.6.14移植到S3C2440嵌入式开发交流群2:289195589,欢迎加入! 现在应该很少使用2.6.14的内核了,但由于项目需要,最近移植了2.6.版本的内核到S3C2440上,并移植了CS8900网卡驱动(网卡驱动移植参考http://blog.csdn.net/ce123/article/details/8424399)。之所以移植网卡驱动,是因为yaffs2格式的文件系统

2012-12-31 08:06:54 2366

原创 linux内核中的__read_mostly变量

linux内核中的__read_mostly变量内核版本:2.6.14嵌入式开发交流群:289195589,欢迎加入!在阅读socket源码的时候,有如下一句(net/socket.c):static struct vfsmount *sock_mnt __read_mostly;感觉__read_mostly很奇怪,就深入分析了一下。__read_mostly原语将定义为存放在.data.rea

2012-12-25 09:33:11 9733

原创 linux-2.6.14挂载NFS文件系统

linux-2.6.14挂载NFS文件系统NFS服务器配置系统平台: VMware7+Ubuntu 11.10安装NFS:  #apt-get install nfs-kernel-server  打开/etc/exports文件,在末尾加入:  /home/nfs *(rw,sync,no_root_squash)  注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义, 各

2012-12-24 12:59:41 3489 1

原创 mount_devfs_fs(): unable to mount devfs, err: -2

mount_devfs_fs(): unable to mount devfs, err: -2内核版本 2.6.14交叉编译器 arm-linux-gcc 3.4.1错误: Freeing init memory: 92K Warning: unable to open an initial console. Failed to execute /linuxrc.  Attempting de

2012-12-24 12:30:56 3373 2

原创 BusyBox1.1.0编译错误

BusyBox1.1.0编译错误为了和linux2.6.14对应起来,选用了BusyBox1.1.0,交叉编译器为arm-linux-gcc3.4.1。编译BusyBox时出现如下错误:root@czu:~/桌面/socket/busybox-1.1.0# makemake -C /root/桌面/socket/busybox-1.1.0 \        top_srcdir=/root/桌面/

2012-12-23 09:27:36 2660

原创 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)内核版本 2.6.14处理器平台 S3C2440问题 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)解决方案下载和内核一样老的ya

2012-12-22 15:51:21 11953

原创 linux-2.6.14移植:NET: Registered protocol family 1卡住

linux-2.6.14移植:NET: Registered protocol family 1卡住修改好内核源码,并增加了yaffs源码,开始make,出现如下错误:U-Boot 1.1.6 (Mar 21 2012 - 07:03:29)DRAM:  64 MBFlash:  2 MBNAND:  256 MiB*** Warning - bad CRC or NAND, using defa

2012-12-19 23:28:09 5110

原创 linux内核编译错误:error: read-only variable '__r2' used as 'asm' output

linux内核编译错误:error: read-only variable '__r2' used as 'asm' output内核版本:2.6.14交叉编译器:arm-linux-gcc 4.3.3错误:arch/arm/mm/alignment.c: In function 'proc_alignment_write':arch/arm/mm/alignment.c:119: error:

2012-12-19 20:24:45 4390

原创 make xconfig无法使用

make xconfig无法使用 由于项目需要,需要移植linux-2.6.14版本的内核,PC机上的linux是Ubuntu11.04,在使用make xconfig编译内核时出现如下错误:root@czu:~/桌面/socket/linux-2.6.14# make xconfig  HOSTCXX scripts/kconfig/qconf.oIn file included from sc

2012-12-19 20:11:53 3093

原创 warning:ISO C90 forbids mixed declarations and code

warning:ISO C90 forbids mixed declarations and code变量定义之前任何一条非变量定义的语句(重视:语句是会带分号的)都会引起这个警告! 将非变量的定义移到变量定义之后 即可,也就是变量的声明 必须在执行语句之前。

2012-12-14 18:47:21 10496

原创 基于C语言的状态机实现技术

基于C语言的状态机实现技术嵌入式开发交流群280352802,欢迎加入!一、简介 有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。有限状态机(FSM)可以

2012-12-03 16:46:09 7182 1

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

grub4dos初级教程图文版

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

2011-01-17

空空如也

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

TA关注的人

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