导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→基于HHPPC8245平台的嵌入式Linux VPN网关设备[sz20120406]

 *第30853篇: 基于HHPPC8245平台的嵌入式Linux VPN网关设备的开发与设计[原创]

  
楼 主:sz20120406 2012年4月11日12:52
 基于HHPPC8245平台的嵌入式Linux VPN网关设备的开发与设计[原创]
基于HHPPC8245平台的嵌入式Linux VPN网关设备的开发与设计
  Linux交叉开发环境的分析与实现
HHPPC8245-4ETH-R1目标板与PC宿主机有不同的POWER结构,需要在PC宿主机上建立交叉开发工具链,包括binutils、 gcc和glibc库三大部件。本系统采用Linux-2.6.10内核,网上的二进制代码大多版本太低,仅能编译Linux-2.4系列内核,因此从源代码开始建立开发环境,本系统选择的源代码版本为binutils-2.13.90.0,10、gcc-3.3.1、glibc-2.3.2;由于 MPC8245支持altivec,因此编译平台目标名为powerpc-linux-gnualtivec-。交叉开发环境建立后将包含有 powerpc-linux-gnualtivec-gcc等交叉开发工具的目录加入$PATH环境变量,并交叉编译、安装OpenSSL和Flex库,用于安装IPsec-Tools。
Linux 2.6.10内核移植的分析与实现 
内核移植包括CPU Core移植、硬件平台移植和系统外围驱动程序开发[4]。Linux-2.6内核支持MPC8245 处理器和开发板上大部分硬件,因此移植的主要任务是核心板硬件平台的移植。内核代码入口点为arch/ppc/kernel/head.S,在完成查找 processor和architecture类型,建立内核初始化堆栈、建立临时页表等工作后,调用platform_init函数,用于在 start_kernel函数中初始化中断、陷阱、控制台等各个模块时调用。平台相关的初始化函数在arch/ppc/platform/中实现。因此在该目录下创建musenki_setup.c,实现PCI总线、中断控制器、IO端口映射、CPU频率、复位函数、串口和早期打印函数支持等初始化工作。这部分修改、移植需要熟悉平台的各种配置参数,应参考相似平台及Internet上相关源代码。
平台的移植同时需要修改相关Kconfig和Makefile文件,在arch/ppc/Kconfig中加入musenki平台的支持,在arch/ppc/platforms/Makefile加入musenki_setup.c的编译。
FLASH中为内核映象留下的地址空间有限,为节省资源、加快启动速度,在选择内核编译选项时只需选择系统运行必须的模块,使内核尽量精简。本系统的内核应支持的文件系统为EXT2和JFFS2,网络协议需包括AH、ESP等IPsec协议,以及相关的加密、认证等算法。
引导装载程序PPCBoot的分析与实现
引导装载程序的基本功能包含:初始化时钟、FLASH、SDRAM、串口等硬件,实现tftp通信协议,从宿主机下载内核映象、RAMDISK映象并烧写到flash、启动内核等。核心板上包含2片2MB的flash,第一片地址空间是FF800000~FF9FFFFF,第二片是 FF000000~FF1FFFFF,PPCBoot位于地址0xFF900000处,硬件上设置成与地址0xFFF00000重叠。由于MPC8245 处理器的复位向量是0xFFF00100,因此开发板的复位向量相当于在第一片FLASH的0XFF900100地址处。开发板加电后执行 PPCBoot,进行硬件初始化,随后将Linux内核解压缩到SDRAM的0xC0000000处,将RAMDISK解压缩到0xC0A00000处,最后将控制权交给Linux内核。
文件系统的分析与实现
出于稳定性和成本考虑,嵌入式系统一般都不使用硬盘,而用FLASH代替,RAMDISK文件系统的压缩映象保存在FLASH上,系统复位时由引导装载程序解压、加载到SDRAM。本系统采用8M的RAMDISK(压缩前),其中目录主要包含/bin、/sbin、/etc、/lib、/dev、 /proc等,应用程序主要包含:精简的Shell命令集BusyBox、VPN的应用层配置工具IPsec-Tools、Linux-2.6内核的模块操作工具module-init-tools。在宿主机上使用交叉开发工具编译,为提高运行效率、节省存储空间,PPC目标代码链接时选用静态链接,并用 powerpc-linux-gnualtivec-strip精简。
FLASH上的文件系统一般采用JFFS2。JFFS2是针对以闪存为存储介质的嵌入式文件系统,充分考虑了闪存的物理局限性,具有防崩溃、负载平衡、垃圾收集等功能,且源代码公开,易于学习和使用。在FLASH的第4M~32M空间上创建JFFS2文件系统(前4M用于保存PPCBoot、内核和 RAMDISK压缩映象),并在系统启动脚本中将其挂载到/jffs2目录。
(本文由Cogo商城-IC元器件在线采购平台搜集整理,浏览 了解更多详细信息)


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:驾驶员身份识别系统的硬件设计[原创]

[下一篇主题]:非易失性存储器的介绍