13.07.2015 Views

Hi3520 Linux 开发环境.pdf

Hi3520 Linux 开发环境.pdf

Hi3520 Linux 开发环境.pdf

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南文 档 版 本00B01发 布 日 期 2009-08-31


版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司 2009。 保 留 一 切 权 利 。非 经 本 公 司 书 面 许 可 , 任 何 单 位 和 个 人 不 得 擅 自 摘 抄 、 复 制 本 文 档 内 容 的 部 分 或 全 部 , 并 不 得 以 任 何 形 式传 播 。商 标 声 明、 、 海 思 和 其 他 海 思 商 标 均 为 深 圳 市 海 思 半 导 体 有 限 公 司 的 商 标 。本 文 档 提 及 的 其 他 所 有 商 标 或 注 册 商 标 , 由 各 自 的 所 有 人 拥 有 。注 意您 购 买 的 产 品 、 服 务 或 特 性 等 应 受 海 思 公 司 商 业 合 同 和 条 款 的 约 束 , 本 文 档 中 描 述 的 全 部 或 部 分 产 品 、 服务 或 特 性 可 能 不 在 您 的 购 买 或 使 用 范 围 之 内 。 除 非 合 同 另 有 约 定 , 海 思 公 司 对 本 文 档 内 容 不 做 任 何 明 示 或默 示 的 声 明 或 保 证 。由 于 产 品 版 本 升 级 或 其 他 原 因 , 本 文 档 内 容 会 不 定 期 进 行 更 新 。 除 非 另 有 约 定 , 本 文 档 仅 作 为 使 用 指 导 ,本 文 档 中 的 所 有 陈 述 、 信 息 和 建 议 不 构 成 任 何 明 示 或 暗 示 的 担 保 。深 圳 市 海 思 半 导 体 有 限 公 司地 址 : 深 圳 市 龙 岗 区 坂 田 华 为 基 地 华 为 电 气 生 产 中 心 邮 编 :518129网 址 :http://www.hisilicon.com客 户 服 务 电 话 : +86-755-28788858客 户 服 务 传 真 : +86-755-28357515客 户 服 务 邮 箱 :support@hisilicon.com海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南目 录目录前 言 ..................................................................................................................................................11 开 发 环 境 .......................................................................................................................................1-11.1 嵌 入 式 开 发 环 境 ........................................................................................................................................1-11.2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 ..............................................................................................................................1-21.3 搭 建 <strong>Linux</strong> 开 发 环 境 .................................................................................................................................1-31.3.1 安 装 <strong>Linux</strong> 服 务 器 ..........................................................................................................................1-31.3.2 安 装 交 叉 编 译 工 具 ..........................................................................................................................1-31.3.3 安 装 <strong>Hi3520</strong> SDK............................................................................................................................1-32 U-boot...........................................................................................................................................2-12.1 U-boot 简 介 .................................................................................................................................................2-12.2 启 动 U-boot................................................................................................................................................2-12.3 编 译 U-boot................................................................................................................................................2-22.4 烧 写 U-boot................................................................................................................................................2-22.5 U-boot 常 用 命 令 .........................................................................................................................................2-22.6 U-boot 环 境 变 量 .........................................................................................................................................2-83 <strong>Linux</strong> 内 核 ..................................................................................................................................3-113.1 内 核 源 代 码 ..............................................................................................................................................3-113.2 配 置 内 核 ..................................................................................................................................................3-113.3 编 译 内 核 ..................................................................................................................................................3-123.4 使 用 mkimage 工 具 .................................................................................................................................3-124 根 文 件 系 统 ...................................................................................................................................4-14.1 根 文 件 系 统 简 介 ........................................................................................................................................4-14.2 利 用 busybox 制 作 根 文 件 系 统 .................................................................................................................4-24.2.1 获 取 busybox 源 代 码 ......................................................................................................................4-24.2.2 配 置 busybox ...................................................................................................................................4-24.2.3 编 译 和 安 装 busybox .......................................................................................................................4-34.2.4 制 作 根 文 件 系 统 ..............................................................................................................................4-34.3 文 件 系 统 简 介 ............................................................................................................................................4-44.3.1 cramfs................................................................................................................................................4-4文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司i


