linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

PMP软件体系框架

PMP软件最底层是操作系统层,该层主要包括 Bootloader引导程序和嵌入式Linux操作系统。 Bootloader主要完成系统从Flash的启动、硬件各部分的初始化、LOGO的显示以及OS的引导:嵌入式 Linux主要包括经过定制的适合在DM320上运行的 Linux操作系统。

Bootloade r:引导程序的定制

DM320下的Bootloader的启动过程

Bootloader是指系统启动后,在操作系统内核运行之前运行的一段小程序。不同的Bootloader的安装介质Flash,系统的启动过程是不一样的。

1)当安装介质为NOR Flash时,Bootloader就可以直接在Flash闪存内运行,不必把代码拷贝到系 ①收稿时I‘a-]:2008—1 2-1 9 统RAM中。启动方式设置成外部Memory,这样ARM 的开始地址就从0xFFFF:0000开始。然后在 Bootloader的程序中,把入口地址设置成 0xFFFF:0000即可。

2)当安装介质为NAND Flash时,系统上电以后,运行ROM里面的启动代码,选择启动方式为: AIM(Arm Internal Memory)ROM,ARM的开始地址为0&TImes;0000:O000。然后ROM里的程序会拷贝NAND Flash里的User Bootloader到处理器内部的RAM。再次,执行User Bootloader程序,完成初始化 SDRAM和驱动NAND Flash的读能力等少量工作。最后初始化系统,将NAND Flash中的主Bootloader 拷贝到SDRAM中执行,拷贝完成后,要把存放主 Bootloader的内存地址,赋值给pc(Program Counter)指针o

DM320下Bootloader启动程序的定制

本PMP使用的Bootloader为U-Boot。从 Internet上得到开源的U—Boot程序,然后对DM320 特有硬件环境进行初始化工作。

1)修改Makefile和Kconfig,目的是生成适合 DM320平台的配置选项以及目标文件。在./Makefile (当前目录均为U—Boot源码树根目录)下加入如下语句:

dm320一config:unconfig @./mkconfig S(@:一config=)arm arm926ejs dm320

其中mkconfig为一个脚本文件,参数为 (Target,Architecture,CPU,Board)分别对应上面的四个参数($(@:一config=)arm arm926ejs dm320)。

2)在U—Boot源码树下创建文件夹./board/ dm320。存放与DM320平台有关的文件。

3)在./board/dm320/platform.S中加入对 DM320寄存器初始化赋值语句,在./cpu/arm 926ejs中对cpu.C和start.S修改,前者提供有关cpu 操作的函数,后者为cpu执行时的初始化代码。

4)./lib—arm/board.C是完成初始化操作的主要文件。在文件中定义了一个初始化序列: init—fnc_t★init—sequence[】=l cpu—init. P basic cpu dependent setup+| board—init。|+basic board dependent setup+| interrupt—init.|+set up excepTIons’| env_init。|’iniTIalize environment‘| init—baudrate。|+iniTIalize baudrate settings+| serial—init.|+serial communications setup‘} console—init』, /+init console★/ display—bannerl|’say that we are here‘| dram—init.|+configure available RAM banks’| display—dram—config, #if defined(CONFlG—VCMA9) checkboard, #endif NULL, ):上述数组中函数序列依次执行。在完成初始化序列后,将是一些特定的操作。

Linux内核的定制

本系统中采用的Linux内核版本号为2.6.50要定制Linux内核,不仅要修改内核源码树,而且要编写相关外围设备的驱动程序。使之成为一个适合 DM320运行的OS环境。

Kconfig文件的修改 Kconfig文件是用来对所要加载内核内容进行配置的文件,其脚本语言描述参考.\Documentation \kbuild。

首先,在内核目录下./arch/arm/Kconfig中加入DM320的配置选项,将DM320框架加入内核,这样才能在执行make menuconfig配置内核时看到 DM320框架。修改内容如下:

choice

prompt”ARM system type”

default ARCH—DM320—20

