基于arm和linux的开发

上传人:ji****n 文档编号:54833628 上传时间:2018-09-20 格式:PPT 页数:97 大小:2.70MB
返回 下载 相关 举报
基于arm和linux的开发_第1页
第1页 / 共97页
基于arm和linux的开发_第2页
第2页 / 共97页
基于arm和linux的开发_第3页
第3页 / 共97页
基于arm和linux的开发_第4页
第4页 / 共97页
基于arm和linux的开发_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《基于arm和linux的开发》由会员分享,可在线阅读,更多相关《基于arm和linux的开发(97页珍藏版)》请在金锄头文库上搜索。

1、基于ARM和linux的开发,2018/9/20,华中科技大学 武汉创维特,2,提纲,1,3,2,4,5,Linux简介,Linux驱动程序设计,Linux内核移植,Linux开发过程,6,7,第八章 基于ARM和Linux的开发,Linux上的图形系统,Linux开发环境建立,Linux应用程序设计,3,Linux,Linux简介,Linux与UNIX系统兼容,开放源代码。,Linux原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐应用于嵌入式设备。Linux可以说是最早的嵌入式Linux发行版本。它是为没有MMU的处理器而设计的,进而发展了一个完整的开发平台,包括编

2、译、调试等工具。,4,Linux,Linux简介,Linux具有如下特性: 开源 免费 高度可裁剪:通常内核小于 512KBytes,文件系统可从几十KBytes到几Mbytes不等,视应用程序大小而定。,具有大量的开源的linux应用程序和驱动程序,并可以方便地移植到各种平台,包括ARM平台,5,Linux与uC/OS-II的区别 功能性,Linux简介,Linux包含一整套的编译、调试等开发工具、内核源代码、各种文件系统、图形接口、各种协议、驱动程序以及丰富的应用程序。,而uC/OS-II确切的来说只是一个微内核,仅仅包含多任务调度、简单内存管理等基本的多任务操作系统元素,且多任务调度算法

3、和内存管理等都比较简单。对于想实现GUI、FS、协议等都必须另外购买或者移植,对于设备驱动程序没有提供专门统一的接口。,6,Linux与uC/OS-II的区别 开发工具,Linux简介,Linux发布中包含了编译器和调试器等工具,它们都采用GCC编译器,汇编语法一致。,uC/OS-II没有指定编译器,在不同的平台下使用该平台下的编译器,而各个编译器,其汇编语法不同,因此,在不同类型平台下,汇编程序不一致。,7,Linux与uC/OS-II的区别 开发资源,Linux简介,在开发上,Linux采用统一的API调用,接口文档齐全,书籍、网上资源也比较多。,uC/OS-II虽没有标准的API接口,但

4、是其内核非常简单、简洁,且书籍、网上资源也非常丰富。,8,Linux与uC/OS-II的区别 移植性,Linux简介,Linux发布中包含了多种平台下的移植,可以通过配置内核选择体系结构和裁剪内核。,uC/OS-II的不同平台下的移植通过不同的移植代码独立发布,没有一个统一的界面,通过宏定义进行内核裁剪。,9,Linux与uC/OS-II的区别 实时性,Linux简介,Linux内核不关心实时性问题,可以通过和RTLinux配合来实现实时。 RTLinux处理实时任务,非实时任务由linux完成 RTLinux是为linux提供实时性的方法,同样也适用于Linux。通过RTLinux的patc

5、h,可以满足Linux对实时性的需求,uC/OS-II采用占先式内核,实时性好,10,Linux映像(image)文件结构,Linux开发过程,Linux映像由内核(kernel)和文件系统(fs)组成。,可以将kernel和fs统一编译到一个映像(image)文件中,也可以将kernel和fs独立地放置于不同的映像文件中(烧写到FLASH的不同区域),这需要通过修改Makefile文件和内核中的文件系统加载代码实现。,本系统中kernel和fs分别位于不同的映像文件中。分别为(ramdisk.gz和zImage),Linux支持压缩核心(zImage),它是对原核心映像文件(linux.bi

6、n)进行压缩,并在压缩后的文件头部添加一段解压缩代码。在该程序运行时,先运行这段解压缩代码将程序解压缩到Linux核心运行地址,完成后,跳转到核心运行。,11,Linux内核组成,Linux开发过程,初始化程序段(init段) 约32KBytes。,数据段(data) 50100KBytes左右。,代码段(text) 300KBytes左右,如果kernel和fs编译在一起,内核映像还包含文件系统(romfs) 80KBytes,未初始化数据段(bss) 100150KBytes左右。,12,Linux开发步骤,Linux开发过程,BOOTLOADER开发,Linux开发环境建立,Linux内

7、核移植,应用程序开发,13,支持Linux开发的BOOTLOADER,Linux开发过程,引导Linux,烧写Linux内核映像和文件系统,初始化硬件,14,GNU交叉编译,Linux开发环境建立,Linux采用GNU交叉编译器,GNU的交叉编译器,包括以下组件: 1. Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件; 2. Binutils辅助工具,包括objdump、objcopy等; 3. Gdb调试器。,对于ARM可以采用如下两个版本的编译器: arm-elf- arm-linux-,15,arm-elf- 交叉编译器,Linux开发环境建立,arm-elf-gcc,a

