ubuntu交叉编译opencv运行在arm上 ubuntu平台编译环境配置及搭建
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
- 固件编译环境
- 准备工作
- 软件包安装
- 交叉编译工具链介绍
- 下载 SDK
- SDK 目录结构
- 全自动编译脚本
- 烧写镜像文件
- 第一步,编译固件(【【淘密令】】环境)
- 更换根文件系统,默认的根文件系统只读的
- 加载开发板SSH驱动
- 添加关于ROS的python包
- 加载adb驱动
- 可以删除一些不必要的驱动,以减小固件大小,不知道可以省略此步骤。
- 第二步,搭建交叉编译环境(【【淘密令】】环境)
- PC 端(Ubunut主机)安装 ROS
- 开发板刷入官方给的ROS固件
- 安装nfs服务,用于传输文件
- Pc端安装nfs服务
- 开发板安装nfs服务
- 开发板升级固件后,将indigo文件夹和usr/lib文件夹拷贝出来
- 将setup.sh和wifi.sh拷贝出来
- 将PC端/opt/ros/indigo 替换为丁工发给我的indigo-64,并改名字为indigo
- 替换交叉编译工具链
- 编译的时候会报错sysroot文件夹下缺少东西,将丁工发给我的sysroot放到报错的目录下就好了
- 第三步,在开发板上运行程序
除了系统要求外,还有其他软硬方面的要求。
64 位系统 硬盘空间大于 40G,如果您进行多个构建,将需要更大的硬盘空间。 推荐使用Ubuntu 16.04 的系统进行编译。其他版本没有具体测试,可能需要对软件包做相应调整。 (此处使用的是Ubuntu14.04,因为ROS的indigo版本需要运行在Ubuntu14.04环境下)
・操作系统安装好后,且用户已自行配置好网络环境,则可继续如下步骤完成相关软件包的安装。
・安装 Kernel 及 U-Boot 编译需要依赖的软件包
・安装 Buildroot 编译需要依赖的软件包
(注意:在【【淘密令】】版本可以直接下载repo软件包,但是在【【淘密令】】版本下无法下载,下面是解决办法) Ubuntu14.04之后,repo安装在这里:
但是安装完之后,还是提示没有安装repo,接下来进行下面的操作
编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
建立一个名为android_source的工作目录:(可以跳过此步骤,工作目录直接是home目录)
设置git邮箱和用户名:(随便填)
如果没有设置git用户邮箱和用户名,运行下面初始化仓库的命令是会出现错误提示 初始化仓库
出现下面画面表示前面的步骤成功(也有可能步骤没错,但还是出了问题,下面说到): 如果出现下面的提示,导致初始化失败: 这大概是网络的原因,把上面那条初始化命令再跑几次试一下,就成功了。就我的经验而言,有时候没有出现上面的网络问题,有时候把repo init初始化命令再跑一遍就行,还试过跑几次才成功的。
同步源码树:(此处占用内存非常大,经过验证,对于本项目来说没用,可以不进行此步操作,只用repo init 就可以了) repo sync ・必要工具安装
sudo apt install genext2fs
注意:编译若遇到报错,可以视报错信息,安装对应的软件包。
鉴于 Rockchip Buildroot SDK 目前只在 Linux 下编译,我们也仅提供了 Linux 下的交叉编译工具链。其中 U-Boot 及 Kernel 使用的编译工具链预置目录在 prebuilt/gcc下,buildroot 使用该开源软件中编译出来的工具链。
U-Boot 及 Kernel 编译工具链 prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
对应版本 gcc 【【微信】】.3.1 20170404 (【【微信】】.3-2017.05)
Buildroot 编译工具链 buildroot/output/rockchip_rk3308_release/host/bin/aarch64-rockchip-linux-gnu-
对应版本 gcc 【【微信】】.4.0 (Buildroot 2018.02-rc3-00017-g9c68ede)
如果需要其他平台或版本的工具链,需自行编译。
由于 SDK 比较大,我们提供了一个打包好的.git以供下载: Firefly-RK3308_Linux_SDK 下载完成后先验证一下 MD5 码:
确认无误后,就可以解压:
解压出来的SDK,已经默认添加远程仓库
以后就可以直接从 gitlab 处更新:
为了提高编译的效率,降低人工编译可能出现的误操作,该 SDK 中集成了全自动化编译脚本,方便固件编译、备份。 该全自动化编译脚本原始文件存放于:
在SDK根目录创建了相应软链接build.sh。 可通过修改 device/rockchip/rk3308/BoardConfig.mk 脚本中的特定变量,以编出对应产品固件 执行自动编译脚本:
该脚本会自动配置环境变量,并自动编译 U-Boot,编译 Kernel,编译Buildroot,编译 Recovery 继而生成固件。 (关于编译的详细教程,请参考RK3308官方wiki教程 http://wiki.t-firefly.com/ROC-RK3308-CC/sdkbuilding.html#kai-fa-huan-jing-da-jian) 注意: 此处一直编译失败,官网教程推荐【【淘密令】】及以上版本。可能是版本不同,功能包不同,无论如何也无法编译通过,经过大量尝试与在线搜索,偶然间安装了conda(开源软件包管理系统和环境)发现可以编译通过了。 后续有时间再详细验证,反正现在能用了,就接着往下走,不浪费时间。 注意: 执行该命令后,重新编译又编译不过,重复编译了好多次,又编译通过了,暂时不知道什么原因,暂时只能不停重新编译,直到通过为止。
注意:注意交换分区,不添加交换分区会导致出错
请参照《升级固件》来烧写分区映像文件。
问题:后来又重新编译了一次,但是怎么也检测不到ADB设备,很奇怪 无奈只能用【【淘密令】】重新编译了一个固件使用
编译流程:参考【【淘密令】】教程
编译前需要做的其他工作: 1、更换根文件系统,默认的根文件系统是只读的 2、加载开发板SSH驱动 3、添加关于ROS的python支持包 4、加载adb驱动 5,可以删除一些不必要的驱动,以减小固件大小,不知道可以省略此步骤。
fs-overlay 默认编译出来根文件系统,有些配置文件可能不能满足客制化需求,这时候 fs-overlay 就能排上用场,fs-overlay 目录会在编译的最后阶段替换到文件系统目录,打包进根文件系统。 fs-overlay路径由默认配置文件指定: BR2_ROOTFS_O【【微信】】=“boa【【微信】】/rk3308/fs-overlay” Rootfs 切换为 ext2 Rootfs 可配置为可读写 ext2 文件系统,方便系统调试使用。 修改 Kernel 中 bootargs 配置: 如图所示,替换bootargs。
修改 device/rockchip/rk3308/rockimg/对应的 parameter 文件,确保 rootfs 分区大小足够存放分区镜像。 (此处我不知道怎么修改,暂时没修改,但是没影响运行,就没管,哈哈哈,希望能遇到大神指点) 修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系统类型: rootfs 分区 ext2 文件系统镜像会自动打包生成,也可以直接在以下路径获取: buildroot/output/firefly_rk3308_release/images/rootfs.ext2
开发板通过串口调试,无法打开多个终端,可以使用SSH服务,能够同时打开多个窗口,方便调试。而且可以在电脑和开发板之间上传和下载文件。 一、SSH原理: 自己百度 二、PC端SSH客户端安装(3种方法) 1,可以使用putty 2,可以直接使用windows终端窗口 3,ubuntu下需要安装ssh :sudo apt-get install openssh-client 三、开发板安装ssh服务器(【【淘密令】】) 一般默认安装了。 本人使用的板子没有安装,需要从新编译系统 打开【【淘密令】】教程,进入Buildroot开发,根据步骤打开根目录下的【【淘密令】】,然后全局搜索【【淘密令】】,勾选上 然后回到主目录,进行编译,打包,然后升级固件
开发板连接上串口助手,显示下面的消息,代表安装成功 四、启动【【淘密令】】,默认后台运行 五、客户端 六、可能出现的错误 一、文件系统只读权限,无法修改root密码 第一步,进入kernal,打开【【淘密令】】,在file system里面找到openfly的支持,勾选上。 第二步,参考更换根文件系统教程 二、无法登陆
如果输入正确的密码,但总是登录不成功(在目标板上的终端提示:user ‘root’ has in【【微信】】, rejected),可能是由于 root 帐号没有设置正确的登录shell。各大多数程序一样,【【淘密令】】 只允许 /etc/passwd 中列举的用户登录,并且在/etc/passwd中该用户需要设置正确的shell(/bin/sh 或 /bin/csh)。有些busybox用的是/bin/bash,所以被【【淘密令】】拒绝了。这里我们使用 /bin/sh 以后,就可以正常登录了。 (本开发板默认是/bin/sh,改为/bin/bash就好了,具体的修改根据不同的开发板,可能不一样,自己尝试) 然后输出passwd 修改密码
开发板打开SSH服务器 【【淘密令】】 -E -R -p 2222 PC主机SSH远程登陆Ubuntu开发板 Ssh username@192.168.43.252 -p 2222 下面的操作不需要登陆SSH服务器 PC主机将文件/文件夹从远程ubuntu开发板拷贝至本地 Scp -r username@192.168.43.252:/home/username/1.txt http://www.taodudu.cc/news/ 将文件/文件夹从本地拷贝至远程ubuntu开发板 Scp -r localfile.txt username@192.168.43.252:/home/username
默然编译不带ROS支持的相关python包,运行的时候报错:找不到python 打开虚拟机,先source一下环境,否则无法打开 make 【【淘密令】】 然后打开【【淘密令】】 搜索ros 找到 … for ros 选项,随便点一个进去 选中catkin_pkg for ros ,编译的时候编译进去 然后保存,点击save按钮,也可以输入命令make sa【【微信】】 进行保存
优先使用Windows下的ADB调试。尽量不要使用Ubuntu下的ADB调试。因为ubuntu下会运行很多东西,很容易出现端口被占用的情况,导致adb无法打开
ADB,全称 【【淘密令】】,是 Android 的命令行调试工具,可以完成多种功能,主要有: 运行设备的 shell(命令行) 管理模拟器或设备的端口映射 计算机和设备之间上传/下载文件 将本地 apk 软件安装至模拟器或硬件设备
ADB 是一个“客户端-服务器端”程序,其中客户端主要是指 PC,服务器端是 Android 设备的实体机器或者虚拟机。根据 PC 连接 Box 机器的方式不同,ADB 可以分为两类:
网络 ADB:主机通过有线/无线网络(同一局域网)连接到硬件设备 USB ADB:主机通过 USB 线连接到硬件设备
为了在ROC-RK3308-CC也能使用ADB工具进行调试,我们移植了adb服务。但由于并非Android设备,很多adb命令类似adb logcat、adb install等不能使用,仅作为普通的调试辅助工具,可以进行shell交互、上传下载文件等操作。同样,网络远程ADB调试不能使用。 Buildroot 配置 Buildroot配置:BR2_PACKAGE_DUERCLIENTSDK $ make 【【淘密令】】 进入图形选择界面,输入 /,跳出搜索界面如下,输入BR2_PACKAGE_DUERCLIENTSDK,按回车进行搜索 选择[1],然后按空格选择上 dueros_client_sdk 前面有 [ * ] 号,表示已经选上,然后< Save >保存,并< Exit >退出图形界面,输入配置保存命令:
保存配置,不保存的话,会在一键编译脚本中被重置 准备连接 ROC-RK3308-CC 只能使用USB ADB功能,使用USB ADB有以下限制:
只支持 USB OTG 口 不支持多个客户端同时使用(如 cmd 窗口,eclipse 等) 只支持主机连接一个设备,不支持连接多个设备
用 USB Type-C 线连接设备和主机,运行【【微信】】命令,如果显示机器的序列号,表示连接成功。
Windows下的 ADB 安装
首先参照安装 RK USB 驱动一节安装好驱动。然后下载 adb.zip,解压到 C:\adb 以方便调用。 打开命令行窗口,输入:
如果一切正常,就可以进入adb shell,在设备上面运行命令。 常用 ADB 命令 连接管理
列出所有连接设备及其序列号 $ 【【微信】】
如果有多个连接设备,通过以下命令,使用序列号来区分: $ 【【微信】】=<序列号> $ 【【微信】】
进入设备的 shell $ adb shell $ eixt 退出
从电脑上传文件到设备 $ adb push <本地路径> <远程路径>
从设备下载文件到电脑 $ adb pull <远程路径> <本地路径> 暂不支持网络 adb 调试。
获取详细运行信息 adb bugreport adb bugreport 用于错误报告,里面包含大量有用的信息。 示例: $ adb bugreport 保存到本地,方便用编辑器查看 $ adb bugreport >bugreport.txt
命令行帮助信息 adb help 注意:并不是所有命令都能使用,帮助信息只做参考
搜索audio带Y的都取消了 取消不必要的模块编译 这个页面下的东西我全取消了
1、PC端安装ROS 2、开发板刷入官方给的ROS固件 3、安装nfs服务,用于传输文件 4、开发板升级固件后,将indigo文件夹和usr/lib文件夹拷贝出来 5、将setup.sh和wifi.sh拷贝出来 6、将PC端/opt/ros/indigo 替换为丁工发给我的indigo-64,并改名字为indigo 7、替换交叉编译工具链 8、编译的时候会报错sysroot文件夹下缺少东西,将丁工发给我的sysroot放到报错的目录下就好了
查看ROS所有的发行版本。目前 ROS 最新的版本,也是官方推荐的版本是 ROS Melodic Morenia 。其安装教程官方有很详细的介绍,需要注意的是,不同的Ubuntu版本,对应安装不同的 ROS 版本,例如 ROS Melodic Morenia 主要针对 Ubuntu 18.04 (Bionic) release,而 ROS Indigo Igloo 则针对 Ubuntu 14.04 LTS (Trusty) release。
由于 ROC-RK3308-CC 的 ROS 系统使用的是 ROS Indigo Igloo 版本,所以我们主机这里也安装 ROS Indigo Igloo 版本进行测试,下面的简要安装教程也是主要针对 Ubuntu 14.04 (ROS Indigo),其他版本的安装教程可到官网维基查询。
平台说明
ROS Indigo 仅仅只支持Ubuntu 13.10 (Saucy) 和 Ubuntu 14.04 (Trusty)。这里在 Ubuntu 14.04 系统上安装ROS。 安装步骤
配置Ubuntu仓库 允许”restricted”,”universe”,”【【微信】】.”。 设置软件源(可以用)
或者来自中国的源:(经测试,不能用)
可根据UbuntuMirrors自己选。 添加key
安装 1、更新软件索引:
2、安装: 这里推荐 Desktop-Full 安装: ROS, rqt, rviz, 【【微信】】es, 2D/3D simulators and 2D/3D perception。
3、初始化 rosdep: 使用ROS之前,需要初始化rosdep,以解决一些系统依赖问题。
4、环境配置
5、推荐安装 rosinstall,一个非常好用的命令行工具
固件地址: ROC-RK3308-CC_Yocto_ROS下载完固件以后解压 打开开发工具,选中对应的景象进行升级
1、安装NFS相关组件 Sudo apt-get install nfs-kernel-server 安装完nfs服务器之后,我们需要建立一个与下位机挂接的共享文件夹 2、建立NFS共享文件夹 Sudo mkdir -R /mnt/nfs 3、设置共享目录 修改主机/etc/exports 文件,添加如下代码 /mnt/nfs *(rw,sync,no_root_squash) Rw : 可读写的权限 ro :只读权限 No_root_squash :NFS客户端分享目录使用者的权限,即如果客户端使用的是root用户,那么对于这个共享目录而言,改客户端就具有root的权限,若是以NFS挂载根文件系统时 ,必须设置此项 Sync :资料同步写入到内存与硬盘 Async:资料会先暂存于内存当中,而非直接写入硬盘设置完共享文件夹之后需要重启NFS服务器 4、服务器操作命令 Sudo ser【【微信】】 / sudo service rpcbind restart Sudo ser【【微信】】r restart 5、测试 首先,我们可以使用如下命令查看所建立的共享文件夹 showmount -e 如果看到显示:Export list for ubuntu:/mnt/nfs * 则表示主机设置成功
幸运的是,官方提供的ROS固件,已经默认安装了NFS服务,只需要启动就可以 Mount -t nfs -o nolock 192.168.43.64:/mnt/nfs/ /mnt/nfs 说明:这里的ip地址是PC主机的IP地址。第一个/mnt/nfs是PC主机上设置的共享文件夹目录吧,第二个/mn
电脑密码忘记怎么解开不用换密码 电脑开机密码忘记了怎么重设密码
电脑密码忘记怎么解开不用密码,电脑密码忘记怎么解开不用鼠标,电脑密码不记得了,怎么解开,电脑密码忘了怎么开机怎么办最简单的方法不需要u盘WinXP/2000下对策:删除信息系统进行安装一个目录\system32 \config下的SAM文件,电脑重启,
这时管理员Administrator账号已经没有密码了,用Administrator帐户登陆管理系统,不用我们输入 任何密码,进入系统后再重新设置用户登陆账户密码就可以了。
其次:
计算机密码一般有两种,开机启动密码和登录密码。
其一,开机密码是BIOS密码,在系统启动前使用。
1.要清除,最简单的方法是拆除 BIOS 电池,等待2或3分钟,把它再放进去了就行,唯一的缺点是拆机比较麻烦。
2.还有一个通用密码,需要看说明书或者联系厂家。
其二、登录密码就是一个系统进行启动后,登录信息系统用的。
1. 当您忘记登录密码时(只有当用户名不是管理员时才有效)
启动时按下F8键,用安全管理模式进行启动,用Admininstraor这个登录,因为没有安装技术操作控制系统时,这个用户的密码一般为空的。
然后直接删除管理组中忘记密码用户名的密码,或者还原本地用户“ * * * * * *”的密码作为示例。
步骤:
1.重新启动计算机,在启动屏幕出现后立即按下F8,然后选择“命令行安全模式”。
2、运行管理过程研究结束时,系统可以列出一个系统进行超级计算机用户“admininstraor”和本地企业用户“*****”的选择通过菜单,鼠标或者单击“admininstraor”,进入密令行模式。
3.输入密码“ Net user * * * 123456/add”,并强制“ * * * *”用户的密码更改为“123456”。要在这里添加一个新用户(例如: 用户名 ABCDEF,密码123456) ,输入“ Net user * * * 123456/add”,在添加之后,可以使用命令“ Net localgroup Administration ABCDEF/add”将用户提升到具有超级特权的系统管理组 Adminstraor。
4.重新启动计算机,并在正常模式下运行。
如果是管理员就会比较麻烦,小员建议大家重新安装系统。