导航:首页 > 源码编译 > 海思本地编译

海思本地编译

发布时间:2023-09-24 08:46:50

linux 编译安桌系统 海思

一般是编译之前的配置出问题了,好好看看readme,根据你自己的环境重新configure一下。

Ⅱ 海思hi3520编译x264库吗

刚到手的Hi3520开发板,拿来第一件事当然是搭环境,本来调了那么多板子,这不是小菜一碟嘛,可就是挂NFS还浪费了快一个小时,郁闷的了,这倒也好,顺着Hi3520的脉络,就把这个环境搭建过程记录一下,权当记个笔记噻。。。
买的是雅仪科技的Hi3520开发板,板子还是蛮好看滴,6800大洋。因为最多要驱动八块sata硬盘,所以板子采用的是计算机的ATX电源。拿过来之后立马接上串口,上电,擦,毫无反应,这是神马情况,打电话一问才知道板子本身接出来的串口不是调试串口,UART0要我自己做根线接出来,我勒个去。。。
然后开始挂NFS,本来很简单的一件事儿,可就因为公司的网络折腾了我好一会儿,我自己习惯用ubuntu,可ubuntu严重依赖网络啊,公司的网络受限,我执行sudo apt-getinstall nfs-kernel-server丫根本不能装,么有办法了,只能曲线救国,换成Fedora,这下能搞的吧。
这里把ubuntu和Fedora下NFS挂载的基本步骤说明下,后面再说明下要注意的问题:
先说ubuntu下面的:
1、安装nfs服务
执行命令:sudo apt-get install nfs-kernel-server
安装nfs-kernel-server时会自动安装nfs-common和portmap
2、修改/etc/exports文件
执行命令:vim /etc/exports
一般刚安装的nfs-kernel-server服务则这个文件内容应该为空,在文件中加上下面一行
/root/Hi3520192.168.1.244(rw,sync,no_root_squash)
这里的/root/Hi3520表示你linux主机上的共享目录,IP地址你可以改为你开发板的IP,后面的参数网上说的已经很多了,不必过多说明
3、设置linux主机的IP地址,这个不用多说了哎
4、重启nfs服务
执行命令:
sudo/etc/init.d/portmap restart
sudo/etc/init.d/nfs-kernel-server restart

再说Fedora下面的:
Fedora下面稍微复杂,但是Fedora的NFS服务在安装系统的时候已经存在,我们只需配置并将其开启
1、开启nfs服务
在终端下输入setup,在弹出的菜单中选择“系统服务”,讲其中的netconsole,netplugd,nfs服务选上(按空格键选择或者取消)。并按TAB键确认退出
在终端中输入service nfs restart重启nfs服务
2、修改/etc/exports文件
此处同ubuntu中的操作
3、设置linux主机端的网络
这里就不仅仅是设置IP了,还要设置下网络
在虚拟机(我这里用的是VMware)菜单中依次选择”edit->virtual networksetting->Host virtual network mapping”,在第一个下拉菜单中选择一个已经存在的网卡,就是你PC上真实的网卡,并按“应用”,“确认”
关闭虚拟机,确认Network connection为bridged模式

上面是linux主机端的一些设置,下面说点需要注意的问题,因为我们很多人挂NFS的时候是将PC机和开发板用一根网线直接连接,这个时候IP地址你可以随便设,但是这样的话在开发的时候就不能上网了,所以很多人利用一个小humble将PC机和开发板同时接入局域网中,这个时候设置IP的时候您就不要昏头了啊,一定要先确认这个IP是能用的哎,还有就是虚拟机的network connection要选桥接呀。

再说下Hi3520开发板的设置吧,我看很多开发板是通过在uboot中设置bootargs让linux启动的时候就直接挂载NFS,而海思的板子都是在板子进入linux之后通过执行脚本来挂载NFS的,个人觉得后者比较灵活,我想挂就挂,前者就略显麻烦了哎
海思的文档里面信誓当当的把脚本写好啦
modprobe mmzmmz=ddr,0,0xC2000000,16M /*插入mmz模块,网口驱动会使用该模块*/
modprobe hiether /*插入网口驱动模块*/
ifconfig eth0 hw ether00:10:85:18:01:84 /*配置MAC地址*/
ifconfig eth010.85.180.184 netmask 255.255.254.0 /*配置IP地址和子网掩码*/
route add default gw10.85.180.1 /*配置默认网关*/
modprobe nfs /*插入NFS模块*/
mount -t nfs -o nolock10.85.180.133:/home/c54122/glibc-nfs /mnt
和3515的文档上一模一样,可是你丫网卡驱动有变化呀,不负责任哎,改了连文档也不更新,而且我这板子上用的是千兆网卡,还得设置一下模式,我擦,贴上我的脚本内容,IP地址和主机端的NFS目录根据情况自己改呀
modprobemmz mmz=ddr,0,0xC2000000,16M
modprobeh2gether port_mode=1
ifconfigeth0 hw ether DC:07:C1:FE:26:D3
ifconfigeth0 192.168.1.244 netmask 255.255.255.0
routeadd default gw 192.168.1.1
modprobenfs
mount-t nfs -o nolock 192.168.1.233:/root/Hi3520 /mnt
执行这个脚本,NFS就挂载上啦,然后可以开发喽