目录<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4.3.2 JFFS2.................................................................................................................................................4-44.3.3 NFS ...................................................................................................................................................4-54.3.4 yaffs2.................................................................................................................................................4-64.3.5 initrd ..................................................................................................................................................4-75 烧 写 内 核 和 根 文 件 系 统 ..............................................................................................................5-15.1 存 储 器 地 址 空 间 ........................................................................................................................................5-15.2 操 作 系 统 运 行 空 间 ....................................................................................................................................5-25.3 通 过 网 口 烧 写 ............................................................................................................................................5-25.3.1 参 数 设 置 和 建 立 tftp 服 务 ..............................................................................................................5-25.3.2 下 载 内 核 ..........................................................................................................................................5-35.3.3 下 载 根 文 件 系 统 ..............................................................................................................................5-35.4 通 过 串 口 烧 写 ............................................................................................................................................5-45.4.1 连 接 设 备 ..........................................................................................................................................5-45.4.2 下 载 内 核 ..........................................................................................................................................5-55.4.3 下 载 根 文 件 系 统 ..............................................................................................................................5-66 启 动 <strong>Linux</strong>...................................................................................................................................6-16.1 设 置 启 动 参 数 ............................................................................................................................................6-16.2 启 动 <strong>Linux</strong> .................................................................................................................................................6-26.3 设 置 U-boot 自 动 启 动 <strong>Linux</strong> ....................................................................................................................6-27 应 用 程 序 开 发 简 介 ......................................................................................................................7-17.1 编 写 代 码 ....................................................................................................................................................7-17.2 运 行 应 用 程 序 ............................................................................................................................................7-17.3 使 用 gdbserver 调 试 应 用 程 序 ..................................................................................................................7-2A 建 立 <strong>Linux</strong> 开 发 环 境 ............................................................................................................... A-1A.1 安 装 <strong>Linux</strong> 系 统 的 配 置 选 项 ...................................................................................................................A-1A.2 配 置 必 要 的 系 统 服 务 ..............................................................................................................................A-1B 缩 略 语 .........................................................................................................................................B-1ii海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01(2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南插 图 目 录插 图 目 录图 1-1 嵌 入 式 开 发 图 例 ...................................................................................................................................1-1图 1-2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 ........................................................................................................................1-2图 4-1 根 文 件 系 统 顶 层 目 录 结 构 图 ...............................................................................................................4-1图 5-1 NOR Flash(32MB) 地 址 空 间 分 配 示 意 图 ( 仅 供 参 考 )................................................................5-2图 5-2 串 口 设 置 ...............................................................................................................................................5-5图 5-3 发 送 文 件 窗 口 .......................................................................................................................................5-5文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司iii


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南表 格 目 录表 格 目 录表 1-1 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 的 各 部 分 软 件 描 述 ........................................................................................1-2表 2-1 U-boot 常 用 命 令 说 明 ...........................................................................................................................2-3表 2-2 NAND NOR U-boot 相 对 于 U-boot 修 改 的 命 令 说 明 .........................................................................2-7表 2-3 U-boot 常 用 环 境 变 量 说 明 ....................................................................................................................2-9表 3-1 mkimage 参 数 表 ..................................................................................................................................3-12表 4-1 嵌 入 式 系 统 中 可 忽 略 的 目 录 说 明 .......................................................................................................4-2表 4-2 JFFS2 参 数 表 ........................................................................................................................................4-5表 A-1 安 装 <strong>Linux</strong> 系 统 的 配 置 选 项 说 明 .....................................................................................................A-1文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司v


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南前 言前言概 述本 文 档 首 先 简 单 介 绍 了 <strong>Hi3520</strong> 需 要 的 <strong>Linux</strong> 开 发 环 境 , 接 着 详 细 介 绍 了 U-Boot、<strong>Linux</strong>内 核 、 根 文 件 系 统 、 烧 写 内 核 和 根 文 件 系 统 和 启 动 <strong>Linux</strong>, 最 后 简 单 介 绍 了 应 用 程 序 开发 和 建 立 <strong>Linux</strong> 开 发 环 境 的 方 法 。产 品 版 本与 本 文 档 相 对 应 的 产 品 版 本 如 下 。产 品 名 称<strong>Hi3520</strong> 芯 芯产 品 版 本V100读 者 对 象本 文 档 主 要 适 用 于 以 下 工 程 师 :• 技 术 支 持 工 程 师• 软 件 开 发 工 程 师约 定符 号 约 定在 本 文 中 可 能 出 现 下 列 标 志 , 它 们 所 代 表 的 含 义 如 下 。符 号说 明表 示 有 潜 在 风 险 , 如 果 忽 视 这 些 文 本 , 可 能 导 致 设 备 损 坏 、数 据 丢 失 、 设 备 性 能 降 低 或 不 可 预 知 的 结 果 。表 示 表 表 文 的 表 表 信 息 , 表 对 表 文 的 是 是 和 是 是 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司1


前言<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南通 用 格 式 约 定格 式说 明宋 体 表 文 采 用 宋 体 表 示 。黑 体 一 级 、 二 级 、 三 级 标 题 采 用 黑 体 。楷 体“Terminal Display” 格 式警 告 、 提 示 等 内 容 一 律 用 楷体 , 并 且 在 内 容 前 后 增 表 线 条 与 表 文 隔 离 。“TerminalDisplay” 格 式 表 示 屏 幕 输 出 信 息 。 此 外 , 屏 幕 输 出 信 息 中夹 杂 的 用 户 从 终 端 输 入 的 信 息 采 用 表 粗 字 体 表 示 。“” 用 用 用 用 表 示 文 件 用 用 。 如 “C:\Program Files\ Huawei” 。命 令 行 格 式 约 定格 式粗 体斜 体意 义命 命 命 命 命 字 ( 命 命 中 保 持 不 命 、 必 必 必 输 的 必 必 ) 采用 表 粗 字 体 表 示 。命 命 命 命 数 ( 命 命 中 必 必 命 命 命 命 命 命 命 代 的 必 必 ) 采用 斜 体 表 示 。[ ] 表 示 用 “[ ]”括 括 括 的 必 必 在 命 命 括 括 括 表 可 括 的 。{ x | y | ... } 表 示 从 两 个 或 多 个 括 项 中 括 取 一 个 。[ x | y | ... ] 表 示 从 两 个 或 多 个 括 项 中 括 取 一 个 或 者 不 括 。{ x | y | ... } * 表 示 从 两 个 或 多 个 括 项 中 括 取 多 个 , 最 少 括 取 一 个 , 最 多括 取 所 有 括 项 。[ x | y | ... ] * 表 示 从 两 个 或 多 个 括 项 中 括 取 多 个 或 者 不 括 。表 格 内 容 约 定内 容说 明- 表 格 中 的 表 内 容 单 表 。* 表 格 中 的 内 容 用 户 可 根 据 需 要 命 命 括 括 。2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南前 言修 订 记 录修 订 记 录 累 积 了 每 次 文 档 更 新 的 说 明 。 最 新 版 本 的 文 档 包 含 以 前 所 有 文 档 版 本 的 更 新 内容 。修 订 日 期 版 本 修 订 说 明2009-08-31 00B01 第 一 次 发 第 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司3


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南目 录目录1 开 发 环 境 .......................................................................................................................................1-11.1 嵌 入 式 开 发 环 境 ..........................................................................................................................................1-11.2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 ...............................................................................................................................1-21.3 搭 建 <strong>Linux</strong> 开 发 环 境 ..................................................................................................................................1-31.3.1 安 装 <strong>Linux</strong> 服 务 器 .............................................................................................................................1-31.3.2 安 装 交 叉 编 译 工 具 .............................................................................................................................1-31.3.3 安 装 <strong>Hi3520</strong> SDK...............................................................................................................................1-32 U-boot...........................................................................................................................................2-12.1 U-boot 简 介 ..................................................................................................................................................2-12.2 启 动 U-boot .................................................................................................................................................2-12.3 编 译 U-boot .................................................................................................................................................2-22.4 烧 写 U-boot .................................................................................................................................................2-22.5 U-boot 常 用 命 令 ..........................................................................................................................................2-22.6 U-boot 环 境 变 量 ..........................................................................................................................................2-83 <strong>Linux</strong> 内 核 ..................................................................................................................................3-113.1 内 核 源 代 码 ................................................................................................................................................3-113.2 配 置 内 核 ....................................................................................................................................................3-113.3 编 译 内 核 ....................................................................................................................................................3-123.4 使 用 mkimage 工 具 ...................................................................................................................................3-124 根 文 件 系 统 ...................................................................................................................................4-14.1 根 文 件 系 统 简 介 ..........................................................................................................................................4-14.2 利 用 busybox 制 作 根 文 件 系 统 ..................................................................................................................4-24.2.1 获 取 busybox 源 代 码 .........................................................................................................................4-24.2.2 配 置 busybox......................................................................................................................................4-24.2.3 编 译 和 安 装 busybox ..........................................................................................................................4-34.2.4 制 作 根 文 件 系 统 .................................................................................................................................4-34.3 文 件 系 统 简 介 ..............................................................................................................................................4-44.3.1 cramfs...................................................................................................................................................4-44.3.2 JFFS2 ...................................................................................................................................................4-4文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司i


目录<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4.3.3 NFS......................................................................................................................................................4-54.3.4 yaffs2 ...................................................................................................................................................4-64.3.5 initrd.....................................................................................................................................................4-75 烧 写 内 核 和 根 文 件 系 统 ..............................................................................................................5-15.1 存 储 器 地 址 空 间 ..........................................................................................................................................5-15.2 操 作 系 统 运 行 空 间 ......................................................................................................................................5-25.3 通 过 网 口 烧 写 ..............................................................................................................................................5-25.3.1 参 数 设 置 和 建 立 tftp 服 务 .................................................................................................................5-25.3.2 下 载 内 核 ............................................................................................................................................5-35.3.3 下 载 根 文 件 系 统 .................................................................................................................................5-35.4 通 过 串 口 烧 写 ..............................................................................................................................................5-45.4.1 连 接 设 备 ............................................................................................................................................5-45.4.2 下 载 内 核 ............................................................................................................................................5-55.4.3 下 载 根 文 件 系 统 .................................................................................................................................5-66 启 动 <strong>Linux</strong>...................................................................................................................................6-16.1 设 置 启 动 参 数 ..............................................................................................................................................6-16.2 启 动 <strong>Linux</strong> ...................................................................................................................................................6-26.3 设 置 U-boot 自 动 启 动 <strong>Linux</strong> ......................................................................................................................6-27 应 用 程 序 开 发 简 介 ......................................................................................................................7-17.1 编 写 代 码 ......................................................................................................................................................7-17.2 运 行 应 用 程 序 ..............................................................................................................................................7-17.3 使 用 gdbserver 调 试 应 用 程 序 ....................................................................................................................7-2ii海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南插 图 目 录插 图 目 录图 1-1 嵌 入 式 开 发 图 例 ....................................................................................................................................1-1图 1-2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 ..........................................................................................................................1-2图 4-1 根 文 件 系 统 顶 层 目 录 结 构 图 .................................................................................................................4-1图 5-1 NOR Flash(32MB) 地 址 空 间 分 配 示 意 图 ( 仅 供 参 考 )..................................................................5-2图 5-2 串 口 设 置 ................................................................................................................................................5-5图 5-3 发 送 文 件 窗 口 ........................................................................................................................................5-5文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司iii


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南表 格 目 录表 格 目 录表 1-1 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 的 各 部 分 软 件 描 述 ..........................................................................................1-2表 2-1 U-boot 常 用 命 令 说 明 .............................................................................................................................2-3表 2-2 NAND NOR U-boot 相 对 于 U-boot 修 改 的 命 令 说 明 ..........................................................................2-7表 2-3 U-boot 常 用 环 境 变 量 说 明 .....................................................................................................................2-9表 3-1 mkimage 参 数 表 ....................................................................................................................................3-12表 4-1 嵌 入 式 系 统 中 可 忽 略 的 目 录 说 明 .........................................................................................................4-2表 4-2 JFFS2 参 数 表 ..........................................................................................................................................4-5文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司v


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南1 开 发 环 境1 开 发 环 境1.1 嵌 入 式 开 发 环 境由 于 嵌 入 式 单 板 的 资 源 有 限 , 不 能 在 单 板 上 运 行 开 发 和 调 试 工 具 , 通 常 需 要 交 叉 编 译调 试 的 方 式 进 行 开 发 和 调 试 , 即 “ 宿 主 机 + 目 标 机 ( 评 估 板 )” 的 形 式 。 宿 主 机 和 目 标机 一 般 采 用 串 口 连 接 , 也 可 同 时 通 过 网 口 或 者 JTAG 连 接 , 如 图 1-1 所 示 。宿 主 机 和 目 标 机 的 处 理 器 一 般 不 相 同 。 宿 主 机 需 要 建 立 适 合 于 目 标 机 的 交 叉 编 译 环境 。 程 序 在 宿 主 机 上 经 过 “ 编 译 - 连 接 - 定 位 ” 得 到 可 执 行 文 件 。 通 过 一 定 的 方 法 将可 执 行 文 件 烧 写 到 目 标 机 中 , 然 后 在 目 标 机 上 运 行 。目 标 机 上 的 Bootloader 启 动 后 , 目 标 机 中 的 操 作 信 息 通 过 串 口 或 者 网 口 输 出 到 宿 主 机上 显 示 。 在 宿 主 机 上 的 控 制 台 中 输 入 命 令 , 可 以 控 制 目 标 机 。图 1-1 嵌 入 式 开 发 图 例宿 主 机JTAGRS232目 标 机Ethernet文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司1-1


1 开 发 环 境<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南1.2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 通 常 包 括 <strong>Linux</strong> 服 务 器 、Windows 工 作 台 和 <strong>Hi3520</strong> DMEB( 目标 板 ), 三 者 同 处 于 一 个 网 络 中 , 如 图 1-2 所 示 。图 1-2 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境<strong>Linux</strong>服 务 器EthernetWindows工 作 台RS232JTAG目 标 板在 <strong>Linux</strong> 服 务 器 上 建 立 交 叉 编 译 环 境 ,Windows 工 作 台 通 过 串 口 和 网 口 与 <strong>Hi3520</strong>DMEB 连 接 , 开 发 人 员 可 以 在 Windows 工 作 台 中 进 行 程 序 开 发 或 者 远 程 登 录 到 <strong>Linux</strong>服 务 器 进 行 程 序 开 发 。 各 部 分 具 体 软 件 介 绍 如 表 1-1 所 示 。开 发 环 境 中 使 用 了 Windows 工 作 台 , 实 际 上 很 多 工 作 也 可 以 在 <strong>Linux</strong> 服 务 器 上 完 成 , 如 使 用minicom 代 替 超 级 终 端 等 , 用 户 可 自 行 选 择 。表 1-1 <strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境 的 各 部 分 软 件 描 述软 件Windows 工 作 台<strong>Linux</strong> 服 务 器操 作 系 统应 用 软 件操 作 系 统应 用 软 件描 述Windows 98/me/2000/XP。putty、 超 级 终 端 、tftp 服 务 器 、ADS/RealViewDebugger 等 软 件 。无 特 别 要 求 , 可 为 Redhat、Debian 等 。 内 核 版 本支 持 2.6.x 或 者 2.4.x。 安 装 时 建 议 选 择 完 全 安 装 。NFS、telnetd、samba、VIM、arm 交 叉 编 译 环 境(Binutils 版 本 2.16.91,Gcc 版 本 3.4.3) 等 。其 他 应 用 软 件 根 据 具 体 开 发 需 要 而 定 , 通 常 系 统都 已 默 认 安 装 , 只 要 适 当 配 置 即 可 。<strong>Hi3520</strong> DMEB引 导 程 序 U-boot。 基 于 U-boot-2008.10 开 发 而 成 。操 作 系 统Hisilicon <strong>Linux</strong>( 简 称 Hi<strong>Linux</strong>)。Hi<strong>Linux</strong> 内 核 基于 <strong>Linux</strong> 标 准 内 核 2.6.24 版 本 移 植 开 发 , 根 文 件 系统 基 于 busybox 1.1.2 版 本 制 作 而 成 。应 用 软 件 包 含 telnetd、gdb server 等 <strong>Linux</strong> 常 用 命 令 。1-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南1 开 发 环 境软 件描 述程 序 开 发 库 uClibc-0.9.30 版 本 。1.3 搭 建 <strong>Linux</strong> 开 发 环 境1.3.1 安 装 <strong>Linux</strong> 服 务 器1.3.2 安 装 交 叉 编 译 工 具建 议 选 择 常 用 的 <strong>Linux</strong> 发 行 版 , 便 于 寻 找 各 类 技 术 资 源 。 例 如 :• RedHat 较 新 的 发 行 版 如 RedHat Fedora Core 系 列 和 Redhat Enterprise <strong>Linux</strong>。• RedHat 较 老 的 发 行 版 如 RedHat 9.0 等 。推 荐 使 用 较 新 版 本 , 以 方 便 获 取 各 类 资 源 , 如 Fedora Core 系 列 。Debian 的 各 类 发 行 版 也 是 常 用 的 。 使 用 Debian 的 好 处 是 各 类 安 装 包 都 可 以 随 时 在 线 更新 , 各 类 软 件 包 资 源 也 很 丰 富 。1.3.3 安 装 <strong>Hi3520</strong> SDK使 用 从 网 络 等 渠 道 得 到 的 交 叉 编 译 工 具 可 能 与 使 用 的 内 核 并 不 配 套 , 可 能 造 成 开 发 过程 中 一 些 不 可 预 料 的 问 题 。可 以 使 用 从 其 它 渠 道 得 到 的 ARM 交 叉 编 译 工 具 ( 如 : 网 络 下 载 ), 就 需 要 用 户 熟 悉 交叉 编 译 环 境 的 安 装 及 使 用 过 程 。 建 议 使 用 与 <strong>Hi3520</strong> SDK 配 套 的 交 叉 编 译 环 境 , 具 体 请参 见 《<strong>Hi3520</strong> 媒 体 处 理 软 件 开 发 指 南 》。<strong>Hi3520</strong> SDK 是 基 于 <strong>Hi3520</strong> DMEB 的 软 件 开 发 工 具 , 包 含 了 在 <strong>Linux</strong> 相 关 应 用 开 发 时使 用 的 各 种 工 具 及 其 源 代 码 , 是 用 户 开 发 中 最 基 本 的 平 台 软 件 。 将 <strong>Hi3520</strong> SDK 安 装 到<strong>Linux</strong> 服 务 器 中 的 步 骤 如 下 所 示 :步 骤 1 拷 贝 。 将 <strong>Hi3520</strong> _V100R001XX.tgz(XX 是 版 本 号 ) 拷 贝 到 <strong>Linux</strong> 服 务 器 上 。步 骤 2 解 压 。 解 压 文 件 , 使 用 命 令 :tar –zxf <strong>Hi3520</strong> _V100R001XX.tgz, 过 程 中 没 有 提 示 信息 , 请 等 待 命 令 执 行 完 毕 。步 骤 3 安 装 。 解 压 完 成 后 , 进 入 <strong>Hi3520</strong> _V100R001XX 目 录 , 执 行 ./ sdk.unpack, 执 行 完 毕 后安 装 成 功 。 如 果 用 户 不 是 root 权 限 , 安 装 过 程 中 必 要 的 时 候 会 提 示 输 入 root 密 码 或sudo 密 码 。---- 结 束文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司1-3


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南2 U-boot2 U-boot2.1 U-boot 简 介U-boot 是 在 U-boot-2008.10( 或 以 上 版 本 ) 基 础 上 进 行 开 发 的 。Bootloader 是 在 操 作 系 统 内 核 运 行 之 前 运 行 的 一 段 小 程 序 。 通 过 这 段 小 程 序 , 可 以 实 现以 下 功 能 :• 初 始 化 硬 件 设 备 。• 建 立 内 存 空 间 的 映 射 图 。• 使 系 统 的 软 硬 件 环 境 处 于 一 个 合 适 的 状 态 , 为 最 终 调 用 操 作 系 统 内 核 准 备 好 正 确的 环 境 。U-boot 除 了 作 为 一 个 Bootloader 外 , 还 是 一 个 烧 写 器 。 在 U-boot 下 , 可 以 通 过 串 口 、网 口 下 载 <strong>Linux</strong> 内 核 或 者 应 用 程 序 到 内 存 或 Flash 中 。如 无 特 别 说 明 , 本 文 中 U-boot 是 包 含 NOR Flash 、NAND Flash 两 种 启 动 合 一 的 版 本 , 它 们 的启 动 、 编 译 和 烧 写 过 程 大 致 相 同 , 涉 及 到 的 命 令 和 环 境 变 量 略 有 不 同 , 请 参 见 “2.5 U-boot 常 用命 令 ” 和 “2.6 U-boot 环 境 变 量 ”。2.2 启 动 U-boot给 <strong>Hi3520</strong> DMEB 上 电 后 , 在 控 制 台 上 出 现 命 令 提 示 符 。<strong>Hi3520</strong> DMEB 的 标 准 输 入 、标 准 输 出 重 定 位 到 UART0。UART0 连 接 到 调 试 主 机 (Host) 上 , 调 试 主 机 是 Windows工 作 台 , 采 用 Windows 超 级 终 端 ( 如 果 调 试 主 机 是 <strong>Linux</strong> 服 务 器 , 采 用 MiniCOM)。UART0 的 连 接 设 置 为 :• 波 特 率 :115200• 数 据 位 :8• 奇 偶 校 验 : 无• 停 止 位 :1• 流 控 : 无系 统 上 电 后 , 控 制 台 上 有 如 下 类 似 的 信 息 显 示 , 表 示 U-boot 已 经 启 动 :U-Boot 2008.10 (Jun 17 2009 - 15:35:38)文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司2-1


2 U-boot<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南DRAM: 128 MBIn: serialOut: serialErr: serialMAC: CE-C2-32-88-B5-11hisilicon #2.3 编 译 U-boot目 录 和 文 件 名 中 的 hi3520v100_XXM.h 表 示 总 线 频 率 为 XXMHz。U-boot 可 以 通 过 修 改 配 置 文 件 include/configs/hi3520v100_XXM.h 实 现 某 些 具 体 属 性 的配 置 。 如 想 了 解 相 关 参 数 的 具 体 含 义 及 功 能 请 认 真 阅 读 U-boot-2008.10/README 文件 。编 译 U-boot 操 作 为 : 进 入 U-boot 所 在 目 录 , 输 入 如 下 命 令 进 行 配 置 操 作 。hisilicon$make hiconfighisilicon$make all如 果 编 译 过 程 中 编 译 example 目 录 时 出 现 错 误 , 进 入 example 目 录 , 执 行 一 下 touch *命 令 :hisilicon$cd examplehisilicon$touch *在 当 前 路 径 下 可 以 看 到 编 译 生 成 的 目 标 文 件 :• elf 文 件 :u-boot• 二 进 制 文 件 :u-boot.bin2.4 烧 写 U-boot烧 写 U-boot 的 具 体 内 容 请 参 见 《<strong>Hi3520</strong> U-boot 移 植 应 用 指 南 》。2.5 U-boot 常 用 命 令U-boot 常 用 命 令 的 描 述 如 表 2-1 所 示 。2-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南2 U-boot• U-boot 支 持 命 令 自 动 补 齐 , 当 输 入 命 令 的 部 分 字 母 时 , 按 下 Tab 键 , 系 统 将 自 动 补 齐 或 者 列出 可 能 的 命 令 列 表 。• 表 2-1 中 Flash 表 示 三 种 Flash 下 均 可 以 使 用 该 命 令 。 仅 NOR Flash 可 以 使 用 的 命 令 则 使 用NOR Flash。表 2-1 U-boot 常 用 命 令 说 明命 令描 述? 得 到 所 有 命 令 列 表 或 者 列 出 某 个 命 令 的 帮 助 。用 法 :? [command ...]说 明 : 列 出 命 令 的 帮 助 信 息 。 当 不 带 参 数 时 , 列 出 所 有 命 令 及 简 要 说明 。help help 同 ?。printenv 打 印 环 境 变 量 。用 法 :printenv [name ...]说 明 : 打 印 环 境 变 量 。 当 不 带 参 数 时 , 打 印 所 有 变 量 。setenv 设 置 或 者 删 除 变 量 。用 法 :setenv name [ value ]说 明 :name 一 般 是 U-boot 环 境 变 量 的 名 字 , 也 可 以 是 用 户 自 定 义 的 变量 。 当 value 为 空 时 , 删 除 变 量 “name”, 否 则 设 置 变 量 “name”, 且值 为 “value”。saveenv 保 存 变 量 。用 法 :saveenv说 明 : 保 存 变 量 及 其 值 至 Flash。ping 用 于 简 单 判 断 目 的 主 机 网 络 状 态 或 本 机 网 络 工 作 状 态 。用 法 :ping 说 明 :ipaddr 表 示 目 的 主 机 的 IP。 当 网 络 工 作 正 常 时 , 结 果 显 示 “host is alive”, 否 则 显 示 “ping failed;host is not alive”。loadb 通 过 串 口 Kermit 协 议 下 载 二 进 制 文 件 。用 法 :loadb [ addr ] [ baud ]说 明 :addr 参 数 为 存 储 文 件 的 地 址 ,baud 为 串 口 下 载 速 率 。 输 入 命 令后 , 在 超 级 终 端 的 菜 单 中 选 择 [ 传 送 / 发 送 文 件 ], 在 弹 出 的 窗 口 中 , 协 议必 须 选 择 “Kermit”。例 子 :loadb 0xE1000000 115200注 意 : 使 用 loadb, 只 能 下 载 到 内 存 中 , 不 能 直 接 下 载 到 Flash。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司2-3


2 U-boot<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南命 令描 述tftp 从 tftp 服 务 器 中 下 载 文 件 至 内 存 或 者 NOR Flash 中 。用 法 :tftp addr file说 明 : 将 file 文 件 下 载 到 地 址 为 addr 的 内 存 或 者 NOR Flash 中 。注 意 : 使 用 tftp 时 , 必 须 先 设 置 好 网 络 配 置 , 使 用 setenv 配 置 ipaddr、netmask、serverip 参 数 。例 :hisilicon > setenv ipaddr 192.168.1.1 /* 设 置 IP 地 址 */hisilicon > setenv netmask 255.255.255.0 /* 设 置 子 网 掩 码 */hisilicon > setenv serverip 192.168.1.254 /* 设 置 服 务 器 地 址 */hisilicon > tftp 0xE1000000 vmlinux说 明 : 把 tftp 服 务 器 (IP 为 环 境 变 量 中 设 置 的 serverip) 中 vmlinux 通 过tftp 写 入 到 内 存 0xE1000000 处 。cp 拷 贝 内 存 。用 法 :cp [.b,.w,.l ] source target count说 明 : 从 内 存 地 址 source 中 拷 贝 到 target, 大 小 为 count。 实 际 拷 贝 的 大小 , 因 命 令 的 不 同 而 不 同 。使 用 cp.b, 拷 贝 1%count 个 字 节 。使 用 cp.w, 拷 贝 2%count 个 字 节 。使 用 cp.l, 拷 贝 4%count 个 字 节 。简 单 使 用 cp 时 , 等 价 于 cp.1。说 明 :source 和 target 可 以 是 DDR SDRAM 的 地 址 范 围 , 也 可 以 是 NORFlash 的 地 址 范 围 。protect NOR Flash 写 保 护 操 作 。用 法 一 :protect on|off start end说 明 : 对 Flash 从 地 址 start 到 地 址 end 区 域 进 行 写 保 护 操 作 。注 意 :Flash 的 写 保 护 操 作 必 须 以 块 为 最 小 单 位 , 因 此 地 址 start 必 须 为某 块 的 起 始 地 址 ,end 地 址 则 必 须 为 某 块 的 结 束 地 址 , 如 Flash 的 基 地 址为 0x80000000, 块 大 小 为 0x20000, 则 操 作 protect on 0x800000000x8001FFFF 为 可 操 作 的 。 而 protect on 0x80000003 0x8001FFFF 或 者protect off 0x80000000 0x8001FF00 均 不 可 操 作 。用 法 二 :protect on|off N:SF [ -SL ]说 明 : 对 第 N 块 Flash 的 SF 扇 区 到 SL 扇 区 进 行 写 保 护 操 作 。用 法 三 :protect on|off bank N说 明 : 对 第 N 块 Flash 进 行 写 保 护 操 作 。用 法 四 :protect on|off all说 明 : 对 所 有 Flash 进 行 写 保 护 操 作 。2-4海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南2 U-boot命 令描 述go 跳 转 到 指 定 地 址 , 执 行 代 码 。用 法 :go addr [ arg … ]说 明 : 执 行 地 址 addr 处 的 二 进 制 代 码 , 可 传 递 arg 参 数 。bootm 设 置 运 行 环 境 , 并 开 始 执 行 二 进 制 代 码 。用 法 :bootm [ addr [ arg … ] ]说 明 : 执 行 addr 地 址 处 的 代 码 , 要 求 二 进 制 代 码 为 mkimage 处 理 过 的 二进 制 文 件 。flinfo 列 出 NOR Flash 信 息 。用 法 :flinfo [ N ]说 明 : 不 带 参 数 时 列 出 所 有 NOR Flash 的 信 息 , 否 则 列 出 第 N 块 NORFlash 的 信 息 。md 显 示 内 存 区 的 内 容 。用 法 :md [.b, .w, .l ] address说 明 : 显 示 地 址 address 内 存 区 内 容 。使 用 md.b, 显 示 单 位 为 1 字 节 。使 用 md.w, 显 示 单 位 为 2 字 节 。使 用 md.l, 显 示 单 位 为 4 字 节 。简 单 使 用 md 时 , 等 价 于 md.l。mm 修 改 内 存 区 的 内 容 。 地 址 自 动 增 加 。用 法 :mm [.b, .w, .l ] address说 明 : 修 改 地 址 address 内 存 区 内 容 。使 用 mm.b, 每 次 修 改 1 字 节 。使 用 mm.w, 每 次 修 改 2 字 节 。使 用 mm.l, 每 次 修 改 4 字 节 。简 单 使 用 mm 时 , 等 价 于 mm.l。nm 修 改 内 存 区 的 内 容 , 地 址 不 自 动 增 加 。用 法 :nm [.b, .w, .l ] address说 明 : 修 改 地 址 address 内 存 区 内 容 。使 用 nm.b, 每 次 修 改 1 字 节 。使 用 nm.w, 每 次 修 改 2 字 节 。使 用 nm.l, 每 次 修 改 4 字 节 。简 单 使 用 nm 时 , 等 价 于 nm.l。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司2-5


2 U-boot<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南命 令描 述mw 填 充 内 存 。用 法 :mw [.b, .w, .l ] address value [ count ]说 明 : 设 置 从 地 址 address 开 始 的 count 大 小 的 内 存 为 value。使 用 mw.b, 填 充 内 存 大 小 为 1%count 字 节 。使 用 mw.w, 填 充 内 存 大 小 为 2%count 字 节 。使 用 mw.l, 填 充 内 存 大 小 为 4%count 字 节 。简 单 使 用 mw 时 , 等 价 于 mw.l。例 子 :mw.b 0xE1000000 FF 10000说 明 : 把 内 存 0xE1000000 开 始 的 0x10000 字 节 设 为 0xFF。cmp 比 较 两 块 内 存 区 。用 法 :cmp [.b, .w, .l ] addr1 addr2 count说 明 : 比 较 地 址 addr1 和 地 址 addr2, 大 小 count 的 内 存 内 容 进 行 比 较 。使 用 cmp.b, 比 较 大 小 为 1%count 字 节 。使 用 cmp.w, 比 较 大 小 为 2%count 字 节 。使 用 cmp.l, 比 较 的 大 小 为 4%count 字 节 。简 单 使 用 cmp 时 , 等 价 于 cmp.l。erase 擦 除 NOR Flash 内 容 。用 法 一 :erase start end说 明 : 擦 除 地 址 从 “start” 到 地 址 “end” 区 域 的 内 容 。注 意 :Flash 的 擦 除 操 作 必 须 以 块 为 最 小 单 位 , 因 此 地 址 start 必 须 为 某块 的 起 始 地 址 ,end 地 址 则 必 须 为 某 块 的 结 束 地 址 , 如 Flash 的 基 地 址 为0x80000000, 块 大 小 为 0x20000, 则 操 作 erase 0x80000000 0x8001FFFF为 可 操 作 的 。 而 erase 0x80000003 0x8001FFFF 或 者 erase 0x800000000x8001FF00 均 不 可 操 作 。用 法 二 :erase N:SF [ -SL ]说 明 : 擦 除 第 N 块 NOR Flash 的 从 扇 区 SF 到 SL 扇 区 的 内 容 。用 法 三 :erase bank N说 明 : 擦 除 第 N 块 NOR Flash 的 内 容 。用 法 四 :erase all说 明 : 擦 除 所 有 NOR Flash 的 内 容 。注 : 以 上 命 令 必 须 在 同 一 行 内 输 入 。由 于 NORFlash、NANDFlash 的 存 储 方 式 不 同 , 在 NAND Flash 上 的 操 作 , 详 细 信 息 请参 见 表 2-2。2-6海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南2 U-boot表 2-2 NAND NOR U-boot 相 对 于 U-boot 修 改 的 命 令 说 明命 令描 述? nand 得 到 所 有 nand 命 令 的 帮 助 。用 法 :?nand说 明 : 列 出 nand 命 令 的 帮 助 信 息 。nand info 显 示 所 有 nand 设 备 的 信 息 。用 法 :nand info举 例 :nand info说 明 : 本 机 输 下 出 如 下 信 息 , 检 测 到 一 个 nand 设 备 , 大 小 为 128M,块 大 小 为 128K。输 出 :Device 0: NAND 128MiB 3,3V 8-bit, sector size 128 KiBNanddevice查 看 具 体 某 个 nand 设 备 的 信 息 。用 法 :nand device [device number]举 例 :nand device 0说 明 : 显 示 设 备 0 的 说 明 。输 出 :Device 0: NAND 128MiB 3,3V 8-bit... is now currentNand write 用 于 向 NAND Flash 中 写 入 数 据 。用 法 :nand write mem_addr start_offset count举 例 :tftp 0xE1000000 u-boot.bin < 将 u-boot.bin 下 载 到 内 存 中 >nand write 0xE1000000 0x0 0x100000 < 将 内 存 中 起 始 地 址 为0xc1000000 中 的 内 容 写 入 nand flash 偏 移 地 址 为 0 的 地 方 , 大 小 为0x100000。说 明 :该 操 作 是 通 过 内 存 中 转 实 现 的 , 使 用 该 命 令 之 前 需 要 先 使 用 表 2-1中 介 绍 的 tftp 命 令 , 把 内 容 下 载 到 内 存 中 , 然 后 再 从 内 存 中 写 入 nandflash 中 。Nandwrite.yaffs专 用 于 向 NAND Flash 中 下 载 yaffs2 文 件 系 统 。用 法 :nand write.yaffs mem_addr start_offset fs_size举 例 :tftp 0xE1500000 rootfs-FULL_REL-Flash.yaffs2nand write.yaffs 0xE1500000 0x300000 0x702600 < 这 个 参 数 是yaffs2 文 件 系 统 镜 像 的 实 际 文 件 长 度 , 注 意 这 里 是 16 进 制 的 数 >说 明 :tftp E1500000 rootfs-FULL_REL-Flash.yaffs2 扫 行 完 之 后 , 会 打 印出 Bytes transferred = 7809760 (702600 hex)。 参 数 fs_size 需 要 是 yaffs2文 件 系 统 的 实 际 大 小 , 否 则 会 出 错 , 其 它 参 数 含 义 同 nand write。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司2-7


2 U-boot<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南命 令描 述Nand read 从 NAND Flash 中 读 取 数 据 到 内 存 中 。用 法 :nand read mem_addr start_offset count举 例 :nand read 0xE1300000 0x100000 0x130000说 明 : 将 偏 移 地 址 为 0x100000 处 开 始 ,0x130000 大 小 的 内 容 读 取 到 以0xc1300000 为 起 始 的 内 存 中 。Nand erase用 来 擦 除 NAND Flash。用 法 一 :nand erase start_offset count举 例 :nand erase 0 100000说 明 : 用 来 擦 除 从 偏 移 地 址 0x0 开 始 的 0x100000 大 小 空 间 。用 法 二 :nand erase start_offset举 例 :nand erase0x0说 明 : 用 来 擦 除 0x0 开 始 的 所 有 空 间 , 即 全 部 擦 除 。Nand bad 用 来 探 测 NAND Flash 的 坏 块 。用 法 :nand bad举 例 :nand bad说 明 : 显 示 NAND Flash 中 的 坏 块 信 息Nand dump 显 示 NAND Flash 的 数 据 信 息 。用 法 :nand dump start_offset举 例 :nand dump 0x0说 明 : 显 示 偏 移 地 址 为 0 开 始 的 2048Bytes 的 数 据 信 息 和 64Bytes 的OOB 信 息 。内 存 操 作 命 令 如 md,mw,mm 等 对 于 NAND Flash 是 不 适 用 的 , 命 令 go 也 是 不 适 用 于 NANDFlash, 因 为 NAND Flash 不 支 持 XIP(Execute In Place)。2.6 U-boot 环 境 变 量使 用 U-boot 常 用 命 令 “setenv” 可 以 设 置 U-boot 环 境 变 量 , 表 2-3 列 出 常 用 环 境 变 量及 其 设 置 格 式 等 信 息 。2-8海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南2 U-boot表 2-3 U-boot 常 用 环 境 变 量 说 明环 境 变 量描 述ipaddr 设 置 单 板 的 IP 地 址 。格 式 :xxx.xxx.xxx.xxx例 子 :setenv ipaddr 192.168.0.100说 明 : 设 置 IP 地 址 为 192.168.0.100。serverip 设 置 服 务 端 IP 地 址 , 在 tftp 中 被 使 用 。格 式 :xxx.xxx.xxx.xxx例 子 :setenv serverip 192.168.0.10说 明 : 设 置 tftp 服 务 器 IP 地 址 为 192.168.0.10。netmask 设 置 子 网 掩 码 。格 式 :xxx.xxx.xxx.xxx例 子 :setenv netmask 255.255.255.0说 明 : 设 置 子 网 掩 码 为 255.255.255.0。gatewayip 设 置 网 关 。格 式 :xxx.xxx.xxx.xxx例 子 :setenv gatewayip 192.168.0.1说 明 : 设 置 网 关 IP 地 址 为 192.168.0.1。bootargs 启 动 OS 时 的 启 动 参 数 。格 式 :arg1=value1 arg2=value2 … argn=valuen例 子 :setenv bootargs 'mem=32M console=ttyAMA0,115200root=/dev/mtdblock/1 rootfstype=yaffs2mtdparts=hinand:3M(n1),32M(n2),32M(n3),48M(n4)'说 明 : 传 递 参 数 , 包 括 内 存 大 小 , 根 文 件 系 统 设 备 等 。bootcmd设 置 U-boot 自 动 启 动 及 执 行 命 令 。 启 动 延 时 依 据 bootdelay 变 量 值 ( 详见 bootdelay 参 数 描 述 ), 若 bootdelay 未 被 设 置 , 则 默 认 延 时 时 间 为 2秒 。格 式 :cmd1; cmd2; …; cmdn例 子 1:setenv bootcmd bootm 0x80100000说 明 : 设 置 启 动 后 自 动 执 行 0x80100000 处 的 代 码 , 启 动 方 式 为 NORFlash。例 子 2:setenv bootcmd ‘printenv;bootm 0x80100000’说 明 : 设 置 启 动 后 自 动 依 次 执 行 打 印 参 数 和 执 行 0x80100000 处 的 代 码 。注 意 : 多 个 参 数 时 , 参 数 之 间 使 用 分 号 相 隔 。 将 整 个 参 数 字 串 用 单 引 号包 含 起 来 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司2-9


2 U-boot<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南环 境 变 量bootdelay描 述设 置 自 启 动 延 时 时 间 。 单 位 为 秒 。 只 有 当 bootcmd 变 量 被 设 置 后 , 该 变量 才 有 效 。 该 变 量 值 范 围 为 大 于 等 于 -1 的 整 数 。 当 设 置 为 -1 时 , 关 闭自 启 动 的 功 能 。格 式 :value例 子 1:setenv bootdelay 4说 明 : 设 置 自 启 动 延 时 4 秒 。例 子 2:setenv bootdelay -1说 明 : 关 闭 自 启 动 功 能 。提 示 : 在 延 迟 时 间 内 可 按 任 意 键 切 换 到 命 令 行 模 式 。注 意 : 在 产 品 开 发 调 试 阶 段 请 勿 设 置 延 迟 时 间 为 0。 若 设 置 , 可 以 在 启动 瞬 间 使 用 CTRL+C 中 断 程 序 而 进 入 命 令 行 模 式 。注 : 以 上 命 令 必 须 在 同 一 行 内 输 入 。2-10海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南3 <strong>Linux</strong> 内 核3 <strong>Linux</strong> 内 核3.1 内 核 源 代 码成 功 安 装 <strong>Hi3520</strong> SDK 后 , 内 核 源 代 码 已 存 放 于 SDK 目 录 下 的 source/os 目 录 中 , 用 户可 直 接 进 入 目 录 进 行 相 关 操 作 。 从 ARM 的 内 核 不 需 要 编 译 , 直 接 使 用 SDK 中 提 供 的二 进 制 文 件 即 可 。3.2 配 置 内 核如 果 对 内 核 和 <strong>Hi3520</strong> 平 台 没 有 足 够 了 解 , 请 勿 修 改 默 认 配 置 。 但 可 增 加 需 要 的 模 块 。配 置 内 核 的 操 作 如 下 :hisilicon$cd source/os/linux-2.6.14hisilicon$make mrproperhisilicon$make menuconfig其 中 “make mrproper” 为 可 选 , 用 户 可 直 接 通 过 “make menuconfig” 进 行 内 核 配 置 。如 果 执 行 了 make mrporper, 必 须 重 新 加 载 .config 文 件 , 具 体 步 骤 为 :步 骤 1 执 行 make menuconfig。步 骤 2 选 择 “Load an Alternate Configuration File” 菜 单 项 。步 骤 3 输 入 arch/arm/configs /hi3520v100_full_release_defconfig。步 骤 4 选 择 需 要 的 模 块 。步 骤 5 选 择 完 毕 后 , 保 存 并 退 出 。---- 结 束文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司3-11


3 <strong>Linux</strong> 内 核<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南也 可 以 手 动 拷 贝 .config 文 件 , 方 法 为 :cp arch/arm/configs/hi3520v100_full_ release _defconfig .config。• 配 置 操 作 中 可 以 使 用 make config 和 make xconfig 替 代 make menuconfig, 但 make config 界 面不 直 观 、 操 作 繁 琐 。make xconfig 需 要 XWindow 支 持 。 所 以 建 议 使 用 make menuconfig, 便于 远 程 操 作 , 而 且 界 面 比 较 直 观 。3.3 编 译 内 核配 置 保 存 后 , 可 直 接 输 入 “make” 命 令 编 译 内 核 , 此 时 需 要 等 待 几 分 钟 。如 果 编 译 过 程 中 出 现 错 误 , 可 执 行 “make clean” 或 者 “make mrproper”, 然 后 重 新 运 行“make menuconfig”, 加 载 配 置 文 件 , 最 后 执 行 “make”。3.4 使 用 mkimage 工 具内 核 编 译 成 功 后 , 在 arch/arm/boot 目 录 下 生 成 内 核 文 件 , 其 中 包 括 压 缩 文 件 zImage 和未 压 缩 文 件 Image。在 U-boot 中 使 用 bootm 命 令 引 导 内 核 , 必 须 使 用 mkimage 工 具 对 zImage 文 件 进 行 处理 , 增 加 相 应 的 入 口 信 息 等 。mkimage 存 放 在 SDK 目 录 下 的 tools/bin 中 。 为 了 方 便 地 访 问 这 下 面 的 命 令 , 可 能 需 要 设 置PATH 环 境 变 量 , 也 可 以 将 mkimage 拷 贝 到 /usr/local/bin 目 录 中 。具 体 操 作 如 下 :hisilicon$ mkimage -A arm -T kernel -C none -a 0xe0800000 -e 0xe0800000 -n hilinux -d arch/arm/boot/zImage hikernel参 数 说 明 如 表 3-1 所 示 。表 3-1 mkimage 参 数 表参 数ATCaen说 明指 定 体 系 结 构 类 型 ARM指 定 image 类 型 为 kernel设 置 压 缩 类 型 none设 置 加 载 地 址设 置 入 口 地 址设 置 image 名 字3-12海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南3 <strong>Linux</strong> 内 核参 数d说 明需 要 处 理 的 文 件执 行 上 面 的 命 令 后 将 在 当 前 目 录 下 生 成 名 为 hikernel 的 文 件 ( 内 核 映 像 文 件 )。 该 内 核映 像 文 件 可 以 被 下 载 到 单 板 的 任 何 地 址 ( 除 了 覆 盖 U-boot 和 解 压 目 的 地 址 等 特 殊 位置 ) 运 行 , 如 烧 写 到 Flash 或 者 放 在 内 存 中 。最 好 将 “ 加 载 地 址 ” 和 “ 入 口 地 址 ” 设 置 成 相 同 , 并 且 都 是 在 内 存 中 的 地 址 。“ 加 载 地 址 ” 用 于U-boot 将 内 核 image 文 件 拷 贝 到 该 地 址 ,“ 入 口 地 址 ” 用 于 U-boot 加 载 内 核 image 之 后 跳 转 到 该地 址 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司3-13


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4 根 文 件 系 统4 根 文 件 系 统4.1 根 文 件 系 统 简 介<strong>Linux</strong> 的 目 录 结 构 的 最 顶 层 是 一 个 被 称 为 “/” 的 根 目 录 。 系 统 加 载 <strong>Linux</strong> 内 核 之 后 ,就 会 挂 载 一 个 设 备 到 根 目 录 上 。 存 在 于 这 个 设 备 中 的 文 件 系 统 被 称 为 根 文 件 系 统 。 所有 的 系 统 命 令 、 系 统 配 置 以 及 其 他 文 件 系 统 的 挂 载 点 都 位 于 这 个 根 文 件 系 统 中 。根 文 件 系 统 通 常 存 放 于 内 存 和 Flash 中 , 或 是 基 于 网 络 的 文 件 系 统 。 根 文 件 系 统 中 存 放了 嵌 入 式 系 统 使 用 的 所 有 应 用 程 序 、 库 以 及 其 他 需 要 用 到 的 服 务 。 图 4-1 列 出 了 根 文件 系 统 的 顶 层 目 录 。图 4-1 根 文 件 系 统 顶 层 目 录 结 构 图/binbootdevetchomelibmntoptprocrootsbintmpusrvar根 目 录基 本 命 令 的 可 执 行 文 件内 核 映 像 以 及 启 动 时 需 要 用 到 的 一 些 文 件设 备 文 件系 统 配 置 文 件 , 包 括 启 动 文 件用 户 目 录基 本 库 , 例 如 C 库 和 内 核 模 块临 时 文 件 系 统 的 挂 载 点添 加 的 软 件 包内 核 以 及 进 程 信 息 的 虚 拟 文 件 系 统root 用 户 目 录用 于 系 统 管 理 的 可 执 行 程 序临 时 文 件该 目 录 的 二 级 目 录 包 含 许 多 对 用 户 很 有 用 的 应 用 程 序 和 文 档存 放 系 统 日 志 或 一 些 服 务 程 序 的 临 时 文 件通 用 的 <strong>Linux</strong> 系 统 的 根 文 件 系 统 中 会 包 括 根 文 件 系 统 顶 层 目 录 结 构 图 中 所 有 的 目 录 ,不 过 在 嵌 入 式 系 统 中 , 需 要 精 简 根 文 件 系 统 。 在 嵌 入 式 系 统 中 可 以 被 忽 略 的 目 录 如表 4-1 所 示 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司4-1


4 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南表 4-1 嵌 入 式 系 统 中 可 忽 略 的 目 录 说 明目 录 名 称描 述/home、/mnt、/opt 和 /root 所 有 适 合 提 供 给 多 用 户 扩 展 的 目 录 , 都 可 以 被 忽 略 。/var 和 /tmp /var 是 存 放 系 统 日 志 或 一 些 服 务 程 序 的 临 时 文 件 。/tmp 是 存 放 用 户 的 一 些 临 时 文 件 , 可 以 被 忽 略 。/boot/boot 目 录 一 般 用 于 存 放 内 核 映 像 ,PC 机 启 动 时 一 般 会从 该 位 置 加 载 内 核 , 但 在 嵌 入 式 系 统 中 , 为 了 节 省 空间 , 内 核 映 像 存 在 于 Flash 或 网 络 服 务 器 中 , 而 不 是 在根 文 件 系 统 中 。 因 此 也 可 以 忽 略 这 个 目 录 。注 : 空 目 录 并 不 会 增 大 文 件 系 统 的 体 积 , 如 果 没 有 特 殊 原 因 , 建 议 保 留 这 些 目 录 。4.2 利 用 busybox 制 作 根 文 件 系 统利 用 busybox 制 作 根 文 件 系 统 需 要 先 获 取 busybox 源 代 码 , 然 后 配 置 、 编 译 和 安 装busybox, 操 作 成 功 后 开 始 制 作 根 文 件 系 统 。4.2.1 获 取 busybox 源 代 码4.2.2 配 置 busybox成 功 安 装 SDK 后 ,busybox 完 整 源 代 码 就 存 放 在 source/os 目 录 中 了 。 要 获 取 busybox源 代 码 也 可 以 从 网 站 http://www.busybox.net 下 载 。进 入 busybox 所 在 目 录 , 进 行 配 置 操 作 需 要 输 入 如 下 命 令 :hisilicon$ make menuconfigbusybox 的 配 置 界 面 和 内 核 配 置 相 似 , 其 功 能 选 项 容 易 理 解 , 可 以 根 据 自 己 的 需 求 选 择配 置 。 在 Busybox Settings ---> Build Options 中 注 意 下 面 两 个 选 项 :[*]Build BusyBox as a static binary (no shared libs)[*]Do you want to build BusyBox with a Cross Compiler? (arm-soft_uclibclinux-gnu-)Cross Compiler prefix第 一 个 选 项 选 择 是 否 把 busybox 编 译 成 静 态 链 接 的 可 执 行 文 件 。 如 果 选 择 该 选 项 , 编译 出 来 的 busybox 就 是 静 态 链 接 的 , 运 行 时 不 依 赖 于 动 态 库 , 但 体 积 较 大 ; 清 除 该 选项 将 得 到 动 态 链 接 的 busybox, 体 积 较 小 , 但 需 要 动 态 库 的 支 持 。第 二 个 选 项 是 选 择 交 叉 编 译 器 , 并 配 置 交 叉 编 译 器 为 arm-soft_uclibc-linux-gnu-。 配 置好 后 保 存 并 退 出 。欲 了 解 busybox 各 选 项 含 义 请 参 考 busybox 配 置 帮 助 。4-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4 根 文 件 系 统4.2.3 编 译 和 安 装 busybox编 译 和 安 装 busybox 的 具 体 操 作 如 下 :hisilicon$ makehisilicon$ make install4.2.4 制 作 根 文 件 系 统编 译 并 安 装 成 功 后 , 在 busybox 目 录 下 的 _install 目 录 下 生 成 以 下 目 录 及 文 件 :drwxr-xr-x 2 linux linux 4096 2005-04-22 11:01 binlrwxrwxrwx 1 linux linux 11 2005-04-22 11:01 linuxrc->bin/busyboxdrwxr-xr-x 2 linux linux 4096 2005-04-22 11:01 sbindrwxr-xr-x 4 linux linux 4096 2005-04-22 11:01 usr成 功 安 装 SDK 后 , 在 rootbox/ 目 录 中 存 放 已 制 作 好 的 根 文 件 系 统 。用 户 如 有 需 要 可 在 busybox 的 基 础 上 制 作 根 文 件 系 统 ,busybox 源 代 码 存 放 在 SDK 目录 中 的 source/os/ 目 录 下 。制 作 根 文 件 系 统 的 具 体 操 作 步 骤 如 下 :步 骤 1 hisilicon$mkdir rootboxhisilicon$cd rootboxhisilicon$cp –R source/os/busybox-1.1.2/_intsall/* .hisilicon$mkdir etc dev lib tmp var mnt home proc步 骤 2 配 置 etc、lib、dev 目 录 的 必 需 文 件 。1. etc 目 录 可 参 考 系 统 /etc 下 的 文 件 。 其 中 最 主 要 的 文 件 包 括 inittab、fstab、init.d/rcS文 件 等 , 这 些 文 件 最 好 从 busybox 的 examples 目 录 下 拷 贝 过 来 , 根 据 需 要 自 行 修改 。2. dev 目 录 下 的 设 备 文 件 , 可 以 直 接 从 系 统 中 拷 贝 过 来 或 者 使 用 mknod 命 令 生 成 需要 的 设 备 文 件 。 拷 贝 文 件 时 请 使 用 cp –R file。3. lib 目 录 是 存 放 应 用 程 序 所 需 要 的 库 文 件 , 请 根 据 应 用 程 序 需 要 拷 贝 相 应 的 库 文件 。---- 结 束完 成 以 上 两 个 步 骤 , 一 个 完 整 的 根 文 件 系 统 就 生 成 了 。SDK 软 件 包 中 已 经 包 括 配 置 好 的 完 整 的 根 文 件 系 统 , 如 果 无 特 别 需 求 , 可 直 接 使 用 。 要 添 加 自己 开 发 的 应 用 程 序 , 只 需 将 应 用 程 序 和 相 应 的 库 文 件 拷 贝 到 根 文 件 系 统 的 对 应 目 录 即 可 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司4-3


4 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4.3 文 件 系 统 简 介4.3.1 cramfs4.3.2 JFFS2嵌 入 式 系 统 中 常 用 文 件 系 统 包 括 有 cramfs、JFFS2、NFS 以 及 yaffs2。 它 们 的 特 点 如下 :• cramfs 和 JFFS2 具 有 好 的 空 间 特 性 , 很 适 合 嵌 入 式 产 品 应 用 。• cramfs 为 只 读 文 件 系 统 。• JFFS2 为 可 读 写 文 件 系 统 。• NFS 文 件 系 统 适 用 于 开 发 初 期 的 调 试 阶 段 。• yaffs2 文 件 系 统 只 用 于 NAND Flash。• initrd 采 用 cramfs 文 件 系 统 , 为 只 读 。cramfs 是 针 对 <strong>Linux</strong> 内 核 2.4 之 后 的 版 本 所 设 计 的 一 种 新 型 文 件 系 统 , 使 用 简 单 , 加 载容 易 , 速 度 快 。cramfs 的 优 缺 点 如 下 :• 优 点 : 将 文 件 数 据 以 压 缩 形 式 存 储 , 在 需 要 运 行 时 进 行 解 压 缩 , 能 节 省 Flash 存 储空 间 。• 缺 点 : 由 于 它 存 储 的 文 件 是 压 缩 的 格 式 , 所 以 文 件 系 统 不 能 直 接 在 Flash 上 运 行 。同 时 , 文 件 系 统 运 行 时 需 要 解 压 数 据 并 拷 贝 至 内 存 中 , 在 一 定 程 度 上 降 低 读 取 效率 。 另 外 cramfs 文 件 系 统 是 只 读 的 。如 果 想 要 在 单 板 运 行 的 <strong>Linux</strong> 中 提 供 cramfs 的 能 力 , 必 须 要 在 编 译 内 核 时 把 cramfs 的选 项 加 入 。 在 make menuconfig 后 , 进 入 “File>systems”, 选 择 “miscellaneousfilesystems”, 最 后 选 中 其 中 的 “Compressed ROM file system support”(SDK 里 面 提 供的 内 核 默 认 已 经 选 择 了 该 文 件 系 统 的 支 持 )。mkfs.cramfs 是 用 来 制 作 cramfs 文 件 系 统 映 象 的 工 具 。 通 过 这 个 工 具 处 理 已 经 制 作 好 的根 文 件 系 统 , 就 可 以 生 成 cramfs 文 件 系 统 的 映 象 ( 这 类 似 于 我 们 把 光 盘 制 作 成 ISO 文件 映 像 )。 具 体 操 作 如 下 所 示 :hisilicon$mkfs.cramfs ./rootbox ./cramfs-root.img其 中 ,rootbox 是 之 前 已 经 制 作 好 的 根 文 件 系 统 ,cramfs-root.img 是 生 成 的 cramfs 文 件系 统 映 像 文 件 。JFFS2 是 RedHat 的 David Woodhouse 在 JFFS 基 础 上 改 进 的 文 件 系 统 , 是 用 于 微 型 嵌 入式 设 备 的 原 始 闪 存 芯 片 的 实 际 文 件 系 统 。JFFS2 文 件 系 统 是 日 志 结 构 化 的 可 读 写 的 文件 系 统 。JFFS2 的 优 缺 点 如 下 :• 优 点 : 使 用 了 压 缩 的 文 件 格 式 。 最 重 要 的 特 性 是 可 读 写 操 作 。• 缺 点 :JFFS2 文 件 系 统 挂 载 时 需 要 扫 描 整 个 JFFS2 文 件 系 统 , 因 此 当 JFFS2 文 件系 统 分 区 增 大 时 , 挂 载 时 间 也 会 相 应 的 变 长 。 使 用 JFFS2 格 式 可 能 带 来 少 量 的Flash 空 间 的 浪 费 。 这 主 要 是 由 于 日 志 文 件 的 过 度 开 销 和 用 于 回 收 系 统 的 无 用 存 储4-4海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4 根 文 件 系 统单 元 , 浪 费 的 空 间 大 小 大 致 是 若 干 个 数 据 段 。JFFS2 的 另 一 缺 点 是 当 文 件 系 统 已满 或 接 近 满 时 ,JFFS2 运 行 速 度 会 迅 速 降 低 。 这 是 因 为 垃 圾 收 集 的 问 题 。加 载 JFFS2 文 件 系 统 时 的 步 骤 如 下 :步 骤 1 扫 描 整 个 芯 片 , 对 日 志 节 点 进 行 校 验 , 并 且 将 日 志 节 点 全 部 装 入 内 存 缓 存 。步 骤 2 对 所 有 日 志 节 点 进 行 整 理 , 抽 取 有 效 的 节 点 并 整 理 出 文 件 目 录 信 息 。步 骤 3 找 出 文 件 系 统 中 无 效 节 点 并 且 将 它 们 删 除 。步 骤 4 最 后 整 理 内 存 中 的 信 息 , 将 加 载 到 缓 存 中 的 无 效 节 点 释 放 。---- 结 束由 此 可 以 看 出 虽 然 这 样 能 有 效 地 提 高 系 统 的 可 靠 性 , 但 是 在 一 定 程 度 上 降 低 了 系 统 的速 度 。 尤 其 对 于 较 大 的 闪 存 芯 片 , 加 载 过 程 会 更 慢 。为 了 使 内 核 支 持 JFFS2 文 件 系 统 , 必 须 在 编 译 内 核 时 把 JFFS2 的 选 项 加 入 ( 我 们 发 布的 内 核 默 认 已 经 加 入 了 支 持 )。 在 make menuconfig 后 , 进 入 “File>systems”, 选 择“miscellaneous filesystems”, 最 后 选 中 其 中 的 “Journalling FLASH File System v2 (JFFS2)support” 选 项 (SDK 里 面 提 供 的 内 核 默 认 已 经 选 择 了 该 文 件 系 统 的 支 持 )。JFFS2 的 制 作 方 法 为 :hisilicon$mkfs.jffs2 –d ./rootbox -l –e 0x20000 -o jffs2-root.img其 中 ,mkfs.jffs2 工 具 可 以 从 互 联 网 中 下 载 , 也 可 以 在 SDK 包 中 找 到 。rootbox 为 之 前已 经 制 作 好 的 根 文 件 系 统 。 参 数 说 明 如 表 4-2 所 示 。表 4-2 JFFS2 参 数 表参 数dleo说 明指 定 根 文 件 系 统little-endian 小 端 模 式Flash 的 块 大 小输 出 映 像 文 件4.3.3 NFS使 用 cramfs 和 JFFS2 时 , 需 要 先 将 根 文 件 系 统 映 像 烧 入 Flash, 系 统 启 动 时 会 从 Flash中 加 载 。 但 是 在 系 统 开 发 或 移 植 的 初 期 , 需 要 经 常 修 改 或 者 添 加 应 用 程 序 。 每 修 改 一次 就 需 要 重 新 烧 入 一 次 , 这 样 做 不 仅 耗 费 时 间 , 而 且 对 Flash 的 寿 命 会 有 影 响 。NFS 是 一 种 分 布 式 的 文 件 系 统 , 用 于 共 享 文 件 和 打 印 机 。 它 允 许 用 户 调 用 挂 载 远 端 的文 件 系 统 或 设 备 来 实 现 共 享 , 使 用 方 式 与 挂 载 本 机 的 文 件 系 统 一 样 。NFS 使 用 “ 客 户- 服 务 器 ” 模 型 。 在 这 种 模 型 中 , 服 务 器 输 出 需 要 共 享 的 目 录 , 客 户 可 通 过 网 络 挂 载这 些 目 录 并 访 问 其 中 的 文 件 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司4-5


4 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南使 用 NFS 作 为 根 文 件 系 统 , 内 核 会 根 据 预 先 设 置 好 的 内 核 命 令 参 数 挂 载 一 个 NFS sever中 输 出 的 目 录 作 为 其 根 目 录 。 这 个 过 程 不 需 要 任 何 对 Flash 的 操 作 , 修 改 应 用 程 序 完 全在 <strong>Linux</strong> 服 务 器 中 进 行 , 非 常 适 于 开 发 初 期 的 调 试 阶 段 。在 <strong>Linux</strong> 服 务 器 配 置 NFS 根 文 件 系 统 的 方 法 为 : 编 辑 /etc/exports 配 置 文 件 , 添 加 路 径及 参 数 , 然 后 执 行 /etc/init.d/ nfs start 启 动 NFS 服 务 。以 上 操 作 必 须 超 级 用 户 完 成 , 且 导 出 的 目 录 必 须 是 绝 对 路 径 。 如 果 NFS 服 务 已 经 开启 , 在 配 置 文 件 后 只 需 重 新 启 动 NFS 服 务 , 即 /etc/init.d/ nfs restart。在 <strong>Linux</strong> 服 务 器 上 配 置 好 NFS 根 文 件 系 统 后 , 在 单 板 侧 挂 载 NFS 文 件 系 统 , 具 体 操 作如 下 所 示 :modprobe mmz mmz=ddr,0,0xC2000000,16M /* 插 入 mmz 模 块 , 网 口 驱 动 会 使 用 该 模 块 */modprobe hiether /* 插 入 网 口 驱 动 模 块 */ifconfig eth0 hw ether 00:10:85:18:01:84 /* 配 置 MAC 地 址 */ifconfig eth0 10.85.180.184 netmask 255.255.254.0 /* 配 置 IP 地 址 和 子 网 掩 码 */route add default gw 10.85.180.1 /* 配 置 默 认 网 关 */modprobe nfs /* 插 入 NFS 模 块 */mount -t nfs -o nolock 10.85.180.133:/home/c54122/glibc-nfs /mnt/* 挂 载 NFS 目 录 至 JFFS2 文 件 系 统 的 mnt 目 录 下 */4.3.4 yaffs2yaffs2 是 专 门 为 NANDFlash 设 计 的 嵌 入 式 文 件 系 统 。 它 是 日 志 结 构 的 文 件 系 统 , 提 供了 损 耗 平 衡 和 掉 电 保 护 , 可 以 有 效 地 避 免 意 外 掉 电 对 文 件 系 统 一 致 性 和 完 整 性 的 影响 。yaffs2 的 优 缺 点 如 下 :• 优 点− 专 门 针 对 NANDFlash, 软 件 结 构 得 到 优 化 , 速 度 快 。− 使 用 硬 件 的 spare area 区 域 存 储 文 件 组 织 信 息 , 启 动 时 只 需 扫 描 组 织 信 息 , 启动 比 较 快 。− 采 用 多 策 略 垃 圾 回 收 算 法 , 能 够 提 高 垃 圾 回 收 的 效 率 和 公 平 性 , 达 到 损 耗 平 衡的 目 的 。• 缺 点没 有 采 用 压 缩 的 文 件 格 式 。 包 含 同 样 内 容 ,yaffs2 镜 像 文 件 要 比 jffs2 镜 像 文 件大 。yaffs2 文 件 系 统 在 SDK 中 是 作 为 一 个 模 块 提 供 的 。 只 需 在 yaffs2 代 码 中 的 Makefile 中加 入 所 依 赖 的 内 核 代 码 路 径 , 进 行 编 译 , 即 可 生 成 yaffs2 文 件 系 统 模 块 。yaffs2 镜 像 文 件 的 制 作 和 cramfs 是 一 样 的 , 也 是 通 过 工 具 来 制 作 , 只 需 简 单 的 几 个 参数 , 具 体 如 下 :hisilicon$ mkfs.yaffs2 ./rootbox ./yaffs2-root.img4-6海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南4 根 文 件 系 统其 中 ,rootbox 是 之 前 已 经 制 作 好 的 根 文 件 系 统 ,yaffs2-root.img 是 生 成 的 yaffs2 文 件系 统 镜 像 文 件 。4.3.5 initrd本 节 中 的 U-boot 即 boot loader, 和 具 体 的 存 储 介 质 无 关 。initrd 相 当 于 存 储 介 质 , 它 支 持 的 文 件 系 统 格 式 有 ext2、cramfs 等 , 因 此 内 核 除 了 支 持initrd 之 外 , 还 要 支 持 cramfs 文 件 系 统 。 内 核 需 要 做 如 下 配 置 ,initrd 才 可 以 正 常 工作 :• 进 入 “Device Drivers->Block devices”, 选 择 支 持 “RAM disk support” 和 “InitialRAM disk (initrd) support”。• 进 入 “File>systems”, 选 择 “miscellaneous filesystems”, 最 后 选 中 其 中 的“Compressed ROM file system support”。当 前 SDK 中 都 已 经 默 认 选 中 了 以 上 两 项 。制 作 initrd 的 步 骤 如 下 :步 骤 1 制 作 cramfs 镜 像 文 件 , 具 体 制 作 方 法 请 参 见 “4.3.1 cramfs”。步 骤 2 以 步 骤 1 制 作 的 镜 像 文 件 作 为 输 入 , 制 作 initrd 文 件 , 制 作 命 令 为 “mkimage -A arm -Tramdisk -C none -a 0 -e 0 -n cramfs-initrd -d ./cramfs-image cramfs-initrd”---- 结 束文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司4-7


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南5 烧 写 内 核 和 根 文 件 系 统5 烧 写 内 核 和 根 文 件 系 统5.1 存 储 器 地 址 空 间<strong>Hi3520</strong> DMEB 包 含 两 个 DDR 存 储 器 和 Flash 存 储 器 。DDRA 的 地 址 空 间 从0xC0000000 开 始 ;DDRB 的 地 址 空 间 从 0xE0000000 开 始 ;NOR Flash 的 地 址 空 间 从0x80000000 开 始 ,NAND Flash 的 地 址 空 间 从 0x70000000 开 始 , 各 种 Flash 分 配 方 式相 同 , 下 面 以 NOR Flash 为 例 进 行 说 明 。 具 体 大 小 随 单 板 不 同 , 可 从 单 板 硬 件 手 册 中获 取 。 注 意 , 从 ARM 的 U-boot, 内 核 完 全 不 需 要 重 新 制 作 , 但 是 文 件 系 统 则 可 能 需要 重 新 制 作 , 具 体 请 参 见 《<strong>Hi3520</strong> SDK 安 装 使 用 说 明 》 的 FAQ。Flash 的 使 用 有 特 殊 要 求 :• 0x80000000~0x800FFFFF 保 留 空 间 , 存 放 主 ARM 的 U-boot。• 0x80100000~0x802FFFFF 保 留 空 间 , 供 存 放 主 ARM 的 内 核 。• 0x80300000~0x803FFFFF 保 留 空 间 , 供 存 放 从 ARM 的 U-boot。• 0x80400000~0x805FFFFF 保 留 空 间 , 供 存 放 从 ARM 的 内 核 。• 从 ARM 的 根 文 件 系 统 从 0x80600000 开 始 存 放 , 大 小 可 根 据 应 用 灵 活 改 变 。• 其 余 空 间 可 自 行 分 配 。• 随 单 板 发 布 的 软 件 在 Flash 的 存 放 位 置 如 图 5-1 所 示 。• 其 余 则 保 留 或 有 其 他 用 途 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司5-1


5 烧 写 内 核 和 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南图 5-1 NOR Flash(32MB) 地 址 空 间 分 配 示 意 图 ( 仅 供 参 考 )主 ARM U-boot(1M)主 ARM kernel(2M)从 ARM U-boot(1M)从 ARM kernel(2M)从 ARM RootFs(2M)0x800000000x801000000x803000000x804000000x806000000x80800000主 ARM Rootfs具 体 内 容 请 参 见 《<strong>Hi3520</strong> 样 机 用 户 指 南 》。5.2 操 作 系 统 运 行 空 间在 <strong>Hi3520</strong>DMEB 上 有 双 ARM 核 , 运 行 双 操 作 系 统 , 双 操 作 系 统 运 行 的 物 理 内 存 空 间必 须 分 开 , 防 止 越 界 。 从 ARM 的 操 作 系 统 运 行 在 DDRB 上 , 地 址 为0xe0000000~0xe1ffffff, 共 32M 的 空 间 , 主 ARM 的 操 作 系 统 也 运 行 在 DDRB 上 , 地 址为 0xe2000000~0xe3ffffff, 共 32M 的 空 间 , 如 果 需 要 增 大 主 ARM 的 操 作 系 统 运 行 空间 , 可 以 根 据 主 ARM 的 bootargs 来 设 置 , 但 是 从 ARM 的 操 作 系 统 运 行 空 间 不 能 增加 。5.3 通 过 网 口 烧 写通 过 网 口 烧 写 内 核 和 根 文 件 系 统 , 首 先 需 要 进 行 参 数 设 置 和 建 立 tftp 服 务 , 然 后 才 能下 载 内 核 和 根 文 件 系 统 。5.3.1 参 数 设 置 和 建 立 tftp 服 务用 普 通 网 线 连 接 <strong>Hi3520</strong> DMEB 的 ETH 网 口 , 然 后 在 U-boot 中 设 置 相 关 参 数 。U-boot只 支 持 tftp 协 议 。 设 置 参 数 的 具 体 操 作 如 下 所 示 :hisilicon#setenv serverip 10.85.180.211/* 设 置 服 务 器 端 的 IP 地 址 , 可 根 据 需 要 具体 设 定 */hisilicon#setenv ipaddr 10.85.180.130 /* 设 置 <strong>Hi3520</strong> DMEB 板 的 IP 地 址 */hisilicon#setenv netmask 255.255.254.0/* 设 置 netmask*/hisilicon#setenv gatewayip 10.85.180.1 /* 设 置 网 关 */5-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南5 烧 写 内 核 和 根 文 件 系 统hisilicon#saveenvhisilicon# ping 10.85.77.69 /* 用 来 判 断 网 络 是 否 正 常 */5.3.2 下 载 内 核U-boot 不 支 持 广 播 包 的 接 收 , 不 能 响 应 ping 包 , 无 法 通 过 主 机 (Host)ping 单 板 判 断网 络 是 否 通 畅 。U-boot 支 持 向 外 发 ping 包 , 并 能 接 收 ping 包 的 响 应 包 。 可 通 过 单 板ping 主 机 来 验 证 网 络 是 否 连 接 正 常 。 上 述 最 后 一 个 操 作 中 , 返 回 host 10.85.77.69 isalive 表 示 网 络 工 作 正 常 ; 显 示 ping failed;host 10.85.77.69 is not alive, 说 明 网 络不 正 常 , 需 要 重 新 检 查 网 络 设 置 。另 外 还 需 要 在 Windows 工 作 台 或 者 <strong>Linux</strong> 服 务 器 中 建 立 tftp 服 务 , 建 议 在 Windows 工作 台 上 建 立 tftp 服 务 器 , 简 单 方 便 。在 <strong>Hi3520</strong> DMEB 上 有 双 操 作 系 统 , 因 此 要 分 别 下 载 主 从 ARM 的 内 核 , 下 载 主 ARM内 核 的 操 作 如 下 所 示 , 下 载 从 ARM 内 核 与 主 ARM 内 核 类 似 , 仅 地 址 不 同 , 从 ARM的 内 核 下 载 的 地 址 为 0x80400000。hisilicon#erase 0x80100000 +0x200000 /* 在 进 行 FLASH 写 入 之 前 必 须 先 手 动 擦 除FLASH, 否 则 cp 命 令 可 能 会 报 错 , 或 者 写 入 FLASH 的 数 据 错 误 */hisilicon#tftp 0x80100000 kernel-hi3520v100_full_release.img /* 将 tftp 服 务器 上 的 kernel-hi3520v100_full_release.img 文 件 下 载 到 0x80100000 的 位 置 */正 常 的 下 载 过 程 超 级 终 端 中 显 示 的 信 息 如 下 所 示 :MAC: 00-10-85-18-01-30TFTP from server 10.85.180.211; our IP address is 10.85.180.130Download Filename ' kernel-hi3520v100_full_release.img'.Download to address: 0x80100000Downloading: %T%T%# [ Connected ]##############################0.988 MB download ok.Bytes transferred = 1012660 (f73b4 hex)5.3.3 下 载 根 文 件 系 统在 <strong>Hi3520</strong> DMEB 上 为 双 操 作 系 统 , 因 此 需 要 为 主 从 ARM 下 载 各 自 的 文 件 系 统 , 主ARM 的 文 件 系 统 有 NOR Flash 和 NAND Flash 的 文 件 系 统 , 从 ARM 只 有 Initrd 文 件系 统 , 在 <strong>Hi3520</strong>DMEB 上 将 从 ARM 的 文 件 系 统 下 载 到 0x80600000 的 位 置 , 将 主ARM 的 文 件 系 统 下 载 到 0x80800000 的 位 置 , 下 载 主 ARM 根 文 件 系 统 的 操 作 以 NORFlash 为 例 如 下 所 示 , 下 载 从 ARM 的 根 文 件 系 统 与 主 ARM 的 类 似 。hisilicon#erase 0x80800000 +0xA00000 /* 首 先 擦 除 FLASH 的 文 件 系 统 分 区 ,FLASH 分 区 信 息 参 见 后 面的 启 动 参 数 设 置 */hisilicon#tftp 0x80800000 rootfs-FULL_REL.jffs2 /* 将 rootfs-FULL_REL.jffs2 文 件 下 载 到0x80200000*/正 常 的 下 载 过 程 超 级 终 端 中 显 示 的 信 息 如 下 所 示 :MAC: 00-10-85-18-01-30文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司5-3


5 烧 写 内 核 和 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南TFTP from server 10.85.180.211; our IP address is 10.85.180.130Download Filename 'rootfs-FULL_REL.jffs2'.Download to address: 0x80800000Downloading: %# [ Connected ]################################ [ 1.000 MB]################################ [ 2.000 MB]################################ [ 3.000 MB]################################ [ 4.000 MB]################################ [ 5.000 MB]################################ [ 6.000 MB]##################6.591 MB download ok.Bytes transferred = 6897136 (693df0 hex)由 于 Flash 的 写 操 作 速 度 较 慢 , 如 果 下 载 的 文 件 较 大 , 则 需 要 花 费 一 定 的 时 间 , 等 到 重新 回 到 “hisilicon#” 的 提 示 符 , 表 示 下 载 完 成 。当 下 载 文 件 系 统 为 cramfs 时 , 同 样 需 要 先 对 Flash 分 区 进 行 擦 除 , 然 后 再 下 载 , 操 作如 下 :hisilicon#erase 0x80800000 +0xA00000hisilicon#tftp 0x80800000 rootfs-FULL_REL.cramfs5.4 通 过 串 口 烧 写5.4.1 连 接 设 备通 过 串 口 烧 写 内 核 和 根 文 件 系 统 , 首 先 需 要 在 Windows 工 作 台 和 <strong>Hi3520</strong> DMEB 之 间通 过 串 口 连 接 , 然 后 才 能 下 载 内 核 和 根 文 件 系 统 。连 接 设 备 的 步 骤 如 下 :步 骤 1 使 用 串 口 线 (DB9 接 口 ) 连 接 Windows 工 作 台 的 COM1( 也 可 以 是 其 他 串 口 , 这 里 假设 使 用 COM1) 和 <strong>Hi3520</strong> DMEB 的 COM1。步 骤 2 启 动 Windows 工 作 台 的 超 级 终 端 软 件 , 设 置 COM1 的 参 数 如 图 5-2 所 示 。步 骤 3 启 动 <strong>Hi3520</strong> DMEB, 系 统 进 入 U-boot 命 令 行 操 作 界 面 , 表 示 系 统 工 作 正 常 , 可 进 行 下载 或 其 他 操 作 。---- 结 束5-4海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南5 烧 写 内 核 和 根 文 件 系 统图 5-2 串 口 设 置5.4.2 下 载 内 核在 超 级 终 端 的 U-boot 命 令 行 中 输 入 loadb 0xE1000000( 存 放 内 核 的 内 存 地 址 ), 打 开菜 单 “ 传 输 ” 下 的 “ 发 送 文 件 ”, 弹 出 对 话 框 , 如 图 5-3 所 示 , 选 择“Protocol>Kermit”, 在 “Filename” 中 选 择 内 核 文 件 。图 5-3 发 送 文 件 窗 口文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司5-5


5 烧 写 内 核 和 根 文 件 系 统<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南等 待 下 载 完 成 后 , 使 用 U-boot 的 cp 命 令 将 内 核 从 内 存 拷 贝 到 Flash 中 , 操 作 方 法 如 下所 示 :hisilicon#erase 0x80100000 +0x200000hisilicon$cp.b 0xE1000000 0x80100000 0x200000/* 擦 除 Flash*//* 拷 贝 内 核 到 0x80100000 位置 */如 果 提 示 Flash 写 保 护 无 法 写 入 , 则 先 将 Flash 写 保 护 关 闭 , 然 后 再 进 行 拷 贝 , 操 作 如下 所 示 :hisilicon#protect off allhisilicon#erase 0x80100000 +0x200000hisilicon#cp.b 0xE1000000 0x80100000 0x200000/* 擦 除 Flash*//* 拷 贝 内 核 到 0x80100000 位置 */5.4.3 下 载 根 文 件 系 统下 载 根 文 件 系 统 和 下 载 内 核 的 操 作 方 法 相 同 , 具 体 步 骤 如 下 :步 骤 1 在 超 级 终 端 的 U-boot 命 令 行 中 输 入 loadb 0xE1000000( 存 放 根 文 件 系 统 映 像 文 件 的 内存 地 址 )。步 骤 2 选 择 “ 传 输 > 发 送 文 件 ”, 弹 出 对 话 框 , 在 “Protocol” 的 下 拉 列 表 中 选 择 “Kermit” 选项 , 在 “Filename” 中 选 择 根 文 件 系 统 映 像 文 件 ( 在 “4 根 文 件 系 统 ” 中 已 经 制 作 好 的“rootfs-FULL_REL.cramfs” 或 者 “rootfs-FULL_REL.jffs2”)。步 骤 3 等 待 下 载 完 成 后 , 使 用 U-boot 的 cp 命 令 将 文 件 从 内 存 拷 贝 到 Flash 中 。具 体 操 作 方 法 如 下 所 示 :hisilicon#erase 0x80800000 +0xA00000hisilicon#cp.b 0xE1000000 0x80800000 0x693DF0/* 擦 除 Flash*//* 拷 贝 文 件 到 0x80800000 位置 , 大 小 为 6897136B。 注 意 : 指 定 的 字 节 数 必 须 严 格 等 于 文 件 系 统 实 际 的 字 节 数 , 否 则 文 件 系 统 可能 会 出 错 */---- 结 束使 用 串 口 下 载 速 度 很 慢 但 操 作 简 单 , 适 合 下 载 小 文 件 , 而 通 过 网 口 下 载 速 度 很 快 , 提 高 工 作 效率 。 建 议 使 用 网 口 下 载 。5-6海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南6 启 动 <strong>Linux</strong>6 启 动 <strong>Linux</strong>6.1 设 置 启 动 参 数从 U-boot 引 导 内 核 , 需 要 给 内 核 传 递 参 数 , 包 括 内 存 大 小 、 根 文 件 系 统 挂 载 设 备 等 。根 据 根 文 件 系 统 类 型 不 同 , 设 置 也 相 应 不 同 ,<strong>Hi3520</strong>DMEB 为 双 操 作 系 统 , 启 动 参 数的 配 置 会 根 据 文 件 系 统 类 型 略 有 差 异 , 请 根 据 具 体 情 况 进 行 设 置 , 这 里 仅 提 供 一 种 参考 设 置 。各 参 数 的 含 义 如 下 :• mem: 设 置 操 作 系 统 内 存 大 小 。 以 上 设 置 mem=32M 表 示 分 配 给 操 作 系 统 内 存 为32M。• console: 设 置 控 制 台 设 备 。 格 式 为 console=ttyAMA0,115200 表 示 控 制 台 为 串 口0, 波 特 率 115200。• root: 设 置 根 文 件 系 统 挂 载 设 备 。 格 式 为 root=1f01 表 示 从 Flash 第 1 个 分 区 挂 载(Flash 分 区 编 号 从 0 开 始 )。• rootfstype: 设 置 挂 载 文 件 系 统 类 型 。• mtdparts:Flash 分 区 描 述 , 格 式 为 mtdparts=physmap-flash.0:3M(boot), 13M (rootfs)表 示 有 两 个 分 区 , 分 区 0 大 小 为 3M 用 于 内 核 启 动 , 分 区 1 大 小 为 13M 用 于 文 件系 统 。以 下 参 数 设 置 , 必 须 在 同 一 行 中 输 入 。cramfs根 文 件 系 统 类 型 为 cramfs 时 , 设 置 如 下 :hisilicon# setenv bootargs ‘mem=32M console=ttyAMA0,115200 root=1f01rootfstype=cramfs mtdparts=physmap-flash.0:3M(boot),13M(rootfs)’hisilicon#saveenv文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司6-1


6 启 动 <strong>Linux</strong><strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南JFFS2根 文 件 系 统 类 型 为 JFFS2 时 , 设 置 如 下 :hisilicon# setenv bootargs ‘mem=32M console=ttyAMA0,115200 root=1f01rootfstype=jffs2 mtdparts=physmap-flash.0:3M(boot),13M(rootfs)’hisilicon#saveenv6.2 启 动 <strong>Linux</strong>在 U-boot 命 令 行 中 输 入 bootm 0x80100000 即 可 。hisilicon#bootm 0x80100000 /* 从 0x80100000 处 启 动 <strong>Linux</strong>*/6.3 设 置 U-boot 自 动 启 动 <strong>Linux</strong>设 置 U-boot 自 动 启 动 <strong>Linux</strong> 的 操 作 如 下 所 示 :hisilicon#setenv bootcmd bootm 0x80100000 /* 设 置 自 启 动 命 令 参 数 */hisilicon#setenv bootdelay 2 /* 设 置 启 动 延 时 为 2 秒 */hisilicon#saveenv6-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南7 应 用 程 序 开 发 简 介7 应 用 程 序 开 发 简 介7.1 编 写 代 码用 户 可 根 据 个 人 习 惯 选 择 代 码 编 写 工 具 。 通 常 在 Windows 环 境 下 使 用 Source Insight,在 <strong>Linux</strong> 环 境 下 使 用 Vim+ctags+cscope, 功 能 也 相 当 强 大 。7.2 运 行 应 用 程 序要 运 行 编 译 好 的 应 用 程 序 , 首 先 需 要 将 其 添 加 到 目 标 机 中 , 必 须 完 成 以 下 工 作 :• 将 应 用 程 序 和 需 要 的 库 文 件 ( 如 果 有 ) 等 添 加 到 目 标 机 的 根 文 件 系 统 相 应 的 目 录中 。 通 常 将 应 用 程 序 放 到 /bin 目 录 里 , 库 文 件 放 到 /lib 目 录 里 , 配 置 文 件 则 放 到/etc 目 录 里 。• 制 作 包 含 新 应 用 程 序 的 根 文 件 系 统 。如 果 执 行 应 用 程 序 , 需 要 读 写 文 件 系 统 操 作 。 请 选 择 Jffs2 文 件 系 统 , 或 者 使 用 cramfs 和 Jffs2两 者 结 合 。在 调 试 阶 段 推 荐 使 用 NFS 文 件 系 统 , 可 以 省 去 重 新 制 作 根 文 件 系 统 和 烧 写 工 作 。 设 置和 启 动 NFS 服 务 ( 请 参 见 “4.3.3 NFS”), 然 后 将 NFS 目 录 挂 载 到 JFFS2 文 件 系 统 目录 中 , 操 作 方 法 如 下 :mount -t nfs -o nolock serverip:path /mnt其 中 serverip 表 示 NFS 目 录 所 在 服 务 器 的 ip,path 表 示 NFS 目 录 在 服 务 器 上 的 路 径 ,以 后 只 需 要 简 单 的 拷 贝 应 用 程 序 到 NFS 系 统 目 录 中 , 就 可 以 在 目 标 机 里 运 行 。如 果 需 要 制 作 cramfs 或 JFFS2 文 件 系 统 , 制 作 相 应 的 文 件 系 统 ( 请 参 见 “4.3 文 件 系 统 简 介 ”), 然 后 烧 写 根 文 件 系 统 到 Flash 指 定 位 置 (0x80200000)( 请 参 见“5 烧 写 内 核 和 根 文 件 系 统 ”), 并 设 置 相 应 的 启 动 参 数 。 同 样 , 启 动 <strong>Linux</strong> 后 便 可 运行 新 的 应 用 程 序 。如 果 新 添 加 的 应 用 程 序 需 要 系 统 启 动 后 自 动 运 行 , 请 编 辑 /etc/init.d/rcS 文 件 , 添 加 需 要 启 动 的 用程 序 路 径 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司7-1


7 应 用 程 序 开 发 简 介<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南7.3 使 用 gdbserver 调 试 应 用 程 序在 很 多 情 况 下 , 需 要 对 应 用 程 序 进 行 调 试 。 在 <strong>Linux</strong> 下 调 试 程 序 , 常 用 的 工 具 是 gdb。由 于 嵌 入 式 单 板 的 资 源 有 限 , 一 般 不 直 接 在 目 标 机 上 运 行 gdb 进 行 调 试 , 而 是 采 取gdb+gdbserver 的 方 式 。gdbserver 在 目 标 机 中 运 行 ,gdb 则 在 宿 主 机 上 运 行 。 根 文 件 系统 中 已 经 包 含 gdbserver。 使 用 gdbserver 调 试 应 用 程 序 的 步 骤 如 下 所 示 :步 骤 1 启 动 <strong>Linux</strong> 并 登 陆 进 入 shell。如 要 进 行 gdb 调 试 , 首 先 要 启 动 gdb server。 方 法 是 先 进 入 需 要 调 试 的 程 序 所 在 目 录 ,如 : 被 调 试 的 程 序 文 件 名 是 hello, 则 输 入 命 令 :hisilicon$ gdbserver :2000 hello &上 述 命 令 表 示 在 目 标 机 的 2000 端 口 开 启 了 一 个 调 试 进 程 ,hello 就 是 要 调 试 的 程 序 。步 骤 2 在 <strong>Linux</strong> 服 务 器 上 启 动 gdb 程 序 , 因 为 目 标 机 为 ARM, 所 以 启 动 arm-hismall-linuxgdb。步 骤 3 启 动 arm-hismall-linux-gdb 后 , 在 命 令 提 示 符 状 态 下 输 入 命 令 , 与 目 标 机 进 行 连 接 。(gdb) target remote 192.168.0.5:2000 /*192.168.0.5 为 单 板 IP*/端 口 号 和 目 标 机 开 启 的 端 口 号 要 一 致 。步 骤 4 连 接 成 功 后 , 会 输 出 提 示 信 息 , 如 下 所 示 :remote debugging using 10.70.153.100:20000x40000a70 in ?? ()步 骤 5 进 行 符 号 文 件 加 载 :(gdb) add-symbol-file hello 40000a70或 者 使 用 :(gdb) file hello步 骤 6 输 入 各 种 gdb 命 令 如 list、run、next、step、break 即 可 进 行 程 序 调 试 。---- 结 束7-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南A 建 立 <strong>Linux</strong> 开 发 环 境A 建 立 <strong>Linux</strong> 开 发 环 境服 务 器 的 <strong>Linux</strong> 版 本 没 有 限 制 , 但 建 议 使 用 较 新 的 <strong>Linux</strong> 发 行 版 , 如 RedHat 9.0、FedoraCore、Debian 和 Mandrake 等 。 这 里 以 Fedora Core 2.0 为 例 , 介 绍 如 何 建 立 <strong>Linux</strong> 开 发环 境 。A.1 安 装 <strong>Linux</strong> 系 统 的 配 置 选 项在 市 场 销 售 的 发 行 版 一 般 都 提 供 60~90 天 的 电 话 技 术 支 持 , 因 此 建 议 购 买 在 市 场 销 售的 发 行 版 <strong>Linux</strong>, 不 建 议 从 网 上 下 载 或 从 其 它 渠 道 获 得 。请 参 考 随 发 行 版 附 带 的 《<strong>Hi3520</strong> REFB <strong>Linux</strong> 开 发 环 境安 装 , 安 装 中 应 注 意 的 配 置 选 项 如 表 A-1 所 示 。用 户 指 南 》 进 行 <strong>Linux</strong> 系 统 的表 A-1 安 装 <strong>Linux</strong> 系 统 的 配 置 选 项 说 明配 置 选 项 建 议 目 的默 默 语 默 英 文 避 避 避 避 避 录 的 避 避 , 由 由 由 由 不 支 持 中 文 由 由 由 由 由 。磁 磁 磁 磁 自 自 磁 磁 留 留 留 留 的 磁 磁 留 留 供 安 装 SDK 。防 防 防 禁 用 使 使 使 使 自 的 系 统 服 务 使 使 使 使 使 。安 装 安 安 完 完 安 装 避 避 因 为 避 避 必 要 的 避 避 导 避 使 使 安 装 避 避 。A.2 配 置 必 要 的 系 统 服 务配 置 必 要 的 系 统 服 务 的 步 骤 如 下 :步 骤 1 <strong>Linux</strong> 安 装 完 成 使 使 自 进 入 窗 口 界 面 , 以 root 用 户 避 陆 。步 骤 2 配 置 samba 服 务 , 使 <strong>Linux</strong> 和 Windows 之 留 使 方 便 地 交 换 文 避 。 在 FC2 的 菜 单 中 可 以找 到 配 置 samba 服 务 的 菜 单 项 。 打 开 配 置 窗 口 使 , 首 先 要 建 立 samba 用 户 , 然 使 再 添 加共 享 文 避 夹 , 就 可 以 在 Windows 下 测 试 是 否 使 使 使 地 访 问 samba 服 务 了 。文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司A-1


A 建 立 <strong>Linux</strong> 开 发 环 境<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南步 骤 3 输 入 /etc/init.d/ssh start 使 自 ssh 服 务 ( 如 果 是 FC2, 默 默 已 经 使 自 了 该 服 务 ), 在 Windows下 就 可 以 使 用 putty 等 使 具 避 陆 服 务 器 。步 骤 4 输 入 /etc/init.d/nfs start 使 自 NFS 服 务 , 编 辑 /etc/exports 文 避 , 添 加 NFS 目 录 , 就 可 以将 单 板 访 问 服 务 器 的 NFS 文 避 夹 或 是 直 接 将 服 务 器 的 NFS 文 避 夹 使 为 单 板 的 根 目 录 使自 ( 调 试 过 避 中 使 用 的 NFS 方 式 )。---- 结 束至 此 , 一 个 基 本 的 <strong>Linux</strong> 环 境 已 经 搭 建 成 功 , 接 下 来 就 可 以 安 装 SDK, 其 安 装 过 避 请 参见 “1.3.3 安 装 <strong>Hi3520</strong> SDK”。A-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)


