利用EPROM 引导 Linux

时间:2011-06-27

  EPROM(Erasable Programmable ROM,可擦除可编程ROM)芯片可重复擦除和写入,解决了PROM芯片只能写入的弊端。EPROM芯片有一个很明显的特征,在其正面的陶瓷封装上,开有一个玻璃窗口,透过该窗口,可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的数据,完成芯片擦除的操作要用到EPROM擦除器。我们要介绍的应用程序是一个显示器上的Operator Interface,它的显示系统是由Boeing Flight Test开发的。飞行环境需要一种可以防止突然性的电源中断的机制。

  概况

  基本的问题包括从EPROM的SSD(solid state disk)引导,将root文件系统从EPROM拷贝至一个RAM disk,从客户机加载Operator Interface软件并且执行它。我们所选用的硬件为一台拥有16M RAM、一个能够容纳4MEPROM的PC104 SSD和其他一些PC104板的基于VME的单板机,系统使用一个可编程的键盘和一块标准的VGA显示卡。

  系统操作

  引导时我们需要考虑两个选项:

  在DOS下使用loadlin(可以加在Autoexec.bat文件中)引导Linux

  安装LILO直接引导Linux

  为了使系统工作,我们需要kernel-hacking。Ramdisk.c代码被改成可以从任意的块设备加载而不仅仅是从软盘。

  实现EPROM设备驱动程序的种思想是在EPROM中生成一个磁盘映像。这会为我们提供一个同EPROM相同大小的RAM disk,在这种情况下大小为3.5M。我们使用一个压缩的磁盘映像,这样的好处是磁盘映像的空白区域不占用EPROM空间。

  为了自动运行Operator interface程序,我们需要一个程序来替代getty。

  这个程序(dboot.c)应该运行登录程序,可以为指定的虚拟终端设置stdin,stdou和stderr。

  引导的过程是这样的:

  加电后进行内存检测

  加载运行AUTOEXEC.BAT的DOS

  运行键盘应用程序

  运行LOADLIN——从DOS分区中读取Linux内核执行

  由linux内核接管系统

  从EPROM中加载RAM disk

  转换root文件系统到RAM disk

  init读取inittab,注意inittab执行dboot 而不是getty

  启动Operator interface

  开发

  下一阶段的任务是将EPROM的磁盘内容组织在一起。我们使用如下分区的辅助盘来完成这项任务:

  /dev/hda1 – 80M linux system

  /dev/hda2 - 6M EPROM

  /dev/hda3 - 20M DOS分区

  使用Lilo引导

  LILO是一个在系统启动时运行的程序,它允许选择用于引导计算机的操作系统。可以用LILO引导几个不同的操作系统,如Linux和MS-DOS。用LILO可以定义一个默认的要引导的操作系统和一个引导该操作系统的延迟时间。

  磁盘映像的开发首先确定需求。首先完成一个的系统,然后再将operator interface所需的项目加到系统中。

  下一步将Linux分区的内容拷贝到6M分区中,然后在DOS下进行如下操作:

  loadlin zimage root=/dev/hda2 ro

  如果系统稳定,则将6M分区载入到RAM disk,为了避免对EPROM编程而测试系统,在DOS下进行如下操作:

  loadlin zimage root=/dev/hda2 ramdisk=6144 ro

  因为对ramdisk.c进行了修改,/dev/hda2磁盘映像被加载到RAM中,然后root分区转换为RAM disk。我们需要不断地修改disk image直到它正常工作为止。

  对EPROMs编程

  首先使用tar将小的disk image打包,然后解压缩到一个干净的文件系统。

  为了打包disk image。我们从Linux引导,然后加载6M分区,我们使用以下的命令:

  mount –t ext2 /dev/hda2 /mnt

  cd /mnt

  tar –cpf /tmp/eprom.tar *

  为了生成disk image,我使用另一拥有6M RAM disk的计算机和如下的命令行:

  dd if=/dev/zero of=/dev/ram count=12288

  mke2fs /dev/ram 6144

  mount –t ext2 /dev/ram /mnt

  cd /mnt

  tar –xpf ~/eprom.tar

  dd if=/dev/ram of=~/eprom.dsk count=12288

  这生成一个eprom.dsk文件,我们使用med.c程序将disk image(eprom.dsk)写入EPROMs。

  Med ~/eprom.dsk ~/eprom.img

  然后EPROM程序员将EPROM image刻入EPROM中。

  DOS boot SSD

  SBC的SSD功能帮助我们构建disk image。DOS SSD disk少需要如下的文件:DOS引导文件,command.com,autoexec.bat,键盘加载程序,loadlin与zImage。

  结论

  辅助盘上的开发工作量很大,我们需要采取措施来减少工作量,EPROM disk在我们的应用程序中工作中,这样可以减轻工作量,提高工作效率,这样的程序可以得到现在这个时代的青睐。



  
上一篇:研究视频多媒体集中控制系统实现的关键的技术
下一篇:边缘零交叉二值化设计与实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料