Linux 下加载 HI3516 过程

本文详细记录了在Linux环境下加载Hi3516 SDK的具体步骤,包括文件解压、交叉编译器安装配置、Makefile参数调整等关键环节。
前段时间在Windows下实现智能跟踪球机的相关算法,基本都已经成型,下一个目标就是将相关算法应用到球机上,所以必须在Linux下进行相关操作,由于之前没有接触过linux,所以,学习了一段时间,自己在电脑上安装了一个redhat9.0版本的linux操作系统,其实建个系统慢容易的,比较难的是加载相关的开发库,期间有加载OpenCV2.1.0在上面,后来需要加载HI3516.现在把具体加载Hi3516过程回顾下:

        首先,把 Hi3516_SDK_V1.0.4.0.tgz 拷贝到 Linux 服务器上,我是直接copy到 /home/realtimedsp下面。
       其次,在当前文件夹下解压文件,使用命令:tar -zxf Hi3516_SDK_V1.0.4.0.tgz ,从而可以得到一个新的文件:Hi3516_SDK_V1.0.4.0;
      下一步,进入Hi3516_SDK_V1.0.4.0/tools/toolchain文件下,运行chmod +x cross.install,然后运行sudo ./cross.install
       下一步,执行source /etc/profile,安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
       下一步,将sdk.unpack文件用文本打开,将 #!/bin/sh,修改为 #!/bin/bash;此处主要是因为 Ubuntu下默认为Shell,而海思的需要bash的。
            下一步,返回 Hi3516_SDK_V1.0.4.0  目录,运行sudo ./sdk.unpack将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
      下一步,完成后,文件夹mpp,osdrv会生成一些文件。然后,进入 Hi3516_SDK_V1.0.4.0/tools/toolchain下,解压arm编译器arm-hisiv100-linux.tar.bz2,具体命令式:
sudo tar jxvf arm-hisiv100-linux.tar.bz2,生成arm-hisiv100-linux文件,该文件夹有相关的编译器文件;
    下一步, 直接运行gedit ~/.bashrc,添加编译器路径,
#hisi Hi3516 
export PATH="/home/realtimedsp/HI3516/Hi3516_V100R001C01SPC040/01.software/board/Hi3516_SDK_V1.0.4.0/tools/toolchain/arm-hisiv100-linux/bin:$PATH"
保存文件。
    下一步,运行arm 试一下是否加载成功。
    下一步,进入Hi3516_SDK_V1.0.4.0/mpp下,以文档的形式打开Makefile.param,修改内核路径;
我的路径修改为为:/home/realtimedsp/HI3516/Hi3516_V100R001C01SPC040/01.software/board/Hi3516_SDK_V1.0.4.0/osdrv/linux-2.6.35
/home/realtimedsp/HI3516/Hi3516_V100R001C01SPC040/01.software/board/Hi3516_SDK_V1.0.4.0/osdrv/drv
  最后,进入i3516_SDK_V1.0.4.0/mpp/sample下面,运行:sudo make rel,就可以验证加载是否成功。
整个操作也比较简单,由于之前没接触过,倒腾了半天才调试通过,期间请教了同事,感觉收获蛮大的。
本资源为arm-linux下的海思编译链工具V300 C语言有三种标准库如下: 1.Glibc glibc = GNU C Library 是GNU项(GNU Project)目,所实现的 C语言标准库(C standard library)。 目前,常见的桌面和服务器中的GNU/Linux类的系统中,都是用的这套C语言标准库。 其实现了常见的C库的函数,支持很多种系统平台,功能很全,但是也相对比较臃肿和庞大。 2.uClibc 一个小型的C语言标准库,主要用于嵌入式。 其最开始设计用于uClinux(注:uClinux不支持MMU),因此比较适用于微处理器中。 对应的,此处的u意思是μ,Micro,微小的意思。 uClibc的特点: (1)uClibc比glibc要小很多。 (2)uClibc是独立的,为了应用于嵌入式系统中,完全重新实现出来的。和glibc在源码结构和二进制上,都不兼容。 3.EGLIBC EGLIBC = Embedded GLIBC EGLIBC是,(后来)glibc的原创作组织FSF所(新)推出的,glibc的一种变体,目的在于将glibc用于嵌入式系统。 EGLIBC的目标是: (1)保持源码和二进制级别的兼容于Glibc 源代码架构和ABI层面兼容 如果真正实现了这个目标,那意味着,你之前用glibc编译的程序,可以直接用eglibc替换,而不需要重新编译。 这样就可以复用之前的很多的程序了。 (2)降低(内存)资源占用/消耗 (3)使更多的模块为可配置的(以实现按需裁剪不需要的模块) (4)提高对于交叉编译(cross-compilation)和交叉测试(cross-testing)的支持 【目前了解到的海思交叉编译工具链的应用环境】 arm-hisiv100-linux为基于uclibc的工具链,arm-hisiv200-linux 为基于 glibc 的工具链; arm-hisiv300-linux为基于uclibc的工具链,arm-hisiv400-linux 为基于 glibc 的工具链; arm-hisiv500-linux为基于uclibc的工具链,arm-hisiv600-linux 为基于 glibc 的工具链。 (在开发的时候,你编译内核所用的交叉编译链跟用户的应用程序所用的交叉编译链一定需要相同,不然没法调用系统内核的依赖库)   其中eglibc这种很容易被人开发者忽视,从而选错了编译工具链。 uClibc和Glibc并不相同,两者有许多不同之处,有可能给你带来一些问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值