
OS
咕唧咕唧shuboLK
这个作者很懒,什么都没留下…
展开
-
core文件
<br />本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/chaoi/archive/2007/07/16/1693149.aspx在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的,本文对此做简单介绍。 <br />例如,一个程序cmm_test_tool在运行的时候发生了错误,并生成了一个core文件,如下:<br />-rw-r–r– 1 root cmm_test_tool.c<br />-转载 2011-01-28 22:02:00 · 861 阅读 · 0 评论 -
You have new mail in /var/spool/mail/root
<br />Linux有时会出现“You have new mail in /var/spool/mail/root”,很烦人,如何禁止掉呢?<br />需要修改系统配置文件,告诉系统不要去检查邮箱<br />[root@localhost ~]#echo “unset MAILCHECK” >> /etc/profile <br />其实就是把unset MAILCHECK加到文件/etc/profile 的尾部即可<br />然后重新登陆控制台就没有这个讨厌的提醒了。转载 2011-01-29 18:34:00 · 2792 阅读 · 0 评论 -
文件句柄----太文化
<br />在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。当完成任务后,在通过调用系统函数来关闭该文件。转载 2011-04-07 21:11:00 · 1130 阅读 · 0 评论 -
上下文切换
上下文切换<br /> <br />保存一个被挂起的任务的上下文 并在 任务恢复时 恢复其上下文的这个处理过程就叫做上下文切换(context switching)。 <br />任务上下文是指任务运行的环境。例如,针对x86的CPU,任务上下文可包括程序计数器、堆栈指针、通用寄存器的内容。<br />进程上下文切换由以下4个步骤组成:<br />(1)决定是否作上下文切换以及是否允许作上下文切换。包括对进程调度原因的检查分析,以及当前执行进程的资格和CPU执行方式的检查等。在操作系统中,上下文切换程序并不转载 2011-04-06 19:49:00 · 3799 阅读 · 0 评论 -
linux下串口应用程序编程
<br />这几天,由于多功能温度测量仪项目的需要,涉及到了GSM信息的串口读取,所以在Linux下串口信息的读取有了一点心得体会。<br />1. 打开串口<br /> 与其他的关于设备编程的方法一样,在Linux下,操作、控制串口也是通过操作起设备文件进行的。在Linux下,串口的设备文件是/dev/ttyS0或/dev/ttyS1等。因此要读写串口,我们首先要打开串口:<br /> char *dev = "/dev/ttyS0"; //串口1<br />原创 2011-05-31 20:51:00 · 2183 阅读 · 2 评论 -
基于嵌入式LINUX的多功能温度测量仪
四月份在家学车,空闲没事干,琢磨着想把基于嵌入式LINUX的多功能温度测量仪(毕设)实现了,呵呵,边做边玩,没想到不到一星期整体功能就实现了。这个进度很让我意外。至少在那时看来这还是一个庞大的工程。 我的毕设课题是《多功能温度测量仪》,当时选题就是打算把简单问题复杂化的,这个课题要求不难而且任务书上要求用单片机,确实没难度。题一选定我就改了方案,把课题改成了《基于嵌入式LINUX的多功能温度测量仪》,没想导师那边一下就通过了。在这里我要再次感谢我的指导老师给了我极大的自由空间让我尽情发挥。原创 2011-06-02 19:23:00 · 2134 阅读 · 0 评论 -
自旋锁 for linux
自旋锁是专为防止多处理器并发而引入的一种锁(2.6内核不仅仅为防止多处理器并发,也为防止内核抢占,保护临界资源防止重入问题)。2.6内核实现的系统抢占即时当前进程正文在内核空间,通过调度也可被优先级高的进程中止,排入等待队列。 在多CPU的环境下情况就比较复杂了,因为同时可能有几个程序在运行(是真正的同时),所以必须要定义一个变量当作锁的功能,linux是这样规定的,当这个变量为1时原创 2011-06-06 19:02:00 · 1208 阅读 · 0 评论 -
MMU 内存管理
1、features of MMU (S3C2410 / S3C2440)MMU(Memory Management Unit)负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。地址映射功能使得各进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。S3C2410 / S3C2440的特性有:A、与ARM V4兼容的映射长度、域、访问权限转载 2011-06-13 12:17:00 · 1675 阅读 · 0 评论 -
ARM 920T CP15 协处理器
4.1.1 访问CP15寄存器的指令访问CP15寄存器指令的编码格式及语法说明如下:31 2827 2423 212019 1615 1211 87 543 0cond1 1 1 0opcode_1转载 2011-06-13 21:43:00 · 1719 阅读 · 0 评论 -
uboot 中的 start_armboot (void)
最近一直在做U-boot和Linux内核的编译与移植的工作,就来讲一讲对U-boot的初步理解。我的目标板核心片是i.MX255,以下都是依据这个环境所言。1.U-boot启动过程:1)/uboot/cpu/arm926ejs/start.S文件是Uboot的入口程序。 2)/uboot/lib_arm/board.c Uboot执行的第一个C函数,完成系统的初始化。3)init_se转载 2011-06-13 22:07:00 · 2573 阅读 · 0 评论 -
_armboot_start 内容的疑问
--------------------------------------------------------------------------------"aaronwong: u-boot中代码的疑问(_armboot_start与_start)?12Gm---------------------------=j我使用的是u-boot-1.3.0-rc2。在cpu/pxa/s转载 2011-06-13 23:19:00 · 5951 阅读 · 1 评论 -
优秀代码摘录
int board_init (void){ S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();//classic S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO(); /* to reduce PLL lock time, adjust the LOCK原创 2011-06-14 18:11:00 · 1208 阅读 · 0 评论 -
两步查看当前进程所在路径
分兩步:1,ps查看進程號;2,通過 readlink /proc/進程號/exe 得到該進程實際路徑。原创 2011-06-15 12:26:00 · 1172 阅读 · 0 评论 -
uboot中main_loop分析
终于分析完了main_loop,发文纪念一下。1。main_loop common/main.cmain_loop又臭又长,去掉宏注释掉的部分就只剩下一点点了。如下:void main_loop (void){#ifndef CONFIG_SYS_HUSH_PARSER static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, };转载 2011-06-21 16:18:00 · 2671 阅读 · 0 评论 -
mkimage是怎样把内核制作成uboot格式的
1:UBOOT引导Linux内核及向内核传递参数的方式 一直以来没有想过有什么好的办法通过寄存器向内核传递参数,直到今天读UBOOT的实现方式。 在UBOOT中,引导内核最常用的方法是bootm命令,bootm命令可以引导“UBOOT格式”的内核。先花点时转载 2011-07-04 09:29:28 · 3634 阅读 · 1 评论 -
lds文件规则
最近在看Linux内核时,总是遇到一些和连接脚本相关的东东,搞得人一头雾水,终于下定决心把它搞明白,写下一点心得,希望对和我一样的人有所帮助! 连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是原创 2011-07-06 21:13:44 · 3271 阅读 · 0 评论 -
有名管道的打开规则
2.4 有名管道的读写规则 从FIFO中读取数据: 约定:如果一个进程为了从FIFO中读取数据而阻塞打开FIFO,那么称该进程内的读操作为设置了阻塞标志的读操作。 如果有进程写打开FIFO,且当前FIFO内没有数据,则对于设置了阻塞标志的读操作来说,将一直阻塞。对于没有设置阻塞标志读操作来说则返回-1,当前errno值为EAGAIN,提醒以后再试。 对于设置了阻塞标志的读操作说,造成阻塞的原因有两种:当前FIFO内有数据,但有其它进程在读这些数据;另外就是FIFO内没有数据。解阻塞的原因则是FIFO中有新的转载 2011-01-28 20:57:00 · 2403 阅读 · 0 评论 -
设置环境变量
一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量:<br />--------------------------------------------<br />临时环境变量(重启后消失)<br />----------------------------------------------转载 2011-01-21 12:24:00 · 998 阅读 · 0 评论 -
linux进程控制
linux进程控制-wait() #include /* 提供类型pid_t的定义 */#include pid_t wait(int *status) 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型原创 2010-06-26 18:38:00 · 964 阅读 · 0 评论 -
串烧
<br />事物总有个核心,复杂的事物总可以模块化、层次化, 嵌入式Linux也如此。学习嵌入式Linux困难,主要因为涉及知识和概念过多,即比较复杂,所以学习嵌入式Linux的就需要找到核心,需要模块化,需要进行层次划分。<br /><br /> 嵌入式Linux系统做模块化处理就是可划分为Bootloader(引导程序),Kernel(内核),fs(文件系统),Shell(命令行界面),Gui(图形库)和 Embeded Sql(嵌入式数据库)等。以上就是嵌入式Linux系统的7个重要模块,通过这些就转载 2010-06-28 18:04:00 · 929 阅读 · 0 评论 -
linux cpio(copy in/out) 命令详解
<br />linux cpio(copy in/out) 命令详解<br /><br />功能说明:备份文件。<br /><br />语 法:cpio [-0aABckLovV][-C <输入/输出大小>][-F <备份档>][-H <备份格式>][-O <备份档>][--block-size=<区块大小>][--force-local][--help][--quiet][--version] 或 cpio [-bBcdfikmnrsStuvV][-C <输入/输出大小>][-E <范本文件>][-F原创 2010-07-12 22:09:00 · 1588 阅读 · 0 评论 -
linux RamDisk 使用简介
linux RamDisk 使用简介 来源: ChinaUnix博客 日期: 2008.01.29 00:26 (共有0条评论) 我要评论 <br />linux RamDisk 使用简介<br />1、Ram Disk介绍<br />1.1 什么是Ram Disk<br /><br />Ram Disk 就是将内存中的一块区域作为物理磁盘来使用的一种技术。<br /><br />对于用户来说,可以把RAM disk与通常的硬盘分区(如/dev/hda1)同等对待来使用。<br /><br />1.2转载 2010-07-12 23:36:00 · 1325 阅读 · 0 评论 -
动态链接库
<br />库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a <br />为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 <br />ln -s libhello.so.1.0 libhello.so.1 <br />ln -s libhello.so.1 libhello.so <br />使用库原创 2010-06-17 18:19:00 · 1056 阅读 · 0 评论 -
BUSYBOX
<br />busybox<br /> BusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和 echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令。<br /> 1、BusyBox 的诞生<br /> BusyBox 最初是由 Bruce Pere转载 2010-06-17 16:40:00 · 881 阅读 · 0 评论 -
解压tar包
linux 基础知识 解压tar包(1)解压bz2后缀的tar包:<br />bzip2 -d gcc-4.1.0.tar.bz2 <br />---上面解压完之后执行解压tar包命令.<br />(2) http://linux.chinaunix.net/bbs/archiver/tid-1014580.html<br />tar时加一个参数m<br />tar xjmvf <br />//使得 时间戳 错误没有<br /><br />(3)搞定tar包:<br />一、 解析Linux应用软件安装转载 2010-06-18 15:15:00 · 6062 阅读 · 0 评论 -
何为NFS
Network File System NFS 是由SUN公司发展, 并於1984年推出, NFS是一个RPC service ,它使我们能够达到档案的共享, 它的设计是为了在不同的系统间使用, 所以它的通讯协定设计与主机及作业系统无关.当使用者想用远端档案时只要用"mount"就可把remote档案系统挂接在自己的档案系统之下,使得远端的档案使用上和local机器的档案没两样. machine A machine B / / bin etc usr bin etc usr man ma原创 2010-06-17 17:29:00 · 799 阅读 · 0 评论 -
动态链接和动态链接库
动态链接(Dynamic Linking)是相对于静态链接(Static Linking)而言的。程序设计中,为了能做到代码和模块的重用,程序设计者常常将常用的功能函数做成库,当程序需要实现某种功能时,就直接调用库文件中的函数,从而实现了代码的重用。早期的程序设计中,可重用的函数模块以编译好的二进制代码形式放于静态库文件中,在MS的操作系统中是Lib为后缀的文件。程序编写时,如果用户程序调用到了静态库文件中的函数,则在程序编译时,编译器会自动将相关函数的二进制代码从静态库文件中复制到用户目标程序,与目标程序原创 2010-06-17 17:55:00 · 958 阅读 · 0 评论 -
Linux和uClinux比较分析
<br />Linux和uClinux比较分析 <br /> 标准Linux是针对有MMU的处理器设计的。在这种处理器上,虚拟地址被送到MMU,把虚拟地址映射为物理地址。通过赋予每个任务不同的虚拟-物理地址转换映射,支持不同任务之间的保护。 uClinux是针对控制领域的嵌入式linux操作系统,它从Linux 2.0/2.4内核派生而来,沿袭了主流Linux的绝大部分特性。适合不具备内存管理单元(MMU)的微处理器/微控制器。没有MMU支持是uClinux与主流Linux的基本差异。转载 2010-06-18 15:44:00 · 1316 阅读 · 0 评论 -
ARM汇编伪指令 .word
ARM汇编伪指令 .word ARM汇编伪指令 .word<br /><br />经常碰到那些以“.”打头的一些令人头疼的伪指令, <br />至于.globl _start .balign .align .data .text等等就算了,最最bt的如下: <br /><br />_undefined_instruction: .word undefined_instruction <br /><br />这个.word令人费解。网上的技术人员都不屑回答,说请参考GNU ASM。我去看了,对于.word解转载 2010-06-19 17:14:00 · 15160 阅读 · 1 评论 -
线程进程的区别
<br />进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程(Process)和线程(Thread)的区别在于: 线程的划分尺度小于进程,使得多线程程序的并发性高。 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内原创 2010-06-15 16:37:00 · 802 阅读 · 0 评论 -
MCU 中断划分
<br /><br /><br /><br />mcu由于内部资源的限制,软件设计有其特殊性,程序一般没有复杂的算法以及数据结构,代码量也不大, 通常不会使用 OS (Operating System), 因为对于一个只有 若干K ROM, 一百多byte RAM 的 mcu 来说,一个简单OS 也会吃掉大部分的资源。<br /><br /> <br /><br />对于无 os 的系统,流行的设计是主程序(主循环 ) + (定时)中断,这种结构虽然符合自然想法,不过却有很多不利之处,首先是中断可以在主程序转载 2010-06-19 16:05:00 · 1915 阅读 · 0 评论 -
U-Boot 1.1.6 基于S3C44B0的移植
U-Boot 1.1.6 基于S3C44B0的移植<br /><br /><br />说明1:本文档基于hfrk 的ARM7 S3C44B0 开发板配置平台。<br />说明2:U-Boot 1.1.6 的移植,基于ARM7 S3C44B0的hfrk U-Boot 1.1.1能够正常工作的包裹提取适当文件合并至U-Boot 1.1.6中,并适当修改Makefile实现。<br /><br />提供U-Boot 1.1.6 -MQ问题的解决方案。<br />提供U-Boot 1.1.6 的测试与修改方案。<b转载 2010-06-19 16:15:00 · 1842 阅读 · 0 评论 -
grub
什么是grub grub 是一个多重启动管理器。grub是GRand Unified Bootloader的缩写,它可以在 多个操作系统共存时选择引导哪个系统。它可以引导的操作系统包括Linux,FreeBSD,So laris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000。它可以载入操作系 统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Win dows 98)来原创 2010-06-19 19:32:00 · 966 阅读 · 0 评论 -
嵌入式Linux
<br />事物总有个核心,复杂的事物总可以模块化、层次化, 嵌入式Linux也如此。学习嵌入式Linux困难,主要因为涉及知识和概念过多,即比较复杂,所以学习嵌入式Linux的就需要找到核心,需要模块化,需要进行层次划分。<br /><br /> 嵌入式Linux系统做模块化处理就是可划分为Bootloader(引导程序),Kernel(内核),fs(文件系统),Shell(命令行界面),Gui(图形库)和 Embeded Sql(嵌入式数据库)等。以上就是嵌入式Linux系统的7个重要模块,通过这些就原创 2010-10-27 14:25:00 · 990 阅读 · 0 评论 -
nand flash 的oob 及坏块管理
0.NAND的操作管理方式 NAND FLASH的管理方式:以三星FLASH为例,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (By转载 2011-07-11 23:12:48 · 25091 阅读 · 1 评论