8、rm-elf-ld,arm-elf-as,arm-elf-objdump,arm-elf-objcopy,arm-elf-gdb,16,arm-linux- 交叉编译器(推荐使用),Linux开发环境建立,arm-linux-gcc,arm-linux-ld,arm-linux-as,arm-linux-objdump,arm-linux-objcopy,arm-linux-gdb,17,选择Linux开发环境,Linux开发环境建立,Windows环境 + Cygwin,Windows环境 + VMWare虚拟机(安装RedHat 9.0),Linux环境,推荐RedHat 9.0,单机模式

9、(一台计算机),双机模式(两台计算机),Windows + Linux,18,在linux环境下进行Linux开发,Linux开发环境建立,必须采用支持GDB的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等,调试信息的打印可以通过串口完成,使用linux下的minicom超级终端程序(类似于Windows上的超级终端工具)接收并显示目标板传送的打印信息,Linux的程序编辑、编译、调试都在Linux环境进行,Linux串口驱动完成后,可以通过内核打印函数printk向串口打印信息,这是Linux内核调试过程中最有效的手段,19,在Window

10、s + Cygwin环境下进行Linux开发,Linux开发环境建立,Linux内核配置和编译等在Cygwin环境下运行,程序编辑和调试都在Windows环境下进行,必须采用支持Windows下进行linux调试的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等,调试信息的打印可以通过串口完成,使用Windows上的超级终端工具接收并显示目标板传送的打印信息,Cygwin是运行于Windows中的一个应用程序,它可以使得Linux环境下的应用程序可以在Cygwin环境下进行编译,即可以在Windows进行编译。,20,在Windows + VM

11、Ware虚拟机环境下进行Linux开发,Linux开发环境建立,如果需要使用只支持Windows环境下调试的调试器,可以通过在VMWare中安装linux虚拟机,在该虚拟机中进行编辑、编译Linux,然后通过网络(ftp、nfs、ssh)等手段传送到Windows中,进行调试,这样编译和调试可以分别在linux和windows环境下但是是在一台电脑中完成,它的缺点是系统要求较高,运行速度慢。,也可以在两台电脑中分别安装linux和windows,分别实现编译和调试。,VMWare是运行于Windows中的一个应用程序,是一个虚拟机,可以在其上安装多个操作系统,相当于在Windows上安装一个虚

12、拟的操作系统。,21,Linux内核移植,Linux内核移植,Linux内核的移植可以分为板级移植和片级移植。,对于Linux发行版本中已经支持的CPU通常只需要针对板级硬件进行适当的修改即可,这种移植叫做板级移植。,而对于Linux发行版本中没有支持的CPU则需要添加相应CPU的内核移植,这种移植叫做片级移植。,片级移植相对板级移植来说要复杂许多,本系统采用的Linux 发行版本中已经包含S3C2410X ARM920T处理器的移植包,因此,只需要在其上进行Linux板级移植的基本过程和方法。,22,Linux内核的目录结构,Linux内核移植,23,Linux内核的arch目录,Linux

13、内核移植,与架构和平台相关的源代码都放在arch目录下,对于ARM的Linux,包含于arch目录下的arm子目录中。,24,Linux内核的arch目录,Linux内核移植,当使用压缩核心时,boot目录下包含压缩和解压核心的源代码和Makefile文件。,kernel目录的entry-armv.S中为未压缩内核的起始执行文件,内核从其第一条指令处执行。,vmlinux.lds文件为核心的连接脚本文件,压缩核心解压后必须解压缩到该文件指定的地址。,25,Linux内核移植,Linux内核移植,配置内核,编译内核,下载、运行、调试内核,26,配置Linux内核,Linux内核移植,make c

14、onfig,make menuconfig,make xconfig,27,make config,Linux内核移植,28,make menuconfig,Linux内核移植,29,make xconfig,Linux内核移植,30,Linux常用配置选项,Linux内核移植,系统及其存储器配置,网络支持,显示器支持,触摸屏支持,31,系统及其存储器配置,Linux内核移植,在System Type菜单中中进行配置,选择系统类型 处理器型号,选择处理器其它特性(USB支持等),32,网络支持,Linux内核移植,在Networking options以及Network device supp

15、ort中进行配置,选择支持TCP/IP协议,33,网络支持,Linux内核移植,在Network device support配置中,添加选项Network device support,并在Ethernet(10 or 100Mbit)中选择Other ISA cards,如下图所示选择NE2000/NE1000 support,采用RTL8019网卡芯片,为NE2000兼容网卡芯片,因此,选择该网卡,34,显示器支持,Linux内核移植,在Character devices以及Console drivers中进行配置。 在Character devices配置中,添加选项Virtual t

16、erminal配置,如下图所示。,Virtual terminal支持,35,显示器支持,Linux内核移植,在Console drivers中添加Support Frame buffer devices配置,采用256色STN显示器,因此必须选择8bpp支持,36,触摸屏支持,Linux内核移植,在Character devices的Support S3C2410 TouchScreen子菜单中进行配置,选择s3c2410触摸屏支持,37,编译Linux内核,Linux内核移植,建立依赖关系 make dep,编译内核,make 编译内核 make zImage 编译压缩核心(zImage) 编译生成地Linux映像文件zImage通常保存在arch/arm/boot/目录下,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号