您的位置 首页 主动

嵌入式Linux操作系统在定制PMP DM320怎么使用?

Linux 是一种适合于嵌入式系统的开源操作系统,可以高效地处理各种复杂的任务。从基于TI DM320的PMP 解决方案入手,以TI DM320 平台为例,提出一种在

Linux 是一种合适于嵌入式体系的开源操作体系,能够高效地处理各种杂乱的使命。从根据TI DM320的PMP 解决计划下手,以TI DM320 渠道为例,提出一种在PMP 体系上运用嵌入式Linux 的办法,探讨了Bootloader 发动程序和嵌入式Linux 内核的移植进程。

1 导言

PMP (Portable Multimedia Player,便携式多媒体播放器),也便是一般人们所说的MP4,现在是消费类电子产品的一个新热门[1].而TI 的解决计划是根据该公司的DM320 DSP,其处理器为DSP+ARM 双核处理器架构,运用DSP 进行音视频编解码和图画编解码等多媒体处理,ARM 处理器担任体系管理及供给外围设备接口。该计划在多媒体性能与归纳本钱方面极具竞争力。可是软件编程相对杂乱以及产品开发周期较长。

2 PMP软件体系结构

PMP 软件最底层是操作体系层,该层首要包含Bootloader 引导程序和嵌入式Linux 操作体系。

Bootloader 首要完结体系从Flash 的发动、硬件各部分的初始化、LOGO 的显现以及OS 的引导;嵌入式Linux 首要包含通过定制的合适在DM320 上运转的Linux 操作体系。

3 Bootloader引导程序的定制

3.1 DM320 下的Bootloader 的发动进程

Bootloader是指体系发动后,在操作体系内核运转之前运转的一段小程序。不同的Bootloader 的装置介质Flash,体系的发动进程是不一样的。

1) 当装置介质为NOR Flash 时,Bootloader 就能够直接在 Flash 闪存内运转,不用把代码复制到体系RAM 中。发动方法设置成外部Memory,这样ARM的开端地址就从0xFFFF:0000 开端。然后在Bootloader 的程序中, 把进口地址设置成0xFFFF:0000 即可。

2) 当装置介质为NAND Flash 时,体系上电今后,运转ROM 里边的发动代码,挑选发动方法为:

AIM(Arm Internal Memory)ROM,ARM 的开端地址为0x0000:0000.然后ROM 里的程序会复制NANDFlash 里的User Bootloader 到处理器内部的RAM.

再次,履行User Bootloader 程序,完结初始化SDRAM 和驱动NAND Flash 的读才能等少数作业。

最终初始化体系,将NAND Flash 中的主Bootloader复制到SDRAM 中履行,复制完结后,要把寄存主Bootloader 的内存地址, 赋值给pc(ProgramCounter)指针。

3.2 DM320 下Bootloader 发动程序的定制

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

1) 修正Makefile 和Kconfig,意图是生成合适DM320 渠道的装备选项以及方针文件。在。/Makefile(当时目录均为U-Boot 源码树根目录)下参加如下句子:

dm320_config : unconfig

@./mkconfig $(@:_config=) arm arm926ejsdm320

其间mkconfig 为一个脚本文件, 参数为(Target,Architecture,CPU ,Board)别离对应上面的四个参数($(@:_config=) arm arm926ejsdm320)。

2) 在U-Boot 源码树下创立文件夹。/board/dm320.寄存与DM320 渠道有关的文件。

3) 在。/board/dm320/platform.S 中参加对DM320 寄存器初始化赋值句子, 在。/cpu/arm926ejs 中对cpu.c 和start.S 修正,前者供给有关cpu操作的函数,后者为cpu 履行时的初始化代码。

4) ./lib_arm/board.c 是完结初始化操作的首要文件。在文件中界说了一个初始化序列:

init_fnc_t *init_sequence[] = {

cpu_init, /* 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_f, /*init console */

display_banner, /* say that we are here */

dram_init,/*configure available RAM banks */

display_dram_config,

#if defined(CONFIG_VCMA9)

checkboard,

#endif

NULL,

};

上述数组中函数序列顺次履行。在完结初始化序列后,将是一些特定的操作。

4 Linux内核的定制

本体系中选用的Linux 内核版别号为2.6.5.要定制Linux 内核,不只要修正内核源码树,并且要编写相关外围设备的驱动程序, 使之成为一个合适DM320 运转的OS 环境。

4.1 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/Kconfig”

表明:把DM320 结构下的装备选项也引进,一起把其他CPU 结构去掉,这样便利挑选。比方:

#source “arch/arm/mach-clps711x/Kconfig”

#source“arch/arm/mach-integrator/Kconfig”(“#”表明注释掉相关的内容)

最终把内核装备选项中对DM320 开发有用的选进来。比方:

source “drivers/char/Kconfig”

if (!ARCH_DM320_20)

source “sound/Kconfig”

endif

表明:需求开发字符设备的驱动,而不需求声响的支撑。

由于要把CODEC 编入内核,所以还要参加对CODEC 支撑的装备选向。

source “codecs/modules/Kconfig”

假如要参加一个新的外围设备,也需求在Kconfig文件中参加相应的内容。比方说要参加一个三星的4寸TFT-LCD 的驱动,就需求修正。/drivers/char/Kconfig 文件,并参加以下内容:

config DM320_SAMSUNG_4_LCD

tristate “DM320 SAMSUNG 4.0 inch 16:9TFT LCD”

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/146996.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部