面向嵌入式视频处理平台的Linux移植

[09-14 01:03:20]   来源:http://www.88dzw.com  电子制作   阅读:8806

文章摘要:www.88dzw.com这样,本系统的BootLoader就设计完成了,下面就可以进行Linux内核移植。4 Linux内核移植Linux内核主要由5个子系统构成:a)进程调度(Process Scheduler):负责控制进程对CPU的使用。b)内存管理(Memory Manager):标准Linux的内存管理支持虚拟内存,进程代码、数据和堆栈的总量可以超过实际内存的大小。c)虚拟文件系统(Virtual File System):隐藏了不同硬件的具体细节,为所有设备提供统一的接口。d)网络接口(Network Interface):负责支持标准的网络通信协议和各种网络硬件设备。e)进程间

面向嵌入式视频处理平台的Linux移植,标签:电子小制作,http://www.88dzw.com
www.88dzw.com

  这样,本系统的BootLoader就设计完成了,下面就可以进行Linux内核移植。

  4 Linux内核移植

  Linux内核主要由5个子系统构成:

  a)进程调度(Process Scheduler):负责控制进程对CPU的使用。

  b)内存管理(Memory Manager):标准Linux的内存管理支持虚拟内存,进程代码、数据和堆栈的总量可以超过实际内存的大小。

  c)虚拟文件系统(Virtual File System):隐藏了不同硬件的具体细节,为所有设备提供统一的接口。

  d)网络接口(Network Interface):负责支持标准的网络通信协议和各种网络硬件设备。

  e)进程间通信(Inter-Process Communica-tion):支持进程间各种通信机制。

  根据嵌入式系统的特点,要使嵌入式Linux系统具备一定的功能且保持小型化,应包括启动加载程序、内核、初始化进程,以及硬件驱动程序、文件系统、必要的应用程序等。

  不管是哪一款嵌入式处理器,完成移植工作就要修改所有与体系结构有关的代码,主要指内核人口、处理器初始化、I/O口映射等。具体操作如下:

  (1)修改配置文件

  a)打开根目录下的Makefile文件,指定目标平台ARCH=arm;指定交叉编译器CROSS_COMPILE=arm-linux-gcc;

  b)打开/arch/arm目录下的Makefile文件,添加内核起始运行地址,即image.ram应下载的位置,该位置一般在RAM区起始地址偏移0x8000处;

  c)打开/arch/arm/boot目录下的Makefile文件,指定Bootloader的压缩内核解压后数据的输出地址。

  (2)编译Linux内核

  在完成上述工作后,开始编译Linux内核,生成目标代码。在内核源代码目录下依次键入以下命令:

  a)make clean:清除以前构造内核时生成的所有目标文件、模块和临时文件;

  b)make dep:搜索Linux输出与源代码之间的依赖关系,并以此生成依赖文件;

  c)make menuconfig:调用菜单式的配置内核界面,内核配置的选项非常多,根据自己系统的具体情况选择合理的配置,在内核配置时选上相应型号的硬件;

  d)make zImage:编译内核,生成压缩的Linux内核目标代码zImage文件;

  e)make modules:编译块模块驱动程序,凡是在menuconfig中被选为的都会在这条命令运行时被编译。

  至此,已编译好能在本系统上运行的Linux内核。

  (3)创建JFFS2文件系统

  文件系统是Linux系统的重要组成部分。本系统使用mkfs.jffs2工具创建JFFS2文件系统。首先建立/bin、/sbin等目录,然后复制命令工具到/bin文件夹,复制系统控制程序到/sbin目录下,复制应用程序运行时所需的库到/lib,库文件可从PC机的交叉编译工具安装目录下复制。最后键人命令:mkfs.jffs2-o jffs2root.jffs2,生成JFFS2根文件系统。

  上述工作完成后,将BootLoader、Linux内核、文件系统烧写到TMS320DM*6的Flash中,这样就能运行Linux系统了。

www.88dzw.com

  5设备驱动程序开发

  5.1 Linux设备驱动程序开发步骤

  Linux系统设备分为字符设备、块设备和网络设备3种。其设备驱动的开发主要包括:

  a)在驱动程序源文件中定义file_opera-tions结构,并编写出设备需要的各个操作函数,对于设备不需要的操作函数用NULL初始化,这些操作函数将被注册到内核中。

  b)定义一个初始化函数,在Linux初始化时会调用此函数。此函数包含:初始化驱动程序要用到的硬件寄存器;初始化与设备相关的参数;注册设备;注册设备使用的中断和函数;其他一些初始化工作。

  c)对于驱动程序的使用,可以进行静态编译,也可以进行动态编译。静态编译是指将设备驱动程序添加到内核中,动态编译是指将设备驱动程序编译成驱动模块。

  本嵌入式系统主要用于视频处理,涉及到的外设主要是显示设备和输入设备。这里采用的显示设备是LCD,而输入设备是通过USB接口与系统相连的。

  5.2 LCD显示驱动程序开发

  LCD的设备驱动程序属于字符设备的驱动,应按照字符设备的规则编写。在Linux下进行LCD显示用Framebuffer技术,这是提取图形的设备,是用户进入图形界面很好的接口。Linux内核根据硬件描述抽象出Framebuffer设备,供用户态的进程直接进行写屏。可以将 Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,写操作立即反应在屏幕上。 Framebuffer的设备文件一般存放在/dev这个目录下,对此设备文件进行操作即可实现图像的显示。

上一页  [1] [2] [3] [4]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作

《面向嵌入式视频处理平台的Linux移植》相关文章