随笔分类 -  嵌入式

摘要: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 阅读全文
posted @ 2011-06-10 09:31 hnrainll 阅读(575) 评论(0) 推荐(0) 编辑
摘要:利用udev在/dev下动态生成/移除设备文件 udev是硬件平台无关的,属于user space的进程,它脱离驱动层的关联而建立在操作系统之上,基于这种设计实现,我们可以随时修改及删除/dev下的设备文件名称和指向,随心所欲地按照我们的愿望安排和管理设备文件系统,而完成如此灵活的功能只需要简单地修 阅读全文
posted @ 2011-06-10 09:27 hnrainll 阅读(3171) 评论(0) 推荐(0) 编辑
摘要:交叉编译器: 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 阅读全文
posted @ 2011-06-10 09:22 hnrainll 阅读(6791) 评论(0) 推荐(0) 编辑
摘要:前言 : 文件系统的制作其实并没有想像中那么难。一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 阅读全文
posted @ 2011-06-09 17:32 hnrainll 阅读(1093) 评论(0) 推荐(1) 编辑
摘要:1. 根文件系统 文件系统是包括在一个磁盘(包括光盘、软盘、闪盘及其它存储设备)或分区的目录结构;一个可应用的磁盘设备可以包含一个或多个文件系统;如果您想进入一个文件系统,首先您要做的是挂载(mount)文件系统;为了挂载(mount)文件系统,您必须指定一个挂载点。 注:对于我们应用开发来说,购买 阅读全文
posted @ 2011-06-09 17:23 hnrainll 阅读(1875) 评论(1) 推荐(0) 编辑
摘要:构建基本的嵌入式Linux根文件系统 其实在去年8月份我做系统移植时就构建好了一个可以用的根文件系统,但是那时是跟着别人的《Linux全线移植文档》做的。有些东西我也不清楚,只是跟着做,做出来能用就了事了,没有深究其中的规范,以及文件系统中哪些要,哪些不要。 趁着今年过年的几天假期,我移植重新移植了 阅读全文
posted @ 2011-06-09 17:22 hnrainll 阅读(1664) 评论(0) 推荐(0) 编辑
摘要:要不我们就统一简称为FS和RFS:文件系统:File System => FS;根文件系统:Root File System => RFS。 首先你考虑一点描述语句:根文件系统也是一种“文件系统”,可以认为是一种“特殊的”“文件系统”,为什么是叫“特殊的”呢?因为这种“根文件系统”承载着某些“特殊的功能”(其实“文件系统”相同的话,所具备的功能都是一样的),那就是“操作系统”可能需要通过某种“布局”来管理相关设备的,诸如软盘设备、硬盘设备、虚拟磁盘设备等等,这里可能就是用了一种已被定义好了“数据结构”的“布局”,即“文件系统”,而出现的“根文件系统”,可能是用来担当主要或重要角色。 阅读全文
posted @ 2011-06-09 16:59 hnrainll 阅读(4459) 评论(0) 推荐(1) 编辑
摘要:下面是从Undertanding the linux kernel 3rd摘录的 12.4. Filesystem Handling Like every traditional Unix system, Linux makes use of a system 's root filesystem 阅读全文
posted @ 2011-06-09 16:33 hnrainll 阅读(6167) 评论(0) 推荐(1) 编辑
摘要: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 阅读全文
posted @ 2011-06-09 16:16 hnrainll 阅读(3001) 评论(0) 推荐(0) 编辑
摘要:一、devfs linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。 在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。但是devfs文件系统有一些缺点,例如:不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda有可能对应sdb;没 阅读全文
posted @ 2011-06-09 12:13 hnrainll 阅读(2442) 评论(0) 推荐(0) 编辑
摘要:一、编译内核 1. make distclean 或者 make mrproper 如果你是新下载的内核,那这一步就不用了。但如果你用的是别人移植好的内核,那最好在编译内核之前先清除一下中间文件,因为你们用来编译内核的交叉编译工具可能不同。 2.修改 Makefile 主要是以下两项: 1 ) AR 阅读全文
posted @ 2011-06-09 12:00 hnrainll 阅读(1952) 评论(3) 推荐(0) 编辑
摘要:1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起。 1.1.1 Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VE 阅读全文
posted @ 2011-06-09 11:43 hnrainll 阅读(34090) 评论(0) 推荐(5) 编辑
摘要: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 阅读全文
posted @ 2011-06-09 11:03 hnrainll 阅读(12629) 评论(0) 推荐(0) 编辑
摘要:安装交叉编译工具Ø 下载交叉编译工具(本文默认所有软件均下载在用户主目录下)arm-linux-gcc-3.4.1 —— 编译内核URL: ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2Ø 安装 //将压缩 阅读全文
posted @ 2011-06-09 10:47 hnrainll 阅读(1659) 评论(0) 推荐(0) 编辑
摘要:MTD(memory technology device内存技术设备)是用于访问memory设备(ROM、flash)的Linux的子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象的接口。MTD的所有源代码在/drivers/mtd子目录下。我将CFI接口的MTD设备分为四层(从设备节点直到底层硬件驱动),这四层从上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。MTD字符驱动程序允许直接访问flash器件,通常用来在flash上创建文件系统,也可以用来直接访问不频繁修改的数据。MTD块设备驱动程序可以让flash器件伪 阅读全文
posted @ 2011-06-09 10:07 hnrainll 阅读(48806) 评论(0) 推荐(2) 编辑
摘要:本文是原创,转载请注明出处本文链接: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 阅读全文
posted @ 2011-06-09 08:47 hnrainll 阅读(2747) 评论(0) 推荐(0) 编辑
摘要:Linux 2.6.19.x 内核编译配置选项简介 作者:金步国 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接 阅读全文
posted @ 2011-06-08 17:28 hnrainll 阅读(1248) 评论(0) 推荐(0) 编辑
摘要:mkimage使用详解uboot源代码的tools/目录下有mkimage工具,这个工具可以用来制作不压缩或者压缩的多种可启动映象文件。 mkimage在制作映象文件的时候,是在原来的可执行映象文件的前面加上一个0x40字节的头,记录参数所指定的信息,这样uboot才能识别这个映象是针对哪个CPU体 阅读全文
posted @ 2011-06-08 17:03 hnrainll 阅读(15209) 评论(0) 推荐(0) 编辑
摘要:http://wojiaojinguibao.blog.163.com/blog/static/107498670200901111467244/ 通常,u-boot为kernel提供一些kernel无法知道的信息,比如ramdisk在RAM中的地址。Kernel也必须为U-boot提供必要的信息, 阅读全文
posted @ 2011-06-08 16:29 hnrainll 阅读(7204) 评论(0) 推荐(0) 编辑
摘要:一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。 内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。 在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过C库直接和内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式linux将会 阅读全文
posted @ 2011-06-08 15:34 hnrainll 阅读(694) 评论(0) 推荐(0) 编辑