嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置

简介: 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)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和选择对应的系统,如下图所示:

1670851256185.jpg

1670851264499.jpg

注意:如果Ubuntu无法上网,请参考前面《网络问题》进行设置。

如果执行该命令出现如下错误:

1670851271071.jpg

可以先执行“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

1670851291294.jpg

在Ubuntu下打开终端后,可以直接执行如下命令。

book@100ask:~$ git clone https://e.coding.net/weidongshan/01_all_series_quickstart.git

1670851313526.jpg

下载成功后,将会得到一个名为“01_all_series_quickstart”的目录,里面含有源码,操作示例如下图所示。

1670851320981.jpg


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邮箱和用户名,否则会导致下载失败(如下为参考示例图)。

1670851362963.jpg


3.3 下载源码

通过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建立工程,这样就可以很方便地阅读源码了。

1670851380103.jpg

1670851386948.jpg

注意:使用source insight阅读Linux源码的方法,请参考章节《使用Source Insight阅读Linux内核源码》。Ubuntu下压缩命令为(最好是下载之后马上压缩,不要编译内核后再压缩,否则文件太大了):

tar  cjf Linux-4.9.88.tar.bz2  Linux-4.9.88


压缩完会显示目录下源码的压缩包如下图:

1670851398582.jpg


3.4 同步最新代码


repo在线下载的代码和网盘配套资料中的代码是一致的,我们会每隔一段时间更新一次源码包,如使用在线方式获取源码 可以直接在 ~/100ask_imx6ull-sdk 目录下执行

../repo/repo sync -c

进行同步更新最新代码!

同步完结果如下图所示:

1670851411667.jpg


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

1670851465430.jpg


设置完毕后,要执行 source ~/.bashrc 命令使其生效,并通过arm-buildroot-linux-gnueabihf-gcc -v 命令来验证是否配置成功。

book@100ask:~$ source  ~/.bashrc
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v

1670851486027.jpg

4.2 测试是否成功


测试环境变量:

book@100ask:~$ echo $ARCH
arm
book@100ask:~$ echo $CROSS_COMPILE
arm-buildroot-linux-gnueabihf-


测试交叉编译工具链:

book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v


效果如下图所示:

1670851510501.jpg


5.使用Buildroot构建根文件系统


5.1 构建根文件系统(需要编译一整晚)

1670851529912.jpg

使用以下命令编译出的文件,可以烧写到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

1670851537324.jpg


注意:机器性能不同,编译时间不同。性能差的电脑,有可能需要等待5 ~ 6个小时。


编译成功后文件输出路径为 output/images

1670851546093.jpg


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
相关文章
|
4月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
979 3
|
2天前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
27 13
|
4天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
44 13
|
1月前
|
开发工具 git 开发者
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置
本篇将专注于如何在 DevEco Studio 中安装和配置必要的插件,以增强开发功能和提升效率。通过正确配置插件,开发流程能够得到简化,开发体验也会更加顺畅。
94 1
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置
|
28天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
20 3
|
2月前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
210 4
Linux系统之Ubuntu安装cockpit管理工具
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
507 3
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
130 3
|
2月前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
4878 3
|
3天前
|
Ubuntu Linux Docker
Ubuntu22.04上Docker的安装
通过以上详细的安装步骤和命令,您可以在Ubuntu 22.04系统上顺利安装
43 11
下一篇
DataWorks