基于Linux与lpc3250开发板的交叉开发环境搭建
###一、Bootloader的安装(在windows下进行)
1、什么是Bootloader:
要想弄明白什么是Bootloader,我们先从PC上的bootloader说起。PC上的BIOS和硬盘上的引导记录有着和嵌入式开发板中的bootloader类似的作用。PC的Bootloader由BIOS和MBR组成,BIOS固化在主板的一个芯片上,MBR则是硬盘的主引导扇区的缩写。PC启动后,首先执行BIOS的启动程序,根据用户的COMS设置,BOIS加载硬盘MBR的启动数据,并把系统的控制权交给保存在MBR中的OS Loader(如grub),最后再由OS Loader将控制权交给OS内核。
了解了什么是PC中的Bootloader,我们再来看什么是嵌入式系统中的Bootloader。嵌入式系统中没有与BIOS类似的芯片,这就需要开发人员自己设计Boootloader。不过,我们不必从零开始写这些代码,已经有公司和组织为大多数嵌入式系统写好了Bootloader。
2、lpc3250的Bootloader组成:
kickstart:位于Flash的Block0,负责加载从Flas ...
ls命令实现分析
###一、ls命令的功能分析
使用man ls命令查看ls命令手册(功能描述和主要选项摘录如下):
List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor –sort.
列出文件(默认当前目录)信息,如果没有-cftuvSUX和–sort选项,就按照字母顺序排序。
-a, --all do not ignore entries starting with .:不忽略以.开始的隐藏文件
-A, --almost-all do not list implied . and ..:不列出 .(当前目录)和..(上级目录)
-B, --ignore-backups do not list implied entries ending with ~:忽略以~结尾的备份文件
-c with -lt: sort by, and show, ctime (time of last modificatio ...
FUSE分析总结
###FUSE简介及原理
FUSE(Filesystem in Userspace)是sourceforge上的一个开源项目,它可以为用户提供编写用户态文件系统的接口。使用FUSE,用户可以不必熟悉Kernel代码,使用标准C库、FUSE库以及GNU C库便可设计出自己需要的文件系统。
FUSE由三个部分组成:FUSE内核模块、FUSE库以及一些挂载工具。
FUSE内核模块实现了和VFS的对接,它看起来像一个普通的文件系统模块;另外,FUSE内核模块实现了一个可以被用户空间进程打开的设备,当VFS发来文件操作请求之后,它将该请求转化为特定格式,并通过设备传递给用户空间进程,用户空间进程在处理完请求后,将结果返回给FUSE内核模块,内核模块再将其还原为Linux kernel需要的格式,并返回给VFS。
FUSE库负责和内核空间的通信,它接收来自/dev/fuse的请求,并将其转化为一系列的函数调用,并将结果写回到/dev/fuse。
挂载工具用以实现对用户态文件系统的挂载。
当系统用户在输入ls /home/kelvin命令之后,最终会调用到Ext4文件系统内的相关函数来对文件进行处理 ...
NBD-网络块设备[翻译]
1997年4月,Pavel Machek 写了他的网络块设备代码,并被当时的Linux Kernel 2.1.55接受。Pavel 在随后的四个发行版(对应的内核版本为55、101、111、132)中维护并升级了他的代码。Andrzej M. Krzysztofowicz贡献了64位机上运行的版本,随后Stephen Tweedie 为其提出了许多的专业建议,尤其是引入了基于信号量的锁机制,使得代码在对称多处理器系统中能够安全的运行。作者们已将其增强以便于运用于工业环境之中。本文描述了网络块设备、驱动、以及它的开发历史。
NBD的驱动程序提供了一种在这个面向网络的世界中更为普遍的访问模型。它在本地客户端模拟了一个块设备,比如一个磁盘或者是一块磁盘分区,但实际提供物理支持的却是通过网络连接的远程服务器。在本地,该设备看起来是一个磁盘分区,但那只是远程服务器的表面。远程服务器是一段轻量级的守护进程代码,它提供对远程设备的访问,而且该守护进程并不需要运行在linux平台之上。本地操作系统必须是linux,而且要支持Linux内核NBD驱动,并且能够运行本地客户端进程。安装NBD可被用来进行远 ...
内核源码编译
编译内核的目的在于把纷繁复杂的内核源码编译成一个可执行的镜像文件。当然,内核功能复杂,并不是所有的 功能都需要用到,所以,我们在使用make对其编译前,要做一件事——配置。kconfig和make就好比将军和士兵。kconfig是指导方向的,make是干活的。kconfig对内核进行配置,告诉make,哪些功能需要编译进内核,哪些功能要作为模块编译,make便根据配置文件来进行编译。
###编译步骤
获取内核源码(这几天kernel.org被黑了,该步骤方法暂时用不了):
1、使用git工具:
ubuntu下安装git:
sudo apt-get install git
使用git检出Linus分支的版本:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.t.git
检出之后便可以通过下列命令进行升级:
git pull
使用上述两个命令便可以获得内核源码的最新版本。
2、直接从kernel.org上下载源码包:
源码包有两种格式:
linux-x.y.z.tar.bz2和linux ...
Linux基础知识总结
一:什么是Linux?Linux被称为类Unix操作系统,遵循POSIX标准。Linux与Unix的最大不同在于源代码的开放性和自由性。
Linux的发音:Linux发音
Linux的发展历史:1991年9月17日,Linus Torvalds 在网上发布了Linux的0.01版本。
1994年3月13日,在众多程序员的努力下,Linux 1.0版本正式发布。呵呵,人多力量大,要学会分享知识。
1996年,Linux 2.0发布,其重要特点是开始支持对称多处理器。
2004年12月18日,Linux2.6.0版本发布。
二:Linux所遵循的标准1、POSIX(Portable Oprating System Interface of Unix):即可移植操作系统接口,由IEEE于1988年发布。其作用是使在某一Unix版本下开发的应用程序也能应用于其他Unix版本,以此保证了软件代码的可移植性。
2、LSB(Linux Standard Base):由于Linux遵循POSIX标准,不同Linux发行版之间的源代码级有很好的兼容性,但二进制文件的兼容性不足,为解决这一 ...
FUSE
一、FUSE简介FUSE(用户空间文件系统)是这样一个框架,它使得FUSE用户在用户态下编写文件系统成为可能,而不必和内核打交道。FUSE由三个部分组成,linux内核模块、FUSE库以及mount 工具。用户关心的只是FUSE库和mount工具,内核模块仅仅提供kernel的接入口,给了文件系统一个框架,而文件系统本身的主要实现代码位于用户空间中。 FUSE库给用户提供了编程的接口,而mount工具则用于挂在用户编写的文件系统。
FUSE起初是为了研究AVFS(A Virtual Filesystem)而设计的,而现在已经成为SourceForge的一个独立项目,目前适用的平台有Linux, FreeBSD, NetBSD, OpenSolaris和Mac OS X。官方的linux kernel版本到2.6.14才添加了FUSE模块,因此2.4的内核模块下,用户如果要在FUSE中创建一个文件系统,需要先安装一个FUSE内核模块,然后使用FUSE库和API来创建。
二、FUSE特性
库文件和 API简单,极大地方便了用户的使用
安装简便,不需要加补丁或者重新编译 kernel ...
Linux用户管理
一、用户管理:Linux系统用户分为三类:超级用户、普通用户和伪用户。其具体区别如下:
超级用户:具有管理系统的一切权限。UID为0。
普通用户:具有有限的权限。UID从500到6000。
伪用户:在/etc/passwd中有记录,但因记录中shell为空,所以不能登录系统。其作用是为了方便管理系统,满足相应的系统进程对文件属主的需要。
用户帐号的配置文件是/etc/passwd,可用sudo gedit /etc/passwd命令查看和修改。文件内容格式如下:
1234567891011121314 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/ ...
Linux权限管理
Linux权限管理是其一大特色,优秀的权限管理机制为Linux安全性提供了可靠的保障。
一、用户权限管理:root用户是系统的超级用户,是Linux系统的CEO,它具有最高的管理权限,所以一般不用该用户登录系统进行日常的操作与维护,root可将某些权限赋予其他用户来管理系统的某些资源。
su命令用来切换用户,用该命令切换用户时,用户身份和环境变量都发生改变。例如:
kelvin@kelvin-laptop:~$ ls
examples.desktop workplace 公共的 模板 视频 图片 文档 下载 音乐 桌面
kelvin@kelvin-laptop:~$ su ws
密码:
ws@kelvin-laptop:/home/kelvin$
在ubuntu系统中,有些动作需要管理员的权限才能执行,可用sudo来提升权限。若在/etc/目录下建立nologin文件,则只允许root用户登录。相反,删除该文件则所有用户都可以登录系统。
二、文件权限管理:使用ls -l命令可以以长格式显示该目录下文件和子目录信息。如:
kelvin@kelvin-laptop: ...
Make
一、make的功能:make是一个用来维护程序模块关系和生产可执行文件的工具,他可以根据程序修改的情况重新编译链接生成的中间代码或最终的可执行文件。执行make命令需要一个Makefile文件,来定义整个项目的编译规则。makefile定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令。有了make和Makefile文件,整个项目的源程序可以自动编译,极大的提高了软件开发效率。
二、Make的一般使用:1、Makefile的基本构成:
Makefile由规则构成,一条规则生成一个或多个目标文件,其格式如下:
目标文件列表 分隔符 依赖文件列表 [;命令] //[]中的内容可选
[命令]
[命令]
例如:
main:main.o module1.o module2.o
gcc main.o module1.o module2.o -o main
第二行是命令必须以Tab键开头,第一行是说明模块间的依赖关系,所以不加Tab,若加Tab,make就认为这是一条命令。以#开头的行为注释行,makefile中若用到#,可用#;同样,$应该用$$。在依赖 ...