- 博客(141)
- 资源 (4)
- 收藏
- 关注
原创 选择法排序
#include /** 选择法:*/void Select(int A[ ],int n){ int i,j,k,temp; for(i = 0;i { k = i; for(j = (i + 1);j if(A[j]
2013-04-12 22:30:13 1136
原创 冒泡法排序
#include /** 冒泡法:* 如果有n个数,要进行n-1次比较,第j次比较中需要进行n-j次两两比较*/void Bubble(int A[ ],int n){ int i,j,temp; for(j = 0;j for(i = 0;i if(A[i] > A[
2013-04-12 22:14:24 1010
原创 数组求和问题
题目:给定一个整数序列A1,A2,…An,序列长度为n,其中的证书可能为负数, 求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大,并输出最大的和。算法1:复杂度O(n^2)#include int MaxSeqSum(const int A[],int N){ int s1,s2,i,j; s1 = s2
2013-04-12 21:14:50 1135
原创 printf执行顺序
注:原题在《程序员面试宝典》第三版 以下代码的输出结果是什么?#include int main(){ int arr[] = {6,7,8,9,10}; int *ptr = arr; *(ptr++) += 123; printf("%d,%d\n",*ptr,*(++ptr)); return 0;} 答案:8
2013-04-12 18:10:07 1558
原创 2013CVT实习面试
我的处女面:2013/03/30 下午2点 ,CVT实习面试,很惨的被结束掉。万万没想到,连第一面都被刷掉,失落感掉的满地都是。 无论如何,写篇日结当作总结吧。 CVT公司(广州视源),半年前就听说过这个公司招聘的时候刷人刷的挺狠的,但是觉得自己的实力应该不至于差到第一面就被刷掉。CVT招聘流程是这样子的,先网测,其中网测包括行测+技术测(如果是技术职位的话),然后就
2013-03-21 22:33:45 1790
转载 C语言中如何计算结构体的大小
作者:曾宏安,华清远见嵌入式学院高级讲师。运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。C语言中的构造数据类型有三种:数组、结构体和共用体。数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上
2013-03-21 17:21:10 1160
原创 判断一个数是否为素数
整数 m是素数的条件: 除1 和 m外,没有其它因数。#include using namespace std;#include int main(){ long m; cout cin >> m ; double sqrtm = sqrt(m) ; //函数sqrt是double类型 for
2013-03-10 19:34:00 1396
原创 输入二进制数字串,转换成十进制正整数
#include int main(){ int Dec = 0 ; char ch; printf ("Input binary number:\n"); do { ch = getchar(); //首先获得第一个字符 if(ch !='0' && ch !
2013-03-10 19:13:22 2595 4
原创 找出数组里面元素出现次数最多的问题
/* 问题: 在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。 设计一个算法,找出出现次数最多的数字。*/ #includevoid search(int a[],int len){ int i,index,max = 0; int temp[1000] = {0}; //定义一
2013-03-09 10:49:30 5589 1
原创 守护进程
守护进程守护进程概述: 守护进程(Dameon)是Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种人物或者等待处理某些发生的事件。守护进程常在系统引导装入时启动,在系统关闭时终止。Linux系统中有很多守护进程,如:作业规划进程crond、打印进程lqd 等(这里的结尾字母 d 就是Dameon 的意思)。 一般的
2013-03-06 19:26:08 1345
原创 exit()与_exit()的区别
从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()函数在调用exit 系统调用前要检查文件的打开情况,把文件缓冲区中的内容写回文件。也就是图中的“清理I/O缓冲”。 所需头文件: e
2013-03-06 16:59:20 21533 5
原创 堆、栈、静态区
Linux 中的进程主要包括3个段,分别为“数据段”、“代码段”、“堆栈段”。 数据段:存放的数据为全局变量、常数以及动态数据分配的数据空间(如malloc 函数分配的空间)等。 代码段:存放的是程序代码数据。 堆栈段:存放的是子程序返回地址、子程序的参数以及程序的局部变量。 在C/C++编译的程序占用的内存分为以下几个部分:(1)、栈(stack)
2013-03-05 21:26:01 1594
原创 枚举变量的大小是多少?
在《C语言深度剖析》这本书中留有一个问题,枚举变量的大小是多少?1、大家猜一下下面这段程序红色部分输出的结果是多少?2、在printf(char *fmt.....)函数里,如需打印枚举变量里的某个域值如何表示枚举变量里面的成员? #include int main(){ enum Color { GREEN = 1,
2013-02-24 20:27:16 20033 5
原创 Root-NFS: Unable to get nfsd port number from server, using default
今晚遇到一个很奇怪的问题,TQ2440开发板的nfs系统突然启动不了了,前几天一直都是这么用,一直没有发生过今晚那么特殊的情况,下面是开发板的启动信息。 Root-NFS: Unable to get nfsd port number from server, using defaultLooking up port of RPC 100005/1 on 192.168.0.105
2013-01-28 23:01:00 8986 9
原创 并发字符设备驱动程序分析(二)
这是一个考虑了并发与竞态的字符驱动,同样也是利用内存作为字符设备,来编写一个字符驱动,该驱动没有涉及任何具体的硬件,废话少说,先上代码。运行环境:TQ2440开发板,内核版本2.6.30.4开发环境:Window下的Source Insight以及PC机上的红帽企版5虚拟机实验环境前提条件:拥有一个制作好的NFS文件系统 /*************************
2013-01-28 22:25:58 2253
原创 Linux设备驱动开发详解总结(二)之并发与竞争
Linux设备驱动中必须解决一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,在当今的Linux内核中,支持SMP与内核抢占的环境下,更是充满了并发与竞态。幸运的是,Linux 提供了多钟解决竞态问题的方式,这些方式适合不同的应用场景。例如:中断屏蔽、原子操作、自旋锁、信号量等等并发控制机制。 1.1 并发与竞态 并发是指多个执行单元同时、并发被执行,而并发的执行单元
2013-01-28 16:53:15 3211
原创 简单字符设备驱动程序分析(一)
这是一个简单的字符驱动,利用内存作为字符设备,来编写一个字符驱动,该驱动没有涉及任何具体的硬件,也未涉及并发、竞争、非阻塞等高级应用,废话少说,先上代码。 运行环境:TQ2440开发板,内核版本2.6.30.4开发环境:Window下的Source Insight以及PC机上的红帽企版5虚拟机实验环境前提条件:拥有一个制作好的NFS文件系统 /***************
2013-01-24 21:22:52 3103 1
原创 Linux设备驱动开发详解总结(一)之字符设备驱动结构
Linux字符设备驱动结构1.1 cdev结构体 在Linux2.6 内核中,使用cdev结构体来描述一个字符设备,cdev结构体的定义如下:struct cdev { struct kobject kobj; struct module *owner; /*通常为THIS_MODULE*/ struct file_operatio
2013-01-24 20:50:30 4448
原创 helloworld驱动加强版
helloworld——加强版这篇文章相比上一篇文章主要是增加了一个模块参数运行环境:TQ2440开发板,内核版本2.6.30.4开发环境:Window下的Source Insight以及PC机上的红帽企版5虚拟机实验环境前提条件:拥有一个制作好的NFS文件系统 /**********************************hellop.c***********
2013-01-22 17:35:04 1960 6
原创 第一个驱动之helloworld
第一个驱动——helloworld运行环境:TQ2440开发板,内核版本2.6.30.4开发环境:Window下的Source Insight以及PC机上的红帽企版5虚拟机实验环境前提条件:拥有一个制作好的NFS文件系统/**********************************hello.c*************************************/
2013-01-22 16:59:38 5035
原创 insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format
(一)今天写了个块设备驱动例子,在虚拟机上加载模块insmod simp_blkdev.ko的时候,出现以下错误。insmod: error inserting 'simple-blk.ko': -1 Invalid module format 其实错误很简单,Makefile的编写失误,因为之前是想让这个驱动模块在TQ2440上运行的,所以,Makefile的编写使用了以下形式:
2012-12-17 21:28:16 6032 2
原创 TQ2440之初级制作内核
1、首先拷贝TQ提供的已经移植好的内核到/usr/src/目录下。cp /mnt/hgfs/share/linux-2.6.30.4_20100531.tar.bz2 /usr/src/ 2、解压linux-2.6.30.4_20100531.tar.bz2压缩包tar -xvjf linux-2.6.30.4_20100531.tar.bz2 3、进入linux-
2012-11-26 21:19:47 2505 2
原创 U-Boot第二阶段之初解二个重要的数据结构gd_t与bd_t
在分析U-Boot第二阶段的C函数之前,我们有必要先分析二个重要的数据结构,因为它们在第二阶段中无处不在!知道它们的厉害了吧?究竟是谁那么厉害呢? 打开 lib_arm/board.c 在第55行看到:55 DECLARE_GLOBAL_DATA_PTR; 这是什么意思呢?找遍board.c也没找着它的第二次出现,因为它只出现一次,而且仅需一次就够了。从字义上翻
2012-11-22 20:58:22 4986
原创 TQ2440之U-Boot-1.1.6之第一阶段代码详解
根据Board/EmbedSky/u-boot.lds这个链接脚本文件,可知:———————————————————————————————————SECTIONS{ . = 0x00000000; . = ALIGN(4); .text : { cpu/arm920t/start.o (.text
2012-11-22 16:56:28 2339
原创 TQ2440之U-Boot-1.1.6之顶层目录下的mkconfig
U-Boot-1.1.6根目录下的mkconfig同样也具有如同makefile的重要地位。进入mkconfig可以看到它的源代码并不多。 下面红色部分,均为我自己添加的注释,源文件里没有这些注释。________________________________________________________________#!/bin/sh -e
2012-11-21 20:45:28 1192
原创 TQ2440之U-Boot-1.1.6之顶层Makefile分析一
分析U-Boot或者是分析Linux内核这些庞大的代码量时,我们应该首先去阅读它的顶层Makefile文件,它会告诉你,这些如何编译这么一系列的文件。这就如同你去到一个陌生的大城市,首先你要买一张地图,才能更好的去了解这座城市。进入顶层的Makefile里面有那么二句1884 EmbedSky_config : unconfig1885 @$(MKCONFIG) $(@:_c
2012-11-21 17:25:03 1510
转载 typedef int (init_fnc_t) (void);
原文地址:*init_sequence[]" href="http://blog.sina.com.cn/s/blog_4e5bd77401000aig.html" target="_blank">u-boot中typedef应用解析___init_fnc_t*init_sequence[]作者:谢争 u-boot中有这么一段代码。/*这里定义了一个新的数据类型in
2012-11-20 23:39:08 3545
原创 mplayer: error while loading shared libraries: libartsc.so.0: cannot open shared object file: No suc
mplayer: error while loading shared libraries: libartsc.so.0: cannot open shared object file: No such file or directory错误分析:在运行mplayer命令的时候发生如上的错误,经过一个小时的找错,终于解决不能播放视频的问题。cannot open shared obje
2012-11-19 23:16:07 9638 10
原创 网络基础编程
网络基础编程: 网络基础编程主要介绍传输层中的TCP和UDP协议,TCP和UDP是两种不同的网络传输方式。1、TCP 通常应用程序通过打开一个socket来使用TCP服务,TCP管理到其他socket的数据传递。可以说,通过IP源/目的可以唯一的区分网络中两个设备的关联,通过socket的源/目的可以唯一的区分网络中两个应用程序的关联。三次握手协议:
2012-11-14 21:20:57 1203
原创 初识网络编程
网络编程基础概念:TCP/IP基本概念: TCP/IP协议(Transmission Control Protocol / Internet Protocol)叫做传输控制/网际协议,又叫网络通信协议。实际上,它包含了上百个功能的协议,如ICMP(互联网控制信息协议)、FTP(文件传输协议)、UDP(用户数据报协议)、ARP(地址解析协议)等。TCP负责发现传输的问题,一旦有问题就
2012-11-14 19:44:10 1077
原创 初识进程这家伙
Linux进程概述: 什么叫进程呢?进程是一个程序的一次执行过程。它和程序是有本质区别的,程序是静态的,是及其代码指令和数据的集合,这些指令和数据存储在磁盘上的一个可执行映像中,没有任何执行的概念;而进程是动态的,它是执行的过程,包括了动态创建、调度和消亡的整个过程。 进程是程序执行和资源管理的最小单位。因此,对系统而言,当用户在系统中敲入命令执行一个程序的时候,它
2012-11-12 17:34:54 1166
原创 Linux文件IO编程
Linux的文件结构: 在Linux中,几乎一切都可以看做是文件来处理,文件是操作系统与具体物理设备之间的一个简单而统一的接口。所以,我们在程序中可以像使用文件那样去读写磁盘、操作串口、打印机等其他设备。常用的文件操作函数有,open、read、write、lseek。 那么内核如何区分和引用特定的文件呢?那就是通过文件描述符啦,文件描述符其实就是一些小值整数,我们
2012-11-08 22:48:06 3506 1
原创 如何让vim编辑器永久显示行号
在Linux环境下的编辑器有vi、vim、gedit等等。进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的。我们有二种办法可以解决: 第一种是,手动显示:在vim命令行模式下输入 :set nu 取消显示:在vim命令行模式下输入: set nonu 第二种是,永久自动显示:我们修改一个配置文件。
2012-10-28 22:29:09 62428 14
原创 built-in function 错误的解决
在编译《嵌入式Linux应用开发完全手册》的UART实验时候,出现一个以下警告:serial.h:2: warning: conflicting types for built-in function 'putc' 什么意思呢?首先什么叫built-in function,查阅《C Primer Plus》发现这个叫做内建函数,printf,strchr,memset等等
2012-10-17 14:42:17 27322
转载 ARM伪指令之地址读取:ADR/ADRL/LDR
下面文章转自网络文章:1、ADR伪指令--- 小范围的地址读取 ADR伪指令将基于PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。在汇编编译器编译源程序时,ADR伪指令被编译器替换成一条合适的指令。通常,编译器用一条ADD指令或SUB指令来实现该ADR伪指令的功能,若不能用一条指令实现,则产生错误,编译失败。 ADR伪指令格式 :ADR{cond
2012-10-15 16:56:07 6724
原创 汇编bne的问题
下面一段程序摘自《嵌入式Linux应用开发完全手册》page-95memsetup: @ 设置存储控制器以便使用SDRAM等外设 mov r1, #MEM_CTL_BASE @ 存储控制器的13个寄存器的开始地址 adrl r2, mem_cfg_val @ 这13个值的起始存储地址 add r3, r
2012-10-15 16:36:02 7856
原创 数据类型的归纳
今天偶然测试了很简单的程序,就是 int 型二个数的和,突然发现我输入一个很大很大的值它都不会溢出,可能是因为以前被单片机的程序所迷惑,一直以为 int 的 最大也就32767 ,即使是无符号 int 也就 65535,为什么在Visual我测试的那个程序可以取如此之大的数都不会溢出,翻开C++的书,猛然发现原来在Visual C++ 里 int 最大值是2147783647。我就在想是不是以
2012-08-27 16:15:21 863
原创 sizeof
下面代码的输出结果是什么?#include #include #include using namespace std;struct{ short a1; short a2; short a3;}A;struct{ long a1; short a2;
2012-08-23 12:20:44 732
原创 内存中的数据对齐
假如有二个结构体struct{ short x; short y; short z;}A;struct{ long x; short y;}B;假如执行 sizeof(A); sizeof(B); 那么输出是多少呢?我们来分析一下:
2012-08-23 11:14:53 1055
原创 预处理与const
1.1 宏定义例题1:用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。解析: #defne 语法的基本知识(如:不能以分号结束,括号的使用) 要懂得预处理器将为你计算常数表达式的值,因此,写出你是如何计算一年中有多少秒而不是计算出实际的值,会更有意义。 最重要的是,意识到这个表达式将使一个16位机的整
2012-08-23 10:38:04 1109
libartsc.so.0
2013-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人