嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置
文章目录
- 1.配置Ubuntu初始开发环境
- 2.使用git工具下载源码
- 3.使用repo工具获取内核以及工具链
- 3.1 本地下载
- 3.2 配置repo
- 3.4 下载源码
- 3.5 同步最新代码
- 4.配置交叉编译工具链
- 4.1 永久生效
- 4.2 测试是否成功
- 5.使用Buildroot构建根文件系统
- 5.1 构建根文件系统(需要编译一整晚)
- 6.单独编译更新Kernel dtb内核模块
- 6.1 编译内核镜像
- 6.2 编译安装内核模块
- 6.3 安装内核模块到ubuntu某一个目录下备用
- 6.4 安装内核和模块到开发板上
- 7 单独编译更新u-boot
- 7.1 Bootloader 介绍
- 7.2 编译u-boot镜像
按照下面部分做完直接搭建好Ubuntu所有环境。
1.配置Ubuntu初始开发环境
确保Ubuntu能上网之后,使用下面命令一键配置/初始化开发环境(其实就是安装tftp,nfs,vim等软件,此脚本只支持Ubuntu-16.04 /Ubuntu-18.04
)。
注意:为了方便大家复制,这些命令写成了多行,你要把它们复制到记事本,合并成一行,注意空格:
book@100ask: ~ $ wget --no-check-certificate -O Configuring_ubuntu.sh
https://weidongshan.coding.net/p/DevelopmentEnvConf/d/DevelopmentEnvConf/git/raw/master/Configuring_ubuntu.sh &&
sudo chmod +x Configuring_ubuntu.sh &&
sudo ./Configuring_ubuntu.sh
上述命令是下载脚本,给它添加可执行权限,运行它。
按提示输入book密码123456和选择对应的系统,如下图所示:
注意:如果Ubuntu无法上网,请参考前面《网络问题》进行设置。
如果执行该命令出现如下错误:
可以先执行“sudo apt-get update”,再重新执行前面的命令。
2.使用git工具下载源码
下载到Windows中,再用FileZilla上传到Ubuntu;也可以在Ubuntu下用GIT直接下载。在Windows下启动“Git bash”后执行以下命令:
$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
在Ubuntu下打开终端后,可以直接执行如下命令。
book@100ask:~$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git
下载成功后,将会得到一个名为“01_all_series_quickstart”的目录,里面含有源码,操作示例如下图所示。
3.使用repo工具获取内核以及工具链
有两种方法,一种本地拷贝,一种在线下载。这里使用在线下载,需要前一种则你直接看开发手册。
3.1 本地下载
00ask_imx6ull开发板的所有代码都是保存在git站点上通过repo命令进行统一管理,可以通过如下命令进行下载或同步。
3.2 配置repo
下载repo工具前需要设置git的邮箱和用户名,git邮箱和用户名请根据个人情况进行配置。
book@100ask:~$ git config --global user.email "user@100ask.com"
book@100ask:~$ git config --global user.name "100ask"
注意: 请先配置git邮箱和用户名,否则会导致下载失败(如下为参考示例图)。
3.4 下载源码
通过repo管理多个git仓库中的源码,可以及时更新最新代码,以方便开发者学习使用。执行以下4条命令,为方便大家复制,第3条是很长的命令,使用了\来换行,需要一并拷贝:
book@100ask:~$ git clone https://e.coding.net/codebug8/repo.git
book@100ask:~$ mkdir -p 100ask_imx6ull_mini-sdk && cd 100ask_imx6ull_mini-sdk
book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo init \-u https://gitee.com/weidongshan/manifests.git -b linux-sdk \-m imx6ull/100ask_imx6ull_mini_linux4.9.88_release.xml --no-repo-verify
book@100ask:~/100ask_imx6ull_mini-sdk$ ../repo/repo sync -j4
注意:下载成功后,可以看到名为Linux-4.9.88的目录,可以在Ubuntu压缩它,再传回Windows。在Windows下解压后,用source insight建立工程,这样就可以很方便地阅读源码了。
注意:使用source insight阅读Linux源码的方法,请参考章节《使用Source Insight阅读Linux内核源码》。Ubuntu下压缩命令为(最好是下载之后马上压缩,不要编译内核后再压缩,否则文件太大了):
tar cjf Linux-4.9.88.tar.bz2 Linux-4.9.88
压缩完会显示目录下源码的压缩包如下图:
3.5 同步最新代码
repo在线下载的代码和网盘配套资料中的代码是一致的,我们会每隔一段时间更新一次源码包,如使用在线方式获取源码 可以直接在 ~/100ask_imx6ull-sdk
目录下执行
../repo/repo sync -c
进行同步更新最新代码!
同步完结果如下图所示:
4.配置交叉编译工具链
注意:使用我们提供的Ubuntu映象文件时,请按照我们的目录结构,手动设置交叉编译工具链以及编译的架构环境变量配置,(建议配置为永久生效)。交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量,下面介绍具体设置方法。在本文档中,源码、交叉编译工具链都是存放于/home/book目录下;如果你的目录不一样,请自行修改本节所讲述的命令。设置这3个环境变量有多种方法,任意选择其中一种方法即可,建议使用“永久生效”的方法。录制视频时我会使用多种开发板,所以在视频里我总是使用“临时生效”的方法。
4.1 永久生效
如需永久修改,请修改用户配置文件。
执行:
vim ~/.bashrc
在行尾添加或修改,加上下面几行(第3行第4行为一行命令):
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull_mini-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
设置完毕后,要执行 source ~/.bashrc
命令使其生效,并通过arm-buildroot-linux-gnueabihf-gcc -v
命令来验证是否配置成功。
book@100ask:~$ source ~/.bashrc
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v
4.2 测试是否成功
测试环境变量:
book@100ask:~$ echo $ARCH
arm
book@100ask:~$ echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-
测试交叉编译工具链:
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v
效果如下图所示:
5.使用Buildroot构建根文件系统
5.1 构建根文件系统(需要编译一整晚)
使用以下命令编译出的文件,可以烧写到imx6ull mini emmc版的emmc上或者SD卡上,下面我们以开发板默认出厂系统镜像为例进行说明:
book@100ask:~/100ask_imx6ull_mini-sdk/Buildroot_2020.02.x$ make 100ask_imx6ull_mini_ddr512m_systemV_qt5_defconfig
book@100ask:~/100ask_imx6ull_mini-sdk/Buildroot_2020.02.x$ make all
注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待5 ~ 6个小时。
编译成功后文件输出路径为 output/images
6.单独编译更新Kernel dtb内核模块
6.1 编译内核镜像
不同的开发板对应不同的配置文件,配置文件位于内核源码arch/arm/configs/目录。kernel的编译过程如下(编译内核前需要先配置好工具链等一些环境变量):
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make 100ask_imx6ull_mini_defconfig
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make zImage -jN //N表示根据CPU个数,来加速编译系统
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make dtbs
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ cp arch/arm/boot/zImage ~/nfs_rootfs
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ cp arch/arm/boot/dts/100ask_myir_imx6ull_mini.dtb ~/nfs_rootfs
编译成功后,可以得到这些文件:内核文件arch/arm/boot/zImage
,设备树文件arch/arm/boot/100ask_imx6ull_mini.dtb
。把这2个文件复制到
/home/book/nfs_rootfs
目录下备用。
注意:
编译imx6uLL linux4.9.88
的内核,执行步骤 make zImage
出错:
/bin/sh: 1: lzop: not foundarch/arm/boot/compressed/Makefile:186: recipe for target 'arch/arm/boot/compressed/piggy_data' failedmake[2]: * [arch/arm/boot/compressed/piggy_data] Error 1arch/arm/boot/Makefile:53: recipe for target 'arch/arm/boot/compressed/vmlinux' failedmake[1]: * [arch/arm/boot/compressed/vmlinux] Error 2arch/arm/Makefile:329: recipe for target 'zImage' failedmake: *** [zImage] Error 2
新到的开发板,搭建环境,编译内核出错,虽然搜到很多回答,要下载安装包,然后编译安装,但是配置过程又出错,无法进行下去,最终发现只要 执行这一步就解决了,如下
sudo apt-get install lzop
再次 make zImage
就可以了,亲测
6.2 编译安装内核模块
进入内核源码目录后,就可以编译内核模块了:
book@100ask:~$ cd ~/100ask_imx6ull_mini-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf- modules
6.3 安装内核模块到ubuntu某一个目录下备用
可以先把内核模块安装到nfs根文件系统(/home/book/nfs_rootfs
为安装目录)。
注意:下面会执行tree命令,如果提示没有该命令,需要执行“sudo apt install tree
”命令安装tree工具(前提是Ubuntu能上网)。
执行一下命令:
book@100ask:~$ cd ~/100ask_imx6ull_mini-sdk/Linux-4.9.88
book@100ask:~/100ask_imx6ull_mini-sdk/Linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_ins
6.4 安装内核和模块到开发板上
假设:执行上述命令后,在Ubuntu的/home/book/nfs_rootfs
目录下已经有了zImage、dtb
文件,并且有lib/modules
子目录(里面含有各种模块)。
下面,要把这些文件复制到开发板上。
如果你使用的是VMware桥接方式,假设Ubuntu IP为192.168.1.100
,在开发板上执行以下命令:
mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
7 单独编译更新u-boot
7.1 Bootloader 介绍
7.2 编译u-boot镜像
u-boot的编译过程如下(编译uboot前必须先配置好工具链等开发环境)其它步骤和IMX6ULL Pro版保持一样:
book@100ask: ~/100ask_imx6ull_mini-sdk/Uboot-2017.03$ make distclean
book@100ask: ~/100ask_imx6ull_mini-sdk/Uboot-2017.03$ make mx6ull_14x14_evk_defconfig
book@100ask: ~/100ask_imx6ull_mini-sdk/Uboot-2017.03$ make
然后将编译出来的u-boot-dtb.imx
,拷贝到开发板上
book@100ask: ~/100ask_imx6ull_mini-sdk/Uboot-2017.03$ cp u-boot-dtb.imx ~/nfs_rootfs/
再到开发板界面输入:
root@100ask: ~/100ask_imx6ull_mini-sdk/Uboot-2017.03$ cp /mnt/u-boot-dtb.imx
然后更新,仍然再开发板操作界面:
root@100ask:~]# echo 0 > /sys/block/mmcblk1boot0/force_ro
root@100ask:~]# dd if=u-boot-dtb.imx of=/dev/mmcblk1boot0 bs=512 seek=2
root@100ask:~]# echo 1 > /sys/block/mmcblk1boot0/force_ro
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置相关推荐
- 海思芯片固件修改工具_地平线X3开发板开箱、固件刷写、环境配置
经过一个多月,我终于抽出时间去写这个系列的文章.很开心可以参加这次地平线举办的开发板体验活动.最开始拿到的是1.1.6版本的工具链以及103版本的镜像,而官方在8月发布了0827的镜像以及1.1.12 ...
- 【致敬未来的攻城狮计划】--RA2E1 开发板测评(1)keil环境配置
前言 (1)首先感谢 李肯前辈的活动,从而申请到了RA2L1开发板的测评. (2)本文将会简单介绍此开发的Renesas RA2L1 开发板的前期配置.需要注意的是,MDK版本要5.30 以上. MD ...
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(八)IMX6ULL开发板编译第一个程序以及驱动
文章目录 1. IMX6ULL开发板初次操作 1.1 100ask_imx6ull开发板硬件资源简介 1.1.1 100ask imx6ull mini开发板 1.2 100ask_imx6ull开发 ...
- qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...
作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...
- linux 开发板模拟u盘,S5P4418开发板Linux下实现模拟U盘教程飞凌嵌入式
飞凌嵌入式ARMCortex-A9 S5P4418开发板上能否满足U盘的功能?其实可通过修改内核配置和文件系统相关内容,在OK4418开发板上实现模拟U盘功能,模拟U盘可以帮助我们实现开发板与Wind ...
- 开发板、Windows、Ubuntu三者互联——韦东山嵌入式Linux学习笔记08
实验环境: 1. Windows7 2. VMware12.0+Ubuntu 3. JZ2440 按理说,在物理机上安装Ubuntu操作系统是比较推荐的方法.不过,因为windows上有很多好用的工具 ...
- Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置
Linux学习之ARM开发板连接ubuntu18.04LTS及NFS相关配置 第一步:在PC机安装Ubuntu18.04LTS 具体安装步骤参见上一篇文章 第二步:安装arm-linux-gcc交叉编 ...
- imx6板载linux登录时间,大干货!迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源.doc...
大干货!迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源.doc (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 ...
- imx6 linux 开发环境,大干货!迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源...
描述 迅为IMX6开发板丨Android丨Ubuntu丨Linux丨三大系统全开源 板载模块:WIFI蓝牙.4G.GPS.SATA.CAN/RS485.重力加速度计,电子罗盘等 资料丰富:原理图.底板 ...
- 选择的串口 _ 不存在或开发板没有连接_PC 和开发板之间传输文件
8.1 传输文件的多种方法 在嵌入式开发中,涉及交叉编译:在 PC 上编译,在开发板上运行.所以就涉及 PC 和开发板之间的文件 传输,方法有多种:网络传输.串口传输.USB 传输,当然,还有最笨的方 ...
最新文章
- Python之旅.第十章.mysql
- adb 显示手机分辨率
- Forefront Client Security服务器配置
- 图标插件FusionChartsFree
- 线阵相机参数选择 照明方式
- 利用Python处理逐日气象数据集(.txt文件)
- 班级网站java,ssm班级网站
- Python:实现pollard rho大数分解算法(附完整源码)
- Android中BottomSheetDialog如何设置透明背景
- NLP-文本处理:词形归一(Lemma)【英文】【把各种类型的词的变形都归为一个形式】【went->go;are->be】
- Mysql客户端navicat的使用并连接远程数据库【重点】
- android 目录作用,Android中各级目录的作用说明
- mysql多表查询详解
- 是不是还在为毕业设计而发愁,看了这篇文章,相信你会感谢我的
- COM08 -如何基于Davinci工具配置CAN通信协议栈实战课程【配置方法总述】
- Nginx 源码分析
- 自然场景文本检测识别技术综述
- Widows Log Files (windows日志文件)
- 职场上没人教怎么办,离职吗?
- 云计算机ESc,云服务器esc是什么意思