最后还有一个问题注意下,ubuntu下安装3520的SDK时,可能很多人会报错,那是ubuntu将默认的shell改成了dash,改回去就是了呀,执行命令sudo dpkg-reconfigure dash,然后选择“否”,over!

Ⅲ 海思3516DV300搭建交叉编译环境问题记录

刚开始搭建海思交叉编译环境的时候遇到问题:

安装完arm-himix200-linux后,输入arm-himix200-linux -v,会出现如下错误:

xxx@xxx-virtual-machine:~/Downloads/study3516DV300/rp-hi3516dv300-busybox/sample/hifb$ arm-himix200-linux-gcc -v

arm-himix200-linux-gcc: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

错误方法:

export LC_CTYPE=C.UTF-8

这样做的话,arm-himix200-linux-gcc -v会显示成功,但是当去编译sample时候,会出现这个错误

collect2: fatal error: /opt/hisi-linux/x86-arm/arm-himix200-linux/host_bin/../lib/gcc/arm-linux-gnueabi/6.3.0/../../../../arm-linux-gnueabi/bin/nm terminated with signal 6 [Aborted], core mped

解决方案:

vi ~/.bashrc

最后加入这两句,完成后保存

export LC_ALL=C

export PATH="/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH"

编辑之后使环境变量生效的命令:source ~/.bashrc

之后编译sample通过,生成sample_hifb文件。

Ⅳ 三、内核&文件系统编译

一、编译官方提供的内核源码

1、解压官方提供的内核源码包

2、根据官方提供的配置文件对内核进行配置,方式如下
make  ARCH=arm      xxxxx_defult_config
cp   arch/arm/xxxxx_config    .config

3、打开图形界面对内核进行配置,根据需要增加或者删除模块和其他内容

4、对内核进行编译
make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    uImage  -j6
或者编辑Makefile文件,对其中的ARCH变量和CROSS_COMPILE变量进行修改,然后执行make uImage

5、在编译编译的时候回出现mkimage命令缺失,这个命令是UBootr提供的,在编译的UBoot路径下面找到这个命令,即可直接使用

6、编译的时候各个方面需要一致性,
                1、编译的内核的交叉编译工具链如果支持硬件浮点数运算那么在配置内核的时候也需要添加硬件浮点数的支持
                        Kernel Features --->
                            [*] Use the ARM EABI to compile the kernel
                2、在编译的内核的时候注意保持不要做太多的修改,否则会出问题

7、编译内核模块
    make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    moles  -j6

8、安装内核模块到指定的目录中去
make moles_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build

9、不要采用内核模块安装的命令来安装内核,因为内核不需要安装,在arch/arm/boot/uImage就是所需要的内核文件

二、编译官方提供的busybox来构建根文件系统

1、解压需要编译的busybox源码

2、进入源码中对busybox进行配置,主要是配置交叉编译工具链
Busybox Settings --->Build Options ---> 下面有关于busybox是否配置为采用共享库的模式,还有添加交叉编译工具链的前缀

3、配置需要的文件和命令进行添加或者删除

4、然后执行命令make -jn   && make install

5、创建根文件系统需要的其他的文件和目录,在一个空白的目录中首先拷贝busybox/_install下面的bin、sbin、usr目录到空白目录中,在空白目录中创建其余的所需要的目录文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目录

6、接下来在lib目录中复制内核模块,在编译内核的时候模块安装在了指定的地方,直接拷贝过来就行。

6、创建文件系统所需要的其他文件,配置文件(最简单的办法就是直接复制busybox文件下面的example文件夹里面的东西)
1、/etc/inittab     填写或者    一下是最基本的,还有其他的需要填写
# /etc/inittab
::sysinit:/etc/init.d/rcS                    //指定初始化脚本
::askfirst:-/bin/sh                            //指定第一次输入回车后打开的shell
::ctrlaltdel:/sbin/reboot                //指定这三个按键按下后的反应
::shutdown:/bin/umount -a -r        //指定关机是进行的操作

2、/etc/init.d/rcS                //这个就没有详细额硬性规定了,写入需要初始化的东西即可
#!/bin/sh
mount -a

3、/etc/fstab                        //写入mount -a是要自动挂载的文件系统
# device mount-point type options mp fsck order
proc          /proc        proc  defaults        0    0
tmpfs          /tmp        tmpfs  defaults        0    0

7、拷贝需要用到的库文件,在交叉编译工具链下面存放
arm-linux-xxxxxx-gcc/lib
海思的开发板是在和tahet/lib下面,切记。

Ⅳ 物联网实践 | Huawei LiteOS开发环境搭建及Demo程序在Hi3861上编译烧录运行

本次实践是为尝试在嵌有华为海思芯片的 Hi3861 WIFI物联网开发板上配置开发环境并使用配套开发工具( HUAWEI DevEco Device Tool 或 HUAWEI LiteOS Studio )将Demo工程编译烧录和运行。

