入式数码相框的设计与实现毕业论文(编辑修改稿)内容摘要:
ot、内核和文件系统硬件到 NAND Flash 功能。 ( 5) 修改 uboot 代码中 对分区表的设置, 使得 分区表与内核设置的一致。 ( 6) 进入目录配置编译, 生成相应平台的 uboot 映像: 配置 make TQ2440_config make 编译结果生成 烧入开发板 ( 7) 把编译生成的 使用 OPENJTAG 烧写工具 ,安装驱动程序后 ,把它烧写到开发板 nor flash 上就可以了。 Linux 内核的移植 Linux 是一种开源电脑操作系统内核。 它是一个用 C 语言写成,符合 POSIX 标准的类 Unix 操作系统,是一个一体化内核( monolithic kernel)系统。 “内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。 一个内核不是一套完整的操作系统 ,还需要有配套的文件系统和硬件平台才能构成一个完整的嵌入式系统。 基于 Linux 内核的完整操作 系统叫作 Linux 操作系统, 其 设备驱动程序可以完全访问硬件 ,且 设备驱动程序可以方便地以模块化的形式设置, 即使 在系统运行期间 也 可直接装载或卸载。 6 内核已经支持 S3C2440 处理器的多种硬件 开发 板 , ,由于 S3C2410 跟 S3C2440 同属于 ARM920T 系列芯片 ,且 寄存器等硬件电路基本一致, 所以本文,参考 SMDK2410 参考板来移植 内核 到 TQ 2440 开发板 上。 准备工作 在 linux 系统中, 建立工作目录,下载内核源码 :。 步骤如下: tar jxvf 解压后会在当前目录下生成一个 的内核源码目录 修改内核源码顶层 修改内核目录树根下的的 Makefile,指明体系结构是 arm,交叉编译工具是 armlinuxgcc。 找到 ARCH 和 CROSS_COMPILE,修改 ARCH ?= arm CROSS_COMPILE ?= /usr/local/arm/ 设置 flash 分区 ( 1)修改内核分区信息(本示例分设四个分区),让内核知道 NAND Flash 的分区信息,设置成跟 uboot 一致, ( 2) 修改时钟 将 arch\arm\machs3c24xx\ 中的 s3c24xx_init_clocks(16934400)。 修改为: s3c24xx_init_clocks(120xx000)。 ( 3) 修 改 NAND Flash 的校验方 式 , 去 掉 ECC 校 验 , 否则上电启动会提 示 ECC 错误 或 者 I/O 读取错误。 在 drivers/mtd/nand/ 中 将 chip = NAND_ECC_SOFT, 改为 chip = NAND_ECC_NONE。 修改机器码 在 的 /board/samsun/TQ2440/ 中定义了机器码为 193,需要使得 uboot 和 linux 内核的同样类型的机器码都为 193,那么我们就修改 kernel 的 MACH_TYPE 代码引用部 分,确定 kernel 的 MACH_TYPE。 如下: 7 在 arch/arm/machs3c2440/ 中 : MACHINE_START(S3C2440, SMDK2440) 修改为: MACHINE_START(SMDK2410, SMDK2440) 在 arch/arm/kernel/ 中的 ENTRY(stext)下添加如下代码 ENTRY(stext) mov r0, 0 mov r1, 0xc1 // MACH_TYPE_SMDK2410 值 193 换成十六进制就是 0xc1 配置编译内核 make s3c2410_defconfig make menuconfig //进入设置界面,配置内核 make menuconfig 命令运行后进入内核配置主菜单,如图 31,这时根据自己的硬件需求对内核进行配置,即 在菜单中 选择合适的选项, 对内核的裁剪,就是使用make menuconfig 命令来 调出配置菜单 , 通过在菜单上选择 所需的选项,去掉 不需要的 选项 的方式来裁剪。 (选项前按“ y”则显示“ *”表示需要此项;按 n则空,不要此项 )。 图 配置主菜单 根据开发板情况,在配置中主要考虑的有: ( 1) CPU 类型的选择 8 图 32 cpu 类型选择 ( 2)引导设置 图 33 引导设置 Boot options Default kernel mand string: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 rootfstype=jffs2 说明: mtdblock2 代表第 3 个 flash 分区,它是 预设的 rootfs 分区 ,console=ttySAC0,115200 使 kernel 启动期间的信息全部输出到串口 0 上。 9 ( 3)系统调用方式设置如下图 34 图 34 系统调用方式设置 Kernel Features [*] Use the ARM EABI to pile the kernel//防止出现内核恐慌,内核指针跑飞。 主菜单中选最后一项“ Save an Alternate Configuration File” ,按回车,进入配置文件名编辑,默认文件名, ok 保存, exit 退出,产生 .config 内核配置文件,该文件会在 make 的时候被调用。 ( 4)文件系统的支持。 接下来做的是针对文件系统的设置, 本课程设计 上的文件系统是 cramfs/ jffs2,故做如下配置 , 如图 35 图 35 10 Miscellaneous filesystems [*]JFFS2 XATTR support (EXPERIMENTAL)支持 jffs2 和 cramfs 文件系统,配置如下图 35 图 36 Network File Systems 支持 NFS 文件系统,配置如下图 37 [ ] NFS client support for the NFSv3 ACL protocol extension [*]NFS client support for NFS version 4 (EXPERIMENTAL) * NFS server support 图 37 Linux 内核编译 与烧写 配置完成后,会在内核目录下生产 .config 文件 ,然后回到内核目录编译内核 ,具体操作如下: make //编译内核 11 此时, 在 arch/arm/boot 目录下生成 uImage 镜像,然后进行 uImage 镜像 的烧写 : 打开 DNW软件 ,在菜单 Configuration中选择 Options,然后配置波特率和端口参数 ,配置好参数后 ,选择菜单 Serial Port.Connect,然后给开发板上电 ,选择菜单USB PortTransmit, 导入 uImage 镜像 即可。 制作根文件系统 制作基本的根文件系统:使用 busybox 定制一个基本的文件系统,使用到的软件包有 busybox 和 bash。 其过程也是比较繁琐,大致分为以下几步 : ( A) 设定工作目录为 /root/build_rootfs/,该目录主要用来编译 busybox,bash等制作根文件系统的软件。 ( B)使用 MDEV 创建节点。 (C)拷贝动态链接库 , 交叉应用程序的开发需要用到交叉编译的链接库,交叉编译的链接库是在交叉工具链的 lib 目录下,我们在移植应用程序到我们的目标板的时候,需要把交叉编译的链接库也一起移植到目标上。 ( D) 交叉编译 busybox 之后, 运行 make menuconfig 会看到和 kernel 一样的配置菜单,可以对其进行配置,大多配置项都 是对一些命令支持。入式数码相框的设计与实现毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。