APP下载

PDC系统的Bootloader设计与实现

2015-05-30黎爱琼

中国新通信 2015年6期
关键词:嵌入式系统

黎爱琼

【摘要】 数据保护容器(Protective Data Capsule)简称PDC,是船载航行数据记录仪最终记录存放的介质,本设计主要介绍的是PDC系统引导程序的启动过程,以及实现引导程序移植的环境配置及烧写过程,以便实现PDC系统的正常启动。

【关键词】 数据保护容器 PDC 嵌入式系统 Bootloader

一、嵌入式系统中Bootloder的基本工作原理

Bootloader是嵌入式软件开发的第一个环节,它把嵌入式系统的软件和硬件紧密衔接在一起。是系统加电啟动运行的第一段软件代码,类似于PC机的BIOS系统。

二、Bootloader启动过程分析

在嵌入式系统中,Bootloader是严重地依赖于硬件而实现的。而在嵌入式系统中很难建立一个通用的Bootloader。但是,Bootloader的实现还是可以总结出一般规律。通过分析比较,引导程序则选用了韩国Mizi公司开发的Bootloader,即vivi。

vivi是利用串口通信为用户提供接口的,只需要将PC宿主机通过一根串口电缆线与目标板相连即可。

vivi的运行分为 stage1 和 stage2两个阶段。

第一阶段:

1.关闭WATCH DOG:上电后,WATCH DOG默认是开着的。

2.禁止所有中断:vivi中没用到中断。

3.初始化系统时钟:启动MPLL,FCLK=200MHz,HCLK=100MHz,PCLK=50MHz,“CPU bus mode”改为“Asynchronous bus mode”。

4.初始化内存控制寄存器。

5.检查是否从掉电模式唤醒,若是,则调用WakeupStart函数进行处理——这是一段没用上的代码,vivi不可能进入掉电模式。

6.点亮所有LED 。

7.初始化UART0。

8.将vivi所有代码从NAND Flash复制到SDRAM中。

第2阶段:

1.执行reset_handler(),用于将内存清零。

2.执行board_init(),调用init_time()和set_gpios()来初始化定时器和设置GPIO引脚功能。

3.执行mem_map_init()和mmu_init(),建立页表,并启动MMU。

4.执行heap_init(),该函数在SDRAM中指定了一块1M大小的内存作为堆heap。

5.执行mtd_dev_init(),初始化MTD设备,执行本函数后,得到一个mtd_info结构的全局变量,以后直接通过mymtd提供的接口对NAND Flash进行操作。

6.执行init_priv_data(),此函数将启动内核的命令参数取出,并存放在特定的位置中。

7.执行misc()和init_builtin_cmds(),这两个函数都是通过调用add_command函数,给一些命令增加相应的处理函数。

8.执行boot_or_vivi(),该函数根据实际情况判断,是启动vivi_shell进入与用户交互的界面中,还是直接启动Linux内核。

三、vivi移植

vivi直接提供了对S3C2410X处理器的板级支持。其相关配置文件存放入s3c2410目录中。在宿主机的终端中,进入vivi的根目录下,输入如下命令进入vivi的配置界面:

当配置完vivi后,保存配置并退出配置菜单界面,回到终端中输入命令编译vivi:

[root@kision vivi]#make

如果编译成功,将在当前目录下生成vivi二进制镜像文件,编译生成vivi二进制镜像文件后,有两种途径将vivi烧写到目标板中:JTAG下载方式和串口下载方式。首先要配置好串口。

在PC宿主机的Linux操作系统开发环境下,在终端中输入命令minicom:

[root@kision root]#minicom -s

此时界面会进入串口终端配置界面中,选择正确的PC串口通道号,并配置串口参数为115200,8N1,且无软、硬流控制。最后,应该将该项设置保存为缺省值,以免每次打开minicom都需要重新配置。然后输入minicom,按住键盘的空格键的同时启动目标板,这时会进入vivi的加载启动模式,输入如下命令下载vivi:vivi>load flash vivi x 选择xmodem协议传输vivi镜像文件。输入命令:vivi>load flash vivi x即完成了移植任务。

四、结论

经过测试,在各指定的工作环境下,PDC系统基本都能正常工作。

参 考 文 献

[1] 李少春.基于嵌入式Linux的视频监控系统设计与实现. 西南交通大学硕士论文 .2007/05

[2] 陈艳.引导加载程序vivi的分析和移植研究.电子设计应用.2006.11.15

猜你喜欢

嵌入式系统
Teaching Research on IoT and—Embedded System of Software Engineering
基于Xilinx口袋实验室的组合逻辑电路设计实验
面向应用的智能专业嵌入式系统教学
基于AVR单片机的SPI接口设计与实现
办公自动化系统的设计
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究