06 2011 档案
摘要:前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误:以下是假设旧的C程序库C的头文件/*-----------c.h--------------*/#ifndef _C_H_#define _C_H_extern int add(int x, int y);#endifC的源文件/*-----------c.c--------------*/int add(int x, int y){ return x+y;}C++的调用/*-----------cpp.cpp--------------*/#include "c.h"vo
阅读全文
摘要:S3C2440的中断寄存器:1.中断分两大类:内部中断和外部中断。2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。 EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。 EINTPEND:这个是中断挂起寄存器,清除时要写1,后面还有几个是写1清除。当一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置1。为什么没有
阅读全文
摘要:S3c2440支持多达36个内部中断源和24个外部中断源,分别使用内部终端屏蔽寄存器INTMSK和外部中断寄存器MSK进行屏蔽控制。其中,外部中断源通过GPIO以复用的方式成为内部中断源的一部分。但是我们清楚,INTMSK是一个32位的寄存器,最多只能支持32中断,它是如何对应这么多中断的呢?首先我们先看INTMSK对应的位。INTERRUPT MASK (INTMSK) REGISTER (Continued)INT_ADC [31] 0 = Service available, 1 = Masked 1INT_RTC [30] 0 = Service available, 1 = Mask
阅读全文
摘要:Shell脚本的执行方式: 注明:wd代表“脚本保存的目录”1.fork语法:/wd/shell.shfork是最普通的,就是直接在脚本里面用/wd/shell.sh来调用shell.sh这个脚本.运行的时候开一个子shell执行调用的脚本,子shell执行的时候,父shell还在。子shell执行完毕后返回父shell。子shell从父shell继承环境变量.但是子shell中的环境变量不会带回父shell2.exec语法: exec /wd/shell.shexec与fork不同,不需要新开一个sub-shell来执行被调用的脚本. 被调用的脚本与父脚本在同一个shell内执行。但是使用e
阅读全文
摘要:1、总结背景在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了。这涉及到环境变量PATH的设置问题,而PATH的设置也是在linux下定制环境变量的一个组成部分。本案例基于RedHat AS4讲解环境变量定制的问题。2、变量简介Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。3、定制
阅读全文
摘要:当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile对source进行了学习,并且用它与sh 执行脚本进行了对比,现在总结一下。source命令:source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。功能:使Shell读入指定的Shell程序文件并依次执行文件中的所有语句source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。用法:source filename 或 . filenamesource命令(从 C Shell 而来)是bash s
阅读全文
摘要:要想正确地执行2440的外部中断,一般需要完成两个部分内容:中断初始化和中断处理函数。 在具体执行中断之前,要初始化好要用的中断。2440的外部中断引脚EINT与通用IO引脚F和G复用,要想使用中断功能,就要把相应的引脚配置成中断模式,如我们想把端口F0设置成外部中断,而其他引脚功能不变,则GPFCON=(GPFCON & ~0x3) | 0x2。配置完引脚后,还需要配置具体的中断功能。我们要打开某一中断的屏蔽,这样才能响应该中断,相对应的寄存器为INTMSK;还要设置外部中断的触发方式,如低电平、高电平、上升沿、下降沿等,相对应的寄存器为EXTINTn。另外由于EINT4到EINT7
阅读全文
摘要:使用前的准备:1、首先下载makeself的软件包,其中包含的文件主要有:makeself.sh makeself-header.sh等2、将这两个文件放入目录/usr/bin下,并通过ln -s makeself.sh makeself来做一个符号链接。使用:makeself是一个小巧的shell工具,它将你的程序打成一个可执行的shell包,安装更加容易方便。如有一个文件夹: dnsServerSetup文件夹内有文件:named.conf.in named.broadcast localdomain.zone named.zero named.local bind-chroot-9.2.
阅读全文
摘要:makeself是一个小型shell脚本,他可以吧特定目录下的文件打包成为一个shell脚本类似的文件,并且能够像shell脚本一样执行。例如我在test目录下创建了多个shell脚本和一些配置文件,这些脚本在执行时可能会相互调用并读取配置文件。使用makeself工具可以将这些文件统一打包成一个脚本并执行,非常的方便。makeself使用方法:1、首先makeself:http://megastep.org/makeself/makeself.run2、下载完成后会得到makeself.run,文件,直接运行后会得到makeself.sh(可以将该文件拷贝到/usr/bin目录下)3、mak
阅读全文
摘要:在讲解之前,先介绍一下s3c2440时钟系统。一般来说,MCU的主时钟源主要是外部晶振或外部时钟,而用的最多的是外部晶振。在正确情况下,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。由于外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL(锁相环)进行倍频处理。在s3c2440中,有2个不同的PLL,一个是MPLL,另一个是UPLL。UPLL是给USB提供48MHz。在这里,我们主要介绍MPLL。外部时钟源经过MPLL处理后能够得到三个不同的系统时钟:FCLK、HCLK和PCLK。FCLK是主频时钟,用于ARM920T内核;HCLK用于AHB总线设备,如ARM920T,
阅读全文
摘要:S3c2440 有5 个16 位的定时器。定时器0、1、2、3 有脉宽调制功能(PWM)。定时器4有一个没有输出引脚的内部定时器。定时器0 有一个用于大电流设备的死区生成器。定时器0 和1 共享一个8 位的预分频器(预定标器),定时器2,3,4 共享另一个8 位预分频器.定时器的时钟源为PCLK,首先经过预分频器降低频率后,进入第二个分频.可以生成5 种不同的分频信号(1/2,1/4,1/8,1/16 和TCLK)定时器启动后,TCNTn开始减一计数,当TCNTn 等于TCMPn时, TOUTn 反转, TCNTn继续减数.当TCNTn= 0 时, TOUTn 再次反转,并触发中断(中断已经使
阅读全文
摘要:修改ip地址即时生效:# ifconfig eth0 192.168.0.20 netmask 255.255.255.0启动生效:修改/etc/sysconfig/network-scripts/ifcfg-eth0修改default gateway即时生效:# route add default gw 192.168.0.254启动生效:修改/etc/sysconfig/network-scripts/ifcfg-eth0修改dns修改/etc/resolv.conf修改后可即时生效,启动同样有效修改host name即时生效:# hostname fc2启动生效:修改/etc/sysco
阅读全文
摘要:mdev是busybox下的udev的精简版,适合在嵌入式系统下管理设备但mdev会把所有的设备文件都动态地创建在/dev/目录下,如果程序使用dev目录子目录下的设备,就必须修改程序,比较麻烦,当然也可以在mdev运行之后,手工创建子目录,然后再用 ln -s 做设备文件的软链接这里有人作出了更好的脚本处理机制:http://lists.busybox.net/pipermail/busybox/2007-May/027309.html再贴上mdev的使用说明-------------------------------------------MDEV 入门(转)Busybox-1.7.0/
阅读全文
摘要:Linux静态IP设置IP配置:/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0BOOTPROTO=staticHWADDR=00:26:18:0B:38:C0ONBOOT=yesIPADDR=192.168.0.20NETMASK=255.255.255.0GATEWAY=192.168.0.1IP生效:/sbin/ifdown eth0/sbin/ifup eth0通知网关更新信息:/etc/init.d/network restart配置DNS:vi /etc/resolv.confnameserver 202.96.134.133
阅读全文
摘要:配置文件位于:/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.3NETMASK=255.255.255.0GATEWAY=192.168.0.1 使IP地址生效:/sbin/ifdown eth0/sbin/ifup eth0配置dns解析echo "nameserver 211.98.1.28">> /etc/resolv.conf 通知网关更新信息:/etc/init.d/network restart ①简介
阅读全文
摘要:作者:北南南北来自:LinuxSir.Org摘要:本文是关于Linux操作系统主机名(hostname)的文档,对主要配置文件/etc/hosts进行简要的说明 ;另外对基配具工具hostname也进行了举例说明; 欢迎高手斧正,谢谢; ++++++++++++++++++++++++++++++++++++++++正文++++++++++++++++++++++++++++++++++++++++1、 什么是主机名;无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网
阅读全文
摘要:rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具优点:比ftp命令方便,而且服务器不用打开FTP服务。首先先了解有关的两个命令可以提供很方便的操作:sz:将选定的文件发送(send)到本地机器rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器第一步:下载rzsz-3.48.tar.gz文件下载地址:http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz [root@localhost soft]# ll总计 72-rw-r--r-- 1 root root 65566 2004-05
阅读全文
摘要:Vmware有自己的硬盘管理工具,其所在位置是/vmware/vmware workstation/,名称为vmware-vdiskmanager.exe,具体的参数及命令格式可以参照帮助文档。其使用方法如下:假设虚拟机装有Linux操作系统,虚拟机名称为AS4,安装路径是H:\AS4,则首先进入到vmware-vdiskmanager所在的目录下,然后执行如下命令:vmware-vdiskmanager.exe -x 10Gb "H:\AS4\Red Hat Enterprise Linux 4.vmdk"其中,-x参数表示为虚拟机增加存储空间,后面所跟的数字表示存储空间
阅读全文
摘要:Linux添加硬盘是在原来安装的硬盘空间不够或者需要使用其他硬盘上的东西时候的解决办法,因为大多数初学者习惯使用虚拟机,这里以在Vmware虚拟机中实现Linux添加硬盘的具体步骤来详细介绍说这个问题。Vmware中为linux增加硬盘1. 在vmware的setting中为虚拟机增加一个硬盘。2. 在vmware中看见 第1个硬盘是 /dev/sda , 第2个硬盘是 /dev/sdb3. 创建硬盘信息fdisk /dev/sdba. 按n添加分区,选p(主分区);b. 选1,也就是sdb1;c. 然后就是空间划分,一路回车。默认是使用整个磁盘空间。d. 然后按w写入分区信息4. 格式化硬盘
阅读全文
摘要:每次测试自己写的驱动模块都要自己mknod设备文件,总觉得是一种不好的行为而且要自己指定主设备号和次设备号,就是没有书上说sysfs、udev什么程序员不需关心设备号之类的优点了内核TMD经常变,一个2.6.25上还好好的驱动,跑到2.6.29上就不能编译通过了,妈的,可以理解为什么Linux驱动工程师会高薪了,好,我忍了这里的方法只能保证倒2.6.31,再往后就未知了,所以死读书是不行的要融会贯通,深入理解,有问题直接到内核代码里找答案在2.6.17以前,在/dev目录下生成设备文件很容易,devfs_mk_bdevdevfs_mk_cdevdevfs_mk_symlinkdevfs_mk_
阅读全文
摘要:从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备。(不太明白什么是devfs,udev,对linux中的文件系统没有什么概念呢。)大致用法如下:struct class *myclass = class_create(THIS_MO
阅读全文
摘要:这确实有些混乱:1. 命令行参数“console=ttySAC0”与/dev/目录没有任何关系,它被用来选择从哪个设备输出内核、驱动的printk信息:①. 在内核kernel/printk.c中,有这一行代码:__setup("console=", console_setup);对于命令行参数“console=ttySAC0”,console_setup函数会将设备名(name)、索引(index)解析出来:名为ttySAC,索引为0──表示第一个设备②. S3C2410的串口驱动文件drivers/serial/s3c2410.c中,有如下数据结构:1882 stati
阅读全文
摘要:mdev的hotplug模式1, busybox 添加mdev支持2, 在/etc/rc.d/rcS中添加#mount filesystem/bin/mount -a#start mdevecho /sbin/mdev > /proc/sys/kernel/hotplug #设置系统的hotplug程序为mdevmdev –s/etc/fstab的内容如下:proc /proc proc defaults 0 0none /tmp ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0执行md
阅读全文
摘要:不需挂载就能查看的命令:1. file[root@localhost dev]# file -s /dev/sda1/dev/sda1: Linux rev1.0ext4filesystemdata (extents) (huge files)2.parted[root@localhost dev]# parted /dev/sdaGNU Parted 1.8.8Using /dev/sdaWelcome to GNU Parted! Type 'help' to view a list ofcommands.(parted) printModel: VMware, VMwar
阅读全文
摘要:终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。tty是Teletype的缩写。Teletype是最早出现的一种终端设备,很象电传打字机(或者说就是),是由Teletype公司生产的。在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:1.串行端口终端(/dev/ttySn)串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0
阅读全文
摘要:一、vmlinuzvmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/
阅读全文
摘要:在LINUX中添加按键的驱动并编译进入内核?第一步:将keydriver.c的驱动源文件拷到drivers/char目录下第二步:修改Kconfig文件. 打开Kconfig在 config DEVKMEME后添加以下信息: config UNSP2440_key bool "key driver sunplusapp S3C2440 board" default y help this is GPIO driver for wenhao S3C2440 board.第三步:make menuconfig Device driver-à character dev
阅读全文
摘要:如何在嵌入式LINUX中添加ARM开机图片?1、如果要让系统启动起来看到 bootlogo小企鹅,必须得在 make menuconfig 中进行配置添加,如下 Device Drivers ---> Graphics support ---> Bootup logo下面可以全部选中支持2、打开gimp号称 linux 下的 photoshop ,安装windows版(gimp-2.6.9-i686-setup.exe) 打开任何格式的一张将要转换的图片 选择:图像--->模式--->索引颜色转换--->最大颜色数量设置为(224)--->转换 还可以通过:
阅读全文
摘要:本文由Jacky原创,来自http://blog.chinaunix.net/u1/58780/showart.php?id=462971对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) : AT ( ldadr ){ contents } >region :phdr =fill...}secname和contents是必须的,其他的都
阅读全文
摘要:Makefile文件如下:KERNELDIR = /home/wenhao/platform/linux-2.6.34PWD := $(shell pwd)CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-CC = $(CROSS_COMPILE)gccobj-m := key.o modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions.PHONY: modules
阅读全文
摘要:转自:http://www.360doc.com/content/090528/23/150654_3691341.html从PC机下载东西到开发板的嵌入式linux系统里面,首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。下面介绍一下lsz/lrz的使用方法。一、编译lrzsz并下载到开发板上 从http://download.chinaunix.net/download/0007000/6293.shtml下一个lrzsz的tar包,解压缩后输入./configu
阅读全文
摘要:编译内核时候的一个错误提示 make: *** arm/kernel.git/arch/arm: Is a directory. Stop. 这个错误是由在Makefile的 ARCH ?= $(SUBARCH) 这行的后面多了一个空格造成的。 所以,在编辑Makefile时候,每行结尾,一定要确认
阅读全文
摘要:mini2440的LEDS驱动程序和测试程序详解http://hi.baidu.com/760159/blog/item/75c225f3dea26d19b17ec525.html一 leds的驱动程序位置:linux 2.6.29/drivers/char/mini2440_leds.c#include <linux/miscdevice.h>#include <linux/delay.h>#include <asm/irq.h>#include <mach/regs-gpio.h>//具体头文件位置/opt/FriendlyARM/mini2
阅读全文
摘要:在编写ioctl代码之前,需要选择对应不同命令的编号。为了防止对错误的设备使用正确的命令,命令号应该在系统范围内唯一,这种错误匹配并不是不会发生,程序可能发现自己正在试图对FIFO和audio等这类非串行设备输入流修改波特率,如果每一个ioctl命令都是唯一的,应用程序进行这种操作时就会得到一个EI
阅读全文
摘要:inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。注意inline在c中最好写成__inline,否则编译会出错! 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) (Var1+Var2)*(Var1-Var2) 为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏定义在形式及使用上像一个函数,但它使用预处理器实现,没有了参数压栈,代码生成 等一系列的操作,因此,效率很高,这是它在C中被使用的一个主要原因。 2. 这种宏定义在形式上类似于
阅读全文
摘要:在嵌入式系统中,BootLoader 是用来初始化硬件,加载内核,传递参数。因为嵌入式系统的硬件环境各不相同,所以嵌入式系统的BootLoader 也各不相同,其中比较通用的是U-Boot,它支持不同的体系结构,如ARM,PowerPC,X86,MIPS 等。本文着重介BootLoader与内核之间
阅读全文
摘要:第一步:添加宏在include/configs/unsp2440.h中增加一项#define CONFIG_CMD_HELLOWORD 1第二步:添加实现在common/文件夹下建立helloword.c#include <common.h>#include <command.h>#ifdef CO
阅读全文
摘要:在VIVI中添加自己的指令第一步:找到lib\command.c文件 按照help_cmd为模板添加一个自己的指令结构体,如下:user_command_t hello_cmd = { "hello", //添加的指令名 command_hello, //调用的函数 NULL, "hello \t\
阅读全文
摘要:杂项设备(misc device)杂项设备也是在嵌入式系统中用得比较多的一种设备驱动。在 Linux内核的include\linux目录下有Miscdevice.h文件,要把自己定义的miscdevice从设备定义在这里。其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主编号10,一起归于miscdevice,其实misc_register就是用主标号10调用register_chrdev()的。也就是说,misc设备其实也就是特殊的字符设备,可自动生成设备节点。字符设备(char device)使用register_chrdev(LED_MAJOR,DEVICE_NAME
阅读全文
摘要:对于ARM体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure CallStandard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2Online Books ——Developer Guide的2.1节。这篇文档要讲的是汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部.
阅读全文
摘要:所谓不断电电源系统,就是当停电时能够接替市电持续供应电力的设备,它的动力来自电池组,由于电子元器件反应速度快,停电的瞬间在4~8毫秒内或无中段时间下继续供应电力。 为什么要用UPS?现在全世界各国的大众供应系统都是交流电源,一个理想的交流电源,应该满足以下几个条件:1. 频率稳定2. 电压稳定(土5%内)3. 不含谐波失真(<5%)4. 没有噪声干扰(符合IEEE 587,FCC,CE等标准规定)5. 低输出阻抗。 大家可以想象,今天如果未使用不间断电源系统,那么当市电发生异常,将造成计算机死机,甚至造成硬件故障,到时维修费将不可预期;硬件的故障可花钱消灾,但是存在硬盘中的资料呢?那可是
阅读全文
摘要:Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。 系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,运行在核心态,它完成以下的功能: 1.对设备初始化和释放. 2.把数据从内核
阅读全文
摘要:在Linux文件系统中,很多人对Inode都不太明白,今天我就和大家一起来分享一下我对Inode的认识,如果有理解错误的地方,请大家多多批评指点。在上一篇一天一点学习Linux之认识文件系统中,在最后给出了一张EXT3文件系统结构图,里面已经涉及到了Inode的相关信息——图的左下角部分,今天,我们就专门对这一部分进行一下详解,希望通过今天的内容,能帮助大家更清楚的了解Inode。先看看Inode的结构图再来了解一下文件系统如何存取文件的1、根据文件名,通过Directory里的对应关系,找到文件对应的Inode number2、再根据Inode number读取到文件的Inode table
阅读全文
摘要:关于inode; inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。 做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如
阅读全文
摘要:因为本身从事存储行业,在工作中多次碰到用户有这样的要求:我的linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。现在新增加了一个外置的磁盘阵列,通过SCSI卡连接。但接上这个磁盘阵列后,/dev/sda变成了磁盘阵列的硬盘了,原来内置的SCSI硬盘变成了 /dev/sdb,我希望将设备文件固定下来。 过去,我总是对用户说,这个比较麻烦,因为/dev/sda等文件都是linux内核自动分配的。很难固定下来,除非你更改加载SCSI卡驱动程序的顺序,让内置硬盘连接的SCSI卡比外接磁盘阵列连接的SCSI卡的驱动模块先加载到内核,这样就能保证/dev/sda总是指向内置的硬盘
阅读全文
摘要:1、 使用新的入口 必须包含 <linux/init.h> module_init(your_init_func); module_exit(your_exit_func); 老版本:int init_module(void); void cleanup_module(voi); 2.4中两种都可以
阅读全文
摘要:预定义变量 含义 $* 不包含扩展名的目标文件名称。 $+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。 $< 第一个依赖文件的名称。 $? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。 $@ 目标的完整名称。 $^ 所有的依赖文件,以空格分开,
阅读全文
摘要:( 转)嵌入式Linux驱动开发笔记 Linux驱动一般以模块module的形式来加载,首先需要把驱动编译成模块的形式。简单的例子, Begin of hello.c file #include <linux/init.h> #include <linux/kernel.h> #include <l
阅读全文
摘要:网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题。下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至于如何使用、怎么修改成自己的,大家就随意好了。驱动测试有两种方式,一为内核树之内,一为内核树以外,前
阅读全文
摘要:不管是Windows还是Linux,驱动程序都扮演着重要的角色。应用程序只能通过驱动程序才能同硬件设备或系统内核通讯。Linux内核对不同的系统定义了标准的接口(API),应用程序就是通过这些标准的接口来操作内核和硬件。驱动可以被编译的内核中(build-in),也可以做为内核模块(Module)存
阅读全文
摘要:在了解了ARM相关的汇编指令后,同时结合网上各位大虾的提点开始阅读u-boot的启动代码,现将分析过程记录如下 可执行文件及内存映射 我们可以把可执行文件分为2种情况:存放态和运行态 1.存放态:可执行文件经过烧到存储介质上(flash或磁盘)的分布,此时可执行文件通常有2部分组成,代码段和数据段,
阅读全文
摘要:今决定认真分析一下u-boot的代码,但一开始就被“.balignl 16 0xdeadbeef”这条语句难住了,还好,google了一下,找到了《分析了一下 align 的用法》这篇文章,作者写得很好,看完后,我根据自己的实验结果,做了适当的更改,以让自己看起来更明白,把它记录如下:.align 就是用来对齐的,究竟怎么对齐,有啥情况?下面分析一下(一)$vim align1.s在新建的文件编辑以下代码:_start: b reset .byte 0x55 .byte 0xaareset: ldr r0, =0x53000000保存后,执行如下命令:$arm-linux-as align1.
阅读全文
摘要:ARM指令集中,LDR通常都是作加载指令的,但是它也可以作伪指令。LDR伪指令的形式是“LDR Rn,=expr”。下面举一个例子来说明它的用法。COUNT EQU 0x40003100……LDR R1,=COUNTMOV R0,#0STR R0,[R1]COUNT是我们定义的一个变量,地址为0x40003100。这中定义方法在汇编语言中是很常见的,如果使用过单片机的话,应该都熟悉这种用法。LDR R1,=COUNT是将COUNT这个变量的地址,也就是0x40003100放到R1中。MOV R0,#0是将立即数0放到R0中。最后一句STR R0,[R1]是一个典型的存储指令,将R0中的值放到以
阅读全文
摘要:说说这个.word的作用。 word expression就是在当前位置放一个word型的值,这个值就是expression 举例来说, _rWTCON: .word 0x15300000 就是在当前地址,即_rWTCON处放一个值0x15300000 翻译成intel的汇编语句就是: _rWTCON dw 0x15300000 例如:ldr r1, _rWTCON _rWTCON: .word 0x15300000 不是把地址0x1530 0000 上的内容传递到r1,是把地址_rWTCON上的内容放到r1,而地址_rWTCON上的内容是0x15300000。实际上就是把r1设置为0x153
阅读全文
摘要:如题,烧写后总是出现不能识别FLASH型号问题。到H-JTAG网站下载了一个hfc文件查看,发现比friendlay提供的hfc文件多了一行SoftReset+++,于是修改H-Flasher_mini2440.hfc文件,在SCRIPT SECTION:后插入一行SoftReset+++,呵呵,可以正确识别了。将我修改后的H-Flasher_mini2440.hfc内容粘贴如下,以供参考,希望能对各位有所帮助。FLASH SECTION:SSTSST39VF1601MEMORY SECTION:16-BIT X 1-CHIP0x000000000x40000000XTAL SECTION:N
阅读全文
摘要:以前用ARM的IDE工具,使用的是ARM标准的汇编语言。现在要使用GNU的工具,当然要了解一点GNU ARM汇编的不同之处。其实非常的简单,浏览一下文档然后再看看程序就完全可以搞定了,或者你硬着头皮看GNU ARM的汇编程序,用不了多少时间你就就可以无师自通了。ARM汇编语言源程序语句 ,一般由指令、伪操作、宏指令和伪指令作成。ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令。 目前常用的ARM编译环境有2种:ARMASM: ARM公司的IDE中使用了CodeWarrior的编译器,绝大多数windows下的开发者都在使用这一环境,完全按照ARM的规定; GNU ARM ASM:GNU
阅读全文
摘要:一、Linux内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux、Image、zImage、bzImage、uImage、xipImage、bootpImage等. (1)kernel镜像格式:vmlinux vmlinuz是可引导的、可压缩的内核镜像,vm代表Virtual Memo
阅读全文
摘要:yaffs2 老版本不支持2.6.36以上内核。 网上下载的yaffs2常见版本(点击http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下方的Download GNU tarball进行下载)一般不支持2.6.36/37。但2.6.36一下版本依然可以使用。 最
阅读全文
摘要:mknod 用途 创建特殊文件。 mknod Name { b | c } Major Minor 创建 FIFO(已命名的管道) mknod Name { p } 描述 mknod 命令建立一个目录项和一个特殊文件的对应索引节点。第一个参数是 Name 项设备的名称。选择一个描述性的设备名称。mk
阅读全文
摘要:转自:http://blog.chinaunix.net/space.php?uid=20543672&do=blog&cuid=460882 热插拔有 2 个不同角度来看待热插拔: 从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。 从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间
阅读全文
摘要:分析过mdev(udev的BusyBox简化版)源码的都知道mdev的基本原理: a、执行mdev -s命令时,mdev扫描/sys/block(块设备保存在/sys/block目录下,内核2.6.25版本以后,块设备也保存在/sys/class/block目录下。mdev扫描/sys/block是为了实现向后兼容)和/sys/class两个目录下的dev属性文件,从该dev属性文件中获取到设备编号(dev属性文件以"major:minor\n"形式保存设备编号),并以包含该dev属性文件的目录名称作为设备名device_name(即包含dev属性文件的目录称为device
阅读全文
摘要:BusyBox 的诞生 BusyBox 最初是由 Bruce Perens 在 1996 年为 Debian GNU/Linux 安装盘编写的。其目标是在一张软盘上创建一个可引导的 GNU/Linux 系统,这可以用作安装盘和急救盘。一张软盘可以保存大约 1.4-1.7MB 的内容,因此这里没有多少
阅读全文
摘要:BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBo
阅读全文
摘要:该文件在进入shell的时候调用,也就是说这是用户相关的.# /etc/profile: system-wide .profile file for the Bourne shellsecho "Processing /etc/profile..."# 从arm9.net拷贝# Ash profile # vim: syntax=sh# No core files by default#ulimit -S -c 0 > /dev/null 2>&1export LD_LIBRARY_PATH=/lib:/usr/lib# #id -un是打印输出当前的用
阅读全文
摘要:MINI2440启动配置文件/etc/init.d/rcS文件分析 2011年2月5日 mail:174997990@qq.com Mini2440启动配置文件说明 对于mini2440,虽然root_qtopia这个文件系统的GUI是基于Qtopia的,但其初始化启动过程却是由大部分由busybo
阅读全文
摘要:挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。 命令格式: mount [-t vfstype] [-o options] device dir 其中: 1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16文件系统:msdos Windows 9x fat32文件系统:vfat Windows NT ntfs文件系统:ntfs Mount Windows文件网络共享:smbfs UNIX(LINUX) 文件
阅读全文
摘要:The following is the doc related to mdev which i get from busybox 1.6.1 distribution :————-MDEV Primer————-For those of us who know how to use mdev, a primer might seem lame. Foreveryone else, mdev is a weird black box that they hear is awesome, but can’tseem to get their head around how it works. T
阅读全文
摘要:利用udev在/dev下动态生成/移除设备文件 udev是硬件平台无关的,属于user space的进程,它脱离驱动层的关联而建立在操作系统之上,基于这种设计实现,我们可以随时修改及删除/dev下的设备文件名称和指向,随心所欲地按照我们的愿望安排和管理设备文件系统,而完成如此灵活的功能只需要简单地修
阅读全文
摘要:交叉编译器: 3.3.2# wget -c http://www.busybox.net/downloads/busybox-1.7.0.tar.bz2# tar jxvf busybox-1.7.0.tar.bz2修改源码、配置、编译 # cd busybox-1.7.0# vi Makefile
阅读全文
摘要:前言 : 文件系统的制作其实并没有想像中那么难。一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox
阅读全文
摘要:1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买
阅读全文
摘要:构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的《Linux全线移植文档》做的。有些东西我也不清楚,只是跟着做,做出来能用就了事了,没有深究其中的规范,以及文件系统中哪些要,哪些不要。 趁着今年过年的几天假期,我移植重新移植了
阅读全文
摘要:要不我们就统一简称为FS和RFS:文件系统:File System => FS;根文件系统:Root File System => RFS。 首先你考虑一点描述语句:根文件系统也是一种“文件系统”,可以认为是一种“特殊的”“文件系统”,为什么是叫“特殊的”呢?因为这种“根文件系统”承载着某些“特殊的功能”(其实“文件系统”相同的话,所具备的功能都是一样的),那就是“操作系统”可能需要通过某种“布局”来管理相关设备的,诸如软盘设备、硬盘设备、虚拟磁盘设备等等,这里可能就是用了一种已被定义好了“数据结构”的“布局”,即“文件系统”,而出现的“根文件系统”,可能是用来担当主要或重要角色。
阅读全文
摘要:C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 从标准头文件说起 某企业曾经给出如下的一道面试题: 为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh#define __INCvxWorksh #ifdef __cplusplu
阅读全文
摘要:下面是从Undertanding the linux kernel 3rd摘录的 12.4. Filesystem Handling Like every traditional Unix system, Linux makes use of a system 's root filesystem
阅读全文
摘要:ARM-LINUX-GCC版本4.3.2.以安装在/usr/local/arm/4.3.2下.第一步:修改linux-2.6.34/Makefile文件,在makefile中找到以下两条信息并做修改ARCH ? =arm CROSS_COMPILE ?=/usr/local/arm/4.3.2/bi
阅读全文
摘要:一、devfs linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。 在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。但是devfs文件系统有一些缺点,例如:不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda有可能对应sdb;没
阅读全文
摘要:一、编译内核 1. make distclean 或者 make mrproper 如果你是新下载的内核,那这一步就不用了。但如果你用的是别人移植好的内核,那最好在编译内核之前先清除一下中间文件,因为你们用来编译内核的交叉编译工具可能不同。 2.修改 Makefile 主要是以下两项: 1 ) AR
阅读全文
摘要:1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。 1.1.1 Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VE
阅读全文
摘要:mknod - make block or character special filesmknod [OPTION]... NAME TYPE [MAJOR MINOR] option 有用的就是 -m 了 name 自定义 type 有 b 和 c 还有 p 主设备号 次设备号主设备号是由linux/major.h定义的,如下定义了一个DOC设备: #define IGEL_FLASH_MAJOR 62 假如有一个命令mknod doc b 62 0 : 其中的doc为定义的名字,b指块设备,0指的是整个DOC。如果把0换为1,则1指的是DOC的第一个分区。2是第2个,对于块设备次设备号就
阅读全文
摘要:1.下载linux-2.6.36.1.tar.bz2 问题:tar -zxvf 解压压缩文件出现问题,无法识别. 解决:1.通过file linux-2.6.36.1.tar.bz2 查看压缩格式 2.通过命令 bzip2 -d linux-2.6.36.1.tar.bz2解压 3.再通过tar x
阅读全文
摘要:安装交叉编译工具Ø 下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 编译内核URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2Ø 安装 //将压缩
阅读全文
摘要:MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。MTD字符驱动程序允许直接访问flash器件,通常用来在flash上创建文件系统,也可以用来直接访问不频繁修改的数据。MTD块设备驱动程序可以让flash器件伪
阅读全文
摘要:本文是原创,转载请注明出处本文链接:http://blog.sina.com.cn/s/blog_574d08530100hzie.html1.符号定义伪操作操作符 语法格式 说明.equ .equsymbol,expr 将symbol定义为expr.set .setsymbol,expr 和equ相同(.set=.equ).equiv .equiv symbol将symbol定义为expr,若symbol已定义则出错.global .global symbol 将symbol定义为全局标号.globl .globl symbol 和.global相同(.globl=.global).exte
阅读全文
摘要:不相信自己的意志,永远也做不成将军。春秋战国时代,一位父亲和他的儿子出征打战。父亲已做了将军,儿子还只是马前卒。又一阵号角吹响,战鼓雷鸣了,父亲庄严地托起一个箭囊,其中插着一只箭。父亲郑重对儿子说:"这是家袭宝箭,配带身边,力量无穷,但千万不可抽出来。"那是一个极其精美的箭囊,厚牛皮打制,镶着幽幽泛光的铜边儿,再看露出的箭尾。一眼便能认定用上等的孔雀羽毛制作。儿子喜上眉梢,贪婪地推想箭杆、箭头的模样,耳旁仿佛嗖嗖地箭声掠过,敌方的主帅应声折马而毙.果然,配带宝箭的儿子英勇非凡,所向披靡。当鸣金收兵的号角吹响时,儿子再也禁不住得胜的豪气,完全背弃了父亲的叮嘱,强烈的欲望驱赶着
阅读全文
摘要:下面将详细介绍ppm文件ppm文件是一种图像文件,有其自己的文件格式。ppm文件由两个部分组成:第一个部分是三行ASCII码,这个部分决定了图像的存储格式以及图像的特征;第二个部分就是图像的数据部分,图像就是由这个部分组成的。 ppm的第一部分由三行ASCII码组成第一行是P2/P3/P6第二行是图像的大小,先是列像素数,后是行像素数,中间有一个空格第三行是一个介于1和65535之间的整数,而且必须是文本的,用来表示每一个像素的一个分量用几个比特表示。 三行之后是图像的数据流,从左到右,从上到下。在进行图像数据存储的时候,需要进行数据的格式,假如需要的像素值在0~255之间,那么在进行数据文件
阅读全文
摘要:作者: vitaminch 时间: 2010-04-23从 Linux 2.6 内核起,引入一套新的驱动管理和注册机制:platform_device 和 platform_driver 。 Linux 中大部分的设备驱动,都可以使用这套机制,设备用 platform_device 表示;驱动用 platform_driver 进行注册。 Linux platform driver 机制和传统的 device driver 机制(即:通过 driver_register 函数进行注册)相比,一个十分明显的优势在于 platform 机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中用
阅读全文
摘要:Linux 2.6.19.x 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接
阅读全文
摘要:mkimage使用详解uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。 mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体
阅读全文
摘要:http://wojiaojinguibao.blog.163.com/blog/static/107498670200901111467244/ 通常,u-boot为kernel提供一些kernel无法知道的信息,比如ramdisk在RAM中的地址。Kernel也必须为U-boot提供必要的信息,
阅读全文
摘要:一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。 内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。 在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过C库直接和内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式linux将会
阅读全文
摘要:内核简介 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。 全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。 想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。通过通读源代码,我们就可
阅读全文
摘要:5. Memory Technology Device(MTD) MTD设备支持。可不选。 6. Parallel port support 串口支持。如果不打算使用串口,就别选了。 7. Plug and Play configuration 即插即用支持。虽然Linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。 8. Block devices 块设备支持。这个就得针对自己的情况来选了,简单说明一下吧: Normal PC floppy disk support:普通PC软盘支持。这个应该必选。 XT hard d
阅读全文
摘要:本文来自:Linux宝库 -- http://doc.linuxpk.com/41476.html如有不明白之处,欢迎参加社区讨论 下载内核源代码 http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.gz 放置到 /usr/src/下 解压 tar zxvf linux-2.6.6.tar.gz #cd linux-2.6.6 #make menuconfig (如果装了X11 可用Xconfig 命令) 配置内核 一定要选自己的网卡驱动! 不选的为空 选的是*号 M 是编译为模块形式,日后可手动插入模块 升级module-i
阅读全文
摘要:本文来自:Linux宝库 -- http://doc.linuxpk.com/41502.html 如有不明白之处,欢迎参加社区讨论 1. Linux核心提供什么功能 Linux 核心是一个档案(/boot/vmlinuz for most case) 核心支持各项计算机硬件配备,让所有程序可以透过核心与计算机硬件沟通。 有效率的核心必须与计算机状况(硬件周边)配合 核心提供周边硬件驱动程序:网络...
阅读全文
摘要:RePrint:http://www.ibm.com/developerworks/cn/linux/embed/diy/目标本文要构建的这个迷你型的 Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在这个系统的基础上加以改进,是可以构建出通用的、可以在大多数常规 PC 机上即插即用的系统来的。但是这已经不在本文的话题之内了,读者朋友们如果有兴趣,可以通过我的电子邮件和我讨论其中的细节问题。我们的目标 Linux 系统运行在一台普通的 Intel 386 PC 机上,可以有硬盘,也可以不要硬盘,而用 Flash Disk 来代替。如果是用 Flash 盘的话,需要能够支持
阅读全文
摘要:RePrint:http://hi.baidu.com/wangpeng1314/blog/item/212e9e1752377f064b90a7f5.html我们在安装新内核的时候,通常都会编辑lilo.conf 和grub.conf 文档。里面有一段“initrd=/boot/initrd-***.img”(其中的***表示内核的版本号)的我们都很少会注意到,有时候还会发现这一行不要也能够正常开机。那这个initrd***.img究竟是用来干什么的呢? 其实initrd***.img是个映像文档,类似ramdisk,把一段程式打包到img里,然后在开机的时候在内存里开辟一段区域,一般是2m
阅读全文
摘要:转自:http://bbs.chinaunix.net/thread-2264758-1-1.html菜鸟编译Linux内核 双眼皮的猪 菜鸟俺,最近研究了一下Linux内核的编译,有些许心得,望同大家分享一下,故有此文…我们这里要谈的不涉及到源码,只是一些内核编译的步骤及相关知识…因为本人是菜鸟。所以,也就希望和菜鸟们分享一下…首先,您要确定您有一台装有Linux的系统,编译内核可以在本机上直接对本机内核进行编译,也可以从网上下载内核在其基础上进行编译.我们这里详细讲一下升级内核的方法,您可以从www.kernel.org下载到最新的Kernel版本,我们这里以RedHat9为例(其他版本其
阅读全文
摘要:make clean仅仅是清除之前编译的可执行文件及配置文件。 而make distclean要清除所有生成的文件。 Makefile 在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。 make clean 清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执...
阅读全文
摘要:URL:http://hi.baidu.com/software_one/blog/item/85c7ccedd70d6925acafd5e0.html 在linux里面,我们经常会遇到i386 i686 i486 I586 这些代码,例如查看内核版本: [root@localhost logs]# uname -a Linux localhost.localdomain 2.6.18-164.e...
阅读全文
摘要:转自:http://www.opsers.org/base/clean-up-on-the-linux-system-tmp-folder-you-may-want-to-know.html 我们知道,在Linux系统中/tmp文件夹里面的文件会被清空,至于多长时间被清空,如何清空的,可能大家知识的就不多了,所以,今天我们就来剖析一个这两个问题。 在RHEL\CentOS\Fedora\系统中(本...
阅读全文
摘要:转自:http://www.linuxsir.org/main/node/189 作者:北南南北 来自:LinuxSir.Org 摘要: Linux文件系统是呈树形结构,了解Linux文件系统的目录结构,对于我们驾驭Linux还是有必要的。本文对Linux下比较重要的目录加以解说,以答初学者所说的“杂乱无章”目录结构,给一个简要的说明。 目录 1、什么是文件系统; 2、文件系统的组织结构简说; 3...
阅读全文
摘要:方法一: 命令: uname -a 作用: 查看系统内核版本号及系统名称 方法二: 命令: cat /proc/version 作用: 查看目录"/proc"下version的信息,也可以得到当前系统的内核版本号及系统名称 补充说明: /proc文件系统,它不是普通的文件系统,而是系统内核的映像,也就是说,该目录中的文件是存放在系统内存之中的,它以文件系统的方式为访问系统内核数据的操作提供接口。而...
阅读全文
摘要:一个用于网络摄像机的开源软件 --- mjpg-streamerhttp://sourceforge.net/projects/mjpg-streamerluther@gliethttp:~$ wget http://mjpg-streamer.svn.sourceforge.net/viewvc/mjpg-streamer.tar.gz?view=tar"MJPG-streamer", is a command line application that copied JPG-frame from a single input plugin to multiple out
阅读全文
摘要:原文:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_PageAbouttheproject"MJPG-streamer",是用于从webcam摄像头采集图像,把他们以流的形式通过基于ip的网络传输到浏览器如Firehox,Cambozola,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。她可以利用某些webcams的硬件压缩功能来降低服务器CPU的开销。她为嵌入式设备和一些常规服务器提供了一个轻量且更少CPU消耗的方案,因为她无需为视频帧压缩浪费大量的计
阅读全文
摘要:转 自:http://bbs.hdchina.org/viewthread.php?tid=94749mjpg-streamer 可以通过文件或者是HTTP方式访问linux UVC兼容摄像头。可以在公司,通过访问家里安装的摄像头查看家里的情况,对于有小孩的家长很有帮助。如果刚好手头上一个能安装openwrt带USB接口的路由器,可以使用本文介绍的方法来配置。我现在用的罗技的C270,效果不错。mjpg-streamer 需要很少的CPU和内存资源就可以工作,大部分编码工作都是摄像头完成的,所以对于内存和性能都有限的路由器十分适用。1. 安装在openwrt系统下,需要安装以下摄像头的驱动。o
阅读全文
摘要:转自:http://blog.csdn.net/ldreams/archive/2010/10/09/5929643.aspxUVC,全称为:USB video class 或USB video device class UVC既电脑硬件在不需要安装任何的驱动程序下即插即用,因为其驱动程序已经固化在硬件的芯片里面。可以使用UVC技术的包括摄像头、数码相机、类比影像转换器、电视棒及静态影像相机等设备。 最新的UVC版本为UVC 1.1,由USB Implementers Forum定义包括基本协议及负载格式。 网络摄像头是第一个支持UVC而且也是数量最多的UVC设备,目前,操作系统只要是 Win
阅读全文
摘要:意:document.getElementById(" ")得到的是一个对象,用alert显示得到的是“object”,而不是具体的值,它有value和length等属性,加上.value得到的才是具体的值!参考资料:1. document . getElementById的用法和DHTML.CHM的下载地址http://blog.sina.com.cn/u/4933092a010003k7今天在网络上查找document . getElementById的用法,如下:A:语法:oElement = document . getElementById ( sID )参数:s
阅读全文
摘要:jQuery.post( url, [ data ], [ success(data, textStatus, jqXHR) ], [ dataType ] )Returns:jqXHRDescription:Load data from the server using a HTTP POST request.version added:1.0jQuery.post( url, [ data ], [ success(data, textStatus, jqXHR) ], [ dataType ] )urlA string containing the URL to which the re
阅读全文
摘要:一、 在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。提示通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:1、 登陆页面可以被浏览器缓存;2、 其他人可以访问客户的这台机器。那么,别人即可以从浏览器的历史
阅读全文
摘要:Form提供了两种数据传输的方式——get和post。虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响。虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一些差异,但是了解二者的差异在以后的编程也会很有帮助的。Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”
阅读全文
摘要:1放弃把握的反面就是放弃,选择了一个机会,就等于放弃了其他所有的可能。当新的机会摆在面前的时候,敢于放弃已经获得的一切,这不是功亏一篑,这不是半途而废,这是为了谋求更大的发展空间;或者什么都不为,只因为喜欢这样做,因为,年轻就是最大的机会。人,只有在三十岁之前才会有这个胆量,有这个别资本,有这个资格。2失恋不是不在乎,是在乎不起。三十岁前最怕失去的不是已经拥有的东西,而是梦想。爱情如果只是一个过程,那么正是这个年龄应当经历的,如果要承但结果,三十岁以后,可能会更有能力,更有资格。其实,三十岁之前我们要做的事情很多,稍纵即逝,过久地沉溺在已经干涸的爱河的河床中,与这个年龄的生命节奏不合。3离婚不
阅读全文
摘要:char * strtok ( char *string, const char *delimiters);Sequentially truncate string if delimiter is found. Ifstringis notNULL, the function scansstringfor the first occurrence of any character included indelimiters. If it is found, the function overwrites the delimiter instringby a null-character and
阅读全文
摘要:how to use javascript show the time?code:<html><head><script type="text/javascript">function startTime(){var today=new Date()var h=today.getHours()var m=today.getMinutes()var s=today.getSeconds()// add a zero in front of numbers<10m=checkTime(m)s=checkTime(s)document.g
阅读全文
摘要:转自:http://www.cnblogs.com/tuyile006/archive/2007/03/28/691329.html一个展示页面:http://www.gzsums.edu.cn/webclass/html/marquee.html该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果该标签是个容器标签语法:<marquee></marquee>以下是一个最简单的例子:代码如下:<marquee><font size=+3 color=re
阅读全文
摘要:定义和用法<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。<meta> 标签位于文档的头部,不包含任何内容。<meta> 标签的属性定义了与文档相关联的名称/值对。HTML 与 XHTML 之间的差异在 HTML 中,<meta> 标签没有结束标签。在 XHTML 中,<meta> 标签必须被正确地关闭。提示和注释:注释:<meta> 标签永远位于 head 元素内部。注释:元数据总是以名称/值的形式被成对传递的。必需的属性DTD 指示此属性允许在哪种
阅读全文
摘要:目的:延时一段时间让页面跳转到制定页面.代码如下:<html><head><title>wenhao Test</title><meta http-equiv="refresh" content="5; url=http://www.sunplusedu.com"></head><body> <h1>你好,我是wenhao!</h1></body></html>重点:<meta http-equiv="ref
阅读全文
摘要:今天,看了同学写的HTML代码很糟糕.就自己重写了一下.了解了一些HTML.CSS知识.现记录在这里.先给大家一个比较好的CSS教程网站:http://www.w3school.com.cn/css/index.aspCSS 概述CSS 指层叠样式表 (CascadingStyleSheets)样式定义如何显示HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在CSS 文件中多个样式定义可层叠为一要加入CSS.需要如下写: <style type="text/css"&
阅读全文
摘要:目的:写一个登录窗口,输入帐号和密码,正确时返回成功.不正确时返回失败.下面看下 html代码:<html> <head> <TITLE>CGI3:登录</TITLE> </head> </body> <FORM ACTION="/cgi-bin/demo3.cgi" METHOD="POST"> <P>用户名:<INPUT NAME="name"><BR> <P>用户名:<INPUT TYPE=&
阅读全文
摘要:现象:在表单中输入两个数据.调用CGI返回两个数据相加的和.下面我们看一下:htm部分代码<html> <head> <title>CGI:Test add</title> </head> <body> <form action="/cgi-bin/demo2.cgi"> <p> <h1>请输入两个数据: <input type="text" name="m" size="5"> + <in
阅读全文
摘要:http://net.pku.edu.cn/~yhf/tutorial/perlstep/perlstep.html北京大学<Perl 循序渐进>
阅读全文
摘要:WEB服务器和CGI/FastCGI程序之间交流信息的主要途径是环境变量(以及标准输入输出流)。这里说的环境变量是指操作系统中的环境变量。(windows系统下,PATH是很常见的一个环境变量)CGI规范对CGI程序中使用的环境变量名称及其含义做了具体而明确的规定,通常把这些环境变量成为:CGI环境变量。常用CGI环境变量CGI环境变量名称说明REQUEST_METHOD请求类型,如“GET”或“POST”CONTENT_TYPE被发送数据的类型CONTENT_LENGTH客户端向标准输入设备发送的数据长度,单位为字节QUERY_STRING查询参数,如“id=10010&sn=lii
阅读全文
摘要:效果:点击确定按钮,调用CGI程序,实现CGI的调用。<html> <head> <title>CGI:Test</title> </head> <body> <form action="/cgi-bin/demo1.cgi"> <p>这是一个CGI的Test程序</p> <input type="submit" value="确定"> </form> </body></html>
阅读全文
摘要:HTML表单学习HTML <input> 标签 <input> 标签用于搜集用户信息。 根据不同的 type 属性值,输入字段拥有很多种形式。输入字段可以是文本字段、复选框、掩码后的文本控件、单选按钮、按钮等等。 HTML 表单用于搜集不同类型的用户输入。 表单是一个包含表单元素的区域。 表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。 表单使用表单标签(<form>)定义。 输入 多数情况下被用到的表单标签是输入标签(<input>)。输入类型是由类型属性(type)定义的。大多数经常被用到的输入类型如下
阅读全文
摘要:为什么要进行CGI编程? 在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理,或者是把它们保存起来,或者是按内容进行一些查询,或者是一些别的什么。没有了CGI,WEB的世界就完全失去了它的交互性,所有的信息都变成单向的了,而不能够有任何的反馈。 有的人认为可以用JavaScript来代替C...
阅读全文
摘要:CGI是: “公共网关接口”(Common Gateway Interface)的简称,是HTTP服务器与其它程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI是一段程序,它运行在Server上,提供同客户端 Html页面的接口。CGI的功能:通常情况下CGI程序被用来解释处理来自表单的输入信息,在服务器产生相应的处理,并将相应的信息反馈给浏览器。CGI程序使网页具有交互功能。CGI处理步骤: 通过Internet把用户请求送到服务器服务器接收用户请求并交给CGI程序处理CGI程序把处理结果传送给服务器服务器把结果送回到用户CGI可以用任何一种语言编写,只要这种语言具有标准输入、输
阅读全文
摘要:今天下午在开发板上搭建了,一个BOA服务器。进行了相关的配置。访问网页没有问题。但是在和CGI交互上面出现了问题。填写表单,提交后出现:502 Bad GatewayThe CGI was not CGI/1.1 compliant.错误,以为是自己的环境搭建的有问题。后来在虚拟机上也配置了一个BOA服务器。同样的网页,同样的CGI代码,虚拟机上没有问题。 心里就比较郁闷了。在网上疯狂的找答案:大概有这两种解决方式:1.修改boa代码cgi.c,在 complete_env 函数中添加环境变量my_add_cgi_env(req, "LD_LIBRARY_PATH", &q
阅读全文
摘要:前段时间在做C/S模式下的视频监控,这段时间是B/S模式下的。期间遇到了不少问题,有些问题一卡就是几天,有些问题的解决办法在办法在网上也不是很好找,所以还有些问题虽然得到了临时解决,但是其原理现在我本人也还搞的不是很清楚,在这里也希望有大家的指点交流。现在我就将这些错误稍作总结,可供大家学习借鉴,同时也希望得到大家的指点指正。 若还有错误代码,本人解决后会陆续补充。C/S下的错误汇总也会不久上传。 1.必须要在板子的/etc下建一个boa目录(错误代码忘了) 2.”can't open boa.conf for reading“解决:不仅要在你自己放置boa的目录下放入boa.conf
阅读全文
摘要:一,在var/www中打开了基本信息设置这个html文件,然后表单内容提交给comment.cgi,又是出现了404,not found,The requested URL /var/www/cgi-bin/comment.cgi was not found on this server。本次问题出在不能用汉字。把html文件中的汉字改成英文后404问题消失。二,测试cgi时可能出现问题 502 Bad Gateway The CGI was not CGI/1.1 compliant.解决:1,修改boa代码cgi.c,在 complete_env 函数中添加环境变量 my_add_cgi_
阅读全文
摘要:1,怎么设置AXD连接的Target。 在菜单的Configure Target…选项中能设置。一般选择MutiIce或ARMUL两种。 ARMUL是一种ARM的模拟器。一般的算法或一些无需和硬件中断等设备打交道的程式都能通过这个进行调试。使用上非常简单。 我们一般上板子进行调试都是通过MutiICE来进行。在刚刚安装了系统的时候,菜单中没有MutiICE,需要我们手动添加: 点击ADD按钮,然后...
阅读全文
摘要:在NAND Flash中有8个I/O引脚(IO0—IO7)、5个全能信号(nWE ALE CLE nCE nRE)、一个引脚,1个写保护引脚。操作NAND Flash时,先传输命令,然后传输地址,最后读写数据。对于64MB的NAND Flash,需要一个26位的地址。只能8个I/O引脚充当地址、数据、命令的复用端口,所以每次传地址只能传8位。这样就需要4个地址序列。因此读写一次nand flash...
阅读全文
摘要:Nand Flash数据存储规则与数据读写方法(一) 谈到Nand Flash的数据存储方式,关于NAND Flash的数据读写方法方面的文章不多,这篇文章详细讲述了Nand Flash数据存储方式和数据读写方法,并用具体的芯片为例作了详细的解释。 NAND Flash 的数据是以bit 的方式保存在memory cell ,一般来说,一个cell 中只能存储一个bit。这些cell 以8 个...
阅读全文
摘要:NAND FLASH的接线方式和NOR FLASH,SDRAM都不一样。以TQ2440开发板用的K9F1208为例,分析NAND FLASH的接线方式。 K9F1208结构如下图: K9F1208位宽是8位。 一页: 512byte + 16byte 最后16byte是用于存储校验码和其他信息用的,不能存放实际的数据。 一个块有32 page:(16k+512)byte K9F1208有4096个...
阅读全文
摘要:NOR FLASH的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NOR FLASH的地址线和数据线是分开的。 AM29LV160DB是一个2Mbyte的NOR FLASH,分区结构是: 1个16...
阅读全文
摘要:S3C2440有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx的地址空间,ngcsx引脚为低电平,选中外设。 2^27=2^7 * 2^10 * 2^10 = 128Mbyte 8*128Mbyte = 1Gbyte 所以S3C2440总的寻址空间是1Gbyte。 市面上很少有32位宽度的单片SDRAM,一般选择2片16位SDRA...
阅读全文
摘要:1、抓住51开发ARM 这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑? 他们不愿意说有他们自己的理由,没有人强求,靠自己好了。 我自己个人的观点:51是一个基础,而且还很重要,这是再我看了AR...
阅读全文
摘要:转自:http://www.360doc.com/content/11/0601/09/7011604_120884598.shtml实验目的:突破4KB的Steppingstone存储空间限制,读取NandFlash中4KB后的代码实现“点灯大法”,借此掌握NandFlash的操作。 实验环境及说明:恒颐S3C2410开发板H2410。H2410核心板的NandFlash选用的是三星片上(SOP)K9F1208U0M,该NandFlash容量为64MB。 实验思路:开发板上电启动后,自动将NandFlash开始的4K数据复制到SRAM中,然后跳转到0地址开始执行。然后初始化存储控制器SDRA
阅读全文
摘要:前4K的问题 如果S3C2410被配置成从Nand Flash启动(配置由硬件工程师在电路板设置), S3C2410的Nand Flash控制器有一个特殊的功能,在S3C2410上电后,Nand Flash控制器会自动的把Nand Flash上的前4K数据搬移到4K内部RAM中,并把0x00000000设置内部RAM的起始地址,CPU从内部RAM的0x00000000位置开 始启动。这个过程不需要...
阅读全文
摘要:NAND Flash 在嵌入式系统中的地位与PC机上的硬盘是类似的。用于保存系统运行所必需的操作系统,应用程序,用户数据,运行过程中产生的各类数据,系统掉电后数据不会护丢失.本文主要介绍关于NAND Flash的组织结构和编写程序的方法。 在三星的NAND Flash 中,当CPU从NAND Flash开始启动时,CPU会通过内部的硬件将NAND Flash开始的4KB数据复制到称为“Stepp...
阅读全文
摘要:由于自己买的开发板的norflash坏了,板子剩下了nandflash了,还想玩开发板,就开始我的裸奔了,开始去了解nandflash启动原理,arm2410是从nandflash前4k空间复制到arm内部4kRAM空间当中运行.知道原理以后我写裸奔程序都不超过4k程序,就可以做跑马灯,rs232驱动,rtc程序是足够了.一开始 我用的软件是ads1.2,只能抄写别人 程序,程序当中有一个init...
阅读全文
摘要:Fisrt part :NAND flash和NOR flash的不同NOR flash采用位读写,因为它具有sram的接口,有足够的引脚来寻址,可以很容易的存取其内部的每一个字节。NAND flash使用复杂的I/O口来穿行地存取数据。8个引脚用来传送控制、地址和数据信息。NAND的读和写单位为512Byte的页,擦写单位为32页的块。● NOR的读速度比NAND稍快一些。 ● NAND的写入速度比NOR快很多。 ● NAND的4ms擦除速度远比NOR的5s快。 ● 大多数写入操作需要先进行擦除操作。 ● NAND的擦除单元更小,相应的擦除电路更少。在NOR器件上运行代码不需要任何的软件支持
阅读全文

浙公网安备 33010602011771号