全国高校ARM嵌入式教学及科研师资高级培训班讲稿.ppt
《全国高校ARM嵌入式教学及科研师资高级培训班讲稿.ppt》由会员分享,可在线阅读,更多相关《全国高校ARM嵌入式教学及科研师资高级培训班讲稿.ppt(112页珍藏版)》请在三一办公上搜索。
1、2004全国高校ARM嵌入式教学及科研师资高级培训班讲稿 基于ARM和uClinux的开发,2023/6/16,主讲:刘尚军,华中科技大学 武汉创维特,2,提纲,1,3,2,4,5,uClinux简介,uClinux驱动程序设计,uClinux内核移植,uClinux开发过程,6,7,第八章 基于ARM和uClinux的开发,uClinux上的图形系统,uClinux开发环境建立,uClinux应用程序设计,3,uClinux,uClinux简介,Linux与UNIX系统兼容,开放源代码。,Linux原本被设计为桌面系统,现在广泛应用于服务器领域。而更大的影响在于它正逐渐应用于嵌入式设备。uC
2、Linux可以说是最早的嵌入式Linux发行版本。它是为没有MMU的处理器而设计的,进而发展了一个完整的开发平台,包括编译、调试等工具。,在uCLinux这个英文单词中u表示Micro,小的意思,C表示Control,控制的意思,所以uCLinux就是Micro-Control-Linux,字面上的理解就是“针对微控制领域而设计的Linux系统”。,在uCLinux的主页www.uclinux.org上有相关发行版本的源代码、编译工具等下载。JX44B0教学系统采用最新的uCLinux发行版本20040408,4,uClinux,uClinux简介,uClinux继承了linux的大多数特性:
3、开源免费高度可裁剪:通常内核小于 512KBytes,文件系统可从几十KBytes到几Mbytes不等,视应用程序大小而定。,许多linux的应用程序和驱动程序可以直接或者经过很小改动就可以在uClinux上运行,5,uClinux与linux的区别 内存管理,uClinux简介,uClinux运行于没有MMU的处理器上,使用平坦式(flat)内存管理模式,虚拟内存到物理内存是一对一的映射关系,6,uClinux与linux的区别 fork与vfork,uClinux简介,uClinux的多进程管理只能通过vfork来实现,vfork使父进程锁定直到子进程exec()或者exit(),7,uC
4、linux与uC/OS-II的区别 功能性,uClinux简介,uClinux来源于linux,包含一整套的编译、调试等开发工具、内核源代码、各种文件系统、图形接口、各种协议、驱动程序以及丰富的应用程序。,而uC/OS-II确切的来说只是一个微内核,仅仅包含多任务调度、简单内存管理等基本的多任务操作系统元素,且多任务调度算法和内存管理等都比较简单。对于想实现GUI、FS、协议等都必须另外购买或者移植,对于设备驱动程序没有提供专门统一的接口。,8,uClinux与uC/OS-II的区别 开发工具,uClinux简介,uClinux发布中包含了编译器和调试器等工具,它们都采用GCC编译器,汇编语法
5、一致。,uC/OS-II没有指定编译器,在不同的平台下使用该平台下的编译器,而各个编译器,其汇编语法不同,因此,在不同类型平台下,汇编程序不一致。,9,uClinux与uC/OS-II的区别 开发资源,uClinux简介,在开发上,uClinux与linux采用相同的API调用,接口文档齐全,书籍、网上资源也比较多。,uC/OS-II虽没有标准的API接口,但是其内核非常简单、简洁,且书籍、网上资源也非常丰富。,10,uClinux与uC/OS-II的区别 移植性,uClinux简介,uClinux发布中包含了多种平台下的移植,可以通过配置内核选择体系结构和裁剪内核。,uC/OS-II的不同平
6、台下的移植通过不同的移植代码独立发布,没有一个统一的界面,通过宏定义进行内核裁剪。,11,uClinux与uC/OS-II的区别 实时性,uClinux简介,uClinux内核不关心实时性问题,可以通过和RTLinux配合来实现实时。RTLinux处理实时任务,非实时任务由linux完成RTLinux是为linux提供实时性的方法,同样也适用于uClinux。通过RTLinux的patch,可以满足uClinux对实时性的需求,uC/OS-II采用占先式内核,实时性好,12,uClinux映像(image)文件结构,uClinux开发过程,uClinux映像由内核(kernel)和文件系统(f
7、s)组成。,可以将kernel和fs统一编译到一个映像(image)文件中,也可以将kernel和fs独立地放置于不同的映像文件中(烧写到FLASH的不同区域),这需要通过修改Makefile文件和内核中的文件系统加载代码实现。,JX44B0中kernel和fs编译在一起。,uClinux支持压缩核心(zImage),它是对原核心映像文件(linux.bin)进行压缩,并在压缩后的文件头部添加一段解压缩代码。在该程序运行时,先运行这段解压缩代码将程序解压缩到uClinux核心运行地址,完成后,跳转到核心运行。,13,uClinux内核组成,uClinux开发过程,初始化程序段(init段)约3
8、2KBytes。,数据段(data)50100KBytes左右。,代码段(text)300KBytes左右,如果kernel和fs编译在一起,内核映像还包含文件系统(romfs)80KBytes,未初始化数据段(bss)100150KBytes左右。,14,uClinux开发步骤,uClinux开发过程,BOOTLOADER开发,uClinux开发环境建立,uClinux内核移植,应用程序开发,15,支持uClinux开发的BOOTLOADER,uClinux开发过程,引导uClinux,烧写uClinux内核映像和文件系统,初始化硬件,16,GNU交叉编译,uClinux开发环境建立,uCl
9、inux采用GNU交叉编译器,GNU的交叉编译器,包括以下组件:1.Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件;2.Binutils辅助工具,包括objdump、objcopy等;3.Gdb调试器。,对于ARM可以采用如下两个版本的编译器:arm-elf-arm-linux-,17,arm-elf-交叉编译器(推荐使用),uClinux开发环境建立,arm-elf-gcc,arm-elf-ld,arm-elf-as,arm-elf-objdump,arm-elf-objcopy,arm-elf-gdb,18,arm-linux-交叉编译器,uClinux开发环境建立,arm
10、-linux-gcc,arm-linux-ld,arm-linux-as,arm-linux-objdump,arm-linux-objcopy,arm-linux-gdb,19,选择uClinux开发环境,uClinux开发环境建立,Windows环境+Cygwin,Windows环境+VMWare虚拟机(安装RedHat 9.0),Linux环境,推荐RedHat 9.0,单机模式(一台计算机),双机模式(两台计算机),Windows+Linux,20,在linux环境下进行uClinux开发,uClinux开发环境建立,必须采用支持GDB的调试器(如ADT1000A)才能进行调试,否则只
11、能通过BOOTLOADER进行简单的程序烧写运行等,调试信息的打印可以通过串口完成,使用linux下的minicom超级终端程序(类似于Windows上的超级终端工具)接收并显示目标板传送的打印信息,uClinux的程序编辑、编译、调试都在Linux环境进行,uClinux串口驱动完成后,可以通过内核打印函数printk向串口打印信息,这是uClinux内核调试过程中最有效的手段,21,在Windows+Cygwin环境下进行uClinux开发,uClinux开发环境建立,uClinux内核配置和编译等在Cygwin环境下运行,程序编辑和调试都在Windows环境下进行,必须采用支持Windo
12、ws下进行linux调试的调试器(如ADT1000A)才能进行调试,否则只能通过BOOTLOADER进行简单的程序烧写运行等,调试信息的打印可以通过串口完成,使用Windows上的超级终端工具接收并显示目标板传送的打印信息,Cygwin是运行于Windows中的一个应用程序,它可以使得Linux环境下的应用程序可以在Cygwin环境下进行编译,即可以在Windows进行编译。,22,在Windows+VMWare虚拟机环境下进行uClinux开发,uClinux开发环境建立,如果需要使用只支持Windows环境下调试的调试器,可以通过在VMWare中安装linux虚拟机,在该虚拟机中进行编辑、
13、编译uClinux,然后通过网络(ftp、nfs、ssh)等手段传送到Windows中,进行调试,这样编译和调试可以分别在linux和windows环境下但是是在一台电脑中完成,它的缺点是系统要求较高,运行速度慢。,也可以在两台电脑中分别安装linux和windows,分别实现编译和调试。,VMWare是运行于Windows中的一个应用程序,是一个虚拟机,可以在其上安装多个操作系统,相当于在Windows上安装一个虚拟的操作系统。,23,在linux环境下建立uClinux开发环境,uClinux开发环境建立,下载并安装uClinux源代码,安装编译器,24,安装编译器,uClinux开发环境
14、建立,在Linux控制台下执行以下命令:sh arm-elf-tools-20030314.sh,JX44B0采用arm-elf-tools交叉编译环境arm-elf-tools-20030314.sh,该工具可以从www.uclinux.org/pub/uClinux/arm-elf-tools/上下载。,安装完成后,键入arm-elf-gcc,如果能看到下面的输出信息:Reading specs from/usr/local/lib/gccspecsgcc version 2.95.3 20010315(release)(ColdFire patches-20010318 from htt
15、p:/XIP and shared lib patches from http:/,25,下载并安装uClinux源代码,uClinux开发环境建立,JX44B0的uCLinux发行文件为uClinux-dist-jx44b0.tar.gz,在linux下将该文件拷贝到/home/cvtech/jx44b0目录下,然后在该目录下执行:tar zxvf uClinux-dist-jx44b0.tar.gz,当tar程序运行完毕后,在/home/cvtech/jx44b0目录下会有一个uClinux-dist的新目录,这个目录就是uClinux的源码根目录,里面有进行uClinux开发的所有的源代
16、码。,在uCLinux的主页www.uclinux.org上有相关发行版本的源代码、编译工具等下载。JX44B0采用最新的uCLinux发行版本20040408。,也可以从网上下载uClinux-dist发行版本,然后解压。,26,uClinux内核移植,uClinux内核移植,uCLinux内核的移植可以分为板级移植和片级移植。,对于uCLinux发行版本中已经支持的CPU通常只需要针对板级硬件进行适当的修改即可,这种移植叫做板级移植。,而对于uCLinux发行版本中没有支持的CPU则需要添加相应CPU的内核移植,这种移植叫做片级移植。,片级移植相对板级移植来说要复杂许多,JX44B0采用的
17、uCLinux 20040408发行版本中已经包含S3C44B0X ARM7TDMI处理器的移植包,因此,只需要在其上进行uCLinux板级移植的基本过程和方法。,27,uClinux发行版本的目录结构,uClinux内核移植,28,uClinux内核的目录结构,uClinux内核移植,29,uClinux内核的arch目录,uClinux内核移植,与架构和平台相关的源代码都放在arch目录下,对于ARM的uClinux,包含于arch目录下的armnommu子目录中。,30,uClinux内核的arch目录,uClinux内核移植,当使用压缩核心时,boot目录下包含压缩和解压核心的源代码和
18、Makefile文件。,kernel目录的entry-armv.S中为未压缩内核的起始执行文件,内核从其第一条指令处执行。,vmlinux.lds文件为核心的连接脚本文件,压缩核心解压后必须解压缩到该文件指定的地址。,31,uClinux内核移植,uClinux内核移植,配置内核,编译内核,下载、运行、调试内核,32,配置uClinux内核,uClinux内核移植,make config,make menuconfig,make xconfig,33,make config,uClinux内核移植,34,make menuconfig,uClinux内核移植,35,make xconfig,u
19、Clinux内核移植,36,uClinux常用配置选项,uClinux内核移植,系统及其存储器配置,网络支持,显示器支持,触摸屏支持,37,系统及其存储器配置,uClinux内核移植,在System Type菜单中中进行配置,包括大小端设置,但是ARM中许多uClinux发布并没有进行大端版本移植,因此,选择大端时要特别注意,存储器配置,包括SDRAM、FLASH地基地址和大小,内核执行方式,从RAM执行还是从FLASH执行,板级包的选择,38,网络支持,uClinux内核移植,在Networking options以及Network device support中进行配置,39,网络支持,u
20、Clinux内核移植,在Network device support配置中,添加选项Network device support,并在Ethernet(10 or 100Mbit)中选择Cirrus Logic CS8900A support,如下图两个图所示,40,显示器支持,uClinux内核移植,在Character devices以及Console drivers中进行配置。在Character devices配置中,添加选项Virtual terminal配置,如下图所示。,41,显示器支持,uClinux内核移植,在Console drivers中添加Support Frame b
21、uffer devices配置,42,触摸屏支持,uClinux内核移植,在Character devices的Mice子菜单中进行配置,43,编译uClinux内核,uClinux内核移植,建立依赖关系make dep,编译内核,make 编译内核make zImage 编译压缩核心(zImage)编译生成地uClinux映像文件通常保存在uClinux-dist/images目录下,44,下载、运行和调试内核,uClinux内核移植,通过调试器下载内核并运行,通过BOOTLOADER下载内核到SDRAM中运行,通过BOOTLOADER将内核烧写到FLASH中,然后运行uClinux,45,
22、uClinux调试手段,uClinux内核移植,在uClinux开发中,由于可能没有标准键盘和显示器支持,因此,通常通过串口将显示信息发送到主机,由主机端超级终端工具接收,以完成显示功能。同时在超级终端中可以输入数据,然后由uClinux接收,以完成标准键盘功能。,调试过程中也可以通过串口将调试信息打印到超级终端,这是uClinux最有效和最简单的方法。,46,uClinux内核移植主要过程1,uClinux内核移植,对于板级移植,内核移植主要包括如下几个部分:,内核配置,包括板级包配置,如S3C44B0X-MBA44,体系结构相关代码修改,根据板级包的配置,修改相应的体系结构相关代码,包括:
23、压缩核心启动代码:linuxarmnommu/boot/内核启动代码:linuxarmnommu/kernel/板级相关代码:linuxarmnommu/mach-S3C44B0X/,连接脚本核心连接脚本:linuxarmnommu/vmlinux.lds压缩核心连接脚本:linuxarmnommu/boot/compressed/linux.lds,47,uClinux内核移植主要过程2,uClinux内核移植,加载文件系统romfs,编写驱动程序驱动程序目录:linux网卡驱动程序:linuxLCD驱动程序:linux触摸屏驱动程序:linux,中断处理在JX44B0中,uClinux内核
24、在SDRAM中运行,其中断向量表0 x0c000020处,因此在BOOTLOADER中必须将中断向量表正确导入到该处地址。,48,uClinux启动过程1,uClinux内核移植,核心打印信息,LCD显示初始化,触摸屏初始化,49,uClinux启动过程2,uClinux内核移植,加载文件系统,执行文件系统中的脚本/etc/rc,网卡驱动加载,50,uClinux启动过程3,uClinux内核移植,uClinux控制台,51,uClinux文件系统,uClinux内核移植,文件系统指文件存在的物理空间。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。,Linux的最重要特
25、征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其它种操作系统共存。,Virtual File System(虚拟文件系统)使得Linux可以支持多个不同的文件系统。由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。,Linux的虚拟文件系统允许用户同时能透明地安装许多不同的文件系统。虚拟文件系统是为Linux用户提供快速且高效的文件访问服务而设计的。,52,常用uClinux文件系统,uClinux内核移植,Linux系统核心可以支持十多种文件系统类型:JFS、ext、ext2、ext3、ISO9660、XFS、M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国高校 ARM 嵌入式 教学 科研 师资 高级 培训班 讲稿
链接地址:https://www.31ppt.com/p-5233623.html