<4D6963726F736F667420576F7264202D20C7B6C8EBCABD6C696E7578BBF9B4A1CAB5D1E92E646F63>



Similar documents
投影片 1

华恒家庭网关方案

ebook70-22

投影片 1

Abstract arm linux tool-chain root NET-Start! 2

投影片 1

投影片 1

Microsoft Word - 第5章.doc

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD University of California UNIX X/Open Company, Ltd.

Microsoft Word - PS2_linux_guide_cn.doc

Windows 2000 Server for T100

. Outline 编译 Linux 在 QEMU 模拟器上运行制作带 grub 启动的磁盘映像...1 编译 Linux 在 QEMU 模拟器上运行...2 制作带 grub 启动的磁盘映像

Red Flag Linux Desktop 4.0 Red Flag Linux Desktop 4.0 1

Microsoft Word - YL-9G45_LINUX_烧写测试使用手册.doc

RTX3.2.0标准版 - 技术白皮书

09 Linux Linux Linux Linux 009.indd /9/4 下午 12:11:10

自由軟體教學平台

自由軟體教學平台

Windows 2000 Server for T100

自由軟體教學平台

EK-STM32F

K9板LINUX移植文档

Hi3507 Linux开发环境用户指南

Windows 2000 Server for T100

华恒家庭网关方案

投影片 1

2009 保 留 一 切 权 利 非 经 本 公 司 书 面 许 可, 任 何 单 位 和 个 人 不 得 擅 自 摘 抄 复 制 本 文 档 内 容 的 部 分 或 全 部, 并 不 得 以 任 何 形 式 传 播 商 标 声 明 海 思 和 其 他 海 思 商 标 均 为 深 圳 市 海 思 半

Outline 制作带 grub 启动的磁盘映像 利用 qemu+gdb 来调试 linux

1

05_資源分享-NFS及NIS.doc

ebook62-1

ebook70-21

untitled

目 录

ORACLE Enterprise Linux 6.3下ORACLE11g的安装

嵌入式Linux知识培训

untitled

untitled

lect03.ppt

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

接著以 'fdisk' 對 vmhd 做 partition 分割 $ fdisk -C u vmhd Command (m for help): n Command action e extended p primary partition (1-4) p Partition numb

Process init init /etc/inittab id:initdefault: runlevel runlevel /etc/rc.sysinit /etc/fstab mount filesystems runlevel /etc/r.d/rc$runlevel.d/ script

Microsoft Word - linux命令及建议.doc


Cygwin Cygwin windows Linux Cygwin.dll Windows Linux API Linux Windows Linux 2

Microsoft Word - 14.doc


1.ai

陕西职业技术学院(用标志)

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce.

Microsoft Word - 新建 Microsoft Word 文档

GUN-GPL / / 2003 ABC for Linux

全國新住民火炬計畫(草案)

佛教招〔2016〕9号--佛山市教育局关于调整面向全市招收艺术特长生音乐专业考试内容及大纲的通知.doc

Linux 操作系统课程社区创作

投影片 1

简 介 关 于 本 说 明 书 将 来 本 文 件 的 内 容 如 有 变 更 恕 不 预 先 通 知 有 关 产 品 名 称 和 机 型 号 码 的 最 新 信 息 请 联 系 我 们 的 顾 客 支 持 中 心 详 细 使 用 说 明 书 中 使 用 的 液 晶 显 示 器 和 主 机 的 插

????????

linux 2.6内核移植_for at91rm9200_归档.doc

TL138-EVM开发板规格书

775i65PE_BIOS_CN.p65

MP801H V2 使 用 指 南 Dragon 2010, 保 留 所 有 权 利 第 2 页 共 80 页

创建根文件系统目录, 主要包括以下目录 /dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys #mkdir #cd /home/rootfs /home/rootfs #mkdir dev etc lib usr v

ebook71-13

标题

PowerPoint 演示文稿

典型自编教材

untitled

ebook35-2

星宿對中國古代軍事的影響

\\cxserver\16 技术文档\99 temp\

嵌入式 Linux 系统与单片机比较及快速搭建系统 嵌入式 Linux 系统与单片机比较及快速搭建系统 作为入门, 首选 JZ2440 开发板, 资料丰富, 视频齐全 原理是相同的, 使用 JZ2440 所学知识完全适用于其他板子 本文使用 nanopi 作为例子, 所涉及主要知识都来自 JZ244

Microsoft Word - 正文.doc

f2.eps

Microsoft Word - UserManualForEaton_SC.doc

<4D F736F F D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

<4D F736F F D20AE67BD62B6A4C1FAB0EAB2BEA661B056BD6DAAF0B0EAB3F8A7695F30372E31302E31365F2E646F63>

TCA Linux 相容性認證測試流程步驟

自由軟體社群發展經驗與 Linux認證介紹

ebook70-5

二O一四年大华府拖拉机游戏锦标赛规则

Java Desktop System 呂衄盋 2 呂衄说柔

P4VM800_BIOS_CN.p65

Microsoft Word - S3c6410移植过程.doc

投影片 1

本文由筱驀釹贡献

CC213

Microsoft Word doc

S325A 2

Microsoft Word - VC2K_ _cht.doc

+01-10_M5A_C1955.p65

NA-001/F-V2縲€繧ス繝輔ヨ繧ヲ繧ァ繧「讖溯・莉墓ァ俶嶌

untitled

