云终端运行于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引腿的编程