基于全志H3芯片的ARM开发环境搭建

最近买了个友善之臂的NanoPi M1板子,又在网上申请了个NanoPi NEO板子,这两个都是基于全志H3芯片的Crotex-A7四核ARM开发板,两个板子可以共用一套开发环境,本文就以NanoPi NEO为例,简单讲述基于全志H3芯片的ARM开发环境搭建。

1. 安装交叉编译工具

1.1 获取交叉编译工具

在百度网盘中,给出了Nanopi NEO的交叉编译工具:

注意:

第一个 gcc-linaro-arm.tar.xz 是用友善之臂给出的脚本编译生成固件的;

如果需要交叉编译工具编译应用程序或者内核,需要使用第二个 arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz 工具。

1.2 安装交叉编译工具

解压:arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz,得到 4.9.3 目录,与其他平台搭建交叉编译环境方法一样,将该目录复制到 /usr/local/arm/ 目录下

设置环境变量,在 ~/.bashrc 最后添加:

# vim ~/.bashrc
PATH=$PATH:/usr/local/arm/4.9.3/bin/
export PATH

重启或者注销用户再登录即可使用该交叉编译工具。

1.3 验证安装是否成功

验证交叉编译工具是否安装成功:

$ arm-cortexa9-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-cortexa9-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm/4.9.3/bin/../libexec/gcc/arm-cortexa9-linux-gnueabihf/4.9.3/lto-wrapper
Target: arm-cortexa9-linux-gnueabihf
Configured with: /work/toolchain/build/src/gcc-4.9.3/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=arm-cortexa9-linux-gnueabihf --prefix=/opt/FriendlyARM/toolchain/4.9.3 --with-sysroot=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-languages=c,c++ --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3 --with-float=hard --with-pkgversion=ctng-1.21.0-229g-FA --with-bugurl=http://www.friendlyarm.com/ --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --with-gmp=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpfr=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-mpc=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-isl=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-cloog=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --with-libelf=/work/toolchain/build/arm-cortexa9-linux-gnueabihf/buildtools --enable-lto --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --enable-threads=posix --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-gold --disable-multilib --with-local-prefix=/opt/FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root --enable-long-long
Thread model: posix
gcc version 4.9.3 (ctng-1.21.0-229g-FA)

1.4 验证交叉编译工具是否能正常编译

验证安装的交叉编译工具编译的程序在Nanopi NEO板子上能够运行:

1)先写一个简单的验证程序,也就是程序员”家喻户晓“的 Hello world!

$ cat hello.c
#include <stdio.h> int main(void)
{
printf("Hello world!\n"); return 0;
}

2)将程序交叉编译为板子能运行的程序:

$ arm-cortexa9-linux-gnueabihf-gcc hello.c -o hello

3)编译完成后生成的hello程序,查看文件属性:

$ file hello
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.0.8, BuildID[sha1]=e471478037c7cf740dadac9ec82136aad38f0c4e, not stripped

2. 将程序通过NFS文件系统复制到开发板

2.1 先让板子连上网

1)确保板子已经能够正常联网:

# ifconfig
eth0 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr:***.***.*.*** Bcast:***.***.*.255 Mask:255.255.255.0
inet6 addr: ****::****:****:****:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:820 errors:0 dropped:0 overruns:0 frame:0
TX packets:637 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:513171 (501.1 KiB) TX bytes:49921 (48.7 KiB)
Interrupt:114 lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:33 errors:0 dropped:0 overruns:0 frame:0
TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3304 (3.2 KiB) TX bytes:3304 (3.2 KiB)

2)ping外网,检测是否能和外网通讯:

# ping www.baidu.com
PING www.baidu.com (163.177.151.110) 56(84) bytes of data.
64 bytes from www.baidu.com (163.177.151.110): icmp_seq=1 ttl=53 time=11.1 ms
64 bytes from www.baidu.com (163.177.151.110): icmp_seq=2 ttl=53 time=10.3 ms
64 bytes from www.baidu.com (163.177.151.110): icmp_seq=3 ttl=53 time=10.6 ms
^C
--- www.baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 10.356/10.740/11.183/0.350 ms

2.2 安装NFS服务器并配置NFS目录

1)安装NFS服务器

# sudo apt-get install nfs-kernel-server

2)创建NFS目录:

# vim /etc/exports
添加:
/mnt *(rw,sync,no_root_squash,no_subtree_check)

3)重启NFS服务器:

# systemctl restart nfs-kernel-server

4)检查nfs是否启动:

# ps -aux | grep nfs
root 39 0.0 0.0 0 0 ? S< 14:53 0:00 [nfsiod]
root 29118 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29119 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29120 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29121 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29122 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29123 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29124 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29125 0.0 0.0 0 0 ? S 15:55 0:00 [nfsd]
root 29142 0.0 0.1 4136 748 ttyS0 S+ 15:56 0:00 grep nfs

2.3 通过NFS网络服务器传输文件

通过NFS网络服务器挂载,将文件拷贝到板子上:

1)在PC的虚拟机上安装NFS客户端:

$ sudo apt-get install nfs-common

2)将板子的 /mnt/nfs 目录挂载到PC虚拟机的 /mnt 目录:

$ sudo mount -t nfs -o intr,nolock 192.168.4.113:/mnt/nfs /mnt

3)将PC虚拟机上编译好的程序拷贝到板子上:

