H3518ev200 编译环境安装从放弃到入门(一)

注意事项

在根据海思官方提供的sdk文档进行安装编译环境的时候需要注意一下几点:
1. 需要注意的是有时候linux系统中进行解压的时候可能会出现错误
2. 在跟据文档提供的命令行进行安装东西的我时候,不可以直接复制命令行,需要明白每一个命令的作用和意思,比如直接复制粘贴的命令行中“-”和“—”这长短就是不一样的
3. 有时候需要那装的软件版本和官方规定的不同,这个需要灵活一点
4. 安装虚拟机的时候一定要把硬盘尽可能的放大,这次用的是40G,勉强够用,建议再大一点
5. 注意记住工具链的位置:/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/bin

说明

sdk版本:Hi3518E_SDK_V1.0.4.0和 Hi3516ev200sdk
Ubuntu安装文件:Ubuntu 20.04 64bit

1. 开发环境

1.1 基本环境

(1)虚拟机
(2)NFS服务器
(3)超级终端——SecureCRT

1.2 软件包安装

(1)配置默认使用bash

  执行 sudo dpkg-reconfigure dash  选择 no
  注意:Debain/Ubuntu中,/bin/sh默认指向dash,这是一个不同于bash的shell,主要为了执行脚本而出现,而不是交互,它速度快,但功能相比bash要少很多,语法严格遵循POSIX标准。
海思的SDK安装使用的是bash脚本,需要修改sh指向:此处选择no就表示使用的不是默认的dash而是bash

(2)安装软件包

sudo apt-get install make libc6 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools:i386 texinfo texlive gawk libssl-dev openssl bc 
注意:这个命令中还缺少命令:arm-himixXXX-linux-size文件是32位的,64位的系统缺少了lib库。
执行:sudo apt install lib32z1-dev
3518ev200是32位的而3516ev200是64位的,安装32位兼容包(如果当前系统是32位则不需要):
sudo apt install lib32z1
sudo apt install lib32stdc++6

1.3 安装编译工具链

(1)解压工具链(小心解压的时候有可能出错)
工具链及其安装程序位于osdrv/opensource/toolchain/arm-hisiXXX-linux/目
录下,进入此目录进行解压,命令如下:

cd toolchain/arm-hisiXXX-linux/
tar -xvf arm-hisi300-linux.tar.bz2   此处我们选择uclibc 微型动态库 面向嵌入式Linux系统的小型的C标准库
发布包提供两种编译工具链arm-hisiv300-linux 和arm-hisiv400-linux,其中armhisiv300-linux 为基于uclibc 的工具链,arm-hisiv400-linux 为基于glibc 的工具链。

(2)安装工具链

sudo ./cross.install 

1.4 安装sdk

(1)拷贝sdk:Hi3518E_SDK_V1.0.4.0
(2)解压sdk
(3)执行命令

./sdk.cleanup         清除SDK
./sdk.unpack         解压SDK

1.5 出现问题即解决办法

(1)安装软件包时出现无法定位软件包
在这里插入图片描述
从上面这个报错其实也知道原因了,就是在“更新源地址平台上”找不到相应的“lib32ncurses5”软件包。不到软件包通常是软件包名输入错误,或者说,没有这个软件包了,有些软件包可能会被移除或被其它的软件包替代了等等。
解决办法:安装的文件名字错误,去掉后边的:i386 重新执行安装命令
(2)/bin/sh: 1: pushd: not found 还有执行执行 ./sdk.unpack时出现not found
原因:不能压栈入栈,因为pushd命令需要在bash的环境中执行,所以需要修改系统默认shell为bash
解决办法:sudo dpkg-reconfigure dash
选择no。

2. U-boot

2.1 编译uboot

(1)配置编译环境:

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- hi3518ev200_config

(2) 编译U-boot

make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- -j 20

编译成功后,将在 U-boot 目录下生成 u-boot.bin。
注意:这一步生成的 u-boot.bin 只是一个中间件,并不是最终在单板上执行的 U-boot 镜像

2.2 生成最终使用的u-boot镜像

U-boot 镜像生成步骤如下:
步骤 1. 完成配置表格的修改后,保存表格。
步骤 2. 单击表格第一个标签页上的按钮【Generate reg bin file】,生成临时文件 reg_info.bin。
步骤 3. 将生成的 u-boot.bin 复制到 osdrv/tools/pc/uboot_tools/目录执行命令行:mkboot.sh reg_info.bin u-boot-ok.bin
其中 u-boot-ok.bin 就是能够在单板上运行的 U-boot 镜像。

2.3问题及解决方法

(1)在生成U-boot镜像得时候mkboot.sh命令无法执行
原因:.sh文件的执行权限问题需要赋予其可执行属性 就像是chmod +x命令用来赋予执行权限一样,

sudo: ./mkboot.sh:找不到命令

解决办法:右击xxx.sh文件,打开属性———>权限——>勾选允许作为程序执行文件
退出即可
(2)在3516中通过修改配置表格后生成的reg.bin文件所生成的uboot在后来烧写中会出现错误
解决办法:通过使用另外一种方法/hiregbin 在该sdk中存在hiregbin的压缩包,阅读里面的 readme.txt文件然后按照步骤生成reg.bin文件

3. kernel

3.1配置内核

(1)手动拷贝.config 文件:

cd kernel/linux-3.4.y
cp arch/arm/configs/hi3518ev200_full_defconfig .config

(2) 用户通过“make menuconfig”进行内核配置(一般不需要改变):

