UClinux在3000平台上的移植.

Slides:



Advertisements
Similar presentations
1 I/O 设备访问方式和类型. 2 Overview n The two main jobs of a computer: l I/O (Input/Output) l processing n The control of devices connneted to the computer is.
Advertisements

嵌入式系统简介 Introduction to Embedded System
Linux 安裝入門與基本管理 課程目標: 學習Linux平台下的安裝設定 與 建置一個基本的Linux伺服器
计算机硬件设备图片 go 珠海市第四中学 信息技术组.
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
高等医药院校药学类第三轮规划教材——大学计算机基础
ARM 嵌入式系统 第七章 嵌入式Linux.
大连理工大学软件学院 嵌入式系统工程系 赖晓晨
第一章 嵌入式系统概况 大连理工大学 马洪连.
电子商务 2013级电子商务专业.
Chap4 電腦硬體基本單元 高中資訊科技概論 松崗圖書公司.
信息技术基础 Windows 7 + Office 2007.
第2章 SOPC硬件开发环境及流程.
操作系统结构.
基于Android的开源平板电脑 (FSPAD723)系统构成分析
基于ARM和linux的开发 华中科技大学 武汉创维特 2017/3/20.
● 计算机组成与维护 外存储器 第5章 本章要点 硬盘、光驱、移动硬盘的组成 硬盘、光驱的性能指标 外存储器的使用.
嵌入式操作系统 陈天洲、陈文智.
BIOS设置.
嵌入式系统应用 概述 随着现代物流业仓储、超市等行业的快速发展,物品流动的速度越来越快,仓储库存周期也越来越短。这样物流仓储盘点行业的压力也越来越大,传统的人工盘点方式已经不能适应现代物流的发展。为了解决这一问题,国际上一些物流先进国家已经采用专业的盘点设备——盘点机,用于物流盘点。 我们选取了一个十分典型的国产盘点机进行介绍。其微处理器选型是采用韩国三星公司生产的S3C2410微处理器,操作系统采用了Windows.
安徽广播电视大学 组网技术与配置(第2版) 第8章 路由器的配置 汪本标.
>> 第三章 中文Windows XP >> 第四章 中文文字处理系统Word 2003
第16章 編譯與升級Kernel系統核心 課前指引
Chapter 13 輸入/輸出系統 (I/O Systems)
2.4 微型计算机硬件系统 主机系统 1. 微型计算机的诞生
《计算机操作员》精品 课件 淮南市潘集职教中心
Linux Further.
作業系統的結構 日期 : 2018/9/17.
嵌入式操作系统 陈香兰 Fall 2009.
第 4 章 記憶單元.
Building Embedded Linux 2
第一章 嵌入式系统开发基础 本章介绍了嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基本内容,使读者系统地建立起的嵌入式系统整体概念。
作業系統 第十三章 檔案系統實例.
電腦硬體基本介紹 國立高雄大學資訊工程學系 林士倫 2010/10/21.
内核移植实例.
物流信息技术 Logistics Information Technology
配置编译内核.
数字音频(D类)功率放大器 龙鼎微电子(上海)公司 茅于海 首席科学家.
淘宝核心系统数据库组 余锋 利用新硬件提升数据库性能 淘宝核心系统数据库组 余锋
99(1)義守大學工讀職場技能精進訓練班 資訊工程系 林義隆 老師
S3c2410电路设计(以北京博创s3c2410-s实验箱为例讲解)
Bootloader技术分析.
YM100开发实验板 演讲人:熊小燕 2009年月12月16日
嵌入式系統架構 長高科技 顏旭偉.
兒童電腦入門 第一課 八月八日.
嵌入式系统设计与开发 第1章 概述 第2章 ARM及其编程模型 第3章 ARM指令集 第4章 嵌入式程序设计
路由器的组成 路由器的前面板除了LED灯外没有其它东西,LED灯主要是指示电源是否开启。
第14章 Bootloader基本概念與燒錄.
商用運輸系統智慧化整體研究發展計畫 -計程車內安全管理系統之研發與示範(I)
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
Block diagram BB —逻辑 —音频 —电源管理 HW interface. Block diagram BB —逻辑 —音频 —电源管理 HW interface.
淄博职业学院 授课老师:罗汉江 上课班级:P12物联网应用技术1班 上课地点:物联网基础实验室508
CH.8 硬體管理.
陈香兰 助教:陈博、李春华 Spring 2009 嵌入式操作系统 陈香兰 助教:陈博、李春华 Spring 2009.
DMA-2440XP WinCE5.0安裝與使用 長高科技 顏旭偉.
嵌入式系统的Boot Loader技术 陈文智 浙江大学计算机学院 2009年5月.
嵌入式系统设计与实例开发 ——ARM与C/OS-Ⅱ 北京航空航天大学 智能嵌入式技术工作室 王田苗 魏洪兴.
(第2版).
Linux核心編譯與模組管理 2013/01/19.
第2章 计算机基本硬件介绍及选购 2.1 主板 2.2 中央处理器CPU 2.3 内存.
任务一:初识计算机 任务二:学习计算机中的信息表示 P /4/7.
(第2版).
作業系統 第三章 作業系統結構.
作業系統 Operating System 第四單元 檔案系統
8051單晶片 蘇恆生 老師.
Ixp425 crypto 期未demo 報告人:陳澤龍 學號:
嵌入式Linux开发流程 成都研究所操作系统团队.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/18.
LCD的驱动控制实验.
Linux文件系统.
Presentation transcript:

