- 博客(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
2020-09-21
ARM9嵌入式Linux开发-LCD
2020-04-26
adc_ts.rar
2020-04-26
ARM9嵌入式Linux开发-I2C接口
2020-04-05
ARM9嵌入式Linux开发-通用异步收发器UART
2020-04-05
ARM9嵌入式Linux开发-系统时钟和定时器
2020-03-29
ARM9嵌入式系统学习-中断体系结构
2020-03-22
ARM9嵌入式系统学习-NADN FLASH控制器源码
2020-03-15
linux下多线程文件服务器
2013-12-24
GeekOSproject3
2013-03-20
arm栈帧回溯
2013-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人