Serial ATA ( Silicon Image SiI3114)...2 (1) SATA... 2 (2) B I O S S A T A... 3 (3) RAID BIOS RAID... 5 (4) S A T A... 8 (5) S A T A... 10

V39用户手册0227.doc

第4章 系统设置

untitled

K7VT2_QIG_v3

Embedded Linux应用开发

Transcription:

嵌 入 式 linux 基 础 实 验 1 内 核 配 置 及 编 译 1. 进 入 内 核 所 在 目 录 /opt/ruiva/xscale/linux-2.6.26 #cd /opt/ruiva/xscale/linux-2.6.26 2. 键 入 make menuconfig, 根 据 需 要 适 当 配 置 内 核 #make menuconfig 这 里 先 使 用 默 认 的 配 置, 我 们 不 做 调 整, 到 后 面 需 要 对 内 核 进 行 重 新 配 置 的 时 候 再 具 体 说 明 3. 保 存 配 置 退 出 4. 最 后 编 译 内 核. #make 5. 编 译 结 束 后 可 以 在 arch/arm/boot 目 录 下 找 到 压 缩 内 核 文 件 zimage 此 文 件 可 以 通 过 bootloader 下 载 运 行 和 烧 写 到 FLASH 中 6. 如 果 你 选 择 了 一 些 模 块, 可 以 继 续 make modules,make modules_install

2 根 文 件 系 统 制 作 1.Linux 的 根 文 件 系 统 可 能 包 括 如 下 目 录 ( 或 更 多 的 目 录 ): (1)/bin (binary): 包 含 着 所 有 的 标 准 命 令 和 应 用 程 序 ; (2)/dev (device): 包 含 外 设 的 文 件 接 口, 在 Linux 下, 文 件 和 设 备 采 用 同 种 地 方 法 访 问 的, 系 统 上 的 每 个 设 备 都 在 /dev 里 有 一 个 对 应 的 设 备 文 件 ; (3)/etc (etcetera): 这 个 目 录 包 含 着 系 统 设 置 文 件 和 其 他 的 系 统 文 件, 例 如 /etc/fstab(file system table) 记 录 了 启 动 时 要 mount 的 filesystem; (4)/home: 存 放 用 户 主 目 录 ; (5)/lib(library): 存 放 系 统 最 基 本 的 库 文 件 ; (6)/mnt: 用 户 临 时 挂 载 文 件 系 统 的 地 方 ; (7)/proc:linux 提 供 的 一 个 虚 拟 系 统, 系 统 启 动 时 在 内 存 中 产 生, 用 户 可 以 直 接 通 过 访 问 这 些 文 件 来 获 得 系 统 信 息 ; (8)/root: 超 级 用 户 主 目 录 ; (9)/sbin: 这 个 目 录 存 放 着 系 统 管 理 程 序, 如 fsck mount 等 ; (10)/tmp(temporary): 存 放 不 同 的 程 序 执 行 时 产 生 的 临 时 文 件 ; (11)/usr(user): 存 放 用 户 应 用 程 序 和 文 件 2. 利 用 busybox 制 作 根 文 件 系 统 根 文 件 系 统 的 组 成 : 目 录 Shell 库 脚 本 1: 目 录 根 文 件 系 统 要 包 含 的 目 录 :/dev /lib /etc /proc /dev: 设 备 文 件 系 统 的 挂 接 点 /lib: 用 于 存 放 动 态 链 接 库 /etc: 用 来 存 放 初 始 化 脚 本 和 其 他 配 置 文 件 的 /proc: 用 来 挂 载 存 放 系 统 信 息 虚 拟 文 件 系 统 2:Shell Shell 就 是 Busybox, 进 入 /opt/ruiva/ busybox-1.10.1/ 目 录, 找 到 Makefile 里 面 的 ARCH 和 CROSS_COMPILE, 改 成 : ARCH?= arm CROSS_COMPILE?= arm-linux- 然 后 : # make menuconfig Busybox Settings ---> Build Options ---> Build BusyBox as a static binary (no shared libs) 选 上, 静 态 编 译 省 去 了 移 库 的 麻 烦 ; Busybox Settings ---> Installation Options ---> Don t use /usr 选 上, 不 然 make install 就 会 安 装 到 /usr 目 录 下, 选 上 后 默 认 安 装 到 _install/ 目 录 下 其 他 命 令 的 取 舍 可 以 根 据 自 己 的 需 要, 希 望 功 能 强 点, 就 多 选 点 命 令, 希 望 体 积 小 点, 就 尽 量 裁 剪 掉 不 用 的 命 令 即 可, 需 要 用 的 时 候 再 加 上 也 是 可 以 的 # make make 的 时 候 可 能 会 出 现 错 误, 比 如 taskset 错 误 还 有 insmod 错 误, 这 时 候 我 们 需 要 make menuconfig 做 些 修 改 :