$ sudo cp hello /mnt

在板子上的/mnt/nfs目录下就可以看到拷贝过来的程序了:

# ls /mnt
hello

在开发板上运行程序,验证程序是否可以在板子上运行:

# ./hello
Hello world!

验证成功,由交叉编译工具编译的程序在板子上可以正常运行。

至此,基于全志H3芯片的开发环境搭建完成,可以进行开发工作了。

基于全志H3芯片的ARM开发环境搭建的更多相关文章

  1. Windows下基于ADS+J-Link 的ARM开发环境搭建

    在一般ARM编程教学和实验环境里,一般采用 ADS加+并口转Jtag板+H-Jtag的开发环境.但是这种方法最大缺点是需要机器上有一个并口.现在无论PC还是笔记本都很难有并口,因此采用USB接口调试器 ...

  2. 嵌入式ARM开发环境搭建

    1. 安装,配置,启动FTP服务 安装FTP: sudo apt-get install vsftpd 修改vsftpd的配置文件/etc/vsftpd.conf,将下面两行的'#'去掉#local_ ...

  3. 在windows环境下基于sublime text3的node.js开发环境搭建

    首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了 ...

  4. 基于vlc sdk的二次开发--环境搭建、编译

    前言 关于 搭建.编译VLC,不同的平台有不同的方法,可以参考wiki. 其中在windows下编译VLC有两种方式,MSYS+MinGW和CygWin.通过测试,最后决定采用MSYS+MinGW搭建 ...

  5. LINUX下QT FOR ARM开发环境搭建过程 (使用qt-x11-opensource-src-4.5.2.tar.gz进行编译)

    在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括了Qt Designer等基本工具,用于在PC上对程序的开发调试,使我们能确保程序放到 ...

  6. 基于WDF的PCI/PCIe接口卡Windows驱动程序(1)-WDF概述及开发环境搭建

    原文出处:http://www.cnblogs.com/jacklu/p/4619110.html 本科毕业设计是这方面的工作,所以想开几篇博客来介绍使用WDF开发PCI/PCIe接口卡的驱动程序方法 ...

  7. 基于Eclipse的Go语言可视化开发环境

    http://jingyan.baidu.com/article/d7130635032e2f13fdf475b8.html 基于Eclipse的Go语言可视化开发环境 | 浏览:2924 | 更新: ...

  8. 【游戏开发】基于VS2017的OpenGL开发环境搭建

    一.简介 最近,马三买了两本有关于“计算机图形学”的书籍,准备在工作之余鼓捣鼓捣图形学和OpenGL编程,提升自己的价值(奔着学完能涨一波工资去的).俗话说得好,“工欲善其事,必先利其器”.想学习图形 ...

  9. 基于jeesite的cms系统(一):开发环境搭建

    基于jeesite的cms系统系列,是对基于jeesite进行二次开发的博客模块开发过程的总结.涉及入门安装,二次开发,部署等 一.概况: JeeSite 是一个 Java 企业级快速开发平台,基于经 ...

随机推荐

  1. MySQL基于binlog主从复制

    MySQL复制介绍 默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定 ...

  2. 【转】用Linux命令行获取本机外网IP地址

    $ curl ifconfig.me $ curl icanhazip.com $ curl ident.me $ curl ipecho.net/plain $ curl whatismyip.ak ...

  3. Asp.net core 2.0.1 Razor 的使用学习笔记(五)

    按说这里应该写关于Role角色类的笔记,但是我还没时间实验这块,所以等以后我搞定了再来分享.现在先写其他部分. Asp.net core 2.0.1 Razor 的使用学习笔记——建立模型 按照微软官 ...

  4. SpringMVC和Struts2的比较

    整体的框架机制     1.Struts2的入口是StrutsPrepareAndExecuteFilter,SpringMVC的入口是通过DispatcherServlet实现.     2.Str ...

  5. ASP.NET MVC 5 ABP DataTables (二)

    1)ABP DataTables 应用(一) 2)  ABP DataTables 应用(二) JS DataTables 这个组件绑定数据必须要有自己的返回数据格式.但是ABP返回的格式直接绑定是错 ...

  6. CDlinux制作U盘启动盘,打造自己的口袋系统

    工具: 1.8G或以上U盘一枚: 2.CDlinux0.9.7.1镜像文件,注意其他版本不一定能成功(传送门http://pan.baidu.com/s/1o7P6Gu2): 3.UltraISO或U ...

  7. .Neter玩转Linux系列之三:Linux下的分区讲解

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  8. BZOJ 2337: [HNOI2011]XOR和路径 [高斯消元 概率DP]

    2337: [HNOI2011]XOR和路径 题意:一个边权无向连通图,每次等概率走向相连的点,求1到n的边权期望异或和 这道题和之前做过的高斯消元解方程组DP的题目不一样的是要求期望异或和,期望之间 ...

  9. Java随感

    创新项目要用java,而我只大概会C++,只能靠自学咯~~~随时将一些重要的概念做笔记在这里吧>_< 1.一个源文件中只能有一个public类,一个源文件可以有多个非public类 2.所 ...

  10. ThinkPHP删除栏目(多)

    前段时间发表了一个删除栏目的随笔,当时实现的功能是删除一条信息,这次来实现一下批量删除栏目. 我们需要达到的是这样一个效果: 选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就 ...