<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南B 缩 略 语B 缩 略 语AADS ARM Development Suite ARM 开 发 使 具 套 避ARM Advanced RISC Machine ARM 公 司 指 令 集CCRAMFS Compressed RAM file system 压 缩 RAM 文 避 系 统DDMS Digital Media Solution 媒 体 解 决 方 案 平 台EELF Executable and Linkable Format 可 执 行 连 接 格 式 文 避GGCC GNU Complier Collection GNU 编 译 器 集 合GDB GNU Debugger GNU 调 试 器GNU GNU’s Not UNIX GNUIIP Internet Porotocol Internet 协 议IPTV Internet Prototocol Television 网 络 电 视J文 档 版 本 00B01 (2009-08-31)海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司B-1


B 缩 略 语<strong>Hi3520</strong> <strong>Linux</strong> 开 发 环 境用 户 指 南JFFS2 Journalling FLASH File System v2 一 种 Flash 文 避 系 统JTAG Joint Test Action Group 联 合 测 试 行 自 避NNFS Network File System 网 络 文 避 系 统PPC Personal Computer 个 人 计 算 机SSDRAMSynchronous Dynamic Random AccessMemory同 步 自 态 随 机 存 储 器SDK Software Development Kit 软 避 开 发 使 具 集UU-BootUniversal Boot Loader操 使 系 统 内 核 运 行 之 前 需 要 运 行 的 引 导 避序B-2海 思 专 有 和 保 密 信 息版 权 所 有 © 深 圳 市 海 思 半 导 体 有 限 公 司文 档 版 本 00B01 (2009-08-31)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!