uClinux在3000平台上的移植

在Linux环境下,本章主要介绍了uClinux在UP-NETARM3000平台的移植过程。包括: ◆ 内核源码的修改、剪裁和编译过程。 ◆ 内核裁剪时的菜单选项的配置方法。 ◆ 内核及根文件系统的烧写过程。

图12-1 UP-NETARM3000嵌入式教学开发平台

该平台是基于S3C44B0X 处理器,可以运行uC/OS-II和uClinux的系统。 它由核心模块和扩展模块组成。 核心模块包括3C44B0x嵌入式芯片、2MB线性引导Flash和8MB SDRAM;

扩展模块包括16MB非线性Flash、二个串口、一个USB口、一个JTAG通用接口、10M以太网口、触摸屏、17键键盘、320×240STN彩色LCD、16M U盘、直流电机模块、步进电机模块、音频模块、CAN总线模块、A/D和D/A模块、LED显示器、IIC接口和FPGA模块。 如图12-1所示。

uClinux在3000上的移植 所谓Linux移植就是把Linux操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确的运行起来。 这个概念目前在嵌入式开发领域讲的比较多。

其基本内容是:获取某一版本的Linux内核源码,根据具体目标平台对这源码进行必要的改写(主要是修改体系结构相关部分),然后添加一些外设的驱动,打造一款适合于自己目标平台(可以是嵌入式便携设备也可以是其它体系结构的PC机)的新操作系统,对该系统进行针对目标平台的交叉编译,生成一个内核映象文件,最后把该映象文件烧写(安装)到目标平台中。

而通常对Linux源码的改写工作难度较大,它要求不仅对Linux内核结构要非常熟悉,还要求对目标平台的硬件结构要非常熟悉。 同时还要求对相关版本的汇编语言较熟悉,因为与体系结构相关的部分源码往往是用汇编写的,所以这部分工作一般由目标平台提供商来完成。

比如说针对目前嵌入式系统中最流行的ARM平台,它的这部分工作就是由英国ARM公司的工程师完成的,我们所要做的就是从其网站上下载相关版本Linux内核的补丁(Patch)。 把它打到目标平台的Linux内核上,再进行交叉编译就行。其基本过程如下(以Linux2.6.0为例):

到ftp://ftp.arm.linux.org.uk/pub/linux/linux-2.6/ 上下载Linux2.6.0内核及其关于ARM平台的补丁(如:Patch-2.6.0-rmk1.gz)。 给Linux2.6.0打补丁:zcat ../patch-2.6.0-rmk1.gz | patch –p1(前面../表示补丁文件放在内核文件上一层目录)。

交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-gcc,glibc等。 3.准备交叉编译环境。 交叉编译环境工具链一般包括binutils(含AS汇编器,LD链接器等),arm-gcc,glibc等。 交叉编译环境的搭建也是个复杂的过程。我的博客里有一种简单的方法. http://blog.chinaunix.net/u2/86537/article_100671.html

4.修改内核目录下的Makefile文件,主要是以下几行: ① 注释掉ARCH:=$(shell uname –m | sed –e s/i.86/i386/-e s/sun4u/sparc64/ -e s/arm. */arm/ - e s/sa110/arm/)这一行; ② ARCH ?= 改为 ARCH = arm;

