- 博客(72)
- 资源 (12)
- 收藏
- 关注
转载 操作系统管理内存的机制——为什么要设置虚拟内存?
在进入正题前先来谈谈操作系统内存管理机制的发展历程,了解这些有利于我们更好的理解目前操作系统的内存管理机制。一 早期的内存分配机制 在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。当计算机同时运行多个程序时,必须保证这些程序用到的内存总量要小于计算机实际物理内存
2012-06-13 15:35:46 1168
原创 ioremap
void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) void *ioremap(unsigned long phys_addr, unsigned long size) 入口: phys_addr:要映射的起始的IO地址; size:要映射的空间
2012-06-13 14:42:21 519
转载 C语言中的return,exit,break,continue
http://blog.csdn.net/yangwenchao1983/article/details/6289150 C语言中的return,exit,break,continue。前两个函数使用的同时通常都会带上程序退出时的状态码,标准C中有EXIT_SUCCESS和EXIT_FAILURE两个宏,位于/usr/include/stdlib.h中。是这样定义的的:#defin
2012-06-13 13:55:34 506
转载 U-BOOT中Makefile分析
from: http://blog.csdn.net/boyskung/article/details/3211988 这里主要涉及到如下几个文件: 主目录中的Makfile、mkconfig、config.mk以及各子目录中的Makefile。因为子目录中Makefile太多,所以本文中以lib_arm目录中的Makefile为例进行分析。 首先大概介绍一下这几个文件。
2012-06-11 17:08:45 546
转载 U-BOOT.lds文件详解
U-BOOT.lds文件详解u-boot.lds决定了u-boot可执行映像的连接方式,以及各个段的装载地址(装载域)和执行地址(运行域)。 GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ){ contents } >region :phdr =f
2012-06-11 16:45:18 997
转载 linux 驱动开发 自动创建节点的问题
学习驱动编写 问题真多。创建设备文件device_create和销毁 函数使用出现如下问题:implicit declaration of function 'class_device_create'error: implicit declaration of function 'class_device_destroy'这个问题又困了我。没办法找个牛人问问。牛人就是牛
2012-06-09 23:16:07 612
转载 RedHat Enterprise Linux 5 安装TFTP服务器和NFS服务器
Abstract 在嵌入式开发中有宿主机和目标机之分:宿主机是执行编译、链接嵌入式软件的计算机;目标机是运行嵌入式软件的硬件平台。 TFTP服务器作为工作于宿主机的软件,主要提供对目标机的主要映像文件的下载工作。 Solution一.TFTP服务器的安装 利用以下命令就可以看到TFTP服务器已启动,则不用安装[root@localhost Server]# ne
2012-06-08 14:05:59 467
转载 汇编调用c函数为什么要设置栈
一.栈的整体作用(1)保存现场/上下文(2)传递参数:汇编代码调用c函数时,需传递参数(3)保存临时变量:包括函数的非静态局部变量以及编译器自动生成的其他临时变量。二.为什么汇编代码调用c函数需要设置栈之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好栈。而自己在Uboot的start.S汇编代码中,关于系统初始化,也看到有栈指针初始化这个动作。但
2012-06-07 16:07:35 1882
原创 make -C M=
一般用下面的Makefile : # Makefile2.6 ifneq ($(KERNELRELEASE),)obj-m := hello.o else PWD := $(shell pwd) # 指定模块源代码目录KVER ?= $(shell uname -r)
2012-06-07 11:12:09 745
转载 protel 99 se原理图设计步骤
protel 99 se原理图设计步骤1.1 protel 99 se电路板设计步骤 一般而言,设计电路板最基本的过程可以分为三大步骤。 电路原理图的设计电路原理图的设计主要是protel 99 se的原理图设计系统(Advanced Schematic)来绘制一张电路原理图。在这一过程中,要充分利用protel 99 se所提供的各种原理图绘图工具、各种编辑功能,来实现
2012-05-31 16:20:31 12402
转载 uboot中mkconfig详细分析-- 转载
现在来分析$(SRCTREE)/mkconfig文件的内容。在分析内容之前,为了方便,我把传入到此脚本中的参数都列出来,方便后面备查:smdk2410 arm arm920t smdk2410 NULL s3c24x0#!/bin/sh -e 这是第一行的内容,表示这个shell脚本的解释器是/bin/sh,给的解释器的参数为-e,这个参数的意思就是,当shell返回值为非零值的时候,
2012-05-30 09:19:50 1074
转载 什么是BSS段:
什么是BSS段: 一个程序本质上都是由 bss段、data段、text段三个组成的。这样的概念,不知道最初来源于哪里的规定,但在当前的计算机程序设计中是很重要的一个基本概念。而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Starte
2012-05-30 09:08:48 670
原创 U-BOOT mkconfig文件详细解析
U-BOOT mkconfig文件详细解析 #!/bin/sh -e # Script to create header files and links to configure# U-Boot for a specific board. ##****此处指出了脚本的参数# Parameters: Target Architecture CPU Board
2012-05-27 14:43:17 907
转载 -include和sinclude 作用
-include和sinclude 如果有文件没有找到的话,make会生成一条警告信息,但不会马上出现致命错误。它会继续载入其它的文件,一旦完成makefile的读取,make会再重试这些没有找到,或是不能读取的文件,如果还是不行,make才会出现一条致命信息。如果你想让make不理那些无法读取的文件,而继续执行,你可以在include前加一个减号“-”。 如:
2012-05-27 13:54:58 3304
转载 硬链接和软链接的区别
一、链接文件 链接有两种方式,软链接和硬链接。 1软链接文件软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题,链接文件甚至可以循环链接自己。类似于编程语言中的递归。 用ln -s命令可以生成一个软连接,如下: [root@
2012-05-27 13:39:02 1431
原创 U-BOOT移植,structure has no member named `CAMDIVN
U-BOOT移植,structure has no member named `CAMDIVN错误:speed.c: In function `get_HCLK':speed.c:114: error: structure has no member named `CAMDIVN'speed.c: In function `get_PCLK':speed.c:154
2012-05-26 17:49:56 2889
转载 S3C2440如何从NAND FLASH中启动
S3C2440如何从NAND FLASH中启动 S3C2440可以配置从NOR FLASH中启动,也可以配置成从NAND FLASH中启动,从NOR FLASH中启动比较好理解,因为NOR FLASH和RAM一样可以通过总线访问,cpu可以直接执行NOR FLASH中的程序,但是CPU不能直接通过总线访问到NAND FLASH中的程序,要从NAND FLASH中启动就要
2012-05-15 14:25:07 877
转载 【转】RO段、RW段和ZI段 --Image$$??$$Limit 含义(zz)
作者评注:内容很多,不过解释讲解详细http://www.cnblogs.com/heart-of-eagle/archive/2011/04/28/2032240.html转载: IMPORT |Image$$RO$$Limit| IMPORT |Image$$RW$$Base| IMPORT |Image$$ZI$$Base|
2012-05-08 16:27:25 1276 1
转载 LTORG 伪指令
转贴:http://blog.csdn.net/lemon_fantasy/archive/2008/07/04/2612860.aspx LTORG用于声明一个数据缓冲池,(也称为文字池)的开始。在使用伪指令LDR时,常常需要在适当的地方加入LTORG声明数据缓冲池,LDR加载的数据暂时放于数据缓冲池。语法 LTORG使用说明:当程序中使用LDR之类的指令时,数据缓冲池的使
2012-05-08 16:21:58 740
转载 STMFD和LDMFD指令个人理解分析
LDM/STM指令主要用于现场保护,数据复制,参数传送等。STMFD指令STMFD Rn{!},{reglist}{^} STMFD SP!,{R0-R7,LR} 对于这条指令伪代码的解释,网上是这么说的:SP = SP - 9×4; address = SP; for i = 0 to 7 Memory[address] =
2012-05-08 15:51:21 1663
转载 理解$HandlerLabel HANDLER $HandleLabel 宏
启动代码有如下的宏定义:MACRO $HandlerLabel HANDLER $HandleLabel ;宏定义,请仔细理解$HandlerLabel ;由于ADS仅支持FD(满递减)型堆栈 sub sp,sp,#4
2012-05-08 15:15:16 1236
转载 ARM汇编指令汇总
1、ARM汇编的格式: 在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写;有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错。常量定义需要顶格书写,不然,编译器同样会报错。 2、字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号。
2012-05-08 13:56:21 36852 3
转载 ARM汇编ADR,LDR等伪指令
arm中LDR伪指令与LDR加载指令LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。 COUNT EQU 0x40003100 …… LDR R1,=COUNT MOV R0,#0 STR R0,[R1] COUNT是我们定义的一个变量,地址为0x40003100.这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。 LDR R1,=C
2012-05-08 13:22:56 5775
原创 单片机接收模块FIFO的写法
可以利用FIFO来解决单片机接收数据过程中的阻塞现象。 #define RXBUF_SIZE 32 //接收FIFO的最大容量unsigned char RX_BUFF[RXBUF_SIZE]; //接收FIFO缓冲区数组unsigned int UART_InputLen =0;
2011-12-05 13:04:27 1801
原创 第二章 构造和运行模块(1)
第二章开始进入到实际的编程了。第一个测试代码:Hello World。第一件事就是建立测试系统。我安装的系统是rhel-5.1-server-i386-dvd.iso,你可以到网上下载其他版本。里面自带的内核版本是2.6.18-53.e15。我觉得不爽,在kernerl.org镜像网站上下了linux-2.6.29.tar.bz2安装包,准备安装自己的内核。(1)将其解压到/home目
2011-11-13 21:16:41 567
原创 第一章 设备驱动程序简介
Linux自由操作系统,其内部实现细节对于所有人来说都是公开的。虽然它的内核由大量的而且复杂的代码组成,但是想成为内核黑客的人还是可以找到一个入口,通过这个入口进入Linux内核的开发当中,进入linux自由王国,而这个入口就是设备驱动程序。 驱动程序在 Linux 内核里扮演着特殊的角色. 它们是截然不同的"黑盒子", 使硬件的特殊的一部分响应定义好的内部编程接口. 它们完全隐藏
2011-11-12 22:44:38 507
转载 一个10年程序员职业发展和困境
一个10年程序员职业发展和困境 我不是计算机科班出身(学金融的),但是我喜欢编程,01年4月看到郑州一家网站招聘网络编辑,就去了,其实准备了很久,当然也面试上了,一个月800块钱,3个月试用期打八折。因为我上网还算早,所以喜欢网络,所以就应聘了带“网络”两个字的职位。后来到了公司才知道网络编辑其实就是Ctrl+CCtrl+V而已。在那个网站我学会了做网页(HTML),也了
2011-11-12 12:35:04 818
转载 Linux kernel之内核定时器
转载:http://allenshao.iteye.com/blog/982270 内核定时器 (也称为动态定时器)是内核在以后某一个时刻运行一段程序或进程的基础,软件定时器可以在一个确切的时间点上(更严格地说是一个时间点以后)激活相应的程序段或进程。软件定时器在设备驱动程序中被大量应用以检测设备的状态。使用一个软件定时器很简单,只需做一些初始化工作,设置一个相对于当前时刻的超时时间和
2011-11-10 13:26:06 3986
转载 深入分析Linux 内核链表
转载:https://www.ibm.com/developerworks/cn/linux/kernel/l-chain/ 一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除
2011-11-10 11:14:35 762
转载 进程地址空间
转载:http://www.cnblogs.com/hanyan225/archive/2011/08/03/2125927.html前边我已经说过了内核是如何管理物理内存。但事实是内核是操作系统的核心,不光管理本身的内存,还要管理进程的地址空间。linux操作系统采用虚拟内存技术,所有进程之间以虚拟方式共享内存。进程地址空间由每个进程中的线性地址区组成,而且更为重要的特点是内核允许进程使用该
2011-11-10 10:20:36 8293
转载 Linux内核--内核地址空间分布和进程地址空间
内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。永久内存映射区:该区域可访问高端内存。访问
2011-11-10 10:03:00 4635
转载 uImage简要说明
转载:http://www.cnblogs.com/reviver/archive/2009/09/21/uimage.html uImage是u-boot加载的映像格式。普通的vmlinux经过mkimage工具处理后,变成uImage格式,它由一个头部和压缩的vmlinux构成。bootm只能加载uImage的格式。在新的内核版本里,在有一些架构上已经有uImage的tar
2011-11-10 09:33:43 1286
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人