表示:在配置ARM架构的系统时:默认的就是 DM320框架。

source”arch/arm/mach-dm320-20/Kcon f.g”

表示:把DM320框架下的配置选项也引入,同时把其他CPU框架去掉,这样方便选择。比如: #source”arch/arm/mach-clps71 1 x/Kconfig”

#source”arch/arm/mach-integrator/Kconfi g“(“孝”表示注释掉相关的内容)

最后把内核配置选项中对DM320开发有用的选进来。比如:

source”drivers/char/Kconfig”

if(1ARCH—DM320一20) source”sound/Kconfig” endif

表示:需要开发字符设备的驱动,而不需要声音的支持。

因为要把CODEC编入内核,所以还要加入对 CODEC支持的配置选向。

source”codecs/modules/Kconfig” 如果要加入一个新的外围设备,也需要在Kconfig 文件中加入相应的内容。比如说要加入一个三星的4 寸TFT—LCD的驱动,就需要修改./drivers/char/ Kconfig文件,并加入以下内容:

config DM 3 20..SAMSU NG..4..LCD

tristate”DM320 SAMSUNG 4.0 inch 1 6:9 TFT LCD”

depends on ARCH—DM320—20 && BOARD一400H

default Y

help

This driver provides support for SAMSUNG 4.0’1 6:9 TFT—LCD

for DM320 Platform.

config DM320一SAMSUNG一4一LCD:表示增加

新的配置入口。一旦这个配置选项被选中就会在./include/Iinu×/autoconf.h中有:#define CONFIG—DM320一SAMSUNG一4一LCD 1

这样整个内核源码中都可以使用CONFIG— DM320—SAMSUNG一4一LCD进行特定选择。

tristate”DM320 SAMSUNG 4.0 inch 1 6:9 TFT—LCD”:在引号里的内容是在配置选项中的提示文字。tristate表示除了可以选择【+】,【】外。还可以选择【M】,表示把当前内容当成模块编译。

depends on ARCH—DM320—20&&BOARD一 400H:如果配置平台框架时选择了ARCH—DM 320—20,在选择型号时选择BOARD一400H,就能看到三星4寸T丌一LCD配置选项。

default Y:表示默认把此驱动编入内核。

help:help的内容为对内核进行配置时。选中帮助选项所看到的内容。

Makefile文件的修改

Makefile根据配置文件.config形成编译源文件列表,GNU编译工具对源文件进行编译,把目标代码链接在一起,形成Linux内核二进制文件。Makefile 分布在各源代码目录中。

在作者所进行的PMP设备开发中,首先是对主 Makefile的修改,比如:

ARCH:=arm

CROSS—COMPILE:=arm—linux一(对编译器的选项修改为ARM平台)

E×TRAVERSION=-our0

EXT卧WERSlON变量值被附加在内核版本编号之后,成为内核建立后自勺最终版本。项目中使用的内核版本号为2.6.5,加上EXTRAVERSION变量后,最终的版本就是2.6.5一our0,表示开发过程中零号内核版本。

对其他子目录的Makefile文件的修改则相对容易。以加入三星4寸TF丁一LCD驱动为例说明,当需要把此驱动模块加入相应的内核源码树时,要在./drivers/char/MakefiIe文件中加入如下内容: obj一$(CONFIG—DM320一SAMSUNG一4一LCD)-I-= dm320一Icd—samsung4.0

总结

本文探讨了嵌入式Linux在PMP消费类电子产品上的应用,并实现了启动程序Bootloader和Linux 内核的移植和定制。目前一些项目产品已经过严格测试,成功推向市场。

