Linux系统
ling1874
这个作者很懒,什么都没留下…
展开
-
实模式与保护模式
1.虚拟8086模式是运行在保护模式中的实模式,为了在32位保护模式下执行纯16位程序。它不是一个真正的CPU模式,还属于保护模式。 2.保护模式同实模式的根本区别是进程内存受保护与否。可寻址空间的区别只是这一原因的果。 实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,系统程序和用户程序没有区别对待,而且每一个指针都是指向"实在"的物理地址。这样一来,用原创 2009-10-12 16:29:00 · 547 阅读 · 0 评论 -
Linux内核启动地址的确定
内核编译链接过程是依靠vmlinux.lds文件,以arm为例vmlinux.lds文件位于kernel/arch/arm/vmlinux.lds,vmlinux-armv.lds的生成过程在kernel/arch/arm/Makefile中ifeq ($(CONFIG_CPU_32),y)PROCESSOR = armvTEXTADDR = 0xC0008000LDSCR转载 2009-12-15 18:50:00 · 736 阅读 · 0 评论 -
vivi分析-NandFlash的操作(mtd&&bon)-1
vivi中对nandflash的操作还是比较多的,比如vivi启动时,首先要将自身的代码从nandflash里复制到sdram里,这一步就需要对nandflash的读取。此时可以通过nandflash控制器来操作,所以实现起来会简单一些。到了vivi后面的阶段会引入mtd,用以增强对nandflash的操作(读、写、ecc较验等)。mtd封闭了一些对nandflash操作的细节,对上层操作提供统一转载 2009-12-16 22:12:00 · 830 阅读 · 0 评论 -
SDRAM大小的判断
//========================================================================//TITLE:// SDRAM大小的判断//AUTHOR:// norains//DATE:// Saturday 31-May-2008//Environment:// NONE//====================转载 2009-12-25 09:29:00 · 667 阅读 · 0 评论 -
Linux内核启动分析
Linux 内核启动分析1. 内核启动地址1.1. 名词解释ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。Start address of decompressor. heres no point in talking about virtual转载 2009-12-25 17:31:00 · 2383 阅读 · 2 评论 -
Uboot的一些基础知识
1. 下面代码是系统启动后U-boot上电后运行的第一段代码,他是什么意思?.globl _start_start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abo转载 2009-12-23 14:11:00 · 2315 阅读 · 1 评论 -
vmlinux.lds解读
vmlinux.lds.S用于对ld的输出进行组版,这个文件的格式在ld.info手册中有详细的说明。vmlinux.lds.S的主要目的是对输出文件中段进行排序,并定义相关的符号名,以下是简要注释。/* ld script to make i386 Linux kernel * Written by Martin Mares ; */OUTPUT_FORMAT("elf32-i386", "转载 2009-12-25 14:58:00 · 786 阅读 · 0 评论 -
uboot的lowlevel_init.s解读
本文主要分析与U-Boot启动过程相关的汇编代码lowlevel_init.S,目标平台以PXA270为例。文件位于board/myboard/lowlevel_init.S,主要执行内存相关的初始化 把链接寄存器LR(即R14)的值转存到寄存器R10中,以便lowlevel_init完成后恢复执行 .globl lowlevel_initlowlevel_init: mov r1转载 2009-12-27 13:12:00 · 1716 阅读 · 0 评论 -
lowlevel_init.S注解
#include #include /* some parameters for the board */ /* * * Taken from linux/arch/arm/boot/compressed/head-s3c2410.S * * Copyright (C) 2002 Samsung Electronics SW.LEE hitchcar@sec.samsung.c转载 2009-12-27 16:12:00 · 713 阅读 · 0 评论 -
uboot
本文主要分析与U-Boot启动过程相关的汇编代码lowlevel_init.S,目标平台以PXA270为例。文件位于board/myboard/lowlevel_init.S,主要执行内存相关的初始化 把链接寄存器LR(即R14)的值转存到寄存器R10中,以便lowlevel_init完成后恢复执行 .globl lowlevel_initlowlevel_init: mov r1转载 2009-12-27 13:10:00 · 887 阅读 · 0 评论 -
module奇怪错误问题集
我的机器是单CPU的,首先声明。 在编译一个模块时,如下: #ifndef __KERNEL__ # define __KERNEL__ #endif #ifndef MODULE # define MODULE #endif #include #include #include #include /* printk() */ #include /* everything..转载 2009-12-29 10:57:00 · 1806 阅读 · 0 评论 -
uboot编译全程
u-boot的Makefile分析 U-BOOT是一个LINUX下的工程,在编译之前必须已经安装对应体系结构的交叉编译环境,这里只针对ARM,编译器系列软件为arm-linux-*。 U-BOOT的下载地址: http://sourceforge.net/projects/u-boot 我下载的是1.1.6版本,一开始在FTP上下载了一个次新版,结果编译失败。1.1.6是没问题的。转载 2010-01-04 15:13:00 · 4643 阅读 · 0 评论 -
uboot.lds解读
/board/prochip/ub4020/U-boot.ldsOUTPUT_FORMAT("elf32-littlearm","elf32-littlearm","elf32-littlearm") ;三个分别指定在缺省、大端、小端情况下的输出可执行文件格式,这里都指定输出格式是elf32,小端和arm体系结构。OUTPUT_ARCH(arm) ;输出可执行文件指定为转载 2010-01-04 11:22:00 · 2711 阅读 · 0 评论 -
Linux定时器的用法
定时器是linux很重要也很基础的部分。时钟的处理类似中断,也是登记一个时间处理函数,在预定的时间过后,系统时钟的处理类似中断,也是登记一个时间处理函数,在预定的时间过后,系统会调用这个函数。在include/linux/timer.h里声明。 struct timer_list { struct timer_list *next; struct timer_list *原创 2010-03-29 10:10:00 · 1138 阅读 · 0 评论 -
linux内核IOCTL网络控制框架实现分析
linux内核IOCTL网络控制框架实现分析一、概述从ioctl这个名称上看,它是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等, 但实际上ioctl所处理的对象并不限制是真正的I/O设备,还可以是其它任何一个内核设备.ioctl以系统调用的转载 2010-04-12 10:08:00 · 671 阅读 · 0 评论 -
ARM汇编指令集
跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转:Ⅰ.使用专门的跳转指令。Ⅱ.直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从转载 2009-12-14 21:31:00 · 913 阅读 · 0 评论 -
对Nand flash读操作的分析
前几天大致分析了u-boot针对smdk2410的源码,了解了启动的流程,但是对板上许多硬件的驱动过程还不太清楚。smdk2410源码中有针对Nor Flash的初始化和读取,但源码中没有对Nand Flash的操作,虽然针对其他型号的板子应该有Nand的源码,但方便起见,我查阅了vivi的源码,它支持从Nand Flash启动,自然有我需要的东西。下面我就自己的分析和总结列出来,中间当然也从go转载 2009-12-16 00:10:00 · 802 阅读 · 0 评论 -
Linux分页机制
分页机制 分页机制的作用 分页机制是在段机制之后进行的,它进一步将线性地址转换为物理地址。 80386使用4K字节大小的页,且每页的起始地址都被4K整除。因此,80386把4GB字节线性地址空间划分为1M个页面,采用了两级表结构。 两级页表 两级表的第一级表称为页目录,存储在一个4K字节的页中,页目录表共有1K个表项,每个表项为4个字节,线性地址最高的10位(22-31)用来产生第一级原创 2009-10-14 11:31:00 · 1053 阅读 · 0 评论 -
自己动手写操作系统--笔记之安装DOS
安装dos作者没有交代 ~~自己搜索了下资料 整个工作分为以下四步:1,安装virtual pc2,新建一台pc3,在此pc上安装dos4,在dos下实现文件共享 1,安装virtual PC 请大家尽量购买正版,因为现在这个软件的老板是大名鼎鼎的M$,你一个不小心就会被他将你告上法庭,然后要求你赔给他一大笔青春损失费,呵呵. 2,新建一台原创 2009-10-15 10:12:00 · 1119 阅读 · 0 评论 -
配置linux内核浅析
随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。众所周知,Lin转载 2009-11-16 15:52:00 · 762 阅读 · 0 评论 -
Linux启动优化
开机按[CTRL]+[ALT]+[F7]/[F8]可查看系统启动时正在启动的服务!!!! 众所周知Linux给我们提供了7中不同的启动级别0~6,那么不同的启动级别都会启动那些服务哪。可以使用chkconfig ——list 查看,可以使用chkconfig 服务名 ——level 3 {on|of}修改是否要再某个级别启动或停止。 1. 例如:要把sshd服务在第3种启动转载 2009-11-24 16:30:00 · 1057 阅读 · 0 评论 -
BusyBox 的配置
BusyBox (http://www.busybox.net) 将数以百计的常用Unix/Linux命令集成到一个可执行文件中(名为busybox).它体积小巧, 功能却不失强大. 常用Linux命令实现的功能它都能提供. 它甚至还提供了tftp, http服务程序. 尽管少数的Linux命令的某些选项BusyBox没能提供, 但这并不影响它在嵌入式Linu转载 2009-11-24 00:18:00 · 6769 阅读 · 0 评论 -
shell编程基础
Shell编程基础出自Ubuntu中文本文作者:Leal 授权许可: 创作共享协议 GNU自由文档许可证 编辑人员:FireHare, Dbzhang800 我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): # !/bin/sh转载 2009-12-01 19:31:00 · 415 阅读 · 0 评论 -
怎样为Linux内核打补丁
在Linux内核邮件列表中一个经常被问到的问题就是怎样为Linux内核打一个补丁,或者更具体一点说,存在这么多的主干/分支,一个补丁到底要打在哪个版本的基础内核上。希望这篇文档能够为你解释明白这一点。除了解释怎样应用以及卸载补丁以外,在这里还提供了一个不同内核树(以及如何为它们打上特定补丁)的简要介绍。linux内核版本号的含义是什么?------所有的Linux核心包含由点隔开的三个转载 2009-12-06 16:04:00 · 671 阅读 · 0 评论 -
U-boot片内启动移植
================== 准备工作=================2 i, T1 r1 M/ e) g9 m1.阅读at91rm9200 官方文档有关“引导程序”的章节% V) o7 ]) A- V7 C$ n, [对at91rm9200的启动流程有个大概的了解。5 J+ F B4 x3 ]2 n9 Eat91rm9200引导流程图/ x" m$ f5 I" [+ H* R7 `D转载 2009-12-07 22:14:00 · 1131 阅读 · 0 评论 -
Linux基础知识
initrd基础知识(转载)linux2.6 内核的 initrd 机制解析screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=click here to open new window/nctrl+mouse wheel to zoom in/out;}" onmouseover="if(th转载 2009-12-06 23:28:00 · 867 阅读 · 0 评论 -
嵌入式系统文件系统比较 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs1496014325
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统 进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。 Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动转载 2009-12-09 22:25:00 · 1021 阅读 · 0 评论 -
Linux启动过程综述(学习)
Linux 2009-10-21 14:22 阅读5 评论0 字号: 大大 中中 小小 本文以Redhat 6.0 Linux 2.2.19 for Alpha/AXP为平台,描述了从开机到登录的 Linux 启动全过程。该文对i386平台同样适用。 Bootloader在Alpha/AXP平台上引导Linux通常有两种方法转载 2009-12-09 23:05:00 · 538 阅读 · 0 评论 -
构建基本的嵌入式Linux根文件系统
其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的《Linux全线移植文档》做的。有些东西我也不清楚,只是跟着做,做出来能用就了事了,没有深究其中的规范,以及文件系统中哪些要,哪些不要。趁着今年过年的几天假期,我移植重新移植了U-Boot1.3.1和Linux2.6.24到S3C2410及S3C2440后,我想好好的看看有关文件系统构建方法和规范,整理整理构建转载 2009-12-09 23:19:00 · 968 阅读 · 0 评论 -
内核启动无法挂载根文件系统的问题
这类问题很常见,先总体介绍一下解决思路。能出现让人激动的的控制台,那么系统移植已经接近完成;但是不少人在最后一步出现问题。要点如下:1. 在正确的位置烧写正确格式的文件系统映象:2. 内核支持这种文件系统格式3. 文件系统的内容要完备 上面说得简单,一个个介绍。 1. 在正确的位置烧写正确的文件系统映象: (a). 正确的位置嵌入式开发中,常通过bo转载 2009-12-10 19:01:00 · 3413 阅读 · 2 评论 -
nand flash结构以及读写分析
NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。这些Line 会再组成Page.(Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针对转载 2009-12-15 22:43:00 · 603 阅读 · 0 评论 -
LINUX下历遍目录的方法
LINUX下历遍目录的方法一般是这样的打开目录-》读取-》关闭目录相关函数是opendir -> readdir -> closedir#include DIR *opendir(const char *dirname);#include struct dirent *readdir(DIR *dirp);#include int closedir(DIR *dirp);好了,三个函数都出来了呵呵原创 2010-04-14 17:51:00 · 807 阅读 · 0 评论