摘要: GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。它是一种强大的命令行调试工具。一般来说,调试器的功能:能够运行程序,设置所有能影响程序运行的参数;能够让程序在指定条件下停止运行;能够在程序停止时检查所有参数的情况;能够根据指定条件改变程序的运行。gdb调试源代码流程:1)进入GDB #gdb test只需输入GDB和要调试的可执行文件即可,在GDB的启动画面中指出了GDB的版本号、遵循的许可等信息,接下来就进入了由"(gdb)"开头的命令行界面了;2)查看文件 (gdb) l在GDB中键入"l"(list)就可以查看程序的源码了,GDB列 阅读全文
posted @ 2012-12-26 23:52 雪中飞 阅读(3523) 评论(0) 推荐(2) 编辑
摘要: GCC编译器GCC(GNU Compiler Collection)是一套功能强大、性能优越的编程语言编译器,它是GNU计划的代表作品之一。GCC是Linux平台下最常用的编译器,GCC原名为GNU C Compiler,即GNU C语言编译器,它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。它的名称也逐渐变成了GNU Compiler Collection。GCC是GNU项目的编译器组件之一,也是GNU最具有代表性的作品。在GCC设计之初仅仅作为一个C语言的编译器,可是经过十多年的发展,GCC已经 阅读全文
posted @ 2012-12-26 15:36 雪中飞 阅读(1688) 评论(0) 推荐(1) 编辑
摘要: 并发与竞态并发(concurrency)指的是多个执行单元同时、并行被执行。竞态因并发的执行单元对共享资源(1.硬件资源如寄存器,2.软件的全局变量、静态变量等)的访问所致。竞态发生的情况:1、对称多处理"(Symmetrical Multi-Processing)系统的多个CPU之间对称多处理"(Symmetrical Multi-Processing)又叫SMP,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。它是相对非对称多处理技术而言的、应用十分广泛的并行技术。2、单CPU内进程与抢占它的进程间虽然CPU只有一个,但是如Lin 阅读全文
posted @ 2012-12-21 16:56 雪中飞 阅读(1046) 评论(0) 推荐(0) 编辑
摘要: Linux内核的Makefile分为5个部分: Makefile 顶层Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件)。 .config 内核配置文件,调用make menuconfig或者make xconfig命令等配置 arch/$(ARCH)/Makefile 内核相关,具体架构的Makefile scripts/Makefile.* 公共编译规则定义文件。所有kbuild Makefile的规则,它们包含了定义/规则等。 kbuild Makefiles 每个子目录都有kbuild Makefile,它们负责生成built. 阅读全文
posted @ 2012-12-21 15:22 雪中飞 阅读(1130) 评论(0) 推荐(0) 编辑
摘要: Java语言的三大特性即是:封装、继承、多态封装:首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。1.概念:封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。2.好处:(1 阅读全文
posted @ 2012-12-20 20:28 雪中飞 阅读(43068) 评论(4) 推荐(0) 编辑
摘要: 内核的配置与编译Linux的内核是可以配置的,就是说可以根据用户的需要进行配置,正是因为Linux的内核可以自由的配置,自由的裁剪,减小内核的体积,才使得Linux的内核可以移植到arm平台上去。Linux内核配置具体步骤如下:1. 清除临时文件,中间文件和配置文件(为什么要清除呢?在得到一个内核以后会有许多垃圾文件需要清除)$make clean(删除垃圾文件 保留配置文件)$make mrproper(删除垃圾文件 删除配置文件)$make distclean(删除垃圾文件 删除配置文件 删除补丁文件)2. 确定目标系统硬件配置情况,比如cpu的类型,网卡型号,所需支持的网络协议,修改Ma 阅读全文
posted @ 2012-12-19 10:55 雪中飞 阅读(954) 评论(0) 推荐(0) 编辑
摘要: 内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自己的地址空间。处理器总处于以下状态中的一种:1、内核态,运行于进程上下文,内核代表进程运行于内核空间;2、内核态,运行于中断上下文,内核代表硬件运行于内核空间;3、用户态,运行于用户空间。用户空间的应用程序,通过系统调用,进入内核空间。由内核 阅读全文
posted @ 2012-12-19 10:42 雪中飞 阅读(6591) 评论(5) 推荐(4) 编辑
摘要: 内核,是一个操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,一个内核不是一套完整的操作系统。Linux的核心,通常在根目录下,一个叫vmlinuz的文件。我们用这个文件来控制我们的整台PC,包括周边设备和软硬磁盘机、CD-ROM、声卡等。简单地说,核心就是操作系统本身。从程序员的角度来讲,操作系统的内核提供了一个与计算机硬件等价的扩展或虚拟的计算平台。它抽象了许多硬件细节,程序可以以某种统一的方式进行数据处理,而程序员则可以避开许多硬件细节。从另一个角度讲,普通用户则把操作系统 阅读全文
posted @ 2012-12-18 15:42 雪中飞 阅读(1749) 评论(1) 推荐(1) 编辑
摘要: @board/samsung/smdkc100/lowlevel_init.S#include <config.h>#include <version.h>#include <asm/arch/cpu.h>#include <asm/arch/power.h>/** Register usages:** r5 has zero always*/_TEXT_BASE:.wordTEXT_BASE.globl lowlevel_initlowlevel_init:movr9, lr/* r5 has always zero */movr5, #0ld 阅读全文
posted @ 2012-12-10 17:17 雪中飞 阅读(1331) 评论(0) 推荐(0) 编辑
摘要: Bootloader启动大多数都分为两个阶段。第一阶段主要包含依赖于CPU的体系结构硬件初始化的代码,通常都用汇编语言来实现;第二阶段通常用C语言完成,以便实现更复杂的功能,也使程序有更好的可读性和可移植性。U-Boot的启动代码分布在start.S、low_level_init.S、 board.c和main.c文件中。start.S 是U-Boot整个程序的入口,该文件使用汇编语言编写,不同体系结构的启动代码是不同的;low_level_init.S 是特定开发板的设置代码;board.c 包含开发板底层设备驱动;main.c 是一个与平台无关的代码,U- Boot应用程序的入口在此文件中 阅读全文
posted @ 2012-12-09 16:00 雪中飞 阅读(6713) 评论(0) 推荐(0) 编辑