Miscellaneous Utilities 下 去 掉 taskset; Linux Module Utilities 下 去 掉 Support version 2.2.x to 2.4.x Linux kernels 然 后 重 新 make 应 该 就 可 以 了 # make install 默 认 是 安 装 在 Busybox 下 的 _install 目 录 里, 然 后 我 们 就 可 以 在 Busybox 生 成 的 Shell 基 础 上 建 根 文 件 系 统 了, 以 命 令 示 之, 如 下 : # mkdir /root/sun/rootfs # cd /root/sun/busybox-1.10.1/_install # cp -r./ /root/sun/rootfs # cd /root/sun/rootfs # mkdir dev # mkdir etc # mkdir lib # mkdir proc # mkdir sys # mkdir tmp 以 root 身 份 执 行 ( 可 通 过 su 切 换 ): # cd dev # mknod -m 660 console c 5 1 # mknod -m 660 null c 1 3 # mknod -m 660 ttys0 c 4 64 # mknod -m 660 ttys1 c 4 65 通 常 dev/ 下 的 设 备 节 点 文 件 会 根 据 情 况 不 断 添 加, 这 里 只 是 添 加 了 启 动 系 统 所 必 需 的 终 端 节 点 以 及 串 口 节 点 3: 库 用 户 可 以 根 据 自 己 的 需 求 加 入 lib 库 和 文 件 : 如 : 编 写 hello.c 程 序, 然 后 编 译 成 hello, 执 行 ldd hello 可 看 到 hello 需 要 用 到 的 相 关 库, 从 交 叉 编 译 器 拷 贝 这 些 库 到 lib 目 录 即 可 一 般 用 到 的 库 文 件 都 可 以 在 交 叉 编 译 的 lib/ 目 录 下 找 到, 如 果 还 需 要 用 到 其 他 的 库, 那 就 只 有 自 己 下 载 源 码 手 动 交 叉 编 译 再 添 加 了 4: 脚 本 要 使 Shell 正 常 工 作, 还 要 设 置 初 始 化 脚 本 <1> 首 先 是 /etc/inittab: ::sysinit:/etc/init.d/rcs ttys0::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a ra 文 件 中 的 每 一 行 都 被 三 个 冒 号 分 隔 成 4 个 部 分, 每 个 部 分 有 不 同 的 含 义 : (1) 第 一 个 冒 号 前 面 的 数 字 或 者 字 符 是 该 行 的 行 标 识 符, 该 文 件 中 每 行 的 行 标 识 符 都 不 一 样 (2) 第 一 个 冒 号 后 面 是 该 行 的 状 态 标 识 符, 代 表 init 进 程 的 运 行 状 态, 在 linux 中 的 规 定 是 0,1,2,3,4,5,6, 每 个 值 对 应 的 含 义 注 释 部 分 有 详 细 的 说 明 如 果 为 空, 则 对 任 何 级 别 都 有 效 (3) 第 二 个 冒 号 的 后 面 是 该 行 的 动 作 标 识 符, 表 示 init 进 程 运 行 一 个 可 执

