- 博客(43)
- 资源 (4)
- 收藏
- 关注
原创 代码段、数据段、BSS段、堆、栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(code segment/text segment)通常是指用
2015-09-12 20:45:32
331
原创 uboot分析之第二阶段
uboot分析之第二阶段:///////////////////////////////////////各部分初始化入口序列///////////////////////////////////////////////////typedef int (init_fnc_t) (void);init_fnc_t *init_sequence[] = {#if defined(CONFIG_
2014-11-27 16:04:44
461
原创 uboot分析之第一阶段start.S
Uboot分析之start.S:.globl _start_start: b start_code///////////////////////切换到系统模式/////////////////////////////////* * the actual start code */start_code: /* * set the cpu to SVC32 mode
2014-11-26 15:00:35
458
原创 uboot分析之Makefile
Uboot分析之Makefile:1.uboot根目录下执行:make smdk2410_configsmdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0 unconfig: @rm -f $(obj)include/config.h $(obj)inclu
2014-11-26 14:56:39
456
原创 u-boot分析
Bootloader:u-boot.2009.08分析与移植4.1:分析u-boot根目录下的Makefile,可以看到uboot编译的顺序如下,由此可知编译执行的第一个文件是cpu/$(CPU)/start.o,又由于是基于arm920t架构的,所以去分析cpu/arm920t/start.S源文件。# U-Boot objects....order is important (i.e.
2014-07-06 17:07:40
696
原创 ARM体系结构与编程-5
GET通常用于包含定义常量的源文件。 例如:GET 2440addr.inc用AREA定义一个段,ENTRY用于指定程序的入口点,END用于告诉汇编器源文件已经结束。 例如:AREA init, CODE, READONLYENTRY......ENDEQU用于定义常量,提醒:在每条ARM指令前必须有空格,但是用EQU定义常量时,必须顶格写,否则编译器报错。LT
2014-06-17 15:08:30
728
原创 ARM体系结构与编程-4
ARM异常中断处理:ARM体系异常中断种类:按中断的处理优先级从高到低依次为:复位、数据访问中止、快速中断请求、外部中断请求、预取指中止、未定义指令、软件中断。ARM体系中的异常中断向量表:0x0 复位0x4 未定义指令0x8 软件中断(SWI)0x0c 预取指中止0x10 数据访问中止0x14 保留0x18 外部中断请求(IRQ)0x1c 快速中断请求(F
2014-06-14 18:13:42
905
原创 ARM体系结构与编程-3
ARM存储系统:ARM中用于存储管理的系统控制协处理器CP15:包含16个32位寄存器,其编号为0到15。实际上对于某些编号的寄存器可能对应有多个物理寄存器。访问CP15寄存器的指令:MRC、MCR。CP15中的寄存器C0和C1:C0中存放ARM相关的一些标示符;C1是一个控制寄存器,用于禁止/使能MMU、配置存储系统等。例如下面的代码序列使能MMU:MRC P15,0,R
2014-06-12 17:28:56
926
原创 ARM体系结构与编程-2
ARM汇编语言程序设计:ARM汇编语言源程序中的语句由指令、伪操作和宏指令组成。ARM指令已经在上一节介绍过了。ARM伪操作和宏指令分类:符号定义伪操作GBLA:声明一个全局的算术变量,并将其初始化为0。语法:GBLA variableGBLL:声明一个全局的逻辑变量,并将其初始化为FALSE语法:GBLL variableGBLS:声明一个全局的串变量,并将其
2014-06-11 19:45:05
587
原创 ARM体系结构与编程
ARM处理器的7中运行模式:usr、fiq、irq、svc、abt、und、sys。ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在所有模式下指的都是同一个物理寄存器;备份寄存器R8-R12,每个寄存器对应两个不同的物理寄存器。对于R13[sp]和R14[lr]来说,每个寄存器对应6个不同的寄存器;程序计数器R15[pc]),6个状态寄存器(当前程序状态寄存器[
2014-06-11 19:43:48
885
原创 ARM体系结构与编程-1
ARM处理器的7中运行模式:usr、fiq、irq、svc、abt、und、sys。ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在所有模式下指的都是同一个物理寄存器;备份寄存器R8-R12,每个寄存器对应两个不同的物理寄存器。对于R13[sp]和R14[lr]来说,每个寄存器对应6个不同的寄存器;程序计数器R15[pc]),6个状态寄存器(当前程序状态寄存器[
2014-06-11 19:42:10
182
原创 Linux驱动开发学习归纳-4
【块设备驱动程序】Linux系统主要有字符设备、网络设备、块设备,Linux内核中,I/O设备分为两大类:字符设备、块设备。块设备将数据存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到4K字节之间。块设备与文件系统的关系如图所示:块设备的结构:扇区,磁道,柱面,盘片。其中扇区是硬件设备传送数据的基本单位,其大小一般为512字节,也有更大的512*n字节的。但在
2014-04-09 15:50:37
897
原创 Linux驱动开发学习归纳-3
设备驱动模型由三大块组成:总线、设备、驱动。其中总线是虚拟总线,从Linux2.6开始引入了platform虚拟总线:即平台设备模型。在Linux设备驱动中,平台设备是指处理器集成的额外功能的附加设备:如Watch Dog、IIC、RTC、ADC等。需要注意的是:平台设备并不是和字符设备、块设备和网络设备并列的概念,而是种平行的概念。它是从另一个角度来对设备进行概括。平台设备的使用方法
2014-04-06 16:01:09
705
原创 Linux驱动开发学习归纳-2
【设备驱动模型】设备驱动模型提供了硬件的抽象:使用该抽象完成很多硬件重复的工作,如电源管理、即插即用设备支持、与用户空间的通信等。sysfs文件系统:Linux设备驱动模型由大量的数据结构和算法构成,非常复杂,因此引入sysfs文件系统来显示设备驱动模型的复杂关系。sysfs是一个只存在于内存中的文件系统。内核通过这个文件系统将设备信息导出到用户空间。sysfs文件系统是内核对象(kobj
2014-04-06 15:34:01
902
原创 泛型编程与STL学习-Containers
首先 :STL即是:用泛型编程的技术 将 算法(find, sort, etc.) 和 数据结构(vector, list, deque, set, etc.) 分离开来,而其中的连接点即是:iterators。通过iterator,算法作用于某个range身上。STL中用Container 的 概念来描述数据结构。C++语言支持的最简单的一个数据结构即:数组。数组有其自身优点如:1. 有ra
2014-03-30 19:08:30
797
原创 泛型编程与STL学习-function object
function object:以class形式包装的函数(在类中重载操作符()),除此以外,它还可以像一般class一样拥有 成员变量 和 成员函数,你可以以此利用function object 来表现 具有局部状态的函数,例如:template struct last_name_is{string value;last_name_is(const string& val): v
2014-03-26 17:03:41
662
原创 泛型编程与STL学习-iterators
concept: 可想象成: 一组型别需求条件 或 一组描述某个型别的条件model: 当 某个型别 满足所有这样的条件时, 我们便说 该型别 是 该concept的一个 model iterator: 迭代器,即是 满足一定需求条件 的concept,iterator 不单单是一个concept,共5个不同的concept,即iterator的分类iterator的分类:in
2014-03-24 15:00:20
656
原创 Win7&CentOS双系统问题解决
首先,我想用傲梅分区助手,从我的50GC盘分10G的空间到F盘用。在分区过程中电脑要重启,结果在第二次重启的时候直接跳过了grub启动项选择界面,来到grub命令行了。问题出在分区的过程中破坏了linux的grub,然后linuxgrub把CentOS的启动文件vmlinuz和initrd.imgdump到一个新的dump分区了,至此CentOS不能启动了,Windows也不能启动了。一开机
2013-12-20 15:00:19
593
原创 Makefile 中:= ?= += =的区别(转)
原文地址:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE =“base!”elseendif
2013-12-20 15:00:17
460
原创 (转) OSI七层模型与TCP/IP五层模型
http://blog.youkuaiyun.com/xiaojunjava/article/details/1707268OSI七层模型:OSI七层模型与TCP/IP五层模型" TITLE="(转) OSI七层模型与TCP/IP五层模型" />OSI七层模型OSI中的层功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,S
2013-12-20 15:00:14
513
原创 Win7+VMware Workstation环境…
Win7+VMware Workstation环境下的CentOS-Linux网络连接设置http://blog.sciencenet.cn/blog-430991-507041.html近日因学习需要尝试安装Linux开源操作系统,当然是在虚拟机环境下安装,选择的Distribution是CentOS(CommunityEnterprise OperatingSystem)。用惯
2013-12-20 15:00:12
736
原创 Win7下从U盘安装CentOSo6.1的经验
借助诸多网上经验,主要来自http://blog.youkuaiyun.com/zi__chen1/article/details/7199731准备工作: 1、EasyBCD,它能够极好地支持多种操作系统与Windows7、Vista结合的多重启动,包括Linux、 Mac OS X、 BSD等,当然也包括微软自家的Windows2000/XP。任何在安装Window
2013-12-20 15:00:10
513
原创 C++中的虚函数表(转)
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使
2013-12-20 15:00:07
398
原创 (转)汇编中各寄存器的作用
反汇编里repstos dword ptr es:[edi] 是做什么的?参考资料:1.http://www.cnblogs.com/awpatp/archive/2012/08/05/2623628.html 2.http://stackoverflow.com/questions/4024492/can-anyone-help-me-interpret-th
2013-12-20 15:00:00
1236
原创 (转)VS 反汇编方法及常用汇编…
在调试没有源码的文件时,我们可能要用到反汇编设计。一、VS反汇编方法1、调出反汇编窗口。反汇编方法及常用汇编指令介绍" />2、调用寄存器窗口(只有在反汇编下才可见)如果在调试状态还是没有此菜单项,可试着以下操作:在VS中点击“工具”->“导入和导出设置”,选择“重置所有设置”,下一步,这时你可以保存当前设置或不保存,我觉得无所谓,下一步,选择“VisualC#开发设置”
2013-12-20 14:59:57
576
原创 #pragma 详解(转)
概要:1. #pragma link "libname" 使用pragma link可以在工程里加入了一个名为libname的库文件。 2. #pragma data_seg(".sdata") //数据段开始。 int data_share=0; 注意点: A.这里的变量data_share必须初始化 B.必须在.def文件或link参数中指定此数据段.sdata为共享段,这样才
2013-12-20 14:59:55
777
原创 VC++调试大全
一、调试基础调试快捷键F5: 开始调试Shift+F5: 停止调试F10: 调试到下一句,这里是单步跟踪 F11: 调试到下一句,跟进函数内部Shift+F11: 从当前函数中跳出Ctrl+F10: 调试到光标所在位置F9: 设置(取消)断点Alt+F9: 高级断点设置跟踪调试1、 尽量使用快捷键时行调试2、 观察调试信息3、 高级中断
2013-12-20 14:59:50
806
原创 堆和栈的区别(转帖)
堆和栈的区别 (转贴)堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
2013-12-20 14:59:48
376
原创 拷贝构造函数的参数类型必须是引用
在C++中,构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题,你会怎么回答?或许你会回答为了减少一次内存拷贝?很惭愧的是,我的第一感觉也是这么回答。不过还好,我思索一下以后,发现这个答案是不对的。原因: 如果拷贝构造函数中的参数不是一个引用,即形如CClass(con
2013-12-20 14:59:46
413
原创 C++的前置声明
原帖地址:http://software.intel.com/zh-cn/blogs/2010/05/04/c-2/刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样://a.h#include "b.h"class A{...private: B b;};
2013-12-20 14:59:43
359
原创 计算机存储单位:Bit、Byte、KB、MB…
1Byte = 8 Bit 1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576 KB = 1,073,741,824Bytes 1 TB = 1,024 GB = 1,048,576 MB = 1,073,741,824 KB =1,099,511,627,77
2013-12-20 14:59:39
626
原创 Linux系统常用命令
日期时间:date命令,date-u 显示格林威治时间格式化显示时间:date +%Y--%m--%d,date+%Y:%m:%d等。使用超级用户修改时间:date -s “20:20:20”等。命令hwclock(clock)用以显示硬件时钟时间命令cal用以查看日历命令uptime用以查看系统运行时间和系统负载通过manuptime查看命令uptime的manual文档,点击
2013-12-20 14:59:36
372
原创 Linux系统目录架构
/bin 保存常用的可执行的命令(二进制文件)/boot 引导目录,跟系统启动所有相关的文件/dev 保存计算机的硬件设备文件/etc 几乎所有与操作系统相关的配置文件/home 家目录,保存所有用户(除root用户)的家目录/lib 库文件类似windows中的dll文件/media 自动挂载光盘优盘的文件夹/mnt 挂载光盘优盘的文件夹/opt 通常用来装一些大
2013-12-20 14:59:34
392
原创 Linux文件系统基本结构与基本操作
linux文件系统严格区分大小写:文件的名称大小写敏感 当前工作目录每一个shell或者系统进程都有一个当前工作目录。使用pwd(print work directory)命令可以显示当前的工作目录。~可以代表当前用户的家目录。 文件名称最多可以为255个字符,除了正斜线(/)外都是有效字符通过touch命令可以创建一个空白文件或者更新已有文件的时间。以.开头的文件为隐藏文件。隐
2013-12-20 14:59:32
403
原创 BASH命令行基本操作
Shell俗称壳(用来区别于kernel核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
2013-12-20 14:59:29
544
原创 linux学习-主机规划与磁盘分区
学习鸟哥的linux私房菜笔记,第三章:主机规划与磁盘分区概念:各个组件或设备在linux下面都是一个文件,在linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内。各硬件设备在linux中的文件名如下:设备:IDE硬盘 设备在linux内的文件名:/dev/hd[a-d]设备:SCSI/SATA/USB硬盘 设备在lin
2013-12-20 14:59:27
586
原创 linux是什么?
学习鸟哥的linux私房菜笔记,第一章:linux是什么? 首先,得了解:操作系统=内核+系统调用。而linux就是一套操作系统。 1969年以前:一个伟大的梦想 —Bell,MIT与GE的“Multics”系统。在20世纪60年代初期MIT开发了分时操作系统(compatibletime-sharingsystem,CTSS),它可以让大型主机通过提供多个终端机以连接进入主
2013-12-20 14:59:25
397
转载 [c语言编程]俄罗斯方块游戏(…
原文地址:[c语言编程]俄罗斯方块游戏(下)作者:王传对shape中的color表示形状的颜色,不同的形状有不同的颜色。七种形状及它们旋转后的变形体一共有19种形状,用一个全局数组表示。假定旋转的方向是逆时针方向(顺时针方向道理一样)。shape中的next就表示当前形状逆时针旋转后的下一个形状的序号。例如:第一种形状及其旋 转变形的形状用结构表示如下。 □□□□ □□□□ □□□□ □□□
2013-12-20 14:59:23
987
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人