云终端运行于Linux系统之上

云终端核心部件采用了韩国Magiceyes Pollux芯片,
韩国Magiceyes Pollux芯片主要特性  

主频:ARM926EJ 533MHZ

支持DDR,SDRAM Up to 256

支持8bit NAND flash and 16bit SRAM

支持 SLC/MLC NAND

Boot from NAND flash or nor flash

提供解析度到 1280*1024@60HZ

支持 NTSC/PAL Encoder with Analog DAC -CVBS Output

内建3D加速

4个 Timers及1 Watchdog Timer

4个 UARTs

USB1.1 Host,USB2.0 Device

IDE控制接口(PIO/UDMA/MD?A)

2个 I 2C Interface
AC97/I2S serial audio codec Interface

2个 SD/SDIO/MMC控制器

NAND FLASH 控制器

3个 PWM

1CH PPM for IR Receiver Interface

3个 SSP/SPI

8个通用ADC

GIOs(87)

鉴于Magiceyes公司仅提供windows CE 5.0 的BSP,所以云终端系统软件使用了Windows CE5.0 的操作系统。笔者经过一段时间的努力,基本完成了将云终端运行于Linux 2.6.20系统之上的移植工作。由于linux在各种硬件平台移植工作大同小义,现将所做的工作总结以下,供热忠于linux移植的人们参考。

移植工作主要涉及:

1、u-boot——移植

2、与平台相关的芯片初始化——移植

3、网卡驱动(DM 9000A)——移植

4、基本显示驱动(MLC,DPC,3D加速)——移植

5、USB host drivers——编写

6、帧缓冲驱动——编写

7、xfree86——交叉编译

8、I 2C 总线及I2S总线驱动——移植

9、PCM3793声卡驱动——编写

10、linux 文件系统——重新建立

11、各种应用程序(例如MPLAY、 RDESKTOP等)——交叉编译

12、整个系统的NAND写入程序——移植

一、开发环境的建立
1、 操作系统

Ubuntu 7.1 gutsy(需要安装包:vsftpd tftpd-hpa build-essentia kernel-package libncurses5-dev libqt3-mt-dev qt3-dev-tool、bison_2.1-0.2ubuntu1等)

2、 交叉编译器

RidgeRun gcc 4.1.1 for ARM——编译linux Kernel、U-boot及文件系统时使用

eldk4.0——编译Xfree86及Rdesktop使用

3、 系统软件

X11R 6.9.0、rdesktop-1.6.0

4、 Linux 参考系统

Didj-Linux-3197-20080429-1631.tar.gz

Download: http://elinux.org/Didj

该Didj-Linux-3197-20080429-1631.tar.gz中包括u-boot 1.1.6及一些必要的软件包

5、 参考资料:

Pollux datasheet

Download: http://www.e-smart.com.cn

Dm9000 datasheet

Download: http://cn.alldatasheet.com/datasheet-pdf/pdf/87571 /ETC/DM9000.html

Au6254 datasheet

Download:

http://www.datasheetarchive.com/AU6254-datasheet.h tml

USB 总线规范

I 2C总线规范

I2S总线规范

二、移植
1、U-Boot

a)修改include/config/lf1000.h 使之与硬件相匹配(例如:网卡类型及占用地址、NAND大小及传递到linux系统的启动参数)。

b)修改 board/lf1000/lf1000.c 主要修改对主要寄存器的编程(例如:定义总线宽度、外设片选信号及读写时序定义、内存读写时序等参数的初始化等)。

c)修改dm9000x.c使之与Pollux硬件系统相匹配(例如:read_srom_work、dm9000_reset、eth_init、dm9000_init、eth_send、write_srom_word等函数)。

2、与平台相关的芯片初始化

Linux源吗的子目录arch/arm存放所有ARM平台的代码,而Pollux的代码存放mach-lf1000目录下,需要修改的文件为:

a)core.c该文件定义了每个设备占用的系统资源,例如:I/O地址、中断号、物理地址空间、如果设备使用DMA传输,包括DMA_MASK

b)修改文件lf100_core_func.c,其中,主要函数是设定CPU核心时钟528Mhz的分频因子
c)clock.c系统加电后(u-boot启动后),系统CPU时钟设置为默认值,为更改为系统支持的最大频率,需要设置分频因子PDIV、MDIV、SDIV后,通知硬件以采用该频率
d)修改gpio.c,增加对lf1000的GPIO引腿功能的设定的支持

e)根据Pollux硬件,修改nand.h、platform.h、mlc.h dpc_ioctl.h,其中platform.h定义了CPU时钟(FCLKCPU0)、总线时钟(BCLK)及外设时钟(PCLK)

3、网卡驱动(DM 9000A)

云终端使用的网卡芯片为dm 9000a,可以根据其他平台dm 9000a网卡驱动,结合Pollux硬件修改驱动。修改主要涉及网卡芯片读写时序及GPIO引腿的编程

现在注册,即刻畅享专业桌面虚拟化解决方案 立即注册