行 文 件 的 方 式 在 linux 中 规 定 了 多 种 方 式 部 分 说 明 如 下 : once: 在 执 行 本 行 第 四 部 分 中 的 命 令 或 者 程 序 时,init 不 必 等 待 执 行 这 些 命 令 的 进 程 完 成, 可 以 立 即 执 行 下 面 的 循 环 ; wait: 在 执 行 本 行 第 四 部 分 中 的 命 令 或 者 程 序 时,init 必 须 等 待 执 行 这 些 命 令 的 进 程 完 成 后, 才 能 进 行 下 面 一 行 的 操 作 ; respwan: 表 示 如 果 本 行 的 命 令 进 程 终 止 后,init 进 程 应 该 马 上 重 新 启 动 相 应 的 进 程 ; sysinit:init 进 程 启 动 后, 最 先 执 行 动 作 标 识 符 为 sysinit 行 的 命 令 或 可 执 行 程 序 而 其 他 标 有 boot 或 bootwait 行 的 命 令 要 等 到 sysinit 行 的 命 令 或 可 执 行 程 序 终 止 后 才 能 执 行 ; ctrlaltdel: 当 Ctrl+Alt+Del 被 同 时 按 下 时,init 进 程 将 接 收 到 系 统 发 送 的 SIGINT 信 号, 马 上 执 行 本 行 的 shutdown 命 令, 关 闭 系 统 ; initdefault: 指 定 系 统 启 动 时, 该 行 的 运 行 状 态 为 init 进 程 被 调 用 时 的 默 认 运 行 状 态 如 果 在 该 文 件 中 没 有 initdefault 状 态 项, 则 启 动 时 init 将 询 问 用 户 以 什 么 方 式 运 行 (4) 在 第 三 个 冒 号 后 面 是 init 进 程 要 执 行 的 shell 命 令 或 者 可 执 行 文 件 每 行 的 shell 命 令 或 可 执 行 文 件 是 否 被 执 行 取 决 于 每 行 的 状 态 和 动 作 从 init 进 程 的 执 行 流 程 可 知,init 进 程 先 创 建 一 个 shell 进 程, 再 由 该 shell 去 执 行 相 应 的 命 令 <2> 其 次 设 置 文 件 系 统 的 挂 载 表 /etc/fstab: (1) fstab 文 件 的 作 用 文 件 /etc/fstab 存 放 的 是 系 统 中 的 文 件 系 统 信 息 当 正 确 的 设 置 了 该 文 件, 则 可 以 通 过 "mount /directoryname" 命 令 来 加 载 一 个 文 件 系 统, 每 种 文 件 系 统 都 对 应 一 个 独 立 的 行, 每 行 中 的 字 段 都 有 空 格 或 tab 键 分 开 同 时 fsck mount umount 的 等 命 令 都 利 用 该 程 序 (2) fstab 文 件 格 式 下 面 是 /etc/fatab 文 件 的 一 个 示 例 行 : fs_spec fs_file fs_type fs_options fs_dump fs_pass /dev/hda1 / ext2 defaults 1 1 fs_spec - 该 字 段 定 义 希 望 加 载 的 文 件 系 统 所 在 的 设 备 或 远 程 文 件 系 统, 对 于 一 般 的 本 地 块 设 备 情 况 来 说 :IDE 设 备 一 般 描 述 为 /dev/hdaxn,x 是 IDE 设 备 通 道 (a, b, or c),n 代 表 分 区 号 ;SCSI 设 备 一 描 述 为 /dev/sdaxn 对 于 procfs, 使 用 `proc' 来 定 义 fs_file - 该 字 段 描 述 希 望 的 文 件 系 统 加 载 的 目 录 点, 对 于 swap 设 备, 该 字 段 为 none; 对 于 加 载 目 录 名 包 含 空 格 的 情 况, 用 40 来 表 示 空 格 fs_type - 定 义 了 该 设 备 上 的 文 件 类 型, 一 般 常 见 的 文 件 类 型 为 ext2 (Linux 设 备 的 常 用 文 件 类 型 ) vfat(windows 系 统 的 fat32 格 式 ) NTFS iso9600 等 fs_options - 指 定 加 载 该 设 备 的 文 件 系 统 是 需 要 使 用 的 特 定 参 数 选 项, 多 个 参 数 是 由 逗 号 分 隔 开 来 对 于 大 多 数 系 统 使 用 "defaults" 就 可 以 满 足 需 要 其 他 常 见 的 选 项 包 括 : ro 以 只 读 模 式 加 载 该 文 件 系 统 sync 不 对 该 设 备 的 写 操 作 进 行 缓 冲 处 理, 这 可 以 防 止 在 非 正 常 关 机 时 情 况 下 破 坏 文 件 系 统, 但 是 却 降 低 了 计 算 机 速 度

user 允 许 普 通 用 户 加 载 该 文 件 系 统 quota 强 制 在 该 文 件 系 统 上 进 行 磁 盘 定 额 限 制 noauto 不 再 使 用 mount -a 命 令 ( 例 如 系 统 启 动 时 ) 加 载 该 文 件 系 统 fs_dump - 该 选 项 被 "dump" 命 令 使 用 来 检 查 一 个 文 件 系 统 应 该 以 多 快 频 率 进 行 转 储, 若 不 需 要 转 储 就 设 置 该 字 段 为 0 fs_pass - 该 字 段 被 fsck 命 令 用 来 决 定 在 启 动 时 需 要 被 扫 描 的 文 件 系 统 的 顺 序, 根 文 件 系 统 "/" 对 应 该 字 段 的 值 应 该 为 1, 其 他 文 件 系 统 应 该 为 2 若 该 文 件 系 统 无 需 在 启 动 时 扫 描 则 设 置 该 字 段 为 0 示 例 代 码 如 下 : #/dev /root / defaults 0 0 none /tmp ramfs defaults 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0622 0 0 none /sys sysfs defaults 0 0 <3> 再 设 置 /etc/init.d/rcs: #!/bin/sh mount -a mount -o remount,rw /dev/root / mount -t proc /proc /proc 5: 链 接 目 录 到 linuxrc ( 系 统 默 认 的 init 文 件 ) #cd ( 回 到 rootfs) #ln -s bin/busybox linuxrc 这 步 通 常 编 译 busybox 的 时 候 就 已 经 自 动 生 成 了, 不 过 可 能 由 于 移 动 到 安 装 好 的 文 件 系 统 到 其 他 地 方,linuxrc 这 个 链 接 文 件 可 能 失 效, 这 个 时 候 就 需 要 自 己 用 上 述 指 令 手 动 创 建 一 个 链 接 文 件 了 6: 生 成 根 文 件 系 统 映 像 <1> cramfs 文 件 系 统 # /opt/ruiva/tools/mkcramfs rootfs rootfs.cramfs <2>jffs2 文 件 系 统 #/opt/ruiva/tools/mkfs.jffs2 d rootfs o rootfs.jffs2 -e 0x4000 p 0x200000 -e 选 项 确 定 闪 存 的 擦 除 扇 区 大 小 ( 通 常 是 64 千 字 节 ) -p 选 项 用 于 在 映 像 得 剩 余 空 间 用 0 填 充 -o 选 项 用 于 输 出 文 件 <3>ramdisk 文 件 系 统 #mkdir initrd #dd if=/dev/zero of=initrd.img bs=1k count=8192 #mke2fs -F -v -m0 initrd.img #mount -o loop initrd.img initrd #cp -av /root/sun/rootfs/* initrd #umount #gzip -9<initrd.img>initrd.bin

3 内 核 和 根 文 件 系 统 固 化 3.1 linux 启 动 方 式 开 发 板 可 以 通 过 NFS 或 者 FLASH 文 件 系 统 启 动 在 nfs 方 式 下, 目 标 板 上 的 linux 将 主 机 上 的 一 个 目 录 通 过 nfs 网 络 挂 接 作 为 它 的 根 文 件 系 统 这 种 方 式 对 于 开 发 非 常 方 便, 我 们 只 要 在 主 机 上 进 行 开 发 就 可 以 了, 不 用 每 次 都 把 文 件 系 统 下 载 到 目 标 板 上 当 系 统 开 发 完 成 后, 我 们 可 以 把 开 发 好 的 应 用 做 成 FLASH 文 件 系 统 (jffs2,cramfs 等 等 ) 映 像 把 它 烧 写 到 flash 上, 这 样 就 可 以 脱 离 nfs 网 络 环 境 形 成 独 立 的 目 标 板 系 统 在 下 面 的 示 例 中 我 们 分 别 以 nfs 和 FLASH 文 件 系 统 的 启 动 方 式 进 行 说 明 3.2 内 核 启 动 参 数 内 核 在 启 动 的 时 候 可 能 挂 载 不 同 的 文 件 系 统, nfs 网 络 文 件 系 统 和 jffs2 的 flash 文 件 系 统, 那 么 内 核 怎 么 知 道 去 登 陆 哪 种 文 件 系 统 呢? 这 就 要 通 过 设 置 内 核 启 动 参 数 来 设 定 了 设 置 内 核 启 动 参 数 有 两 种 方 式, 一 种 是 在 编 译 内 核 的 时 候, make menuconfig 之 后 在 general setup 里 输 入, 另 外 一 种 是 通 过 bootloader 来 传 递, 我 们 提 供 的 uboot 就 具 备 这 种 功 能, 只 要 你 设 置 了 bootargs 这 个 变 量, uboot 就 会 把 该 变 量 的 值 作 为 内 核 启 动 参 数 传 递 给 内 核 设 置 方 法 如 下 : 启 动 uboot 之 后, 按 任 意 键, 等 出 来 命 令 提 示 符, 输 入 命 令 #print 可 以 看 一 下 bootargs 的 值, 是 不 是 需 要 的, 如 果 需 要 重 新 设 定 就 执 行 下 面 的 命 令 #setenv bootargs string(string 就 是 内 核 启 动 参 数 ) #saveenv( 保 存 设 置 好 的 启 动 参 数 ) nfs 启 动 方 式 内 核 启 动 参 数 (ip 和 nfsroot 根 据 实 验 环 境 自 行 修 改 ): ip=192.168.1.152 root=/dev/nfs nfsroot=192.168.1.155:/opt/ruiva /xscale/rootfs console=ttys0,115200 mem=64m ( 以 上 命 令 为 一 行 ) 其 中 192.168.1.155 为 linux 宿 主 机 ip,/opt/ruiva/xscale/rootfs 为 根 文 件 系 统 的 目 录 地 址 jffs2 启 动 方 式 内 核 启 动 参 数 ip=192.168.1.152 root=/dev/mtdblock2 rootfstype=jffs2 console=ttys0,115200 mem=64m(ip 根 据 实 验 环 境 可 自 行 修 改 ) 3.3 启 动 完 成 以 上 工 作 后, 可 以 加 电 启 动, 启 动 可 以 采 用 两 种 不 同 的 模 式, 开 发 板 加 载 的 文 件 系 统 可 以 是 在 PC 机 上, 也 可 以 是 在 开 发 板 的 FLASH 中, 下 面 分 别 说 明

(1) 通 过 nfs 启 动 1: 主 机 端 启 动 超 级 终 端, 目 标 板 上 电, 然 后 键 入 任 何 键 命 令 提 示 符 出 现 2: 设 置 nfs 启 动 方 式 的 内 核 启 动 参 数 #setenv bootargs ip = 192.168.1.152 root=/dev/nfs nfsroot=192.168.1.155:/opt/ruiva/xscale/rootfs console=ttys0,115200 mem=64m ( 以 上 命 令 为 一 行 ) 3: 设 置 tftp 服 务 器 ip 通 过 tftp 协 议 下 载 内 核, 并 烧 写 到 flash 上 #setenv ipaddr 192.168.1.152 ( 将 开 发 板 ip 设 置 为 适 合 本 网 内 使 用 的 ) #setenv serverip 192.168.1.155 ( 设 置 tftp 服 务 器 地 址 ) #saveenv ( 保 存 设 置 好 的 变 量 ) #tftp 0xa0008000 zimage ( 下 载 内 核 到 内 存 0xa0008000 地 址 ) 如 果 不 想 保 存 内 核 到 flash 中 下 面 三 步 可 以 不 用 进 行 #protect off all ( 对 flash 解 锁 ) #erase 1:5-10 ( 擦 除 内 核 分 区 ) #cp.b 0xa0008000 0x00080000 length ( 将 内 核 写 到 flash 中, 命 令 中 length 用 tftp 实 际 下 到 的 大 小 来 代 替, 注 意 地 址 不 要 写 错 ) 4: 启 动 嵌 入 式 linux #cp.b 0x00080000 0xa0008000 0x180000 ( 加 载 内 核 分 区 到 内 存 中 ) #go 0xa0008000 ( 启 动 内 核 ) (2) 通 过 jffs2 启 动 1: 主 机 端 启 动 超 级 终 端, 目 标 板 上 电, 然 后 键 入 任 何 键 等 待 uboot 提 示 符 出 现 2: 设 置 flash 启 动 方 式 的 内 核 启 动 参 数 #setenv bootargs ip=192.168.1.152 root=/dev/mtdblock2 rootfstype=jffs2 console=ttys0,115200 mem=64m ( 以 上 命 令 为 一 行 ) 3: 设 置 tftp 服 务 器 ip 通 过 tftp 协 议 下 载 内 核, 并 烧 写 到 flash 上 #setenv ipaddr 192.168.1.152 ( 将 开 发 板 ip 设 置 为 适 合 本 网 内 使 用 的 ) #setenv serverip 192.168.1.155 ( 设 置 tftp 服 务 器 地 址 ) #saveenv ( 保 存 设 置 好 的 变 量 ) #tftp 0xa0008000 zimage ( 下 载 内 核 到 内 存 0xa0008000 地 址 ) #protect off all ( 对 flash 解 锁 ) #erase 1:5-10 ( 擦 除 内 核 分 区 ) #cp.b 0xa0008000 0x00080000 length ( 将 内 核 写 到 flash 中, 命 令 中 length 用 tftp 实 际 下 到 的 大 小 来 代 替, 注 意 地 址 不 要 写 错 ) 4: 下 载 根 文 件 系 统, 并 烧 写 到 flash 上 : #tftp 0xa0008000 rootfs.jffs2 ( 下 载 根 文 件 系 统 到 内 存 0xa0008000 地 址 ) #erase 1:11-106 ( 擦 除 需 要 用 到 的 文 件 系 统 分 区, 这 里 擦 除 24M, 如 果 文 件 系 统 更 大 就 要 擦 除 更 多 的 块, 每 块 256k, 可 以 自 行 计 算, 这 里 擦 除 的 时 间 也 比 较 长 ) #cp.b 0xa0008000 0x00200000 length ( 将 根 文 件 系 统 写 到 flash 中 ) 命 令 中 length 用 tftp 实 际 下 载 到 的 跟 文 件 系 统 的 大 小 来 代 替, 另 外 0x00200000 是 flash 的 地 址, 根 文 件 系 统 放 在 什 么 地 址 是 编 译 内 核 时 确 定 的, 这 个 地 址 就 是 内 核 启 动 参 数 中 向 flash 中 烧 写 根 文 件 系 统 用 到 的 /dev/mtdblock2

的 实 际 地 址 5: 启 动 嵌 入 式 linux #cp.b 0x00080000 0xa0008000 0x180000 ( 加 载 内 核 分 区 到 内 存 中 ) #go 0xa0008000 ( 启 动 内 核 ) 4 运 行 静 态 编 译 和 动 态 编 译 的 应 用 程 序 4.1 实 验 目 的 (1) 掌 握 静 态 编 译, 动 态 编 译 应 用 程 序 (2) 比 较 静 态 编 译 和 动 态 编 译 的 不 同 4.2 系 统 资 源 配 备 (1) 嵌 入 式 RUIVA_PXA270 实 验 系 统 (2) 串 口 线 以 太 网 线 4.3 实 验 内 容 编 写 简 单 的 hello 程 序, 分 别 进 行 静 态 和 动 态 交 叉 编 译, 拷 贝 应 用 程 序 到 开 发 板 执 行, 比 较 它 们 之 间 的 不 同 4.4 实 验 步 骤 (1) 开 发 主 机 中, 在 实 验 箱 nfs 根 文 件 系 统 目 录 下 编 写 hello.c 程 序 hello.c 代 码 如 下 : #include<stdio.h> int main() { printf( hello.xiaowen!\n ); } (2) 动 态 交 叉 编 译 hello.c 程 序 命 令 :arm-linux-gcc hello.c -o hello1 (3) 静 态 交 叉 编 译 hello.c 程 序 命 令 :arm-linux-gcc hello.c -static -o hello2 (4) 正 确 连 接 实 验 设 备, 用 交 叉 串 口 线 连 接 实 验 箱 UART0 与 PC 的 串 口, 用 交 叉 以 太 网 线 连 接 实 验 箱 网 口 和 交 换 机 (5) 打 开 超 级 终 端 (com1), 配 置 超 级 终 端 的 波 特 率 为 115200,8 个 数 据 位,1 个 停 止 位 无 流 控 打 开 实 验 箱 的 电 源 开 关, 启 动 实 验 箱 上 的 LINUX(nfs 方 式 启 动 )

(6) 超 级 终 端 下 用 ldd 命 令 查 看 hello1 所 需 库 文 件, 并 拷 贝 相 应 的 库 到 根 文 件 系 统 下 的 lib 目 录, 然 后 执 行 hello1 应 用 程 序 如 下 图 所 示 : (7) 超 级 终 端 直 接 执 行 hello2 应 用 程 序, 由 于 是 静 态 编 译 的, 编 译 过 程 中 已 经 把 库 文 件 加 进 去 了, 所 以 hello2 文 件 比 hello1 文 件 大, 不 需 要 再 拷 贝 相 应 的 库 文 件 了 如 下 图 所 示 :

5 串 口 通 信 试 验 5.1 试 验 目 的 掌 握 linux 下 串 口 编 程 5.2 系 统 资 源 配 备 (1) RUIVA_PXA270 实 验 箱 (2) 两 根 交 叉 串 口 线 (3) 一 根 以 太 网 线 5.3 实 验 内 容 学 习 串 口 编 程 原 理, 编 写 简 单 的 读 写 串 口 程 序, 并 交 叉 编 译, 拷 贝 应 用 程 序 到 开 发 板 执 行 5.4 实 验 步 骤 (1) 开 发 主 机 中, 参 考 示 例 代 码, 在 实 验 箱 nfs 根 文 件 系 统 目 录 下 编 写 一 个 应 用 程 序, 并 交 叉 编 译, 生 成 应 用 程 序 它 从 命 令 行 接 收 字 符 串 参 数, 然 后 向 串 口 二 发 送 字 符 串, 最 后 监 测 串 口 二 的 数 据, 并 打 印 出 来, 直 到 遇 到 回 车 为 止 示 例 代 码 为 uart.c, 请 参 见 /opt/ruiva/rootfs/applications/uart (2) 正 确 连 接 实 验 设 备, 用 一 根 交 叉 串 口 线 连 接 实 验 箱 UART0 与 PC 的 串 口, 用 交 叉 以 太 网 线 连 接 实 验 箱 网 口 和 交 换 机 (3) 打 开 超 级 终 端 (com1), 配 置 超 级 终 端 的 波 特 率 为 115200,8 个 数 据 位, 1 个 停 止 位 无 流 控 打 开 实 验 箱 的 电 源 开 关, 启 动 实 验 箱 上 的 LINUX(nfs 方 式 启 动 ) (4) 使 用 另 一 根 串 口 线 连 接 实 验 箱 的 串 口 UART1 到 PC 的 串 口 再 打 开 一 个 新 的 超 级 终 端 (com2), 设 置 波 特 率 为 115200 8 位, 无 校 验, 无 流 控 (5) 在 第 一 次 打 开 的 超 级 终 端 中, 执 行 uart : #./uart 程 序 启 动 以 后, 会 提 示 输 入 字 符 串 : please input your string: 输 入 ruiva.sunxiaowen( 任 意 你 想 输 入 的 字 符 串 即 可 ) 接 着 程 序 会 向 ttys1(com2) 写 入 你 所 输 入 的 字 符 串 控 制 台 中 会 显 示 write ruiva.sunxiaowen to /dev/ttys1 succeed! 而 新 打 开 的 超 级 终 端 中 会 显 示 该 字 符 串

6 USB-HOST 测 试 6.1 实 验 目 的 (1) 掌 握 linux 常 用 指 令 的 用 法, 如 mount umount 等 (2) 掌 握 嵌 入 式 RUIVA_PXA270 开 发 板 上 挂 载 和 卸 载 usb 设 备 的 方 法 6.2 系 统 资 源 配 备 (1) 嵌 入 式 RUIVA_PXA270 实 验 系 统 (2) 串 口 线 以 太 网 线 (3) u 盘 一 个 6.3 实 验 内 容 软 件 开 发 中, 我 们 经 常 需 要 向 开 发 板 上 挂 载 usb 设 备, 本 实 验 完 成 向 开 发 板 挂 载 和 卸 载 usb 设 备 6.4 实 验 步 骤 (1) 正 确 连 接 实 验 设 备, 用 一 根 交 叉 串 口 线 连 接 实 验 箱 UART0 与 PC 的 串 口, 用 交 叉 以 太 网 线 连 接 实 验 箱 网 口 和 交 换 机 (2) 打 开 超 级 终 端 (com1), 配 置 超 级 终 端 的 波 特 率 为 115200,8 个 数 据 位, 1 个 停 止 位 无 流 控 打 开 实 验 箱 的 电 源 开 关, 启 动 实 验 箱 上 的 LINUX(nfs 方 式 启 动 ) (3) 超 级 终 端 中 查 看 开 发 板 根 文 件 系 统 dev 目 录 下 是 否 有 sda 块 设 备 节 点, 命 令 如 下 : #cd /dev #ls (4) 如 果 没 有 sda 块 设 备 节 点, 创 建 之, 命 令 如 下 : #mknod m 660 sda b 8 0 #mknod m 660 sda1 b 8 1 这 里 要 注 意, 我 们 创 建 的 是 块 设 备 而 不 是 字 符 设 备, 所 以 设 备 节 点 名 后 应 该 是 b 而 不 是 c (5) 开 发 板 根 目 录 下 新 建 usb 目 录, 命 令 如 下 : #cd / #mkdir usb (6) 把 u 盘 插 入 RUIVA_PXA270 实 验 箱 的 usb 口, 然 后 挂 载 u 盘, 执 行 命 令 如 下 : #mount -t vfat dev/sda1 usb 如 果 提 示 挂 载 失 败, 比 如 No such device, 或 者 Invalid argument 可 能 有 多 种 原 因

首 先, 进 入 宿 主 机 内 核 源 代 码 目 录 make menuconfig, 检 查 是 否 添 加 了 SCSI 和 USB 的 支 持, 具 体 配 置 如 下 所 示 : Device Drivers ---> SCSI device support ---> Device Drivers ---> USB support --->

做 了 以 上 设 置 以 后, 保 存 退 出, 重 新 make, 重 新 下 载 内 核, 这 个 时 候 应 该 插 上 u 盘 内 核 就 可 以 识 别 了 我 们 可 以 通 过 cat 命 令 来 查 看 内 核 识 别 的 u 盘 :

我 们 可 以 清 楚 的 看 到 内 核 确 实 识 别 了, 多 了 一 个 sda 和 一 个 sda1, 这 个 时 候 再 次 #mount -t vfat dev/sda1 usb 可 能 还 是 挂 载 不 成 功, 这 个 是 因 为 可 能 是 编 译 内 核 的 时 候 没 有 把 支 持 fat 文 件 格 式 加 进 来, 而 且 还 有 些 其 他 的 支 持 没 有 加 上 这 个 时 候 又 要 重 新 编 译 内 核 了, 进 入 内 核 源 代 码 目 录 make menuconfig, 作 出 如 下 改 动 : File Systems ---> DOS/FAT/NT Filesystems ---> File Systems ---> Native language support --->

选 上 Codepage 437 这 一 项, 就 应 该 可 以 挂 载 u 盘 了, 其 它 选 项 可 能 在 别 的 时 候 需 要 添 加, 比 如 挂 载 sd 卡 的 时 候 就 还 需 要 来 这 里 添 加 这 个 时 候 再 次 #mount -t vfat dev/sda1 usb 终 于 大 功 告 成 (7) 如 果 要 支 持 u 盘 中 文 内 容 显 示, 可 把 步 骤 (6) 中 的 mount 命 令 换 成 如 下 命 令 即 可 : #mount -t vfat dev/sda usb -o codepage=936,iocharset=cp936,rw (8) 查 看 usb 目 录 里 的 内 容, 验 证 是 否 挂 载 成 功, 如 下 图 所 示 : (9) 如 果 要 卸 载 u 盘, 执 行 如 下 命 令 即 可 : #umount usb

7 音 频 测 试 7.1 实 验 目 的 掌 握 linux 常 用 音 频 播 放 器 的 使 用, 如 madplay 7.2 系 统 资 源 配 备 (1) 嵌 入 式 RUIVA_PXA270 实 验 系 统 (2) 串 口 线 以 太 网 线 7.3 实 验 内 容 用 RUIVA_270 实 验 系 统 里 的 madplay 播 放 器 播 放 音 频 文 件 7.4 实 验 步 骤 (1) 正 确 连 接 实 验 设 备, 用 一 根 交 叉 串 口 线 连 接 实 验 箱 UART0 与 PC 的 串 口, 用 交 叉 以 太 网 线 连 接 实 验 箱 网 口 和 交 换 机 (2) 打 开 超 级 终 端 (com1), 配 置 超 级 终 端 的 波 特 率 为 115200,8 个 数 据 位, 1 个 停 止 位 无 流 控 打 开 实 验 箱 的 电 源 开 关, 启 动 实 验 箱 上 的 LINUX(nfs 方 式 启 动 ) (3) 超 级 终 端 中 查 看 开 发 板 根 文 件 系 统 dev 目 录 下 是 否 有 dsp 字 符 设 备 节 点, 命 令 如 下 : #cd /dev #ls (4) 如 果 没 有 dsp 字 符 设 备 节 点, 创 建 之, 命 令 如 下 : #mknod m 600 dsp c 14 3 (5) 把 耳 机 接 上 RUIVA_270 实 验 箱 上 的 AUDIO OUT 口 (6) 进 入 开 发 板 applications 目 录, 执 行 madplay 播 放 器 播 放 mp3 文 件, 如 下 图 所 示 :

自 此, 你 可 以 听 到 优 美 的 音 乐 春 泥 8 GPIO 实 验 8.1 实 验 目 的 (1) 学 习 GPIO 的 配 置 和 操 作 (2) 学 习 GPIO 中 断 原 理 (3) 学 习 编 写 Linux Module (4) 学 习 如 何 在 Linux Module 中 编 写 中 断 服 务 程 序 8.2 系 统 资 源 配 备 (1) 嵌 入 式 RUIVA_PXA270 实 验 系 统 (2) 串 口 线 以 太 网 线, 一 根 导 线 8.3 实 验 内 容 编 写 一 个 Linux Module, 可 以 实 现 GPIO 的 常 规 功 能, 并 可 以 响 应 中 断

8.4 实 验 步 骤 (1) 正 确 连 接 实 验 设 备, 用 一 根 交 叉 串 口 线 连 接 实 验 箱 UART0 与 PC 的 串 口, 用 交 叉 以 太 网 线 连 接 实 验 箱 网 口 和 交 换 机 (2) 打 开 超 级 终 端 (com1), 配 置 超 级 终 端 的 波 特 率 为 115200,8 个 数 据 位, 1 个 停 止 位 无 流 控 打 开 实 验 箱 的 电 源 开 关, 启 动 实 验 箱 上 的 LINUX(nfs 方 式 启 动 ) (3) 编 写 程 序, 并 编 译 (4)insmod 命 令 插 入 模 块,insmod./gpio.ko, 这 时 终 端 会 显 示 : (5) 用 导 线 触 碰 GPIO_12 和 高 电 平 管 脚, 就 是 J21 左 边 上 边 的 第 一 和 第 二 针 脚, 这 时 候 终 端 会 显 示 : 说 明 通 过 触 发 中 断,GPIO 管 脚 发 生 了 变 化 9 LED 实 验 9.1 实 验 目 的 (1) 进 一 步 学 习 GPIO 的 配 置 和 操 作 (2) 学 习 通 过 GPIO 来 驱 动 LED (3) 进 一 步 学 习 编 写 Linux Module

(4) 学 习 如 何 编 写 用 户 测 试 程 序 来 使 用 Module 9.2 系 统 资 源 配 备 (1) 嵌 入 式 RUIVA_PXA270 实 验 系 统 (2) 串 口 线 以 太 网 线 9.3 实 验 内 容 编 写 一 个 Module 通 过 GPIO 来 驱 动 LED, 再 编 写 一 个 用 户 测 试 程 序 来 调 用 Module 实 现 跑 马 灯 的 效 果 9.4 实 验 步 骤