hisicon软件架构:Linux内核编译指南
"该文档是关于hisicon软件架构下内核编译的指南,主要针对arm-himix100-linux和arm-himix200-linux两种工具链,涉及uclibc和glibc库的使用。在编译OSDRV时,用户需要自行下载并准备一些关键的开源工具源码包,包括Linux内核、Yaffs2工具、GDB调试器、ncurses库、util-linux、xz压缩工具和e2fsprogs等。" 在深入理解hisicon软件架构的内核编译过程之前,我们首先要明白内核编译的重要性。操作系统内核是计算机系统的核心,负责管理硬件资源和提供服务给上层的应用程序。在hisicon平台,内核编译涉及到针对特定处理器架构(如arm-himix100和arm-himix200)的定制,以确保最优的性能和兼容性。 1. **osdrv顶层Makefile使用说明** osdrv顶层Makefile是整个编译过程的入口,它协调各个模块的构建,并根据指定的工具链(arm-himix100-linux或arm-himix200-linux)选择合适的编译选项。uclibc是一个轻量级的C库,适合嵌入式环境,而glibc则是更全面的C库,通常用于桌面和服务器系统。选择正确的库可以优化内核的大小和功能。 2. **编译环境准备** 在开始编译前,用户需要先下载以下必备的开源工具: - **Linux内核**:这里以4.9.37为例,需要将下载的源码包解压至osdrv的`opensource/kernel`目录。内核版本的选择直接影响到硬件驱动的支持和功能特性。 - **Yaffs2工具**:yaffs2utils用于处理YAFFS2文件系统,适用于嵌入式设备。将其解压至osdrv的`tools/pc/mkyaffs2image`目录。 - **GDB调试器**:gdb-7.9.1是用于调试目标系统的工具,放在`tools/board/gdb`目录。 - **ncurses库**:ncurses-6.0提供了在终端进行图形化操作的库,与GDB配合使用。同样放在`tools/board/gdb`目录。 - **util-linux**:util-linux-2.31包含了一系列系统管理工具,解压后放入`tools/pc/cramfs_tool`。 - **xz压缩工具**:xz-5.2.2用于处理 squashfs 文件系统中的压缩,存放在`tools/pc/squashfs4.3`。 - **e2fsprogs**:e2fsprogs-1.42.13是ext2/3/4文件系统的工具集合,解压后根据实际需求进行配置和使用。 3. **内核配置** 一旦所有必要的源码包准备就绪,下一步是配置内核。使用`make menuconfig`命令打开配置界面,根据设备需求选择相应的硬件驱动、文件系统类型和其他内核选项。配置完成后,通过`make`命令开始编译,最后使用`make install`将内核镜像安装到目标系统。 4. **文件系统构建** 创建和打包文件系统是内核编译的另一个关键步骤。这可能涉及到使用mkyaffs2image、mkfs.squashfs等工具创建特定格式的文件系统镜像,以便在目标设备上运行。 5. **调试与测试** 编译完成后的内核和文件系统需要进行测试以确保功能正常。GDB可以帮助远程调试内核和应用程序,而ncurses库则提供了在控制台上进行图形化交互的能力。 总结来说,hisicon内核编译流程是一个综合性的工程,涉及到多个开源工具的下载、配置、编译以及整合。正确理解并执行这些步骤,对于开发和维护高效稳定的hisicon平台至关重要。在进行编译时,务必遵循文档提供的指导,以确保所有依赖项都得到满足,并且内核能够正确地适应目标硬件环境。
本目录下的编译脚本支持 arm-himix100-linux 和 arm-himix200-linux 工具链,其中 arm-himix100-linux 对应uclibc库。
arm-himix200-linux 对应glibc库。具体命令如下(以hi3516ev200举例)
注意:
由于开源工具整改,部分开源工具不再提供源码包,客户编译OSDRV时需要自行下载:
a:linux-4.9.37.tar.gz (https://www.kernel.org/pub/)
将下载的 linux-4.9.37.tar.gz 存放到 osdrv的opensource/kernel目录中
b:yaffs2utils-0.2.9.tar.gz (https://github.com/dorigom/yaffs2utils/releases)
将下载的 yaffs2utils-0.2.9.tar.gz 存放到osdrv的tools/pc/mkyaffs2image/目录中
c:gdb-7.9.1.tar.gz (http://ftp.gnu.org/gnu/gdb/)
将下载的 gdb-7.9.1.tar.gz 存放到 osdrv的tools/board/gdb/目录中
d:ncurses-6.0.tar.gz ( http://ftp.gnu.org/gnu/ncurses/)
将下载的 ncurses-6.0.tar.gz 存放到 osdrv的tools/board/gdb/目录中
e:util-linux-2.31.tar.gz (https://www.kernel.org/pub/linux/utils/util-linux/v2.31)
将下载的 util-linux-2.31.tar.gz 存放到 osdrv的tools/pc/cramfs_tool/目录中
f:xz-5.2.2.tar.bz2 (https://tukaani.org/xz/old.html)
将下载的 xz-5.2.2.tar.bz2 存放到 osdrv的tools/pc/squashfs4.3/目录中
g:e2fsprogs-1.42.13.tar.gz (https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/v1.42.13/)
将下载的 e2fsprogs-1.42.13.tar.gz 存放到 osdrv的tools/board/e2fsprogs/目录中
将下载的 lzo-2.09.tar.gz 存放到 osdrv的tools/pc/jffs2_tool/目录中
i: eudev-3.2.7.tar.gz (https://dev.gentoo.org/~blueness/eudev/eudev-3.2.7.tar.gz)
将下载的 eudev-3.2.7.tar.gz 存放到 osdrv的tools/board/eudev-3.2.7目录中
j: libuuid-1.0.3.tar.gz (https://sourceforge.net/projects/libuuid/)
将下载的 libuuid-1.0.3.tar.gz 存放到 osdrv的tools/board/mtd-utils/目录中
k: zlib-1.2.11.tar.gz (https://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz/download?use_mirror=nchc&download=)
由于zlib 工具在pc端及board端多处都有使用到,所以需要将源码包分别放置到下面路径:
将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/board/mtd-utils/ 目录中
将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/pc/zlib/ 目录中
将下载的 zlib-1.2.11.tar.gz 存放到 osdrv的 tools/pc/squashfs4.3/ 目录中
l: mtd-utils-2.0.2.tar.bz2 (https://src.fedoraproject.org/repo/pkgs/mtd-utils/mtd-utils-2.0.2.tar.bz2/)
由于mtd-utils在pc端及board端都有使用到,所以需要将源码包分别放置到下面路径:
将下载的 mtd-utils-2.0.2.tar.bz2 存放到 osdrv的 tools/board/mtd-utils/ 目录中
将下载的 mtd-utils-2.0.2.tar.bz2 存放到 osdrv的 tools/pc/jffs2_tool/目录中
m: gzip-1.8.tar.gz (http://ftp.gnu.org/gnu/gzip/gzip-1.8.tar.gz)
将下载的 gzip-1.8.tar.gz 存放到 osdrv的 tools/pc/hi_gzip/ 目录中
n: squashfs4.3.tar.gz (http://sourceforge.net/projects/squashfs/files/squashfs/squashfs4.3/squashfs4.3.tar.gz/download)
剩余8页未读,继续阅读
- 粉丝: 12
- 资源: 31
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构