参照华为海思编撰的 《物联网技术和应用》 进行搭建。

1.确认开发环境已经正确安装后,启动 Huawei LiteOS Studio

2.新建工程, SDK版本 选择 HiHope WiFi_IoT Hi3861SPC025 ;
SDK目录 在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_WiFi-IoT_Hi3861SPC025 ;
参考目录 选择在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_Pegasus_HelloWorld 。
目标板Hi3861V100。

3.按F4进入工程配置, 目标板配置 中:厂商 HiSilicon ,选中目标板 Hi3861V00 ,确认。

4. 编译器配置森渗散 中:SConstruct脚本,点击文件夹右侧的放大镜自动搜索SConstruct脚本位置,正常搜索完点确认。

5. 烧录器配置 中:烧录方式选择 HiBurner ,确认。

6. 串口配置 中:成功连接Hi3861板后,端口选择唯一一个COM端口;波特率选择 921600 ,确认。

7.F7 编译 ,成功此氏时终端输出紫色 BUILD SUCCESS 字样。

8.F8 烧录 ,出现HiBurn程序窗口时,按一次喊链Hi3861板上的Ret按键,烧录开始。成功时如图:

9.烧录完成,重新拔插数据线,HelloWorld程序运行正常,OLED屏上显示Hello World字样,Hi3861板上LED灯闪烁。

Ⅵ 海思平台配置toolchain.cmake

交叉编译,在我们的host宿主机器上需要生成target目标机器的程序, 使用CMake的Toolchain管理这里的各种环境变量和配置,就很好.

CMake给交叉编译预留了一个变量-- CMAKE_TOOLCHAIN_FILE , 它定义了一个文件的路径, 这个文件就是 toolchain ,我们可以在里面配置 C_COMPILER , CXX_COMPILER ,如果用Qt的话需要更改 QT_QMAKE_EXECUTABLE 以及如果用 BOOST 的话需要更改的 BOOST_ROOT (具体查看相关 Findxxx.cmake 里面指定的路径), 因此,这个 toolchain 内嵌了一系列需要改变并且需要set的交叉环境的设置.

下面归纳一些比较重要的:

下面是一个常规的配置

这样就完成了相关toolChain的编写,之后,你可以灵活的选择到底采用宿主机版本还是开发机版本,之间的区别仅仅是一条 -DCMAKE_TOOLCHAIN_FILE=./cross.toolChain.cmake ,更爽的是,如果你有很多程序需要做转移,但目标平台是同一个,你仅仅需要写一份toolChain放在一个地方,就可以给所有工程使用。

稍微大一点的项目都会用到一些外部依赖库或者tool,CMake提供了 FIND_PROGRAM() , FIND_LIBRARY() , FIND_FILE() , FIND_PATH() and FIND_PACKAGE() 等命令来进行外部依赖的搜索查找。

但是有个问题,假如我们在给一个ARM处理器的移动设备做交叉编译,其中需要寻找 libjpeg.so ,假如 FIND_PACKAGE(JPEG) 返回的是 /usr/lib/libjpeg.so ,那么这就会有问题,因为找到的这个 so 库只是给你的宿主机系统(例如一个x86的Ubuntu主机)服务的,不能用于Arm系统。所以你需要告诉CMake去其它地方去查找,这个时候你就需要配置以下的变量了:

在工程中一般通过如下步骤, 进入工程文件, 创建 arm-himix200-linux.cmake 文件, 内容是:

然后创建build文件夹, 进行编译(注意, 需要指定 CMAKE_MAKE_PROGRAM , 不指定的话好像编译有问题...):

在我的 toolchain 文件中,我指定:

因为我项目中 CMakeLists.txt 中需要查找 OpenSSL 和 curl , 因此会用到CMake自带的 FindOpenSSL.cmake 和 FindCurl.cmake 两个脚本, 他们会用到 Findxxx 命令, 会去我指定的目录去搜索对应的库

https://www.cnblogs.com/rickyk/p/3875334.html
http://www.cmake.org/Wiki/CMake_Cross_Compiling

阅读全文

与海思本地编译相关的资料

热点内容
奔跑程序员 浏览:468
服务器如何搭建类似github 浏览:292
明日之后安卓太卡怎么办 浏览:502
如何使用命令方块找到村庄 浏览:766
泛函压缩映像原理 浏览:521
win10清除文件夹浏览记录 浏览:964
如何查看服务器域中所有服务 浏览:384
学mastercam91编程要多久 浏览:999
如何查服务器地址和端口 浏览:911
教学云平台app怎么下载 浏览:389
单片机510教学视频 浏览:624
陕西信合app怎么查看自己的存款 浏览:663
风冷冰箱有压缩机 浏览:274
android实现wifi连接wifi 浏览:669
飞猪app怎么帮别人值机 浏览:924
笔记本开我的世界服务器地址 浏览:546
怎样隐藏bat命令 浏览:127
android开发创意 浏览:138
京剧猫为什么进不去服务器 浏览:784
怎么自己免费制作一个手机app 浏览:583