嵌入式Linux
lightd
爱生活,爱Coding!
展开
-
远程破解Linux操作系统密码
一、用到的工具 1、X_Scan3.3 ,这是我国著名黑客冰河(原名黄鑫)开发的一款黑客工具,具有漏洞扫苗、弱口令猜解、端口扫苗等功能,虽然也是一款比较老的软件,但某些功能还是非常好用的。冰河的另一款代表作是大名鼎鼎的“冰河木马”,它是我国第一代木马的杰出代表。 注:该软件可在本文末尾的附件中下载2、字典工具,这里不再多说,网上到处都有。如果实在找不到或者不会使用,请看我的另转载 2013-01-18 09:37:59 · 7388 阅读 · 0 评论 -
u-boot.lds链接文件详解
GNU编译器生成的目标文件缺省为elf格式,elf文件由若干段(section)组成,如不特殊指明,由C源程序生成的目标代码中包含如下段:.text(正文段)包含程序的指令代码;.data(数据段)包含固定的数据,如常量、字符串;.bss(未初始化数据段)包含未初始化的变量、数组等。C++源程序生成的目标代码中还包括.fini(析构函数代码).init(转载 2013-12-13 10:56:25 · 2048 阅读 · 0 评论 -
Linux下生成patch和打patch
通过diff工具生成补丁, patch工具打上补丁.在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.1.为单个文件生成补丁转载 2013-12-13 10:58:32 · 45306 阅读 · 0 评论 -
Makefile基础---自动处理头文件的依赖关系
Makefile基础---自动处理头文件的依赖关系 现在我们的Makefile写成这样:all: mainmain: main.o stack.o maze.o gcc $^ -o $@main.o: main.h stack.h maze.hstack.o: stack.h main.hmaze.o: maze.h main.hclean: -rm main *.转载 2013-12-30 11:22:30 · 1536 阅读 · 0 评论 -
Makefile基础---变量
Makefile基础---变量这一节我们详细看看Makefile中关于变量的语法规则。先看一个简单的例子:foo = $(bar) bar = Huh? all: @echo $(foo)我们执行make将会打出Huh?。当make读到foo = $(bar)时,确定foo的值是$(bar),但并不立即展开$(bar),然后读到bar = Huh?,确定bar的值是H转载 2013-12-30 11:24:23 · 699 阅读 · 0 评论 -
一个简单的通用Makefile实现
一个简单的通用Makefile实现 Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可。Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了简化问题的复杂性,本文仅和大家讨论针对单目录下的C/C++项目开发,如何写一个通用的Mak转载 2013-12-30 11:39:09 · 884 阅读 · 1 评论 -
Makefile---相同目标如何处理
Makefile---相同目标如何处理如果Makefile中有多个相同的目标,它是怎么执行的?target1: dep1target1: dep2 cmd2这种情况下,这两个相同的target1会被合并成 target1: dep1 dep2 cmd2sample原创 2013-12-31 11:04:49 · 5433 阅读 · 0 评论 -
Makefile工程管理
使用Makefile管理工程,可以编译出debug和release两个版本目录树第一级目录的Makefile:ifndef CROSS_COMPILECC=gccAR=arLD=ldendifexport CC AR LDROOTDIR=$(shell pwd)CFG_INC+= -I$(ROOTDIR)/include -I$(ROOTDIR)/linklis原创 2013-12-11 16:23:16 · 1615 阅读 · 1 评论 -
利用udev、sys动态创建linux设备结点
在Linux2.6内核中,devfs被认为是过时的方法,并最终被抛弃,udev取代了它。Devfs的一个很重要的特点就是可以动态创建设备结点。那我们现在如何通过udev和sys文件系统动态创建设备结点呢?下面通过一个实例,说明udev、sys动态创建设备结点的方法。注意代码中红色的部分是为了实现动态创建设备结点添加的。 #include #in转载 2012-11-20 13:57:46 · 441 阅读 · 0 评论 -
主机、虚拟机、开发板网络环境搭建小结备忘
首先得声明,本文章属转载,个人觉得写得灰常好,图文并茂,详细,深刻,不仅让本来网络没学好的本人对网络这一块有了更深刻的理解,而且解决了我纠结了几天的 开发板 虚拟机 win7 之间的通信问题得到了解决!最近学习QTE,搞了两晚上终于搭建好了QT编译环境(QTX86环境,QTEX86环境,QTEArm环境),但是还是不知道怎么让QT程序在开发板上跑起来,貌似有中方可选方案:1.静态转载 2012-11-23 08:43:05 · 633 阅读 · 0 评论 -
Linux字符设备驱动_Helloworld x86
学了那么多程序语言,总是有一个Hello world开头,不禁感叹Hello world的强大。呵呵,废话少说,咋们的故事当然要从这个Hello world开始。先查看自己OS使用的内核版本 [dongliang@dongliang:~]$ uname -r 2.6.22-14-generic /* 这是我显示的结果 */ 如果安装系统时,自动安装了源码。在 /usr/src原创 2012-11-08 22:38:19 · 2600 阅读 · 0 评论 -
tiny6410刷机
原创 2012-11-08 21:35:15 · 695 阅读 · 0 评论 -
应用程序如何找到对应的驱动程序
原创 2012-11-08 20:01:13 · 1383 阅读 · 0 评论 -
System.map详解
有时system.map文件可以帮助我们理解内核编译,它记录了所有代码的运行地址。下面一起看看如何读懂它system.map内容格式为:线性地址 类型 符号具体内容如下: 00100000 A phys_startup_32c0100000 T startup_32c0100000 A _text 注:表示内核转载 2012-11-19 19:00:44 · 602 阅读 · 0 评论 -
进程同步机制及优缺点
1.信号量机制:一个信号量只能置一次初值,以后只能对之进行p操作或v操作。由此也可以看到,信号量机制必须有公共内存,不能用于分布式操作系统,这是它最大的弱点。2.自旋锁:旋锁是为了保护共享资源提出的一种锁机制。调用者申请的资源如果被占用,即自旋锁被已经被别的执行单元保持,则调用者一直循环在那里看是否该自旋锁的保持着已经释放了锁自旋锁是一种比较低级的保护数据结构和代码片段的原转载 2012-11-19 18:14:44 · 859 阅读 · 0 评论 -
tiny6410_驱动程序_定时器_简单使用
drv_timer.c/* * driver timer test */ #include #include #include #include static struct timer_list my_timer;static void timer_func(unsigned long data){ static int count =原创 2012-11-14 15:55:53 · 923 阅读 · 0 评论 -
LINUX中断机制与信号
在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。LINUX中断机制与信号中断和异常 l 中 断(也称硬件中断)定义:中断是由其他硬件设备依照CPU时钟周期信号随机产生的。转载 2012-11-25 17:03:29 · 579 阅读 · 0 评论 -
使用异步 I/O 大大提高应用程序的性能
AIO 简介Linux 异步 I/O 是 Linux 内核中提供的一个相当新的增强。它是 2.6 版本内核的一个标准特性,但是我们在 2.4 版本内核的补丁中也可以找到它。AIO 背后的基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程就可以检索 I/O 操作的结果。I/O 模型在深入介绍 AIO API 之前转载 2012-11-23 09:15:23 · 395 阅读 · 0 评论 -
statfs函数获取大容量磁盘信息速度慢的解决过程
statfs函数在调用之前,磁盘已经挂载上,因此在利用在挂载的时候加上 -o -usefree参数,使得磁盘信息被写到磁盘上面,statfs函数在调用的时候,直接读取,就可以提高函数调用效率,从而减少反应时间。(mount -o usefree -t vfat /a /b)此命令执行的时候很快,不会有明显的延迟。转载 2014-03-30 11:51:55 · 2143 阅读 · 0 评论 -
用pthread_exit函数时注意的问题
今天看到这个函数,原来它的内部也有不为人知的内涵。原型:#includevoid pthread_exit(void *rval_ptr);参数是个空类型的指针,其实关于空类型的意思我在前面已经介绍过了,这里不再赘述。这个函数的功能就是使一个线程正常退出,终止线程,因为我们知道线程它是依赖进程存在的,如果在线程中使用exit()函数退出,那么整个的进转载 2014-04-15 15:49:31 · 3958 阅读 · 0 评论 -
嵌入式Linux cp命令实现
嵌入式Linux cp命令实现原创 2014-09-12 18:38:59 · 3654 阅读 · 0 评论 -
linux 设置网络API --- 开/关网卡、设置/获取Mac地址
最近在做项目过程中,由于在多线程中使用system函数,有时候出现莫名程序异常终止,最后决定替换所有的system函数,但是对于设置mac地址这个函数试了很多次都没有成功;今天在此总结下原因:1. 编写的关闭/打开网卡函数没有延时;(一般情况设置开关网卡可能需要初始化,所以如果开关连续可能没有初始化成功,你可以试试在嵌入式Linux命令行下快速的开关网卡,也是没有反应的)2. 类型转换问题;(由于为了便捷,使用sscanf提取mac字符串,如果使用8bit提取%x,转换出错,最后只能使用32bit,再一原创 2014-08-31 12:14:08 · 5253 阅读 · 0 评论 -
Linux 设置系统时间和日期 API
嵌入式Linux 设置时间和日期 API ,是busybox中提取的源码;Linux设置时间和日期步骤是:1. 设置系统时间和日期;2. 将系统的时间和日期,同步到硬件中;原创 2014-08-31 12:28:14 · 6607 阅读 · 0 评论 -
Linux编程基础——GDB(设置断点)
启动GDB后,首先就是要设置断点,程序中断后才能调试。在gdb中,断点通常有三种形式:断点(BreakPoint):在代码的指定位置中断,这个是我们用得最多的一种。设置断点的命令是break,它通常有如下方式:break 在进入指定函数时停住break 在指定行号停住。break +/-offset 在当前行号的前面或后面的offs转载 2014-11-27 18:03:47 · 1060 阅读 · 0 评论 -
2015~2016年学习计划
1《高质量C++/C编程指南》 林锐编程基础和数据结构2《深入理解计算机系统》第二版3《算法导论》 第三版4《代码大全》 5《Unix环境高级编程》6《TCP/IP详解 卷1:协议》网络编程原创 2015-03-11 21:09:30 · 1223 阅读 · 2 评论 -
十个最值得阅读学习的C开源项目代码
十个最值得阅读学习的C开源项目代码来源:开源中国 时间:2014-10-23 10:24:55 阅读数:3062分享到:0[导读] 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。 开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考转载 2015-03-11 20:44:24 · 4292 阅读 · 0 评论 -
使用静态库时需要注意的事项(gcc下程序调用静态库编译命令:主文件必须在静态库前面!)
在linux下c++开发时, 使用静态库时编译时需要注意如下:编译时静态库一定要放在最后。如:(在-o后面)gcc test.cpp –o test.exe libexample.a使用静态库时一定要连接所有用到的静态库如要使用libwinkeemq-cpp.a,由于libwinkeemq-cpp.a用到了libactivemq-cpp.a,而libactivemq转载 2015-04-02 08:36:19 · 3109 阅读 · 0 评论 -
linux shell俄罗斯方块
#!/bin/bash#颜色定义cRed=1cGreen=2cYellow=3cBlue=4cFuchsia=5cCyan=6cWhite=7colorTable=($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite)#位置和大小iLeft=3iTop=2((iTrayLeft = iLeft + 2))((转载 2015-06-05 17:02:59 · 1359 阅读 · 0 评论 -
linux命令du和df的比较(转)
linux du和df的结果不同 why?有时我们会看到df和du的结果有比较大的差异,这个现象可能由以下两个原因造成:对正在被某进程打开的文件执行了删除操作,在这个进程关闭文件或者退出之前,df的结果还会包括这个被删除的文件,而du不会包括,如果被删除的文件很大,那么这个差异就很明显。由于分区A上的某个目录dir上挂载了其他文件系统,而隐藏了原来分区A中dir这棵子树中的转载 2014-09-11 17:49:52 · 963 阅读 · 0 评论 -
udev 和 mdev 总结
关于udev和mdev之间的区别与联系我发现自己现在还没有把它完整的给区分开来和联系起来. 设备文件系统有devfs,mdev,udev mdev是udev的简化版本,是busybox中所带的程序,最适合用在嵌入式系统,而udev一般用在PC上的linux中,相对mdev来说要复杂些,devfs是2.4内核引入的,而在2.6内核中却被udev所替代,他们有着共同的优点,转载 2014-06-16 08:48:22 · 727 阅读 · 0 评论 -
线程的分离状态
其实在写上一篇日志的时候,由于我把创建线程的返回值的判断条件写错了,程序每次运行的时候都是显示创建线程失败,我就百度了一下,有人说是桟资源不足引起的,要调用一个pthread_attr_setdetachstate()函数,当时不明白为什么,其原理是什么,于是又搜了一下,下文是其原理简述:在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结转载 2014-04-15 15:48:01 · 1389 阅读 · 0 评论 -
在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs)
目录正文之前1. 此文目的2. 一点说明1. 嵌入式系统中,如何在Linux运行的时候去升级Linux系统1.1. 前提1.1.1. Linux中已经实现Nor Flash驱动1.1.1.1. 在开发板相关部分添加对应nor flash初始化相关代码1.1.1.2. Linux通用nor flash驱动m25p80.c简介1.1.2. L转载 2014-04-16 19:36:17 · 1758 阅读 · 0 评论 -
如何手动释放Linux内存的方法
Linux 内存维护 1 Linux free命令详解 $ free –m //-m的意思是M字节 total used free shared buffers cached Mem: 1002转载 2014-04-08 19:14:58 · 717 阅读 · 0 评论 -
How to programmatically clear the filesystem memory cache in C++ on a Linux system?
I'm writing a benchmark tool in C++ where I want to clear the filesystem memory cache between experiments. I'm aware of the following console commands:syncecho 3 > /proc/sys/vm/drop_cachesMy qu转载 2014-04-11 20:43:45 · 1077 阅读 · 0 评论 -
Linux C 自定义延时函数
1. 使用select函数INT8 OSDelayMs (INT32U ms){ fd_set rfds; int fd = 1; struct timeval tv; FD_ZERO (&rfds); FD_SET (fd, &rfds); tv.tv_sec = 0; tv.tv_usec = ms * 1000; select (0, NULL,原创 2014-04-11 21:22:21 · 2082 阅读 · 0 评论 -
inux下的定时器类实现(select定时+线程)
更好的计时器类实现:LINUX RTC机制实现计时器类(原创) 很多时候需要在LINUX下用到定时器,但像setitimer()和alarm()这样的定时器有时会和sleep()函数发生冲突,这样就给编程带来了很大的困难。 写了一个定时器的类,使用select进行精确定时。而且可以在系统中创建不限数量的定时器,且互不干扰。类的内部采用线程实现。即线程+selec转载 2014-04-11 21:52:34 · 3524 阅读 · 1 评论 -
Linux下实现U盘、SD卡自动挂载功能
在 Linux中我们经常用到U盘、SD卡的挂载问题,每次都手动挂载或卸载非常麻烦,我们可以采取以下方法实现自动挂载或卸载U盘、SD卡1、首先在/etc/init.d/rsC中加入以下语句echo /sbin/mdev > /proc/sys/kernel/hotplug2、在/etc/下简历medv.conf的文件,包含以下内容sd[a-z][0-9] 0:0 6转载 2014-04-25 20:20:23 · 1742 阅读 · 0 评论 -
Linux shell代码统计工具
Linux shell代码统计工具,使用shell#!/bin/sh#判断是否传入参数 if [ $# -eq 0 ];then echo "Usge: ./shellname dirname [en/cn]" exit 1 fi#获取统计目录名和输出语言类型dir_name=$1lang_type=$2result_file="code_info.txt"原创 2014-07-17 08:51:02 · 1446 阅读 · 0 评论 -
驱动Makefile模板
KERNELDIR = /home/dongliang/kernel/linux-2.6.24INCLUDEDIR = ${KERNELDIR}/includeSRCDIR = $(PWD) CC = arm-hismall-linux-gccAR = arm-hismall-linux-arLD = arm-hismall-linux-ldEXTRA_CFL原创 2012-11-07 19:02:44 · 457 阅读 · 0 评论 -
推箱子_无操作系统
; box.s ; 推箱子,运行不需操作系统,自有引导扇区,软盘引导 ; 玩法:W S A D 上下左右,Q 退出,R 重玩当前一关 ; 初学汇编,求师友 ; NASM 16位 实模式 ; Ubuntu ; nasm -o box.bin box.s ; sudo dd if=box.bin of=/dev/fd0 bs=512转载 2012-11-07 17:27:38 · 1431 阅读 · 0 评论