③ CROSS_COMPILE ? = 改为 CROSS_COMPILE = 你的交叉编译工具中arm-linux所在目录/arm-linux-。 5.此后就可以进行编译。

关于交叉编译环境 交叉编译环境的建立最重要的就是要有一个交叉编译器。 所谓的交叉编译就是:利用运行在某机器上的编译器编译某个源程序生成在另一台机器上运行的目标代码的过程。 编译器的生成依赖于相应的函数库,而这些函数库又得依靠编译器来编译,所以这里有个“蛋和鸡”的关系。

修改uClinux内核源码 在完成交叉编译环境的建立之后,进入下一阶段,对uClinux内核的移植修改。uClinux的移植是个繁重的工作,其主要主要包含启动代码的修改,内核的链接及装入,参数传递,内核引导几个部分。

其中启动代码以参数形式把DRAM和Flash数量(指定系统中可用页面的数目和文件系统大小)等信息传给内核。 接下来完成设置陷阱、初始化中断、初始化计时器和初始化控制台等一系列操作,并使内核正确启动。

Linux移植过程中内容非常多,涉及的知识量也很大,而且由于平台的不同和内核版本的不同所涉及的内容往往也有很大不同。 以上内容仅参考。 具体操作时还应收集相关平台及内核版本的详细资料,才能展开相应工作。 下面以已经改造好的uClinux,针对UP-NETARM3000平台来讲解内核的裁减。

12.2.4 Linux内核裁减 Linux内核的裁剪与编译看上去是个挺简单的过程,只是对配置菜单的简单选择。但是内核配置菜单本身结构庞大,内容复杂。现在结合内核裁剪过程,了解配置各选项的作用。 Linux内核的编译菜单都是通过Config.in经由不同脚本解释器产生.config。

它包括“make config”、“make menuconfig”和“make xconfig”等版本。 在选择相应的配置时,有三种选择方式: Y--将该功能编译进内核 N--不将该功能编译进内核 M--将该功能编译成可以在需要时动态插入到内核中的模块

(2) prompt for obsolete code/drivers 该项用于对那些已经陈旧的被现有文件替代了的驱动程序和代码的支持,可以不选; 除非你的机器配置比较旧,但那也会有不少问题。 所以该项以基本不用,在新的版本中已被替换。

2.loadable module support 动态加载模块支持选项,其子项有: (1) enable module support 支持模块加载功能,应该选上。 (2) set version information on all module symbols 该项用来支持跨内核版本的模块支持。 一般不选。 (3) kernel module loader 如果你启用这个选项,你可以通过kerneld程序的帮助在需要的时候自动载入或卸载那些可载入式的模块,我们一般会选上。

3.system type 系统类型,主要是CPU类型以及与此相关的内容。 在UP-NETARM300/3000平台上你在该项上看到的是s3c44b0的ARM系列CPU。

4. General setup (1) support hot-plugable devieces 对可热拔插的设备的支持,看情况选择。若要对U盘等USB设备进行控制,建议选上。 (2) Networking support 网络支持,用到网络设备当然要选上。

5. Networking option 网络选项,它主要是关于一些网络协议的选项。 Linux最强大的功能,也就是在于对网络功能的灵活支持。这部分内容相当多,根据具体情况,一般把以下几项选上。

(1) packet socket 包协议支持,可以让你在TCP不能用时找到一个通讯方法。 (2) unix domain socket 对基本UNIX socket的支持。 (3) TCP/IP networking 对TCP/IP协议栈的支持,当然要

6.Networking deveices 网络设备支持。上面选好了网络协议了,现在选的是网络设备,其实主要就是网卡,所以关键是确定自己平台所使用的网卡芯片,该项下的子项也不少。

12. Console drivers support 控制台设备支持. 必选项: (1) VGA text console 一般台式机选该项,支持VGA显示设备。 (2) Support Frame Buffer devices 该项支持Frame Buffer设备。Frame Buffer技术在2.4.X内核被全面采用,它通过开辟一块内存空间模拟显示设备。这样我们可以像操作具体图形设备一样来操作这块内存,直接给它输入数据。 在具体显示设备上输出图形,在嵌入式设备上广泛采用LCD作为显示设备。

