- 博客(46)
- 收藏
- 关注
转载 Makefile常用函数
函数在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $( )或是 ${ }这里,就是函数名,make支持的函数不多。为函数的
2014-07-25 10:57:42
586
原创 linux文件属性
zqy@zqy-Rev-1-0:~$ ls -al总用量 21288drwxr-xr-x 38 zqy zqy 4096 4月 15 12:07 .drwxr-xr-x 3 root root 4096 10月 12 2013 ..drwx------ 3 zqy zqy 4096 10月 15 22:57 .adobedrwx-----
2014-04-15 13:05:56
615
原创 C++中抽象类和接口类的区别
(源自:http://blog.sina.com.cn/s/blog_49652a2d0100fk3n.html)Bill Venners:我在1991至1996这5年间,几乎一直仅仅使用C++编程。在那时,我认为多重继承唯一目的就是让我能够从多个基类中继承它们各自的数据和函数 — 不管是虚拟函数还是非虚拟函数。那时候,我和我使用C++的同事几乎从未想过可以使用一种不含任何数据而仅包含纯虚
2014-04-14 20:11:55
7330
原创 2014/04/12微软实习生在线测试题
昨天参加微软DescriptionFor this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a
2014-04-13 21:33:34
1011
原创 字符串和整数相互转化
模拟atoi函数。enum Status{kValid=0,kInvalid};int g_nStatus=kValid;long long StrToIntCore(const char* digit,bool minus){ long long num=0; while(*digit!='\0'){ if(*digit>='0' && *digit<='9'){ int f
2014-04-10 22:22:42
561
原创 内核烧写杂记
在linux内核移植过程中,需要将linux内核烧写到开发板上。 基本的步骤是:1、将bootloader通过J-TAG烧写到开发板上,而一般bootloader与硬件密切相关,硬件厂商都会提供这样的板级支持包。不同的bootloader会提供不同的bootloader命令,一般都是可以通过help进行查看的。 2、将linux内核通过tftp传输到RAM中,注意在宿主机-开发板的
2014-04-09 10:37:52
626
原创 c语言实现cpp中的引用传递
C语言不存在按引用传递,一切都是按值传递。这是由C语言的特点决定的,C语言中不需要按引用传递,因为指针技术完全可以理所当然地实现同样的目的。而C#和Java 这类不允许指针的语言,就必须区别这两种传递方式。在C中,唯一容易弄混的地方是,传递的参数是数组,如下:void fun(char *s,int a) {}或者void fun(char s[],int a) {}首
2014-04-09 10:37:50
2292
1
原创 linux终端显示内容不全的解决方案
我们在使用linux命令的时候,经常遇到一屏显示不够,这样前面的内容在终端下就看不到了。那如何使命令打印出的内容分页显示呢?利用管道技术将两个命令联系到一起就可以轻松的实现。 管道管道简单理解就是,使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。利用Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符
2014-04-09 10:37:48
54547
原创 线程的IsBackground属性
.Net的公用语言运行时(Common LanguageRuntime,CLR)能区分两种不同类型的线程:前台线程和后台线程。这两者的区别就是:应用程序必须运行完所有的前台线程才可以退出;而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,所有的后台线程在应用程序退出时都会自动结束。.net环境使用Thread建立的线程默认情况下是前台线程,即线程属性IsBackground=
2014-04-09 10:37:46
5805
原创 GDB调试程序
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的
2014-04-09 10:37:43
900
原创 ubuntu软件源相关
#用如下两句命令修改更新软件源列表# sudo gedit /etc/apt/sources.list# sudo apt-get update – 列举本地更新# sudo apt-get upgrade – 安装可用更新# sudo apt-get install 软件包名 – 安装指定软件包# sudo apt-get remove 软件包名 – 删除指定软件包下面是一个可用
2014-04-09 10:37:41
498
原创 windows下visualbox+ubuntu开机自…
一般有以下两种挂载方式:一、手动挂载顾名思义,每次打开虚拟机的时候必须手动挂载,才会把共享文件夹挂载到虚拟机里,方法如下:1、设置共享文件夹 出现如下界面,点击右边的绿色“+”,添加共享目录我这里设置LinuxShare为共享目录更改共享文件夹的名字为VBshare,勾选固定分配,自动挂载最好不要选,如果挂载失败,有时会导致虚拟机开机开不起
2014-04-09 10:37:39
703
原创 网上找的linux内核编译各种资料
mv /home/zhb/Downloads/linux-2.6.38.4.tar.bz2/usr/srctar -xvflinux-2.6.38.4.tar.bz2 ##使用make install#一步到位或者继续使用下面的指令make mrproper #确保目录下没有不正确的.o文件和文件依赖make menuconfig #需要Ncures库支
2014-04-09 10:37:37
790
原创 union
Union的特点:1. union中可以定义多个成员,union的大小由最大的成员的大小决定。2. union成员共享同一块大小的内存,一次只能使用其中的一个成员。3. 对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存) 下面转自http://blog.youkuaiyun.com/jiangnanyou
2014-04-09 10:37:35
1013
转载 【转】Linux2.6内核驱动与2.4的区…
随着Linux2.6的发布,由于2.6内核做了新的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。1、 使用新的入口必须包含module_init(your_init_func);module_exit(your_exi
2014-04-09 10:37:33
677
原创 关于linux块设备和字符设备的举例
字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反此类设备支持按字节/字符来读写数据。举例来说,键盘是典型的字符设备。块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。键盘这种设备
2014-04-09 10:37:31
1323
原创 linux设备驱动makefile文件
ifeq ($(KERNELRELEASE),) KERNELDIR?= /home/linux/linux-2.6.22.6 PWD:= $(shell pwd) modules: $(MAKE)-C $(KERNELDIR) M=$(PWD) modules modules_install:
2014-04-09 10:37:28
614
原创 解释和编译
计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过"翻译程序"翻译成机器语言形式的目标程序,计算机才能识别和执行。这种"翻译"通常有两种方式,即编译方式和解释方式。编译方式是指利用事先编好的一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用户将高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与之等价的目标程序,然后计算机再执
2014-04-09 10:37:26
523
原创 ARM指令集小记
Arm七种操作模式:用户(usr)、系统(sys)、快中断(fiq)、中断(irq)、管理(svc)、中止(abt)、未定义(und)MOV R1,R0 ;将寄存器R0的值传送到寄存器R1MOV PC,R14 ;将寄存器R14的值传送到PC,常用于子程序返回MOV
2014-04-09 10:37:24
846
原创 C_语法_宏定义define和函数的作用…
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义:#define MAX( a, b) ( (a) >
2014-04-09 10:37:22
3325
1
原创 【转】ARM9硬件接口学习之一
Watchdog是整个ARM体系结构中相对比较简单的接口,控制代码只有几行,写起来比较容易。首先选择学习watchdog,可以快速入门,先对底层硬件工作原理有个初步的认识。(Watchdog即通常我们所说的“看门狗”)Watchdog原理上就是一个定时器。定时器timer对时钟进行计数,当定时器溢出时,产生复位信号,使得整个系统复位。在程序或嵌入式系统中,需要定期的对看门狗timer进行复位
2014-04-09 10:37:20
694
原创 (*(volatileunsigned ……
#define GPIO_CTL_BASE0x56000000 #define rTCFG0 (*(volatileunsigned *)0x51000000)#define rTCFG1 (*(volatileunsigned *)0x51000004)#d
2014-04-09 10:37:17
546
原创 讲讲volatile的作用
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic var
2014-04-09 10:37:15
412
原创 驱动编程小记
宏:__KERNEL__, MODULE,__VERSION____KERNEL__:表明这将是用于内核的代码,否则很多内核过程将无法使用。MODULE:如果是以模块方式编译,需要定义这个宏;__VERSION__:定义这个宏则需要驱动程序的内核版本要和内核版本一致。module_init()/module_exit():[spioc_init()/spioc_exit()]每个驱
2014-04-09 10:37:13
558
原创 关于unlocked_ioctl。
为了把BKL从内核中慢慢去掉,加入了unlocked_ioctl,但是有很多地方都用到ioctl,所以一直保留着,直到b19dd42f的时候,最后移除了所有对ioctl的使用,才把ioctl从file_operations里面去掉。 所以现在内核里应该使用unlocked_ioctl。 在应用程序里面不能用unlocked_ioctl,因为系统调用ioctl是没有改变的,还是原
2014-04-09 10:37:11
1818
原创 隐式声明函数kfree
驱动程序make时出现以下错误:/home/zqy/文档/char/demo.c: 在函数‘DEMO_cleanup_module’中:/home/zqy/文档/char/demo.c:161:3: 错误: 隐式声明函数‘kfree’[-Werror=implicit-function-declaration]/home/zqy/文档/char/demo.c: 在函数‘DEMO_init_
2014-04-09 10:37:09
1853
原创 The connection to adb is down…
启动android模拟器时.有时会报Theconnection to adb is down, and a severe error hasoccured.的错误.在网友说在任务管理器上把所有adb.exe关闭掉.重启eclipse.1.先把eclipse关闭.2.在管理器转到你的android SDK 的platform-tools下, 如图:connection to adb is
2014-04-09 10:37:07
595
转载 Startup.s文件
在Startup.s文件中包含一个startup的入口函数,该函数为EBOOT的最开始的入口。在系统上电或者冷启动的时候,这是第一个被执行的函数。该函数都是由汇编语言编写的,完成基于硬件平台的最初的初始化,也就是CPU的相关初始化,如果有必要,也可以在这里对外围的设备进行初始化。该函数执行到最后,会跳转到C语言的入口,一般是Main函数,或者叫做EBootMain函数。这里要多说的一件事情就是在
2014-04-09 10:37:05
3671
转载 linux设备驱动中file_operations结…
linux设备驱动中file_operations结构体分析 struct module*owner第 一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块的指针.这个成员用来在它的操作还在被使用时阻止模块被卸载. 几乎所有时间中, 它被简单初始化为 THIS_MODULE, 一个在中定义的宏.loff_t (*llseek) (stru
2014-04-09 10:37:02
572
原创 printk
printk1概述对于做嵌入式或者熟悉linux内核的人来说,对printk这个函数一定不会感到陌生。printk相当于printf的孪生姐妹,她们一个运行在用户态,另一个则在内核态被人们所熟知。printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空间,然后调用sprintf,格式化显示字符串,最后调用tty_write向终端进行信
2014-04-09 10:37:00
583
原创 【转】如何在Android中使用OpenCV
原文地址:http://underthehood.blog.51cto.com/2531780/670169,建议直接看原文,我这里显示不全。看了网上的很多教程和官方http://opencv.willowgarage.com/wiki/Android提供的如何在Android上使用OpenCV的教程,照着一步一步的做最后总有些问题,不是APK安装失败就是运行时突然报错退出。和同学一起摸索了
2014-04-09 10:36:58
621
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人