基于嵌入式的TXT电子书阅读Word文档下载推荐.doc
- 文档编号:1458854
- 上传时间:2023-04-30
- 格式:DOC
- 页数:46
- 大小:974.50KB
基于嵌入式的TXT电子书阅读Word文档下载推荐.doc
《基于嵌入式的TXT电子书阅读Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《基于嵌入式的TXT电子书阅读Word文档下载推荐.doc(46页珍藏版)》请在冰点文库上搜索。
Keywords:
Embedded,ElectronicReader,Page
目录
摘要 I
Abstract II
1绪论
1.1系统概述
(1)
1.2研究的意义和目的
(1)
1.3国内外发展现状
(1)
1.4发展趋势
(2)
1.5本章总结
(2)
2系统需求分析
2.1系统功能需求分析 (3)
2.2系统硬件需求分析 (4)
2.3系统软件需求分析 (4)
2.4本章小结 (6)
3嵌入式ARM-Linux环境建立
3.1基于Arm-Linux系统的总体设计 (7)
3.2Arm-Linux交叉编译工具链的建立 (8)
3.3U-boot的移植并烧入和烧入 (8)
3.4Linux内核的裁剪与移植 (10)
3.5根文件系统的制作与移植 (12)
3.6NFS网络文件系统的建立 (13)
3.7TFTP服务的配置 (14)
3.8本章小结 (15)
4系统设计
4.1系统概要设计 (16)
4.2系统详细设计 (17)
4.3软件运行环境 (22
4.4本章小结 (22)
5系统实现
5.1系统关键技术 (23)
5.2编码实现 (25)
5.3本章小结 (34
6程序移植与验证
6.1移植需求 (35)
6.2程序移植 (35)
6.3程序验证 (36)
6.4本章小结 (38
致谢 (39
参考文献 (40
1.1系统概述
本系统是设计一个基于嵌入式TXT的电子书阅读器功能开发[1],实现在嵌入式系统上可以查看电子书的功能。
硬件部分采用三星FS2410开发板[2],网线。
系统软件部分包括系统初始化程序U-boot[3],Linux操作系统[4],根文件系统[5]和一些运行应用程序所需要的库。
应用软件就是开发的TXT电子书阅读器程序。
基于SDL开发库进行开发[6],首先将嵌入式Linux操作系统移植到基于ARM9核的FS2410的平台上。
在嵌入式操作系统环境下,运行具有阅读TXT电子书功能的应用程序,实现对TXT电子书的基本阅读。
1.2研究的意义和目的
电子书阅读器将会带动阅读习惯、学习模式、内容创作及出版型态的改变,走向分众化、个人化、网络化及随身携带的行动智能信息发展,全方位的数字内容服务平台及商业模式也将应运而生,这些改变将带动许多新的服务产业,也会是未来其他新兴科技应用发展的典范。
针对电子书阅读器的开发技术,不仅是限于各大公司之间的竞争,对个人也是挑战,本系统设计并实现了TXT电子书阅读器的功能,不仅要在嵌入式底层做好基础,而且还要在上层应用上开发阅读器。
嵌入式系统可以有很灵活的特点,在本系统中只需要满足能让应用程序运行的要求,也可根据需求进行适当的改动。
在上层应用开发上,电子书阅读器要能在嵌入式系统上实现上、下一行查看以及翻页查看功能以及放大缩小字体。
1.3国内外发展现状
随着数字阅读的方兴未艾,电子书市场风生水起,但国内外电子书发展市场,整体增势缓慢,电子书远没有达到普及的程度[7]。
究其原因,不仅在电子书内容上没有达到服务用户的要求,而且在终端设施上也没有达到,另外,电子书在资源上混乱,没有形成一个完整的规划。
然而面对电子书市场的巨大利润,国内外各大公司都在此方向寻生存机遇,在技术上,电子书阅读器并没有达到炉火纯青的地步,有很多的技术难题存在。
1.4发展趋势
尽管电子书现在已经到处可见,但是用户的需求是无止境的,伴随着硬件设施的不段改良,电子书会向着便捷,清爽,多元化,智能化的道路发展,打破传统纸质书的阅读习惯,有非纸质书不能比拟的优势。
在未来的发展道路上,电子书很有可能会和移动3G相结合,达到书籍和网络的相结合,成为一项成熟的产业和技术,电子书普及到每个用户的手上。
开发出高性能以及人性化的的阅读器,才能满足用户需求,达到用户所预期的效果。
1.5本章总结
首先对整个系统的硬件、系统软件以及应用程序做了一个简单的陈述,然后具体介绍了开发此系统的意义和目的。
接下来分别介绍了电子书阅读器在国内外的发展现状以及未来的发展的趋势。
面对电子书市场的巨大利润,开发高性能的电子书阅读器会是一项热门的技术。
在进行可行性研究和项目开发计划以后,如果确认开发一个新的软件系统是必要的而且是可行的,那么就可进入需求分析阶段[8]。
需求分析是指开发人员要理解用户的要求,进行详细的市场调查,确定系统的新目标。
为了满足用户的需要,回答系统要“做什么”的问题。
2.1系统功能需求分析
随着数字电子技术的日益发展,电子书市场也愈演愈烈,面对巨大市场利润,各大公司纷纷投向电子书市场,电子书的应用将会普遍在普通市民中。
本系统是开发出具有TXT功能的电子书阅读器,该阅读器主要功能有上下行查看,翻页查看,放大查看以及尽可能完成具有书签的电子书阅读器,然后将该应用程序移植到开发板上,能进行相应的阅读功能,其功能流程如图1-1所示。
等待命令
有按键
否
结束
是
有效按键
否
左Ctrl
右ctrl
左Alt
下键
上键
右键
左键
颜色
退出
放大
下页
上页
下行
上行
图1-1功能流程图
2.2系统硬件需求分析
嵌入式系统开发与硬件平台紧密相连,没有硬件支持的嵌入式平台是不完整的,良好的硬件平台也为嵌入式系统应用软件的开发提供了许多便利,选择合适的硬件平台是一项复杂的工作。
根据系统开发需求与实际情况结合,本系统采用的硬件平台是飞凌公司FS2410开发板[2],处理器是SAMSUNGS3C2410[9],主频203MHz,存储器包括64MBytesNANDFLASH(K9F1208),2MBytesNORFLASH(SST39VF1601),64MBytesSDRAM,通过以太网控制芯片CS8900扩展了一个网口,另外通过50芯LCD接口引出了LCD控制器的全部信号。
2.3系统软件需求分析
软件平台主要是BootLoader[10],嵌入式操作系统,嵌入式文件系统以及一些在本电子书应用程序运行所要的库。
(1)BootLoader是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
结合系统的需求并综合比较了各种BootLoader的优缺点,本系统选择了U-boot作为本系统的BootLoader。
U-Boot,全称UniversalBootLoader,是遵循GPL条款的开放源码项目。
U-boot不仅仅支持嵌入式Linux系统的引导,它还支持NetBSD,VxWorks,QNX,RTEMS,ARTOS,LynxOS嵌入式操作系统。
U-boot具有较高的可靠性和稳定性,高度灵活的功能设置。
U-boot可以使用JTAG板直接烧写入NorFlash中使用,也可以直接烧写入NandFlash中运行。
(2)嵌入式操作系统是嵌入式系统极为重要的组成部分。
它提高了系统的可靠性、提高了开发效率,缩短了开发周期、充分发挥了32位CPU的多任务潜力。
嵌入式操作系统的选择主要考虑其可移植性、可利用资源、系统定制能力和成本。
综合对比了几种嵌入式操作系统,本系统选择了嵌入式Linux操作系统,它与其它嵌入式操作系统相比,Linux有以下特点:
①Linux系统是层次结构且内核完全开放。
Linux是由很多体积小且性能高的微内核系统组成;
②强大的网络支持功能;
③Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍;
④Linux具有广泛的硬件支持特性。
无论是RISC还是CISC、32位还是64位等各种处理器,Linux都能运行;
⑤Linux有装载和卸载程序的能力,所有应用程序以文件的形式被存放在闪存文件系统中并在必要的时候被装载到内存中,以节省RAM;
⑥Linux移植到新的微处理器体系非常快捷,一般是将其移植到一种新型的目标板,其中包含有独特的外设。
(3)根据上面的分析本系统选择了Linux作为嵌入式操作系统,其支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等[11],为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS,为各类文件系统提供一个统一的操作界面和应用编程接口。
不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。
在嵌入式Linux应用中,主要的存储设备为RAM和ROM,常用的基于存储设备的文件系统类型包括:
jffs2,yaffs,cramfs,romfs,ramdisk,ramfs/tmpfs等。
本系统采用了busybox来制作yaffs的文件系统作为本系统的文件系统,其主要有一下特点:
①YAFFS[12]文件系统类似于JFFS/JFFS2,是专门为NAND闪存设计的嵌入式文件系统,适用于大容量的存储设备。
它是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外掉电对文件系统一致性和完整性的影响。
②YAFFS文件系统是按层次结构设计的,分为文件系统管理层接口、YAFFS内部实现层和NAND接口层,这样就简化了其与系统的接口设计,可以方便地集成到系统中去。
与JFFS相比,它减少了一些功能,因此速度更快,占用内存更少。
③YAFFS采用一种多策略混合的垃圾回收算法,结合了贪心策略的高效性和随机选择的平均性,达到了兼顾损耗平均和系统开销的目的。
2.4本章小结
在这一章,主要做的工作就是进行系统需求分析,这一章在整个系统开发上起到了至关重要的作用,可以说是一个关键环节,这一章的分析调查结果直接指导以后的系统开发的工作,也直接关系着整个系统完成后的功能情况。
在进行系统需求时,查阅了大量关于硬件和嵌入式操作系统方面的知识,综合各方面的因素,最终确定了选用的硬件平台和嵌入式操作系统,综合比较了各个系统之间的优点和不足,最终确定了系统的功能。
绝大多数的软件开发都是本机开发、调试,本机运行的方式进行,但是这种方式不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,它没有足够的资源在本机运行开发工具和调试工具。
因此在宿主机上搭建一个好的开发环境是很关键的一步,它的成败直接影响下一步的进展。
根据需求分析确定了系统的开发环境是嵌入式Linux操作系统。
3.1基于Arm-Linux系统的总体设计
根据需求分析和嵌入式系统结构,得出了系统所需的系统结构如图3-1所示。
应用程序
嵌入式Linux操作系统,文件系统
引导加载程序bootloader
FSS3C2410硬件平台
图3-1系统结构图
论文设计的嵌入式TXT电子书阅读器系统主要分为四个层次:
(1)基于S3C2410A处理器的硬件平台:
其中包括64MB8位的NAND闪存和64MB32位的SDRAM;
(2)加载程序BootLoader,主要初始化处理器及存储器等硬件设备;
(3)Arm-Linux内核的裁剪、移植,文件系统的建立,以及运行应用程序所用到的库的添加;
(4)应用程序的开发:
主要包括对SDL的研究和相关代码实现并移植到开发板上。
根据系统结构的设计,将分以下三个步骤实现,这一章只实现其中的前两步,其它的部分的实现在后续章节展开,实现步骤如下:
(1)Arm-Linux交叉开发环境的建立;
(2)嵌入式Arm-Linux的裁剪和移植:
其中包括启动加载程序U-Boot的移植以及内核的裁剪、移植、文件系统的制作;
(3)SDL的研究和编码实现;
(4)应用程序的移植并测试。
3.2Arm-Linux交叉编译工具链的建立
与主流软件开发相同,嵌入式系统开发同样需要用到编译器、链接器、解释程序、集成开发环境以及诸如此类的开发工具。
但是在嵌入式系统开发中,由于执行应用程序的平台(目标机)与创建应用程序的平台(宿主机)并不兼容,因此,需要交叉开发工具进行交叉编译。
本文采用工具链Arm-none-linux-gnueabi-创建Arm-Linux交叉编译环境[13]。
建立过程如下:
(1)登录Linux操作系统,然后再/home/farsight目录下新建toolchain目录;
(2)将工具链toolchains_for_s3c2410.tar.bz2复制到以上toolchain目录下,并执行解压;
(3)在宿主机中设置环境变量使得系统能自动调用已建立好的工具,具体的设置方法为:
在根目录中打开/etc/profile文件添加交叉编译环境。
具体设置方法为:
vi/etc/profile,在文件的最后加上:
exportPATH=$PATH:
/home/farsight/toolchain/bin最后保存退出,在终端输入source/etc/profile即可生效,在终端输入arm-none按Tabs键即可提示得到该交叉编译工具的名称。
3.3U-boot的移植并烧入和烧入
针对FS2410开发板,对U-boot要进行一定的移植工作[14],主要改动的地方有:
(1)添加平台信息
smdk2410是s3c2410的标准版,在smdk2410平台的基础上可以实现FS2410的移植;
①进入U-boot所在目录下的board/samsung/,进行cpsmdk2410fs2410-a;
②进入fs2410目录,进行mvsmdk2410.cfs2410.c;
③在Makefile下修改,将COBJS:
=smdk2410flash.o;
④修改为COBJS:
=fs2410flash.o,进入U-boot目录下的include/configs目录,进行cpsmdk2410.hfs2410.h,返回到顶层目录下的Makefile添加fs2410的内容。
在smdk2410_config:
unconfig下面添加对fs2410相应的信息:
fs2410_config:
unconfig
@$(MKCONFIG)$(@:
_config=)armarm920tfs2410samsungs3c24x0
接着修改编译器,在ifeq($(HOSTARCH,$(ARCH)))CROSS_COMPILE?
= endif
下面添加ifeq(arm,$(ARCH))CROSS_COMPILE=arm-none-linux-gnueabi-endif
(2)针对fs2410平台要做出进一步的修改,主要做出的修改如下:
修改start.S的中断屏蔽位,改为11个;
修改配置文件include/configs/fs2410.h中的命令行提示符,网络配置参数,内核加载地址,Nand功能添加,环境变量的保存位置;
在cpu/arm920t/start.S文件中对Nand启动进行修改,主要包括添加Nand启动标志位,添加BWSCON寄存器的定义,添加启动模式的判断;
为nand启动做出支持;
修改common/env_nand.c文件,添加norflash环境变量烧写功能。
修改后,编译U-boot,进行如下操作:
$:
makefs2410_config
make
此时U-boot已经做编译好,在相应的U-boot目录下就可以看到u-boot.bin可执行文件,此可执行文件就可以实现烧录了。
(3)利用H-jtag将u-boot烧写在fs2410开发板上的Nandflash上;
(4)打开开发板,进入命令状态添加环境变量。
$setenvserverip192.168.7.125
$setenvipaddr192.168.7.185
$setenvgatewayip192.168.7.1
$setenvethaddr08:
00:
3e:
26:
0a:
43
$setenvbootcmdtftp30800000uImage\;
bootm
$setenvbootargsconsole=ttySAC0,115200init=/linuxrcroot=/dev/nfs
nfsroot=192.168.7.130:
/opt/filesystem
ip=192.168.7.190:
192.168.7.130:
192.168.7.1:
255.255.255.0:
farsight_30:
eth0:
off重启开发板,此时开发板就可以工作了。
3.4Linux内核的裁剪与移植
嵌入式系统的硬件资源毕竟有限,不能直接将Linux操作系统作为嵌入式硬件平台上的操作系统,需要针对具体的应用进行内核的配置和裁减,使整个系统能够存放到容量较小的Flash中。
Linux的动态模块加载方式使Linux的裁剪极为方便,高度模块化使得添加和删减非常容易。
结合该系统在开发中所需要的功能,Linux内核的裁剪与移植过程中涉及到的目录有:
include/、arch/、drivers/、fs/,移植的过程为:
(1)在/home/farsight目录,将Linux源代码解压至该目录下,本设计用到的内核为Linux-2.6.35内核;
(2)编译ARM-Linux内核,进入内核目录,在终端输入:
makemenuconfig;
然后对内核进行裁剪和配置:
(1)选择<
*>
SystemType,选中该目录下的<
ARMsystemtype模块,选中所用到的硬件平台信息,即SamsungS3C2410;
(2)在以后的实验中需要用到网线,必须在内核中添加网卡的支持,在这一步中的操作如下。
①将cs8900.c和cs8900.h文件拷贝到linux-2.6.35/drivers/net/arm目录下。
②修改Linux-2.6.35/dirvers/net/arm/Kconfig文件,添加以下内容:
ConfigS3C2410_CS8900
Tristate“CS8900support”
DependsonNET_ETHERNET&
&
ARM&
ARCH_SMDK2410
---help---
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 嵌入式 TXT 电子书 阅读