1、Hi3531 SDK包位置

在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件,

该文件就是Hi3531的软件开发包。

2、解压缩SDK包

在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz ,

解压缩该文件,可以得到一个Hi3531_SDK_Vx.x.x.x目录。

3、展开SDK包内容

返回Hi3531_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。

如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。

4、在linux服务器上安装交叉编译器

1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):

进入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。

    进入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。(原文档没有)

2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限):

进入Hi3531_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。

3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。

5、编译osdrv

参见osdrv目录下readme

———————以上为厂家提供教程———————

几点说明:

1、uclibc是面向嵌入式Linux系统的小型的C标准库,glibc是Linux的标准运行库。

使用某一工具链编译后,如果需要更换工具链,请先将原工具链编译文件清除,然后再更换工具链编译。

开始我发现使用arm-hisiv100-linux编译内核时,会提示找不到该命令,换到arm-hisiv200-linux可以。估计就是上述问题吧。

2、source命令即执行命令,和“./”是一样的。(个人理解)

3、Linux下也有环境变量,如下:

常见的配置文件包括:

(1-1)/etc/profile:对所有用户生效;此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置。例如:编辑/etc/profile文件,添加CLASSPATH变量

# vi /etc/profile

添加一行:export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

修改后需要执行重新登录才能生效,也可以执行命令source /etc/profile来生效

(1-2)/etc/bashrc:对所有用户生效;为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取编辑方法如上,不再赘述

环境变量的查看

(1)使用echo命令查看单个环境变量。例如:echo $PATH

(2)使用env查看所有环境变量。例如:env

(3)使用set查看所有本地定义的环境变量。例如:set

另外,unset可以删除指定的环境变量。

常用的环境变量



          PATH 决定了shell将到哪些目录中寻找命令或程序

HOME 当前用户主目录

HISTSIZE 历史记录数

LOGNAME 当前用户的登录名

HOSTNAME 指主机的名称

SHELL 当前用户Shell类型

LANGUGE  语言相关的环境变量,多语言可以修改此环境变量

MAIL 当前用户的邮件存放目录

PS1 基本提示符,对于root用户是#,对于普通用户是$



好,继续。

这里的重点肯定在第五步。下面详细说说。

osdrv目录结构说明:

osdrv

├─Makefile ------------------------------ osdrv目录编译脚本

├─busybox ------------------------------- 存放busybox源代码的目录

├─tools --------------------------------- 存放各种工具的目录

│  ├─board_tools ----------------------- 各种单板上使用工具

│  │  ├─reg-tools-1.0.0 --------------- 寄存器读写工具

│  │  ├─mtd-utils --------------------- flash裸读写工具

│  │  ├─udev-100 ---------------------- udev工具集

│  │  ├─gdb --------------------------- gdb工具

│  │  ├─parted ------------------------ 大容量硬盘分区工具

│  │  └─e2fsprogs --------------------- mkfs工具集

│  └─pc_tools -------------------------- 各种pc上使用工具

│      ├─mkfs.cramfs ------------------- cramfs文件系统制作工具

│      ├─mkfs.jffs2 -------------------- jffs2文件系统制作工具

│      ├─mkimage ----------------------- uImage制作工具

│      ├─mkyaffs2image301 -------------- yaffs2文件系统制作工具

│      ├─nand_production --------------- nand flash烧写文件制作工具

│      └─uboot_tools ------------------- uboot镜像制作工具、xls文件及ddr初始化脚本、bootrom工具

├─toolchain ----------------------------- 存放工具链的目录

│  ├─arm-hisiv100nptl-linux ---------------- hisiv100nptl交叉工具链

│  └─arm-hisiv200-linux ---------------- hisiv200交叉工具链

├─pub ----------------------------------- 存放各种镜像的目录

│  ├─image_glibc ----------------------- 基于hisiv100nptl工具链编译,可供FLASH烧写的映像文件,包括uboot、内核、文件系统

│  ├─image_uclibc ---------------------- 基于hisiv200工具链编译,可供FLASH烧写的映像文件,包括uboot、内核、文件系统

│  ├─bin ------------------------------- 各种未放入根文件系统的工具

│  │  ├─pc ---------------------------- 在pc上执行的工具

│  │  ├─board_glibc ------------------- 基于hisiv100nptl工具链编译,在单板上执行的工具

