基于arm平台的lniux系统移植毕业设计论文(编辑修改稿)内容摘要:

平台由核心板和底板 (外设板或称基本板 )组成,核心板上集成 SamsungS3C2410处理器, 64M 的 FLASH 和 64M SDRAM,为应用研发提供了足够的空间。 Samsung 公司推出的16/32 位 RISC 处理器 S3C2410,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。 为了降低整个系统的成本, S3C2410 提供了以下丰富的内部设备:分开的 16KB 的指令 Cache 和 16KB 数据 Cache, MMU 虚拟存储器管理, LCD 控制器(支持STNamp。 TFT),支持 NAND Flash 系统引导,系统管理器(片选逻辑和 SDRAM 控制器), 3 通道UART, 4 通道 DMA, 4 通道 PWM 定时器, I/O 端口, RTC, 8 通道 10 位 ADC 和触摸屏接口, IICBUS接口, IICBUS 接口, USB 主机, USB 设备, SD 主卡 amp。 MMC 卡接口, 2 通道的 SPI 以及内部 PLL时钟倍频器。 S3C2410 采用了 ARM920T 内核, 工艺的 CMOS 标准宏单元和存储器单元。 毕业设计(论文)专用纸 8 它的低功耗、 精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。 同样它还采用了一种叫做 Advanced Microcontroller Bus Architecture(AMBA)新型总线结构。 S3C2410 的显著特性是它的 CPU 核心,是一个由 Advanced RISC Machines( ARM)有限公司设计的 16/32 位 ARM920T RISC 处理器。 ARM920T 实现了 MMU, AMBA BUS 和 Harvard 高速缓冲体系结构。 这一结构具有独立的 16KB 指令 Cache 和 16KB 数据 Cache,每个都是由 8 字长的行( line)构成。 通过提供一系列完整的系统外围设备, S3C2410 大大减少了整个系统的成本, 消除了为系统配置额外器件的需要。 本文档将介绍 S3C2410 中集成的以下片上功能: S3C2410 ARM MPU 图 21 2410 体系结构框图 毕业设计(论文)专用纸 9 图 22 内部结构图 毕业设计(论文)专用纸 10 第三章 嵌入式 linux 移植的实现 移植环境搭建 嵌入式开发传统方式是 PC 机 +虚拟机来实现,但考虑到效率太低,在本次移植中采用直接的硬盘安装 linux 系统来实现,安装了 Ubuntu 版本。 所谓的交叉编译简单地说,就是在一个平台上生成另一个平台上的可执行代码.我们需要一套编译环境,将在 X86 上的 C代码编译为 ARM 系统可以识别的目标代码。 armlinuxgcc 是基于 ARM 目标机的交叉编译软件,前面几年安装 armlinuxgcc 交叉编译软件对与一个初级嵌入式工程师来说特别棘手,因为它需要安装多个软件包,而且安装过程中不能有半点差错,因为每个软件包都有它的依赖关系【换句话就是说安装某个软件包时,如果它的依赖软件版本太低或者没有安装都将导致该软件包安装失败】,在此使用了别人集成的交叉编译链 armlinuxgcc 安装如下 tar zxvf vim /etc/profile 添加如下 export PATH=$PATH:/opt/usr/local/arm/export PATH=$PATH:/opt/usr/local/arm/ source /etc/profile 使安装马上生效 armlinuxgcc –v 查看是否生效 结果如下说明可以了 gcc version (Sourcery G++ Lite 20xxq372) 图 31 交叉编译环境结构图 主机 目标机 交叉开发工具链 目标机接口层 主机通讯层 打 ARMDISC Arm linux Bootloader 调试工具 GCC 编译器 Armlinuxgcc 毕业设计(论文)专用纸 11 Tftp 服务搭建 安装相关软件包: Ubuntu tftp(服务端), tftp(客户端), xid aptget install tftpd tftp xid 建立配置文件 在 /etc/ vim tftp 在文件中输入以下内容: service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/ server_args = s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } 保存退出。 建立 Ubuntu tftp 服务文件目录(上传文件与下载文件的位置),并且更改其权限 mkdir /tftpboot /*在根目录下建立 tftpboot 文件夹 ,注意与 mkdir tftpboot 的区 别 */ chmod 777 /tftpboot R 重新启动服务 /etc/至此 Ubuntu tftp 服务已经安装完成了,下面可以对其进行一下测试。 (在当前目创建,在 tftpboot目录下创建 ,且 tftpboot目录下 777)。 执行 get 命令时,保证 tftpboot 目录下的文件权限 chomd 777 ,执行 put 命令时,必须先在 tftpboot 目录下新建一个和上传文件同名的文件权 限 chmod 777。 毕业设计(论文)专用纸 12 tftp tftp get Received 7 bytes in seconds tftp put Sent 10 bytes in seconds tftp quit 以上把 tftp 服务成功搭建好。 bootloader 概念 引导加载程序是系统加电后运行的第一段代码。 我们熟悉的 PC 中的引导程序一般由 BIOS和位于 MBR 的 OS BootLoader(例如 LILO 或者 GRUB)一起组成。 然而在嵌入 式系统中通常没有像 BIOS 那样的固件程序,因此整个系统的加载启动任务就完全由 BootLoader 来完成。 在嵌入式 Linux 中的引导加载程序即等效为 BootLoader。 Boot Loader 就是在操作系统内核运行之前运行的一段小程序。 通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。 通常, Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。 因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。 尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的 Boot Loader 设计与实现。 BootLoader 和内核映象以及文件系统的分区表如图 32 图 32 关系图 对于每一种体系结构,都有一系列开放源码的 BootLoader 可以选用。 而 U— Boot 已经成为 ARM 平台事实上的标准 BootLoader。 Bootloader 是一段可执行程序,完成的主要功能是将可执行文件(一般是操作系统)搬移到内存中,然后将控制权交 给这段可执行文件(操作系统)。 bootloader 启动参数 内核 文件系统 毕业设计(论文)专用纸 13 Bootloader 的安装媒介 系统上电时或复位以后,都从芯片厂商预先安排的一个地址处取第一条指令执行(对我们的 S3C2410 芯片,从 0x0 处开始)。 由于上电或复位需要运行的第一段程序就是 Bootloader,故必须把 Bootloader 放入该地址。 将 Bootloader 写入固态存储设备,永久保存,系统上电后将自动执行 Bootloader。 Bootloader 的工作模式 ( 1)下载模式 对研发人员来说, Bootloader 一般需要工作在这种模式下 ,特别是调试内核或者Bootloader 本身的时候。 通过串口终端与 Bootloader 进行交互,可以操作系统硬件。 比如通过网口或者串口下载内核,烧写 Flash 等等。 ( 2)启动加载模式 嵌入式产品发布的时候, Bootloader 必须工作在该模式下。 这种情况下, Bootloader 必须完成硬件自检、配置,并从 Flash 中将内核拷贝到 SDRAM 中,并跳转到内核入口,实现自启动,而不需要人为的干预。 uboot 简介 1999 年由德国 DENX 软件工程中心的 Wolfgang Denk 发起,全称 Universal Bootloader。 特点:支持多种硬件构架:包括 ARM、 x8 PPC、 MIPS、 m68k、 NIOS、 Blackfin 支持多种操作系统:包括 Linux、 VxWorks、 NETBSD、 QNX、 RTEMS、 ARTOS、 216 种以上的开发板 , 开放源代码,遵循 GPL 条款 , 易于移植、调试 官方网站: uboot 目录结构 board 目标板相关文件,主要包含硬件初始化、 SDRAM 初始化 mon 独立于处理器体系结构的通用代码 cpu 与处理器相关的文件,包含 cpu 初始化、串口初始化、中断初始化等代码 drivers 设备驱动代码,如 Flash 驱动、网卡驱动、串口驱动等 fs UBoot 支持的文件系统的实现,如 cramfs、 fat、 ext jffs2 等 include UBoot 使用的头文件,包括不同硬件构架的头文件 lib_xxx 处理器相关文件,如我们要使用的 lib_arm,与 arm 体系结构相关的文件 网络功能的上层文件,实现各种协议,如 nfs、 tftp、 arp 等 毕业设计(论文)专用纸 14 uboot 存储映射图 见图 33 图 33 uboot 存储映射图 uboot 移植 ( 1) 首先下载 uboot 的源码包,然后解压,进入源码包目录。 ( 2) 修改源码让 uboot 支持从 Nand Flash 启动。 具体如下: ( a) 修改 “u ” 文件,执 行以下命令: vim cpu/arm920t/ ( b) 181 行和 201 行前加上 //,注释掉 181 //ifdef CONFIG_AT91RM9200 201 //endif ( c) ifndef CONFIG_SKIP_RELOCATE_UBOOT 之后加入: ifdef CONFIG_S3C2410_NAND_BOOT bl copy_myself else ( d) “ble copy_loop” 语句之后加入: endif ( e) “_start_armboot: .wo rd start_armboot” 语句之后加入 copy_loop 子程序: /* 毕业设计(论文)专用纸 15 ************************************************************************* * * copy uboot to ram * ************************************************************************* */ ifdef CONFIG_S3C2410_NAND_BOOT copy_myself: mov r10, lr。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。