基于linux的eeprom的读写控制毕业设计论文(编辑修改稿)内容摘要:

ute In Place)方式的内核映像文件。 此时内核映像文件的入口是汇编文件,该文件位于 /,映像文件的起始地址在连接文件 /。 开发人员在调试过程中也经常使用未经压缩的在 Ram 本地执行 XIP 方式的内核映华中科技大学文华学院毕业设计 (论文 ) 7 像文件,与在 Flash 本地执行的映像文件的区别是它不需要将数据段从 Flash 拷贝到Ram 中的过程 [15]。 这种方式下,需要 Boot Loader 具有通过网口或串口下载内核映像文件并启动内核的功能。 最简功能设计设计一个最简单的 Boot Loader,只需要依次完 成以下功能: ( 1) 禁止所有的中断; ( 2) 设置处理器时钟、运行速度; ( 3) 存储区初始化; ( 4) 设置堆栈指针将 bss 段清零; ( 5) 跳转到内核映像的入口。 在跳转到内核映像的入口前,以下条件必须满足: 寄存器 r0 —— 必须设置为 0; 寄存器 r1 —— 必须设置为唯一的处理器结构号,文件linux/arch/arm/tools/machtypes 中包含所有结构号的列表; 存储区管理单元 MMU—— 必须关闭 ; 指令缓存 Icache —— 打开或者关闭 ; 数据缓存 Dcache —— 关 闭。 完备功能设计。 设计一个完备的 Boot Loader,可在最简功能基础上考虑是否增加以下功能: ( 1) 上电自检; ( 2) 支持串口通讯方式,提供串口方式的命令控制台; ( 3) 支持以太网通讯方式,提供以太网通讯方式的命令控制台; ( 4) 可以通过串口或以太网下载并引导内核和文件系统映像文件; ( 5) 支持通过串口或以太网通讯烧写映像文件到 Flash; ( 6) 能够读写 I/O 端口、存储区、寄存器; ( 7) 配置功能,包括设置 IP 地址、 MAC 地址、系统时间等。 华中科技大学文华学院毕业设计 (论文 ) 8 3 操作系统的移植 LINUX内核的移植 内核移植过程: 1)下载 linux 内核 下载 linux 内核至 home/arm/dev_home/kernel [root@localhost ~]su arm [arm@localhost ~]cd $KERNEL [arm@localhost kernel]tar xzvf [arm@localhost kernel] pwd /home/arm/dev_home/kernel [arm@localhost kernel] cd 进入内核解压后的目录,以后示例中,只要是相对路径全部是相对于 /home/arm/dev_home/kernel/。 2)修改 Makefile 修改内核目录树根下的的 Makefile,指明交叉编译器 [arm@localhost ] vi Makefile 找到 ARCH 和 CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= armlinux 然后设置你的 PATH 环境变量,使其可以找到你的交叉编译工具链: [arm@localhost ] echo $PATH /usr/local/arm/:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/ly/bin 如果 /usr/local/arm/, 加 入 下 面 语 句 在 ~/.bashrc 中[arm@localhost ] vi ~/.bashrc export PATH=/usr/local/arm/:$PATH 再重新登陆。 [arm@localhost ]su arm 3)设置 flash 分区 指明分区信息,指定启动时初始化,禁止 Flash ECC 校验。 4)配置内核 配置内核产生 .config 文件,编译内核,下载 zImage 到开发板。 创建 uImage 1)获取 mkimage 工具 内核树的 Makefile 提供了创 建 uImage 的方法,但需要我们提供相应的 mkimage命令。 所以首先拷贝 uboot 中 tools 目录下编译后生成的 mkimage 到 /usr/bin/下,然后便可以在内核根目录下通过 make uImage 来创建 uImage 文件。 该文件生成在华中科技大学文华学院毕业设计 (论文 ) 9 arch/arm/boot/下。 2)修改内核的 Makefile 文件 [arm@localhost ]$ vi arch/arm/boot/Makefile MKIMAGE变量记录 mkimage 命令的路径 以 scripts 目录中找到 MKIMAGE:= $(srctree)/scripts/ zreladdry 与 params_physy 可以在 arch/arm/machs3c2410/ 当中找到 ZRELADDR := $(zreladdry) PARAMS_PHYS := $(params_physy) INITRD_PHYS := $(initrd_physy) 生成 uImage 的 mkImage 命令行,其中需要关注的就是 a 与 e 参数。 参 数 a:指明 uImage 加载的 SDRAM 地址,内核默认指定加载地址为 0x30008000。 uboot 引导时, bootm 命令跳到与上相同位置执行,检查完镜像头后,它会跳到内核真正的入口点开始执行。 参数 e:指明 uImage 中刨去镜像头后真正的内核入口地址。 镜像头为 0x40 长,故此处指定为 0x30008040。 LINUX内核的目录结构 现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。 Linux 核心源程序通常都安装在 /usr/src/linux 下,而且它有一个非常简单的编号约定:任何偶数的核心都是一个稳定地发行的核心,而任何奇数的核心都是一个开发中的核心 [13]。 Linux 内核源码的各个目录大致与此相对应,其组成如下(假设相对于/usr/src/ 目录): arch 目录包括了所有和体系结构相关的核心代码。 它下面的每一个子目录都代表一种 Linux 支持的体系结构,例如 i386 就是 Intel CPU 及与之相兼容体系结构的子目录。 PC 机一般都基于此目录。 COPYING 目录 下是 GPL 版权申明。 对具有 GPL 版权的源代码改动而形成的程序,或使用 GPL 工具产生的程序,具有使用 GPL 发表的义务,如公开源代码。 CREDITS 目录下是光荣榜。 对 Linux 做出过很大贡献的一些人的信息。 documentation 目录下是一些文档,没有内核代码,可惜都是 English 的,是对每个目录作用的具体说明。 drivers 目录中是系统中所有的设备驱动程序。 它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于 drivers/sound。 block 下为块设备驱动程序,比如 ide( )。 如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看 drivers/block/()。 它不仅初始化硬盘,也初始化,因为安装 nfs文件系统的时候需要网络其他 : 如 , Lib 放置核心的库代码。 Net,核心与网络相关的代华中科技大学文华学院毕业设计 (论文 ) 10 码。 Ipc,这个目录包含核心的进程间通讯的代码。 Fs,所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统,例如 fat 和 ext2。 fs 目录存放 Linux 支持的文件系统代码和各种类型的文件操作代码。 每一个子目录支持一个文件系统,如 ext3 文件系统对应的就是 ext3 子目录。 include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux 子目录下,与 intel cpu 相关的头文件在 include/asmi386 子目录下 ,而include/scsi 目录则是有关 scsi 设备的头文件目录 [10]。 init 目录包含核心的初始化代码(不是系统的引导代码),有 和 两个文件。 这是研究核 心如何工作的好起点。 ipc 目录包含了核心进程间的通信代码。 Kernel 内核管理的核心代码,此目录下的文件实现了大多数 linux 系统的内核函数,其中最重要的文件当属 ;同时与处理器结构相关代码都放在 arch/*/kernel目录下。 lib 目录包含了核心的库代码,不过与处理器结构相关的库代码被放在 arch/*/lib/目录下。 MAINTAINERS 目录存放了维护人员列表,对当前版本的内核各部分都有谁负责。 Makefile 目录第一个 Makefile 文件。 用来组织内核的各模块,记录了个模块间的 相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的 Makefile 文件对弄清各个文件这间的联系和依托关系很有帮助。 mm 目录包含了所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等。 与具体硬件体系结构相关的内存管理代码位于 arch/*/mm 目录下,例如arch/i386/mm/。 modules 目录存放了已建好的、可动态加载的模块文件目录,是个空目录,用于存放编译时产生的模块目标文件。 目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。 ReadMe 目录里是核心及其编译配置方法简单介绍。 REPORTINGBUGS 目录里是有关报告 Bug 的一些内容。 目录里是各种 Makefilemake 所使用的一些共同规则。 scripts 目录包含用于配置核心的脚本文件等。 一般在每个目录下都有一个 .depend 文件和一个 Makefile 文件。 这两个文件都是编译时使用的辅助文件。 仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。 另外有的目录下还有 Readme 文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理解。 LINUX源代码的安装 1 ) linux 源代码包位于本书附带光盘 CD2\linux Source 目录,文件名为,拷贝该文件所在目录所有文件到 Cygwin/tmp 文件夹下 华中科技大学文华学院毕业设计 (论文 ) 11 解压 Linux 源代码包,执行如下命令: mkdir /usr/local/src cd /usr/local/src tar xzvf /tmp/ 命令执行结束时若提示: tar: Error。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。