│  │  └─board_uclibc ------------------ 基于hisiv200工具链编译,在单板上执行的工具

│  ├─rootfs_uclibc.tgz ----------------- 基于hisiv100nptl工具链编译的根文件系统

│  └─rootfs_glibc.tgz ------------------ 基于hisiv200工具链编译的根文件系统

├─drv ----------------------------------- 存放外设驱动的目录

│  └─pcie_mcc -------------------------- pcie消息通讯层驱动

├─rootfs_scripts ------------------------ 存放根文件系统制作脚本的目录

├─uboot --------------------------------- 存放uboot源代码的目录

└─kernel -------------------------------- 存放kernel源代码的目录

第一步,开始编译内核。

cp arch/arm/configs/godnet_defconfig .config

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

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage

即执行了make menuconfig 和 make uImage。

执行make menuconfig 后会显示一个菜单,大概是对Linux内核的配置,不过对于刚接触Linux的我来说,先略过,直接Quit。

执行make uImage会编译出Linux内核,先说一下 几种linux内核文件的区别 (网上一把,随便抓一个过来)

vmlinux  编译出来的最原始的内核文件,未压缩。

zImage   是vmlinux经过gzip压缩后的文件。

bzImage bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。

uImage   U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的tag。

vmlinuz  是bzImage/zImage文件的拷贝或指向bzImage/zImage的链接。

initrd   是“initial ramdisk”的简写。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。



多说一句的话,就是:

zImage是ARM Linux常用的一种压缩映像文件,uImage是U-boot专用的映像文件,它是在zImage之前加上一个长度为0x40的“头”,说明这个映像文件的类型、加载位置、生成时间、大小等信息。换句话说,如果直接从uImage的0x40位置开始执行,zImage和uImage没有任何区别。另外,Linux2.4内核不支持uImage,Linux2.6内核加入了很多对嵌入式系统的支持,但是uImage的生成也需要设置。

所以呢,由于我使用uboot来load,编译出的内核肯定会有uImage这个格式。

但是,我在这里碰到了一个问题:

make ARCH=arm CROSS_COMPILE=arm-hisiv200-linux- uImage

CHK     include/linux/version.h

CHK     include/generated/utsrelease.h

make[1]: `include/generated/mach-types.h' is up to date.

CALL    scripts/checksyscalls.sh

CHK     include/generated/compile.h

Kernel: arch/arm/boot/Image is ready

SHIPPED arch/arm/boot/compressed/lib1funcs.S

AS      arch/arm/boot/compressed/lib1funcs.o

LD      arch/arm/boot/compressed/vmlinux

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

UIMAGE  arch/arm/boot/uImage

"mkimage" command not found - U-Boot images will not be built

make[1]: *** [arch/arm/boot/uImage] Error 1

make: *** [uImage] Error 2

系统提示"mkimage" command not found - U-Boot images will not be built。

也就是说,mkimage该工具没起作用。mkimage是在编译完uboot之后生成的,我查看了一下,我这里确实有,所以按照原理来说,把它放到该呆的地方去就成啦。

按照上述对环境变量的解释,修改/etc/bashrc,在里面加入了mkimage的路径,我编!结果不成。

把mkimage放/bin下,我再编!OK。

再想想,我看了一下环境变量:

[root@localhost linux-3.0.y]# echo $PATH

/usr/bin:/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin:/opt/hisi-linux/x86-arm/arm-hisiv100-linux/target/bin:/usr/lib/qt-3.3/bin:/usr/lib/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wanghx/bin

这里插一句,Linux下环境变量是靠:来分割的。

把mkimage扔到/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin下试试,嗯,终于成了。

CHK     include/linux/version.h

CHK     include/generated/utsrelease.h

make[1]: `include/generated/mach-types.h' is up to date.

CALL    scripts/checksyscalls.sh

CHK     include/generated/compile.h

Kernel: arch/arm/boot/Image is ready

SHIPPED arch/arm/boot/compressed/lib1funcs.S

AS      arch/arm/boot/compressed/lib1funcs.o

LD      arch/arm/boot/compressed/vmlinux

OBJCOPY arch/arm/boot/zImage

Kernel: arch/arm/boot/zImage is ready

UIMAGE  arch/arm/boot/uImage

Image Name:   Linux-3.0.8

Created:      Thu Apr 25 15:42:10 2013

Image Type:   ARM Linux Kernel Image (uncompressed)

