![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux embeded system
文章平均质量分 86
thewayma
这个作者很懒,什么都没留下…
展开
-
C语言嵌入式系统编程修
模块划分 (1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明; (2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明; (3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明; (4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的转载 2009-01-18 20:44:00 · 728 阅读 · 0 评论 -
Grub for dos bootloader 分析
概述一下:Grubfordos0.4.4的主题为三部分:MBR,bootloader,kernel1:MBR对应的文件为stage1目录下的stage1.S .S后缀为GAS汇编源文件Stage1:大小512字节,编译后的结构为DBR结构,这样的优点是,无论你将GRUB安装在MBR还是分区的DBR中,都能正常引导,如果安装在硬盘的MBR中,那么bios的int19号中断会MBR中转载 2009-09-28 22:32:00 · 1100 阅读 · 0 评论 -
Linux 初始 RAM 磁盘(initrd)概述 学习 initrd 的剖析、创建以及在 Linux 引导过程中的用法
什么是初始 RAM 磁盘?初始 RAM 磁盘(initrd)是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。initrd与内核绑定在一起,并作为内核引导过程的一部分进行加载。内核然后会将这个 initrd文件作为其两阶段引导过程的一部分来加载模块,这样才能稍后使用真正的文件系统,并挂载实际的根文件系统。initrd 中包含了实现这个目标所需要的目录和可执行程转载 2009-09-24 10:53:00 · 860 阅读 · 0 评论 -
Hacking initrd.img - 添加网卡驱动,网络安装 Linux
本文通过将网卡驱动加入到 initrd.img 中,使 Linux 内核在启动的过程中能正确识别并加载网卡驱动,从而使网络安装得以进行。 前言 网络安装 Linux 并不是一个新鲜的话题,其过程也不是一个轻松的体验。为了让机器能通过网络来安装 Linux,如果还需要配合kickstart转载 2009-09-24 13:30:00 · 2633 阅读 · 0 评论 -
[RedHat] (原创)Linux 操作系统启动流程以及trouble shooting思路
Linux系统启动的基本过程和步骤:最近在某个版块看到有人讨论GRUB的问题,这里是我个人的一些理解。我想大部分还是正确的,但肯定也有理解错误的地方,在这里抛砖引玉了!Linux系统启动过程大致按照如下步骤进行(这是一个简述):第一阶段:BIOS启动引导阶段; 在该过程中实现硬件的初始化以及查找启动介质;转载 2009-09-25 20:02:00 · 547 阅读 · 0 评论 -
GRUB 启动窥探
理解Linux的启动过程,对于解决Linux系统启动问题还是非常有帮助的,知道Linux系统在每个阶段做了哪些事,将会帮助你更快的找到问题出处,并解决这些问题。提示:在进行重要文件编辑之前,最好是先对文件进行备份。 首先,我们来看机器启动的第一步–自检(Power-On Self Test)在启动过程中的第一步,就是自检,自检是由电脑的BIOS(基本输入转载 2009-09-25 20:03:00 · 607 阅读 · 0 评论 -
深入理解linux启动过程
inux系统的启动过程是由很多步骤组成的,但是,无论你是启动一个标准的x86桌面计算机,还是一个嵌入式PowerPC的目标板,大多数的流程是惊人得相似的。这篇文章,探索了linux从最初的启动准备到用户空间中某个程序被开启之间的启动过程,跟随这个流程,你还能学到其他许多与启动有关的知识,例如,bootloaders,内核解压缩,初始化内存盘,以及其他一些linux启动的部分。在很早转载 2009-09-25 20:05:00 · 836 阅读 · 1 评论 -
linux2.6.29 启动过程详细分析
突然心血来潮,想自己写个模块,于是就把linux2.6.29的启动过程有分析了一下,整理出来和大家分享下。linux的启动大体上可以分几个步骤:第一部分 grub部分,内核的加载过程。这里总结一下别人的思想,因为自己没怎么看过grub的源码。1. Bios执行int 0x19,加载MBR至0x7c00并跳转执行,这个MBR在我们通常的系统中就是stage1.S(512B),转载 2009-09-25 20:08:00 · 758 阅读 · 0 评论 -
linux2.6 的 slab alloctor 结构分析
To solve the external fragementation, Linux just implemneted the Buddy Algorithm Allocator.But what if we want to allocate the small or tiny memory(file descriptor, struct inode, struct task_sturct,转载 2009-10-03 17:50:00 · 876 阅读 · 0 评论 -
Linux内核代码分析 slab.c
slab.c来自linux内核2.4.22版,本文件按照GNU协议发布。一、准备知识:slab的概念:提出的原因:由于操作系统在运行中会不断产生、使用、释放大量重复的对象,所以对这样的重复对象的生成进行改进可以大大提高效率 解决buddy system造成的内存浪费问题最早由sun的工程师提出(1994转载 2009-10-01 22:18:00 · 1279 阅读 · 0 评论 -
Linux 引导解析(使用bootsect.s+setup.s方式)
<br /><br />我详细解析了bootsect.s,同时阅读了setup.s。其中bootsect.s存放于磁盘的主引导扇区,bios-startup程序加载该程序(bootsect.s)到内存0x700处,并由此执行bootsect.s来引导Linuxkernel。在bootsect.s中加载setup.s至内存中,并在执行完它自身后,jump跳至刚刚已读入的setup部份,继续执行。 <br /> Linux Kernel Image 生成过程: 一.引导扇区汇编代码bo转载 2010-06-29 20:57:00 · 3376 阅读 · 0 评论 -
I2C总线协议学习笔记
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。1.1 I2C位传输 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit; 若SDA发生转载 2011-05-23 09:50:00 · 7320 阅读 · 2 评论 -
grub----Stage1.s源代码分析
Stage1.s源文件是用古老的at&t汇编编写而成,是大名鼎鼎的unix家族操作系统引导程序GRUB中的第一个文件。它编译后产生的二进制代码正好是512字节(故意的,也是必须的),刚好填充满硬盘初始的一个扇区,也即0柱面、0磁道、1扇区。人们称之为MBR——主引导记录。它的作用是载入stage2文件。 阅读本段代码,gemfield建议你首先具备以下能力:cpu寄存器转载 2009-09-28 22:00:00 · 3302 阅读 · 0 评论 -
LPC: Booting Linux in five seconds
At the Linux Plumbers Conference Thursday, Arjan van de Ven, Linux developer at Intel and author of PowerTOP, and Auke Kok, another Linux developer at Intels Open Source Technology Center转载 2009-09-10 17:27:00 · 1010 阅读 · 0 评论 -
Linux Page Cache机制
1 、前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与 Windows、UNIX一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统。因此,研究和使用Linux转载 2009-06-21 20:19:00 · 17645 阅读 · 0 评论 -
在内核中实现realloc
/** The wrapper for allocating/releasing dynamic memory inside the kernel** Authors: Wensong Zhang ** This program is free software; you can redistribute it and/or*转载 2009-02-15 11:32:00 · 1151 阅读 · 0 评论 -
(经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
C语言测试:想C语言测试:想成为嵌入式程序员应知道的0x10个基本问题C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。从被面试者的角度来讲,你能了解许多关于出题者或监考者的情况。这个测试只是出题者为显示其对ANSI标准细节的知识而不转载 2008-12-07 21:03:00 · 659 阅读 · 1 评论 -
关于动态链接库占用内存的思考
我们在写程序时,为了方便会写很多的so文件,在主程序中调用。我们知道在调用动态链接库的时候,有两种方法,一种是在编译的时候,将动态链接库动态的编译进去;一种是在执行的时候使用dlopen的方式,调用动态连接库。那么两种会有什么区别呢? 1、在编译的时候,将动态链接库编译进去之后,在elf文件中为留下该动态链接库的依赖关系。在程序的启动的时候,linux也只是为其分配一段线性空间,但转载 2009-07-20 15:51:00 · 5897 阅读 · 0 评论 -
linux网络服务器模型
Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。 1、TCP循环服务器:首先TCP服务器接受一个客户端的连接请求,处理连接请求,在完成这个客户端的所有请求后断开连接,然后再接受下一个客户端的请求转载 2009-07-20 23:28:00 · 725 阅读 · 0 评论 -
tcp要点学习-基础概念
Author : Kevin Lynx TCP是TCP/IP协议簇中传输层上的一种网络协议,它是一种面向连接的、可靠的协议。为了提供这种可靠性,TCP实现了各种有效的机制、算法。为了从一种宏观的角度去了解这个协议,这里先大致地提一下与之相关的概念。 1. 什么是‘面向连接的’? 引用中的概念: 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)转载 2009-07-22 15:00:00 · 612 阅读 · 0 评论 -
如何成为优秀的驱动开发工程师
作者:刘旭晖 Raymond转载请注明出处Email:colorant@163.com BLOG:http://blog.csdn.net/colorant/主页:http://sites.google.com/site/rgbbones/ 或许这样的标题,应该原创 2009-08-11 12:24:00 · 1345 阅读 · 0 评论 -
Linux I/O端口
I/O端口 关键词:设备管理、驱动程序、I/O端口、资源 申明:这份文档是按照自由软件开放源代码的精神发布的,任何人可以免费获得、使用和重新发布,但是你没有限制别人重新发布你发布内容的权利。发布本文的目的是希望它能对读者有用,但没有任何担保,甚至没有适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证(GPL),以及GNU自由文档协议(GFDL)。转载 2009-08-11 12:18:00 · 761 阅读 · 0 评论 -
电阻式触摸屏的基本结构和驱动原理
四线电阻式触摸屏 四线电阻式触摸屏的结构如图1,在玻璃或丙烯酸基板上覆盖有两层透平,均匀导电的ITO层,分别做为X电极和Y电极,它们之间由均匀排列的透明格点分开绝缘。其中下层的ITO与玻璃基板附着,上层的ITO附着在PET薄膜上。X电极和Y电极的正负端由“导电条”(图中黑色条形部分)分别从两端引出,且X电极和Y电极导电条的位置相互垂直。引出端X-,X+,Y-转载 2009-08-13 15:51:00 · 2991 阅读 · 0 评论 -
Linux环境进程间通信(五): 共享内存(上)
2003 年 5 月 01 日共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。采用共享内存通信的一个显而易见的好处是效率高,因为进程转载 2009-08-20 11:08:00 · 507 阅读 · 0 评论 -
从PC总线到ARM的内部总线
总线的演变首先应该讲讲总线的演变历史,这方面《PC架构系列:CPU/RAM/IO总线的发展历史!》这篇文章写得很好!感谢文章的作者!以下内容大量来自这篇文章,可以说是这篇文章的缩减转载。 公共总线早期PC中,CPU/RAM/IO都是挂在一条总线上,所有的部件都必须在同步的模式下工作。这样就带来一个"互锁" (locked to each other )转载 2009-06-21 17:27:00 · 6624 阅读 · 6 评论 -
系统性能优化思路
基础性工作:1、 在编译动态库时,加上—version-map选项,控制导出函数。2、 在编译动态库时,加上-fPIC选项,为以后使用Prelink优化做准备。3、 将编译的动态库,全部放到一个指定目录下。4、 将编译后的执行文件和动态库的符号,全部输出到指定目录,为以后分析做准备。5、 使用Prelink,优化编译完成的执行文件和动态库。转载 2009-06-21 17:39:00 · 977 阅读 · 0 评论 -
I2C总线协议学习笔记
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL。 SDA传输数据是大端传输,每次传输8bit,即一字节。 支持多主控(multimastering),任何时间点只能有一个主控。 总线上每个设备都有自己的一个addr,共7个bit,广播地址全0. 系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。1.1 I2C位传输 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit; 若SDA发生转载 2011-05-23 09:52:00 · 916 阅读 · 0 评论