make ARCH=arm CROSS_COMPILE= arm-hisiv300-linux- menuconfig

(3)保存退出

3.2 编译内核并生成内核镜像 uImage

配置保存后,可直接输入“make ARCH=arm CROSS_COMPILE=arm-hisiXXX-linux- uImage 命令编译内核生成镜像,此时需要等待几分钟。

3.3出现问题以及解决方法

(1)编译kernel出现错误
在这里插入图片描述原因:由于解压kernel文件的时候出现错误
解决办法:重新解压,然后编译

4 根文件系统

4.1 根文件系统简介

Linux 的目录结构的最顶层是一个被称为“/”的根目录。系统加载Linux 内核之后,就会挂载一个设备到根目录上。存在于这个设备中的文件系统被称为根文件系统。
根文件系统通常存放于内存和Flash 中,或是基于网络的文件系统。根文件系统中存放了嵌入式系统使用的所有应用程序、库以及其他需要用到的服务。

4.2 通过busybox来制作根文件系统

(1)成功安装SDK 后,busybox 完整源代码就存放在osdrv/目录中。
(2)配置busybox

      cp osdrv/busybox/busybox-1.20.2/busybox_cfg_hi3518ev200_300 osdrv/busybox/busybox-1.20.2/.config //指定配置文件
      make menuconfig

注意:在Busybox Settings —> Build Options 中注意下面两个选项:

[*]Build BusyBox as a static binary (no shared libs) 是否把 busybox 编译成静态链接的可执行文件.如果选择该选项,编译出来的busybox 就是静态链接的,运行时不依赖于动态库,但体积较大;清除该选项将得到动态链接的busybox,体积较小,但需要动态库的支持。   我们可以选择静态也可以是动态,两者都可以,因为静态也不是很大。
[*] Build with Large File Support (for accessing files > 2 GB) (arm-hisiv300-linux-) Cross Compiler prefix 第二个选项是用于选择 SDK 推荐的交叉编译器

(3)编译和安装busybox:

make
make install

4.3制作根文件系统

成功安装SDK 后,在osdrv/pub/目录中存放已制作好的根文件系统。用户如有需要可在busybox 的基础上制作根文件系统。

 (1)mkdir rootbox  创建一个文件以rootbox为名字的文件夹
 (2)cd rootbox 
 (3)cp –R packet/os/busybox-1.20.2/_intsall/* . 将_install文件夹下的所有文件复制到该文件夹中
 (4)mkdir etc dev lib tmp var mnt home proc 创建文件夹

注意:配置etc、lib、dev 目录的必需文件
参考链接:https://blog.csdn.net/qq_17308321/article/details/79624536
(1)etc 目录可参考系统/etc 下的文件。其中最主要的文件包括inittab、fstab、init.d/rcS文件等,这些文件最好从busybox 的examples 目录下拷贝过来,根据需要自行修改。
(2)dev 目录下的设备文件,可以直接从系统中拷贝过来或者使用mknod 命令生成需要的设备文件。拷贝文件时请使用cp –R file。也可以不写直接由系统自己生成
(3)lib 目录是存放应用程序所需要的库文件,**可以去将交叉编译链中的库文件拷贝过来/opt/hisi-linux/x86-arm/arm-hisiv300-linux/
参考链接:https://www.cnblogs.com/ganrui/p/3801619.html

出现的问题以及解决办法

参考链接:https://blog.csdn.net/kunkliu/article/details/85457706
(1)文档与sdk不一致,即在文档中hi3518ev200的配置文件是busybox_cfg_hi3518ev200_XXX 但是在具体的文件夹中没有的
原因:文档与sdk不一致
解决办法:根本上来说make menuconfig文件最后生成的就是我们知道的.config文件,所以我们可以通过查看.config文件中的内容和自己的开发板、交叉编译链进行一一比对得出能用的配置文件, 比如在选择检查工具链以及mcu的时候。学习menuconfig里的一些东西,通过menuconfig里的配置选择合适的配置文件在这里插入图片描述
通过menuconfig里的东西来选择 config_v300_arm9的文件夹,是由于上图来决定的;为什么没有neon,是由mcu的特点来决定的(需要查看芯片手册来决定),显然Hi3518ev200特点决定的
参考链接:http://www.pcpop.com/article/867104_all.shtml
在这里插入图片描述
在这里插入图片描述
参考链接:https://www.jianshu.com/p/65091516bff7
概念:soft: full software floating-point support
softfp: Allows use of floating-point instructions but maintains compatibility with the soft-float ABI
hard: Uses floating-point instructions and the floating-point ABI.
neon:Neon是适用于ARM Cortex-A系列处理器的一种128位SIMD(Single Instruction, Multiple Data,单指令、多数据)扩展结构。
VFP–VFP (Vector Floating Point) technology is an FPU coprocessor extension to the ARM architecture. 除了提供浮点数基本运算(加、减、乘、除、开方、比较、取反)提供支持之外,最有特点是它向量(vectors)功能。它同时支持最多8组单精度4组[双精度浮点数]的运算。
所以综上可得,选择 config_v300_arm9的配置文件
(2)在执行生成jffs2文件的命令之后 所生成的jffs2.img镜像文件大约4g
原因: 是因为命令输入错误导致的将 短的“-” 输成了长的“–”
解决办法:自己手打一遍命令直接生成即可

首先安装工具:sudo apt-get install mtd-utils
mkfs.jffs2 -d ./rootfs -l -e 0x10000 -o jffs2-root.img
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不过尔尔丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值