linux操作系统定制的目的是,Linux操作系统在定制PMP DM320的应用解析相关推荐

  1. linux系统资源监控的目的,监控linux系统资源

    Dstat是什么? 可以说, Dstat 监测结果带颜色,看着更直观,方便. 官方网站:http://packages.sw.be/dstat/ 都是 rpm版本,我的是服务器是ubuntu,所以我下 ...

  2. linux修改文档拥有人为,Linux系统修复

    LAB : Linux系统修复 实验目的: 使用linux recuse模式修复Linux系统 实验步骤: 一.人为删除系统关键文件 登陆linux系统之后,依次执行以下命令人为破坏当前linux系统 ...

  3. linux备份和还原设置密码,AnyBackup Linux操作系统备份与恢复最佳实践手册(33页)-原创力文档...

    / / / Linux 操作系统定时备份恢复最佳实践 Linux 操作系统定时备份恢复最佳实践 -- 爱数备份容灾家族 目录 目 彔III 第一章 概述1 目标读者1 本文档适用范围1 Linux 系 ...

  4. linux常用命令、linux系统、linux属于什么操作系统、linux系统安装、linux怎么读、linux和windows的区别、linux配置ip地址、linux系统一般用来,在线查询工具

    linux vi编辑器常用命令 linux 查看ip linux find -name 查找文件名 linux shell linux 查看端口占用 linux 删除文件命令 linux cp命令复制 ...

  5. 无人值守u盘安装linux,从U盘无人值守安装linux操作系统(纯实践笔记)

    作者:曲宝全 本文的目的是:实现从U盘无人值守安装Linux操作系统 环境说明:1个4G的U盘(根据自己的操作系统ISO大小来定),本文试验的操作系统是RHEL4.8-x86_64-AS-DVD.is ...

  6. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结--操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  7. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统

    标题 +=================================================+ |  从硬盘安装 Linux 和从 GRUB 命令行启动操作系统  | +======== ...

  8. Linux进程的创建和父子进程同步,操作系统实验报告_Linux进程创建与通信.doc

    操作系统实验报告_Linux进程创建与通信 2011-2012学年第一学期 专 业: 班 级: 学 号: 姓 名:提交日期:2011年11月实验二 Linux进程创建与进程通信 [实验目的 1. 熟悉 ...

  9. Tiny Core Linux 4.5 发布,微型 Linux 操作系统

    世界上最小的Linux桌面发行版--Tiny Core Linux 今天发布了4.5版本. Tiny Core Linux是一个基于Linux2.6版本内核,采用BusyBox.Tiny X.FLTK ...

最新文章

  1. 腾讯云发布全链路数据开发平台WeData,大数据开发迈入新时代
  2. hdu4169_Wealthy Family_树形DP(2011美国区域赛)
  3. android display list,从android.view.GLES20DisplayList释放位图
  4. php 数据透视表,php – 使用Laravel模型过滤数据透视表数据
  5. 变化的和不变的。。。(2004版)
  6. (转)【SpringMvc】如何使用form发送PUT和DELETE请求
  7. c语言课程设计小时钟,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  8. 虚幻4皮肤材质_虚幻4学习心得
  9. 华为机试-字符串通配符
  10. Apache Flink 误用之痛
  11. 叫号系统是否需要服务器,银行排队叫号方法及系统、服务器及存储介质
  12. Kubernetes 【网络组件】CNI网络概念
  13. 小米招股书披露:员工平均年薪福利28万!
  14. innerhtml与outerhtml的区别
  15. 页面优化之懒加载与预加载
  16. 程序员软考真题__专项:数据结构与算法 02
  17. LiveData-原理全解析
  18. 数字源表LIV测试激光器方案
  19. Opera下载最新版本地址
  20. 教你一个图片快速取反色的方法

热门文章

  1. screenfetch命令
  2. Java基础-- if else语句入门小练习
  3. 集美大学-浙大版《C语言程序设计实验与习题指导(第3版)》
  4. 汉字部首Unicode对照表
  5. 原型、原型链、原型链继承 理解
  6. Android Studio 快捷键大全,安卓内存监控悬浮
  7. -webkit-box-reflect属性简介及元素镜像倒影实现
  8. 怎样安装和制作淘宝店铺装修挂件
  9. 85页智慧楼宇建设解决方案
  10. 观察者模式:犀利哥与ShouShou从基础学习ObservableObserver