- 博客(263)
- 资源 (3)
- 收藏
- 关注
转载 C++ 全局对象
讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌入式下做开发工作的话,那么你可能非常
2012-05-24 21:42:50
1069
转载 使用Visio进行UML建模
使用Visio进行UML建模内容提纲:1、VISIO中的UML建模环境2、用例图(USE CASE Diagram)的使用2.1 用例图的组成2.2 创建用例图2.2.1 建立角色(Actor)2.2.2 建立用例2.2.3 建立角色和用例的通信2.2.4 建立用例间的关系2.2.5 建立用例图3、活动图的建立3.1 活动图的组成
2012-05-01 19:49:43
1868
转载 类与类之间的关系图
类与类之间的关系图(Class Diagram,UML图) 一、简介二、类的构成三、类之间的关系(Relationship)1、单向关联2、双向关联3、自身关联4、多维关联(N-ary Association)5、泛化(Generalization)6、依赖(Dependency)7、聚合(A
2012-05-01 19:48:46
1137
原创 tony之linux driver_LDD3_scull字符设备驱动编译在新内核编译问题
在编译ldd3的scull程序的时候碰到编译不通过的情况,发现遇到的问题和下面的哥们遇到的问题一样,照着做了一下,解决问题,记录于此。/********************************************************************
2011-09-20 23:22:40
918
转载 Linux进程地址空间
哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处http://blog.youkuaiyun.com/woshixingaaa/archive/2011/04/15/6326472.aspx内核使用内存描述符结构体表示进程的地址空间,该
2011-09-15 11:37:51
826
原创 tony之I2C协议简单理解
一、技术性能:工作速率有100K和400K两种; 支持多机通讯;支持多主控模块,但同一时刻只允许有一个主控; 由数据线SDA和时钟SCL构成的串行总线;每个电路和模块都有唯一的地址;
2011-09-09 18:04:43
1647
原创 WRT和开源路由
Linux下的开源路由2009-10-21 11:051,Zebra http://www.zebra.com/Zebra 是一个 TPC/IP 路由软件,支持 BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2 和
2011-09-04 17:00:01
4065
转载 深入分析 Linux 内核链表
转载来源:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实
2011-09-04 16:23:01
670
转载 网络数据包收发流程(一):从驱动到协议栈
转载一位哥们的文章,他是一个系列,很不错!早就想整理网络数据包收发流程了,一直太懒没动笔。今天下决心写了一、硬件环境intel82546:PHY与MAC集成在一起的PCI网卡芯片,很强大bcm5461: PHY芯片,与之对应的MAC是TSECTSE
2011-08-17 20:51:40
2080
原创 Doxygen 使用总结
1.1 使用Doxygen我需要做什么使用Doxygen生成文档,主要是两件事: 1. 写一个配置文件(Doxyfile)。一般用Doxywizard生成后,再手工修改。 2. 按照Doxygen的约定,将代码“文档化”。然后只要执行命令:doxygen Doxyfile
2011-07-29 16:07:24
5390
原创 bug01_Ubuntu9.10:mount of filesystem failed解决办法
今天vmware里面ubuntu9.10一开机, 就黑屏,显示:1 mount of filesystem failed 2 a maintenance shell will now be started. 3 Control-D will terminate this shel
2011-07-23 20:29:10
873
转载 TAOWEN的闲言碎语___Python完全新手教程
网上发觉的一篇相当不错的Python 入门教程:网址:http://www.cnblogs.com/taowen/articles/11239.aspx感谢作者,引领我入门Lesson 1 准备好学习Python的环境下载的地址是:www.python.org为了大家的方便,我在
2011-07-23 10:01:30
955
原创 tony_python excel 学习第一课
昨天搞了一晚上,终于把python读excel的程序调试通过了,现在记录先:我主要尝试了pyxll 和 openpyxl 两个模块1.pyxll号称支持excel2010,看了看它提供的例子,主要是以操作excel的单元格为主,我主要关注的是读excel并对单元格内容进行解析它这
2011-07-23 09:35:01
2104
转载 AT&T汇编语言与GCC内嵌汇编简介
AT&T汇编语言与GCC内嵌汇编简介 版本 0.1 时间04/3/30EMAIL chforest_chang@hotmail.com 1 AT&T 与INTEL的汇编语言语法的区别1.1大小写1.2操作数赋值方向1.3前缀1.4间接寻址语法1.5后缀1.6指令 2 G
2011-07-17 16:08:10
848
原创 Trubo C的命令行编译连接
在开始看本文以前,我先说明一下C语言的安装和使用中最应该注意的地方: 许多网友在下载Turbo C 2.0和Turbo C++ 3.0后,向我问得最多的是在使用过程中碰到如下问题: 1)出现找不到 stdio.h conio.h等include文件; 2)出现cos.obj无法连
2011-07-10 17:10:30
1616
转载 tony --- C语言那些事儿(1)
本文通过一个个实际案例程序来讲解C语言.研究案例一工具: Turboc C v2.0,Debug,MASM v5.0,NASM实例C程序:/* example1.c */char ch;int e_main(){e_putchar(ch);}目标内容:C语言调用函数的方法与细节我
2011-07-10 16:34:09
715
转载 C语言嵌入式系统编程修炼之软件架构篇
模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念: (
2011-07-10 16:11:27
625
转载 用 Graphviz + CodeViz可视化函数调用
“工预善其事,必先利其器”,在分析Jpeglib的过程中,我用Graphviz + CodeViz来可视化的显示函数调用关系。先给大家看张图片, 这是我用Graphviz + CodeViz生成的Jpeglib调用关系图, 解解馋先^_^tbag@:~/test/ jpeg$ ../../gcc-graph/bin/gcc *.c -o tbagtbag@:~/test/ jpeg$ genful
2011-06-20 11:21:00
1067
转载 一致代码段和非一致代码段
之所以出现这个定义是因为系统要安全:内核要和用户程序分开..内核一定要安全.不能被用户程序干涉.但是有时候用户程序也需要读取内核的某些数据,怎么办呢?操作系统就引入了访问特权等级(0-3)的机制.这些特权等级,通过三个符号来体现CPL/DPL/RPL.其中CPL是存寄存器如CS中,RPL是代码中根据不同段跳转而确定,以动态刷新CS里的CPL.DPL是在GDT/LDT描述符表
2011-06-18 19:55:00
862
转载 Linux on Power 上的调试工具和技术(IBM developverwork)
简介调试程序有很多方法,例如向屏幕上打印消息,使用调试器,或者只需仔细考虑程序如何运行,并对问题进行有根有据的猜测。在修复 bug 之前,首先要确定在源程序中的位置。例如,当一个程序产生崩溃或生成核心转储(core dump)时,您就需要了解是哪行代码发生了崩溃。在找到有问题的代码行之后,就可以确定这个函数中变量的值,函数是如何调用的,更具体点说,为什么会发生这种错误。使用调试器查找这
2011-06-04 14:51:00
871
转载 使用 GDB 调试多进程程序(IBM developerWork)
GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者 proc3 呢?实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如
2011-06-04 14:50:00
725
转载 Valgrind--Linux下的内存调试和代码解剖工具
Valgrind是一个GPL的软件,用于Linux(For x86, amd64 and ppc32)程序的内存调试和代码剖析。你可以在它的环境中运行你的程序来监视内存的使用情况,比如C 语言中的malloc和free或者 C++中的new和 delete。使用Valgrind的工具包,你可以自动的检测许多内存管理和线程的bug,避免花费太多的时间在bug寻找上,使得你的程序更加稳固。
2011-06-04 14:27:00
741
原创 vmware中ubuntu上网的问题
之前在windows中是通过路由器上网,得益于VMWare的bridge模式的先进性,我根本不用做任何改动就可以在Ubuntu中上网。不过现在改成了ADSL拨号连接,原先的设置不好使了。1.把你的虚拟网卡VMnet8设置为自动获得IP、自动获得DNS服务器,启用。2.把你虚拟机中操作系统的“本地连接”也设置为自动获得IP、自动获得DNS服务器,(在虚拟机中,右键“本地连接”-双击“In
2011-06-04 13:56:00
524
转载 GDB高级技巧
文章来源:http://blog.youkuaiyun.com/ruixj/archive/2010/06/27/5698270.aspx 本文主要示例一些平常较少使用到的GDB功能,掌握这些用法有助于提高GDB调试和解决问题的能力。 1) 查看宏 默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的: 编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”
2011-06-04 12:08:00
715
转载 gdb Core Dump 调试程序错误
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。1.core文件的生成开关和大小限制--------------------------------- 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
2011-06-04 12:06:00
2022
原创 C语言字节对齐
<br /><br />C语言结构体对齐也是老生常谈的话题了。基本上是面试题的必考题。结构体到底怎样对齐?下面总结了对齐原则,在没有#pragma pack宏的情况下:<br />原则1、普通数据成员对齐规则:第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。<br />原则2、结构体成员对齐规则:如果一个结构里有某些结构体成员,则该结构体成员要从其内部最大元素大小的整数倍地址开始存储。(stru
2011-06-02 16:20:00
979
转载 arm linux 从入口到start_kernel 代码详细分析
<br /> <br />最近研究了一下arm linux的入口部分的代码, code不是太多,所以写了个笔记,详细的分析了每一条语句.<br /><br />大家看看, 交流一下.<br /><br /><br />下面使正文. 由于内容比较多,分几层楼发吧<br /><br />____________________________________________________________________________________<br /><br /><br />本文针对arm linu
2011-05-28 21:19:00
1792
1
原创 busybox + coredump
<br />前提:<br />我所使用的 busybox 版本为 1.5.0<br /><br />1. 如何设置时区?<br />设置环境变量 TZ 即可。<br />需要注意的有:<br />(1) 如果要设置时区为东八区(CST), 可以将 TZ 设置为 UTC-8(不含双引号)。UTC -8 表示“本地时间-8 之后等于 UTC” 而不是“UTC 时间-8之后等于本地时间”。根据 info tzset。<br />(2) 程序如果是从 /etc/inittab 中以 respawn 方式启动,则在
2011-05-09 20:17:00
2484
转载 linux mmap
<br />mmap will establish a mapping between kernel and userspace, We can use it to read data from kernel more quickly.<br />mmap is a function pointer in driver, so we have to write a driver to realize it, a simple char device driver is enough.<br />If you
2011-04-24 20:41:00
2023
转载 制作mipsel-linux交叉编译工具
<br /><br />1 前言<br /> 在嵌入式开发中,MIPs处理器是常见的几中处理器类型之一。另一方面,Linux是开源软件,应用范围很广, 因其对包括MIPS在内的多种嵌入式处理器架构的良好支持. 因此在嵌入式应用也.也大量采用Linux。在嵌入式开发过程中,很容易获得运行于x86架构PC上的Linux,并可使用其上的丰富的工具。gcc是Linux中一个很著名的C编译器,在编译Linux核心时,就要用到gcc。在PC机的Linux系统中用自身的gcc重新编译Linux核心和其它应用是容易。
2011-04-23 10:50:00
1039
转载 转载:ptrace
<br />by Pradeep Padala Created 2002-11-01 02:00翻译: Magic.D E-mail: adamgic@163.com译者序:在开发Hust Online Judge的过程中,查阅了不少资料,关于调试器技术的资料在网上是很少,即便是UNIX编程巨著《UNIX环境高级编程》中,相关内容也不多,直到我在http://www.linuxjournal.com上找到这篇文章,如获至宝,特翻译之,作为鄙人翻译技术文档的第一次尝试,必定会有不少蹩脚之处,各位就
2011-04-14 10:07:00
674
原创 mips linux
<br />1. bootloader 将ELF 格式的Kernel 加载到某个空闲地址处,然后一般有个内存移动操作,目的地址在 arch/mips/Makefile 内指定: load-$(CONFIG_MIPS_PB1550) += 0xFFFFFFFF80100000,则最终bootloader定会将内核移到物理地址 0x00100000处<br /><br />2. 上面Makefile 里指定的的 load 地址,最后会被编译系统写入到 arch/mips/kernel/vmlinux.lds 中
2011-03-27 18:47:00
1122
转载 linux mips启动分析
<br /><br />系统加电起动后,MIPS处理器默认的程序入口是0xBFC00000,此地址在无缓存的KSEG1的地址区域内,对应的物理地址是0x1FC00000,即CPU从0x1FC00000开始取第一条指令,这个地址在硬件上已经确定为FLASH的位置,Bootloader将Linux内核映像拷贝到 RAM 中某个空闲地址处,然后一般有个内存移动操作,目的地址在arch/mips/Makefile内指定:<br />core-$(CONFIG_MIPS_ADM5120)+= arch/mips/a
2011-03-27 17:41:00
1266
原创 MIPS Linux 下添加系统调用,以Linux kernel 2.6.18为例
<br />添加一个系统调用有以下几个步骤:<br />1. 在 kernel 的系统调用表 sys_call_table 中添加你的系统调用入口<br /><br />根据你用的内核位数(32/64bit) 选择需要修改的文件:<br />arch/mips/kernel/scall32-o32.S ------> 32bit kernel<br />arch/mips/kernel/scall64-64.S ------> 64bit kernel<br /><br />64bit内核,如果支持
2011-02-23 20:21:00
1509
1
原创 linux内核引导参数
<br /><br />inux内核引导参数<br />1.“boot=”<br /> 此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区<br />中读取引导扇区。<br />2.“root=”<br /> 此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件<br />系统的设备名,可用的设备名有:<br /> (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区<br /> (2)/dev/sdaN~/
2011-02-18 20:19:00
615
原创 中断实例-tasklet
<br />#include <linux/kernel.h><br />#include <linux/module.h><br />#include <linux/init.h><br />#include <linux/interrupt.h><br /><br />//define a devid<br /><br />static int mydev=1119;<br />static int irq;<br />static char* devname=NULL;<br /><br />//de
2011-02-18 13:13:00
4000
1
原创 linux2.6.x的配置文件kconfig语法
<br />linux在2.6版本以后将配置文件由原来的config.in改为kconfig,对于kconfig的语法在/Documentation/kbuild/kconfig-language.txt中做了详细的说明,在这里给出kconfig-language.txt的中文版。<br />介绍<br />----<br /><br />在配置数据库的配置选项是以树的形式组织的:<br /><br /> +- Code maturity level options<br /> | +- Promp
2011-02-18 11:47:00
632
原创 Linux启动过程综述 作者:杨沙洲
<br /><br />一. Bootloader <br /> 二.Kernel引导入口 <br /> 三.核心数据结构初始化--内核引导第一部分 <br /> 四.外设初始化--内核引导第二部分 <br /> 五.init进程和inittab引导指令 <br /> 六.rc启动脚本 <br /> 七.getty和login <br /> 八.bash <br /> 附:XDM方式登录 作者:杨沙洲<br /> 本文以Redhat 6.0 Linux 2.2.19 for Alpha/A
2011-02-17 18:03:00
1919
原创 linux device driver II 的模块程序在linux kernel 2.6.x 上的移植
<br />"linux device driver II 的模块程序在linux kernel 2.6.x 上的移植" PROJECT ----- linux-2.6.x device driver scull -----<br />It is very simple.hehe.<br /> You just type:<br /> insmod scull.ko<br /> ./scull_user<b
2011-02-17 18:02:00
850
原创 ubuntu内核源码树的建立
<br />开始读<Linux设备驱动程序>的时候,一而再的看见要创建自己的内核源码树.起初并不是很明白源码树是什么,经过网上的搜寻,找了点概念,其实应该很形象,树的形式就是主干,树枝,树叶,都是一层一层的,逻辑性比较强,所以,明白了吧,就是内核的逻辑形式.(当然这是网络上看到的).感谢大家的无私奉献.<br />现在开始记下我建立的过程,及自己的想法<br />1.首先要查看自己的OS使用的内核版本如:<br />a@a-desktop:~$ uname -r<br />2.6.32-22-generic
2011-02-16 21:07:00
847
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人