这些也往往是设备开发人员给添加的,以UP-NETARM3000为例,你应选上: ① support for frame buffer devices ②S3C44B0X LCD support ③ Advanced low level driver options ④ 8 bpp packet pixels support 该项在UP-NETARM2410平台上改为 320×240 8bit 256 color STN LCD support

14. Memory Technology Device (MTD) support MTD包含flash和RAM等存储设备。MTD在现在的嵌入式设备中应用的相当多,也特别重要。 选中该项可以对MTD进行动态支持。 其下还有好多具体小项,这里按UP-NETARM3000平台做一些解释:

(1) MTD partitioning support 选上该项可支持对MTD的分区操作。 在对嵌入式设备的操作系统移植过程中往往要对MTD进行分区,然后在各分区放置不同的数据,以让系统能被正确引导启动。

(2) Direct char device access to MTD devices 选该项为系统的所有MTD设备提供一个字符设备,通过该字符设备能直接对MTD设备进行读写以及利用ioctl()函数来获取该MTD设备的相关信息。

(3) Caching block device access to MTD devices 有许多flash芯片其擦除的块太大,因此作为块设备使用效率被大打折扣。 选上该项后,它支持利用RAM芯片作为缓存来使用MTD设备,这时对于MTD设备块设备就相当于它的一个用户,通过JFFS文件系统的控制。 它可以模拟成一个小型块设备,具有读、写、擦除和校验等一系列功能。

(4) NAND flash device drivers 子项中有几项是关于MTD设备驱动的,平台选择的是NAND flash,所以选上它。选上后,在其二级子项中还要选上: ① NAND devices support ② verify NAND pages writes 支持页校验。 ③ NAND flash device on ARM board

16. block devices 块设备。 该项下也有好几个子项,主要是关于各种块设备的支持,至少把RAM的支持项选上,如在我们UP-NETARM3000平台上我们要选上: (1) RAM disk support (2) Initial RAM disk(initrd) support

17. File systems 文件系统在Linux中是非常重要的,该项下的子项也非常多。 (1) Quota support 份额分配支持,择该项则系统支持对每个用户使用的磁盘空间进行限制。 (2) Kernel automounter support 在有NFS文件系统的支持下,选择该项使内核可以支持对一些远端文件系统的自动挂栽。 (3) Kernel automounter version 4 support V3版本的升级,它兼容V3。

(4) Reiserfs support ReiserFS这种文件系统以日志方式,不仅把文件名,而且把文件本身保存在一个“平衡树”里,其速度与ETX2差不多,但比传统的文件系统架构更为高效,尤其适合大目录下文件的情况。

(5) ROM file system support 它是一个非常小的只读文件系统,主要用于安装盘及根文件系统。 (7) Second extended fs support 著名的EXT2(二版扩展文件系统),除非你是用DOS模拟器否则得选它。 (8) Ext3 journalling file system support EXT2的日志版,我们通常叫它EXT3。

(9) Journalling Flash file system v2(jffs2) support Flash日志文件系统,目前UP-NETARM3000的uCliux支持该文件系统。 (11) /proc file system support 这是虚拟文件系统,能够提供当前系统的状态信息。 它运行时在内存生成,不占任何硬盘空间,通过CAT命令可以读到其文件的相关信息。

(12) /dev file system support 它是类似于/proc的一个文件系统,也是虚拟的,主要用于支持devfs(设备文件系统)。 把它选上,就可以不依赖于传统的主次设备号的方式来管理设备,而是由devfs自动管理。

18. character devices LINUX支持很多特殊的字符设备,所以该项下的子项也特别多。 (1) virtual terminal 虚拟终端,选上。

(2) support for console on virtual terminal 虚拟终端控制台,也给选上。 (3) non-standard serial port support 非标准串口设备的支持。 如果你的平台上有一些非标准串口设备需要支持,就选上它。

(4) Serial drivers 串口设置,一般选上自己开发平台相关的串口就行。 在UP-NETARM3000上选S3C44B0 serial port support和support for console on S3C44B0 serial port。

内核的编译 1.make clean 在正式编译你的内核之前先把环境给清理干净。 2.make dep 编译相关依赖文件。 (2.6.X以上版本这步已经被整合到make这一步中) 3.make zImage 最终的编译命令。 有时你可以直接用make(2.6.X版本上用)或make bzImage(给PC机编译大内核时使用)。 4.make install 把相关文件拷贝到默认的目录。当然在给嵌入式设备编译时这步可以不要。