Data Size:    3496948 Bytes = 3414.99 kB = 3.33 MB

Load Address: 80008000

Entry Point:  80008000

Image arch/arm/boot/uImage is ready

看看有木有:

[root@localhost linux-3.0.y]# cd arch/arm/boot

[root@localhost boot]# ls

bootp  compressed  Image  install.sh  Makefile  uImage  zImage

OK。终于编出来了。

先到这里

Hi3531 SDK v2.0.8.0 安装的更多相关文章

  1. 原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

    visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MAC ...

  2. Deepin15.8系统下安装QorIQ Linux SDK v2.0 yocto成功完美运行的随笔

    2019.2.17日:最终安装成功,完美解决! 2019.2.16日:最终安装未成功,但是过程中排除 了几个bug,前进了几步,仅供参考. 写在最前面,yocto安装是有系统要求的,Deepin 15 ...

  3. DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装

    打开VS2015,出现 “DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装,该解决方案将对此会话使用DNX SDK版本“dnx-clr-win-x86.1.0.0 ...

  4. Visual Studio 2015创建ASP.NET5项目“DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' 无法安装的错误

    使用asp.net5建立web application时遇到DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装的错误 解决办法: 运行cmd: 1.输入: @pow ...

  5. Kinect for Windows SDK v2.0 开发笔记 (十五) 手势帧

     (转载请注明出处) 使用SDK: Kinect for Windows SDK v2.0 public preview1409 同前面,由于SDK未完毕,不附上函数/方法/接口的超链接. 这次最 ...

  6. Hi3531 SDK 安装以及升级使用说明

    Hi3531 SDK 安装以及升级使用说明 第一章 Hi3531_SDK_Vx.x.x.x版本升级操作说明    如果您是首次安装本SDK,请直接参看第2章.     第二章 首次安装SDK 1.Hi ...

  7. Could not load file or assembly 'Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0 系统找不到指定的文件。

    环境: web服务器: ip:192.168.1.32 ,安装有 Visual Studio Premium 2013 操作系统: Microsoft  Server 2008 r2+sp1 数据库服 ...

  8. 英特尔® 实感™ SDK R4 (v.6.0) 的全新特性

    原文地址 第四版 (R4) 黄金版 SDK (版本 6.0)现已面向英特尔® 实感TM F200 摄像头推出,并面向英特尔® 实感TM 后置 R200 摄像头发布黄金版本. 请注意,F200 OR R ...

  9. Android7.0适配APK安装

    Android7.0适配APK安装 适配的原因 对于面向Android7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URL.如果一项包含文件 ...

随机推荐

  1. 模型和字段 -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  2. [squid] kid1| ERROR: No forward-proxy ports configured.

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  3. tf.train.shuffle_batch函数解析

    tf.train.shuffle_batch (tensor_list, batch_size, capacity, min_after_dequeue, num_threads=1, seed=No ...

  4. JavaScript转unix时间戳

    由于 unix 的时间戳是10位不带毫秒的,所以前端获取到时间戳之后需要做一下处理,才能获取正确的时间. // 假设这里是从服务端获取到的时间戳 var unixTime = data.time; / ...

  5. ORACLE 建表语句(表名及字段名大写)

    ORACLE建表时如果表名或者字段名存在大小写同时存在的情况下,默认为区分大小写,此时在select/updata等操作时需要在表名或者字段名上添加双引号,否则会报"视图不存在"的 ...

  6. hadoop初学

    Hadoop: 官网(hadoop.apache.org)的定义: 一:Hadoop Common: 为Hadoop其它模块提供通用的支持 二:HDFS: 是Hadoop的分布式文件系统,其特点是高度 ...

  7. A 洛谷 P3601 签到题 [欧拉函数 质因子分解]

    题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...

  8. ES6中let和闭包

    在开始本文之前我们先来看一段代码 for(var i=0;i<10;i++){ arr[i]=function(){ return i; } } console.log(arr[3]());// ...

  9. 反反爬虫 IP代理

    0x01 前言 一般而言,抓取稍微正规一点的网站,都会有反爬虫的制约.反爬虫主要有以下几种方式: 通过UA判断.这是最低级的判断,一般反爬虫不会用这个做唯一判断,因为反反爬虫非常容易,直接随机UA即可 ...

  10. [转]用JavaScript在浏览器中创建下载文件

    前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等. 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开 ...