1. 什么是proc文件系统? 实例:通过 /proc/meminfo,查询当前内存使用情况. 结论:proc文件系统是一种在用户态检查内核状态的机制. 2.Proc文件分类 特点  每个文件都规定了严格的权限可读?可写?哪个用户可读?哪个用户可写?  可以用文本编辑程序读取(more命令,cat命令,vi程序等等)  不仅可以有文件,还可以有子目录.  可以自己编写内核程序添加一个/proc目录下的文件.  文件的内容都是动态创建的,并不存在于磁盘上,存在内存中. 3. 功能函数 内核描述 s…
1. make distclean 2. 配置内核  ----> 生成 .config文件 make menuconfig ARCH=arm Makefile文件分析: 3.  编译内核 make uImage ARCH=arm  CROSS_COMPLIE=arm-linux- 编译完成后位于 ARCH/arm/boot/zImage 4. 内核启动流程 (终极目标:挂在根文件系统,运行应用程序) 4. 文件系统 5. 如何制作linux嵌入式所需的文件系统?  a.  创建目录和文件 b.…
0. 嵌入式系统 以应用为中心,软硬件可裁剪,对功耗.对体积.对成本等都有严格要求的专用计算机系统. 1.  linux体系结构 2. 为什么 划分为 用户空间 和 内核控件 ?  分两级,内核和应用程序,使操作系统本身得到充分保护. 通过 系统调用 和 硬件中断 能从用户空间 --> 内核空间. 3. 内核架构 4.内核代码 5. 内核配置与编译  (以 ../arch/xx/configs 里的配置做参考 .config) A:  清除:清除临时文件.中间文件和配置文件. • make cl…
1. 系统调用 定义 Linux内核中设置了一组用于实现各种系统功能的子程序,称为系统调用.用户可以通过系统调用命令在自己的应用程序中调用它们. 系统调用和普通的函数调用非常相似,区别仅仅在于,系统调用由操作系统内核实现,运行于内核态:而普通的函数调用由函数库或用户自己提供,运行于用户态. 2. 系统调用原理 #include<time.h> main() { time_t the_time; the_time=time((time_t *)0);/*调用time系统调用*/ printf(&…
1. 进程四要素 1. 有一段程序供其执行.这段程序不一定是某个进程所专有,可以与其他进程共用. 2. 有进程专用的内核空间堆栈. 3. 在内核中有一个task_struct数据结构,即通常所说的"进程控制块PCB".有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度. 4. 有独立的用户空间. 2. struct task_struct 进程描述 在Linux中,线程.进程都使用struct task_struct来表示,它包含了大量描述进程/线程的信息,其中比较重要…
1.  度量时间差 时钟中断由系统的定时硬件以周期性的时间间隔产生,这个间隔(即频率)由内核根据HZ来确定,HZ是一个与体系结构无关的常数,可配置(50-1200),在X86平台,默认值为1000(每秒计数1000次). 每当时钟中断发生时,全局变量jiffies(unsigned long)就加1,因此jiffies记录了自linux启动后时钟中断发生的次数.驱动程序常利用jiffies来计算不同事件间的时间间隔. 如果对延迟的精度要求不高,最简单的实现方法如下--忙等待: 延时  jit_d…
1. linux内核链表 链表数据结构的定义: struct list_head  {  struct list_head *next, *prev;  };  list_head结构包含两个指向list_head结构的指针prev和next,由此可见,内核的链表具备双链表功能,实际上,通常它都组织成双向环链表. 2. 链表操作 Linux内核中提供的链表操作主要有: 初始化链表头 INIT_LIST_HEAD(list_head*head)  插入节点 list_add(struct list…
1.  逻辑地址 线性地址 物理地址 段式管理: 16位CPU,20根地址总线,可寻址1M内存,但是只有16位的寄存器,64K. 逻辑地址  =  段基地址 + 段内偏移地址 物理地址 PA  = 段寄存的值 * 16  + 逻辑地址 段式管理: 32位CPU,两种模式  实模式 + 保护模式 实模式 和 16位CPU一样,段寄存器的值*16就是段地址 保护模式: 段基地址32位,每个段都有4G容量,段寄存器的值是一个选择器,间接指出一个32位的段地址. 页式管理: 线性地址被分为固定长度的组,…
本文转载自:https://my.oschina.net/freeblues/blog/596448 嵌入式Linux内核+根文件系统构建工具-Buildroot 快速入手指导 buildroot 是一款专门用来定制嵌入式 Linux 的内核和根文件系统(rootfs) 的开源工具, 非常强大兼方便, 不过对于新手来说, 过多的配置项明显有些难度, 本文的目标就是简要介绍这款工具, 让新手迅速入门. 目标: 1 新手需要了解的2个目录和1个文件 2 熟悉该工具的基本命令 ; 3 构建出一个内核和…
关于编译powerpc linux的几个Image参考原文 http://blog.sina.com.cn/s/blog_86a30b0c0100wfzt.html 转载▼   PowerPC架构 Linux和ARM,X86等平台有些差异,PowerPC平台HW参数不是通过命令行方式传递到Linux,而是通过传递Device tree文件的方式传递参数,所以PowerPC平台Linux需要编译dtb和uImage才能正常加载,另外PowerPC架构linux还提供simpleImage的方式加载…
前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友,耐心的回答我提出的问题.感激.图报,很简单的想法.希望这次整理的资料帖能对更多的嵌入式爱好者朋友带来帮助! PS:在此特别感谢 古道热肠 版主把我的帖子加精,给小弟极大鼓舞! 嵌入式入门篇: 什么是嵌入式系统 http://www.helloarm.com/Embedded-Learn/58.ht…
上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi nano进行支持.所以我们完全可以通过licheepi nano的配置文件进行移植. 1.1. 下载内核源码 进入Linux系统官网: https://www.kernel.org/ 这里面列出的都是一些主要版本,如主线版本,上时间支持版本,个人推荐使用最新的长时间支持版本(5.10.69).但是因…
1.bootm地址和load address一样 此种情况下,bootm不会对uImage header后的zImage进行memory move的动作,而会直接go到entry point开始执行.因此此时的entry point必须设置为load address + 0x40.如果kernel boot过程没有到uncompressing the kernel,就可能是这里设置不对. boom address == load address == entry point - 0x40 2.…
深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系. 课程内容简单介绍 本课程重点是给大家解说嵌入式linux系统移植的开发方法,採用理论与实践,硬件与软件相结合的方法. 1.在每节開始之前先简单回想上一节所讲的主要内容,并对本节所讲的内容先进行概述,解说概念.技术要点,设计实现思路等内容,最后总结本次课程的要掌握的要点. 2.在讲课的过程中对关键…
http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/20130422/366044.html   使用 /proc 文件系统来访问 Linux 内核的内容 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口 简介: /proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux? 内核空间和用户空间之间进行通信.在 /proc 文件系统…
一. Linux嵌入式系统 操作系统是一种在计算机上运行的软件,它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口.它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合适的操作环境.嵌入式系统由于硬件的先天限制,经常只具有极稀少的硬件资源,如 时脉较少的 CPU.较少的内存.常不具有磁盘而用小容量的DiskOnChip或DiskOnModule.而在使用电池的系统中,它还要实现节省电池消耗,延长电池使用时间的功能. Linux 作为嵌入式操作系统是完全可行的,因为…
mini2440 uboot使用nfs方式引导内核,文件系统 成于坚持,败于止步 看了一段时间的u-boot了,到今天才真正完全实现u-boot引导内核和文件系统,顺利开机,在此记录完整过程 1.首先如果你u-boot还没有一直也没有关系,这里上传了一个已经移植好的u-boot,版本问2010.03,多谢tekkaman分享的这个源码 分享下载地址:u-boot-2010.03 编译uboot的过程就不在多说了,解压到你希望的目录下执行make,当时事前安装好交叉编译工具,这个相信大家都会 编译…
嵌入式专业是一门实践性非常强的学科,只有多动手,多实践,多编程,多调试,多看书,多思考才能真正掌握好嵌入式开发技术.那么,如何从零开始学习嵌入式开发技术, 进入嵌入式开发大门呢,笔者根据自己的嵌入式学习经历和多年的嵌入式linux教学经验,谈谈自己对嵌入式学习的一些想法和意见,希望对大家有所帮助. 一.练好基本功 嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知识非常广泛,包括:数字电路,模拟电路,计算机组成原理,单片机基础,C语言基础,操作系…
============================================================================== 深入linux kernel内核配置选项 ============================================================================== 如果自己不亲自实践配置的话,你永远也体会不到内核的真实所在. 使用过linux的发行版之一gentoo的话,你应该知道这是一个彻头彻尾的自定义…
CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要:从一名资深的软件工程师到图书作者,再到百问科技缔造者,韦东山这一路走来,也有自己的辛酸感悟:但不论何时,他从未忘记学习,用他的话说:“悦己之作,方能悦人”. [编者按]韦东山,深圳百问网科技有限公司技术创始人,毕业于中国科学技术大学,电子.软件专业双学位,擅长ARM/MIPS等架构的Linux开发…
探索 Ceph 文件系统和生态系统 M. Tim Jones , 自由作家 简介:  Linux®持续不断进军可扩展计算空间,特别是可扩展存储空间.Ceph 最近才加入到 Linux 中令人印象深刻的文件系统备选行列,它是一个分布式文件系统,能够在维护 POSIX 兼容性的同时加入了复制和容错功能.探索 Ceph 的架构,学习它如何提供容错功能,简化海量数据管理. 标记本文! 发布日期:  2010 年 6 月 12 日 级别:  中级 其他语言版本:  英文 访问情况  5726 次浏览 建议…
转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式开发方面的问题,请他谈了一下自己的看法: 问:关于嵌入式开发.我们准备给同学们解说一些入门知识.从你一线开发经验来说,给我们一些建议: 陈工回答:         对于嵌入式Linux入门,假设有一定基础,可以从驱动開始:假设没有基础.我个人建议还是从应用程序開始.由于从应用程序開始是最easy的,…
Linux常用内核参数 TCP状态描述 CLOSED:无连接是活动的或正在进行的 LISTEN:服务器在等待进入呼叫 SYN-RECV:一个连接请求已经到达,等待确认 SYN-SENT:应用已经开始,打开一个连接 ESTABLISHED:已经建立的连接 FIN-WAIT1:主动断开一方,第一次发送完FIN FIN-WAIT2:主动断开一方,收到对端确认的ACK TIME-WAIT:主动断开一方,收到FIN-ACK CLOSE-WAIT:被动断开一方,收到对方FIN且发送完ACK后 LAST-AC…
转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201312/19-2717.html 第一步: BootLoader -- U boot   1 在cpu/arm926ejs/start.s中    a) b reset ; //jump to reset    b) set cpsr ;svc mode ,disable I,F interrupt    c)调用lowlevel_init  (在board\xxxx\lowlevel_i…
Linux系统NFS网络文件系统 NFS(network file system)网络文件系统,就是通过网络让不同的主机系统之间可以共享文件或目录,此种方法NFS客户端使用挂载的方式让共享文件或目录到本地系统可挂载的目录下 NFS实现是通过RPC服务来实现的 实现过程: 1.NFS RPC主要的功能是记录每个NFS功能所对应的端口号,并将信息传递给请求数据的NFS客户端,从而实现数据的传输 2.NFS服务启动时会随机取用数个端口,并主动向RPC服务注册取用的相关端口信息,RPC服务就知道每个端口…
<strong>简单归纳:fd只是一个整数,在open时产生.起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp.</strong> 文件描述符的操作(如: open)返回的是一个文件描述符,内核会在每个进程空间中维护一个文件描述符表, 所有打开的文件都将通过此表中的文件描述符来引用;而流(如: fopen)返回的是一个FILE结构指针, FILE结构是包含有文件描述符的,FILE结构函数可以看作是对fd直接操作的系统调用的封装, 它的优点是带有I…
内核必须实现一组服务和相应的接口,应用程序则可以使用这些接口,而不是直接与硬件打交道. Linux内核主要由以下5个子系统组成:进程调度.内存管理.虚拟文件系统.进程间通信以及设备驱动. 在这个组成中,最核心的就是进程管理->进程调度和进程间通信. 在Linux系统中,我们编写的任何应用层程序,不管是上层还是属于中间框架层的代码,甚至是最底层的驱动代码,都可以以进程的形式在系统上运行.CPU可以运行在用户态和内核态. 在Linux 进程/内核模型中,每个进程就是执行在机器上的唯一的镜像,它们对系…
原文地址:linux IO子系统和文件系统读写流程 我们含有分析的,是基于2.6.32及其后的内核. 我们在linux上总是要保存数据,数据要么保存在文件系统里(如ext3),要么就保存在裸设备里.我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据提交给我们,而我们则无需和块设备打交道. 从下图,我们可以清除的看到: I/O子系统是个层次很深的系统,数据请求从用户空间最终到达磁盘,经过了复杂的数据流动. 对设驱开发人员或与此相关的设计人员,特别是IO很密集,我们就需…
深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态. 基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并…
一 Linux磁盘分区与文件系统 在Linux中常见的操作系统有:ext2 ext3 ext4 xfs btrfs reiserfs等文件系统的作用主要是明确磁盘或分区上的文件存储方法以及数据结构,Linux系统中数据分为元数据区和数据区,元数据区用于表示数据的属主属组,时间戳,访问权限,数据大小以及数据块指针等,每个文件的元数据会使用一个inode来标识.在数据区中每个数据都会给它分配相应的数据块并通过inode来指向所对应的数据块.为了能够加快对数据块的索引,同时还会创建一个块位图来标识可用…