从0开始在ubuntu18.04上搭建嵌入式Linux开发环境以及嵌入式Qt5.6开发环境
博客中提到的一些工具文件都可以在该链接中下载:https://pan.baidu.com/s/10r4kku8C0bt8vLampOyvWQ
目录
一 Oflash软件通过openJtag下载u-boot.bin到开发板
二 minicom操作u-boot界面
三 ubuntu安装tftp服务器,开发板通过tftp下载uImage到开发板
四 buntu18.04配置nfs
五 boot配置通过NFS启动文件系统
六 通过mkyaffs2image制作文件系统并通过tftp下载至开发板
七 安装arm-linux-gcc-4.4.3交叉编译工具
八 移植tslib1.19到JZ2440
九 ubuntu18.04安装交叉编译过后的Qt 5.6,并移植到JZ2440
十 ubuntu18.04安装Qt 5.12.1,并配置Qt5.6交叉编译环境。
网盘部分文件说明 | ||
---|---|---|
u-boot-2012.04.01-jz2440.tar.gz | 已经移植好的u-boot | make smdk2440_config && make -j8 |
linux-3.4.2-JZ2440V3.tar.gz | 已经移植好的linux内核 | cp config_ok .config && make uImage |
root_fs.tar.bz2 | 使用busybox-1.22.1制作好的根文件系统,且已移植好tslib与qt5.6 | 直接解压作为nfs启动使用 |
tslib_maked.tar.gz | 使用交叉编译工具编译好的tslib1.19。 | 直接解压到自己制作的根文件系统使用。 |
qt-maked-src-5.6.tar.gz | 使用交叉编译工具编译好好的qt5.6(自己编译需花两三个小时) | 解压后执行 make install 进行安装 |
注意:在编译内核前需要将u-boot中的mkimage工具复制到/usr/bin目录下,不然会报错:
sudo cp u-boot-2012.04.01-jz2440/tools/mkimage /usr/bin
首先我们需要搭建一个Linux下载百度网盘文件的环境:
1.firefox需要安装一个插件:https://addons.mozilla.org/zh-CN/firefox/addon/baidu-pan-exporter/ 安装后重启Firefox,然后百度云会出现“导出下载”选项。一般要出现导出下载需要浏览器加载一段时间,注观察标签页是否在加载中...
2. 如果使用的chrome,插件下载地址:https://github.com/acgotaku/BaiduExporter 下载后打开chrome,进入“设置->扩展程序”页面,开启右上角的开发者模式,将 BaiduExporter.crx文件拖到该页面进行安装。
3. sudo apt-get install aria2 命令安装多线程下载软件。
4.点击百度网盘下载页面点击“导出下载->文本导出”,然后拷贝下载链接,在终端中进行执行,就可以下载文件啦。
一 Oflash软件通过openJtag下载u-boot.bin到开发板
关于u-boot的移植,网上资料太多了,这里略过,u-boot.bin文件可以从网盘下载.
1.下载附件中的oflash文件,放在/home/ningjw/linux/tools目录下。
2.通过命令vim /etc/profile在文件中添加目录/home/ningjw/linux/tools。
3.通过命令source /etc/profile 命令使文件立即生效。
4.进入u-boot.bin所在的目录,执行oflash 0 1 1 0 0 u-boot.bin将u-boot.bin下载到开发板的Nor Flash,或者执行
oflash 1 1 0 0 0 u-boot.bin将u-boot.bin下载到Nand Flash。
二 minicom操作u-boot界面
1.通过命令sudo apt-get install minicom安装minicom。
2.通过命令ls -l /dev/ttyUSB*查找到对用的串口,未连接串口时执行一次,连接串口后再执行一次,多出就是了,我的是/dev/ttyUSB1
3.通过命令minicom -s后选择serial port setup进行串口配置,将默认的/dev/tty8改为/dev/ttyUSB1,改好后可以选择"Save setup as dfl"菜单将该设置保存为默认设置。
4.给开发板上电,就可以看到从串口输出的u-boot菜单了。
三 ubuntu安装tftp服务器,开发板通过tftp下载uImage到开发板
关于内核的配置编译,网上资料太多了,这里略过,uImage文件可以从网盘下载.
1.ubuntu执行命令 sudo apt-get install tftp-hpa tftpd-hpa 安装tftp服务器。
2.修改配置文件/etc/default/tftpd-hpa 中的 TFTP_DIRECTORY 为你自己的tftp目录,并将uImage放入该目录。
3.通过指令 sudo chmod 777 -R tftpboot 修改tftp目录的权限。
4.通过指令 sudo service tftpd-hpa restart 启动服务。
5.在开发板执行以下指令下载内核:
(通过在uboot执行mtdparts指令可以查看到内核分区是从0x60000开始的;0x30000000为SDRAM开始地址)
tftp 0x30000000 uImage
nand erase.part kernel
nand write.jffs2 0x30000000 0x60000 $filesize
四 buntu18.04配置nfs
1.通过命令 sudo apt install nfs-kernel-server 安装nfs服务端。
2.通过命令 sudo apt install nfs-common 安装nfs客户端。
3.通过命令 sudo vim /etc/exports 打开nfs配置文件。
4.在文件末尾添加 /home/ningjw/linux/root_fs *(rw,sync,no_root_squash)语句以共享root_fs目录,这里一定要设置 root_fs目录的权限为777,否则执行重启nfs命令时会出错。
5.Ubuntu 17.10 之后 nfs 默认就只支持协议3和协议4,但是 uboot 默认启动的是协议2,若想要求 nfs 支持协议 2,需要在/etc/default/nfs-kernel-server末尾加一句:RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
6.通过命令 sudo systemctl restart nfs-kernel-server 重启nfs服务器。
7.通过命令sudo mount -t nfs 192.168.1.194:/home/ningjw/linux /mnt 将linux目录挂载到mnt目录
8.此时就可以在mnt目录下看到linux目录下的文件了,也可以通过df -h命令查看挂载点。
9.使用完后可以使用命令 sudo umount /mnt 进行卸载。
五 boot配置通过NFS启动文件系统
1. 在minicom界面通过串口设置u-boot的ip相关参数 ,相关的3条指令如下:
set ipaddr 192.168.1.17
set serverip 192.168.1.101
set ethaddr 3c:97:0e:30:df:40
2.设置u-boot bootargs参数,相关指令如下所示,其中192.168.1.17为开发板ip地址,192.168.1.101为电脑ip地址:
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.101:/home/ningjw/linux/root_fs ip=192.168.1.17:192.168.1.101:192.168.1.255:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
3.执行saveenv保存参数后,再启动系统就是通过nfs启动文件系统了。
4.为防止电脑的ip地址变化, 通过以下方式配置静态ip
sudo vim /etc/netplan/01-network-manager-all.yaml ,用以下代码替换后,执行 sudo netplan apply 使生效
# Let NetworkManager manage all devices on this system
network:version: 2# renderer: NetworkManagerethernets:enp2s0:dhcp4: noaddresses: [192.168.1.101/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 114.114.114.114]
六 通过mkyaffs2image制作文件系统并通过tftp下载至开发板
1.下载附件中的mkyaffs2image文件,拷贝到/home/ningjw/linux/tools目录下(该目录前面已添加到环境变量里),并修改权限。
mv mkyaffs2image /home/ningjw/linux/tools
sudo chmod +x /usr/bin/mkyaffs2image
2. 在root_fs的所在目录执行 mkyaffs2image root_fs root_fs.yaffs2
3. 在开发板执行以下命令烧录文件系统:
tftp 0x30000000 root_fs.yaffs2
nand erase.part rootfs
nand write.yaffs 0x30000000 0x460000 $filesize
4. 恢复从nand flash读取文件系统,执行指令
set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
5. 当从本地nand flash启动系统时,可以通过挂载服务器的目录来访问,例如将电脑端的workspace 挂载到 开发板的mnt目录(当然workspace的目录需要写入电脑的/etc/exports配置文件中,且workspace的权限需要改为777).
mount -t nfs -o nolock 192.168.1.101:/home/ningjw/workspace /mnt
七 安装arm-linux-gcc-4.4.3交叉编译工具
1.下载附件中的文件,执行命令 sudo tar xzf arm-linux-gcc-4.4.3.tar.gz -C / 进行解压。
2.vim etc/profile 在文件末尾添加环境变量:
export PATH=/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
3.执行 source /etc/profile命令,使配置生效。
4.执行arm-linux-gcc -v命令查看版本号。
八 移植tslib1.19到JZ2440
1. tslib1.19官方下载链接:https://github.com/kergoth/tslib
2. 需要注意在执行.configure命令时,CC 与 CXX一定要时绝对路径,否则会报错。
sudo apt-get install autoconf automake libtool
sudo mkdir -p /usr/local/tslib
ca tslib1.19
./autogen.sh
./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc CXX=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-g++ -prefix=/usr/local/tslib
make
make install
3. 执行以上命令后,tslib安装在 /usr/local/tslib目录下 ,将制作好的 tslib 移动到我们制作的文件系统。
sudo mv /usr/local/tslib ~/root_fs/usr/local/
4. 在我们自己制作的文件系统中添加变量 vim root_fs/etc/profice
export T_ROOT=/usr/local/tslib
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
5. 此时tslib就已经移植好了,可以在开发板上运行usr/local/tslib/bin 目录下的文件进行测试。
九 ubuntu18.04安装交叉编译过后的Qt 5.6,并移植到JZ2440
1. 解压源码包 并进入目录
tar -zxf qt-everywhere-opensource-src-5.6.0.tar.gz
cd qt-everywhere-opensource-src-5.6.0.tar.gz
2. 修改配置文件 vim qt-everywhere-opensource-src-5.6.0/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
把下面代码替换进去,至于进行了哪些修改,可自行对比原文件。
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920t
QMAKE_CXXFLAGS += -msoft-float -D__GCC_FLOAT_NOT_NEEDED -march=armv4t -mtune=arm920tinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC = arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK = arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++ -lts# modifications to linux.conf
QMAKE_AR = arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy
QMAKE_NM = arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = arm-none-linux-gnueabi-strip
load(qt_config)
3. 创建安装目录sudo mkdir -p /usr/local/Qt5.6后,执行以下命令进行配置:
./configure -prefix /usr/local/Qt5.6 \-opensource \-release \-confirm-license \-xplatform linux-arm-gnueabi-g++ \-shared \-qt-zlib \-no-gif \-qt-libjpeg \-no-nis \-no-opengl \-no-cups \-no-glib \-no-dbus \-no-rpath \-no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \-no-avx \-no-openssl \-nomake tools \-qreal float \-qt-libpng \-tslib \-nomake examples \-I /usr/local/tslib/include \-L /usr/local/tslib/lib
4. 编译并安装到ubuntu18.04的/usr/local/Qt5.6文件夹下。
make -j4 && sudo make install
5. 将usr/local/Qt5.6文件夹下的libs
plugins两个文件夹,复制到根文件系统的root_fs/usr/local目录下。
6. 配置自己制作的根文件系统的环境变量 vim root_fs/etc/profile ,添加:
export QTEDIR=/usr/local/Qt5.6export LD_LIBRARY_PATH=/usr/local/Qt5.6/lib:$LD_LIBRARY_PATHexport QT_QPA_GENERIC_PLUGINS=tslibexport QT_QPA_FONTDIR=$QTEDIR/lib/fonts export QT_QPA_PLATFORM_PLUGIN_PATH=$QTEDIR/plugins export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmsize=480x272:offset=0x0:tty=/dev/tty1export QT_QPA_FB_TSLIB=1
十 ubuntu18.04安装Qt 5.12.1,并配置Qt5.6交叉编译环境。
为什么这里自己的电脑上没装Qt5.6呢?因为执行Qt5.6的安装包时报错,索性就安装最新的版本。
1.下载链接:https://download.qt.io/official_releases/qt/找到.run后缀的进行下载,该格式可以直接双击安装,我安装的是QT5.12.1版本。
2.接下来解决不能qt creator不能输入中文的问题:
sudo apt-get install fcitx-frontend-qt5
cd qt安装目录/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts/
cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so .
chmod +x libfcitxplatforminputcontextplugin.so
3. 打开的我们安装好的qt creator,由于我们移植到JZ2440的是Qt5.6,所以接下来进行Qt5.6的交叉编译环境的配置。所有配置都在“工具->选项”菜单下。
step1:配置C与C++的交叉编译工具:
C++ 使用arm-none-linux-gnueabi-g++ C 使用 arm-none-linux-gnueabi-gcc
step2:在Qt Versions栏目,手动添加Qt5.6的qmake路径
step3:在Kit栏目,手动添加一个ARM-LINUX,就完成配置。这样编译出来的项目就可以在JZ2440上运行了。
从0开始在ubuntu18.04上搭建嵌入式Linux开发环境以及嵌入式Qt5.6开发环境相关推荐
- 在Ubuntu18.04上搭建私有网盘 —— ownCloud
欢迎访问我的个人博客: luomuxiaoxiao.com 您可能还会对这篇文章感兴趣:如何下载网站的在线视频 一 安装ownCloud 二 设置默认目录 三 为ownCloud建立数据库 四 配置o ...
- 在Ubuntu18.04上搭建netopeer2环境
主要参考https://blog.csdn.net/qq_27923047/article/details/108001624 下面的操作都是在Ubuntu18.04的docker中进行 因为GitH ...
- Ubuntu18.04 安装搭建 hadoop-3.3.0 集群
Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...
- linux 显卡扩展坞,Ubuntu18.04上外接显卡扩展坞安装Nvidia驱动和CUDA10.0及cuDNN
前言 一通折腾,算是把显卡扩展坞给接上用起来了.能找到的Ubuntu外接显卡扩展坞配置深度学习环境的资料比较少,乱折腾一番总算是能用了.现努力回忆过程,尽可能完整地记录下来配置环境的过程. ----- ...
- Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台
这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...
- Ubuntu18.04中搭建事件相机模拟器rpg-esim环境
Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...
- Ubuntu18.04 Hadoop 搭建
Ubuntu18.04 Hadoop 搭建 一.操作环境 1.1 操作系统:Windows 10 64位 1.2 虚拟机:VMware Workstation Pro 14.1.2 二.安装包 2.1 ...
- 在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包.录制包等 1 添加密钥和ros2下载 2 更新源和安装ros-eloquent-desktop及其依赖 3 配置环境 3.1 ...
- Ubuntu 16.04上搭建CDH5.16.1集群
本文参考自:<Ubuntu16.04上搭建CDH5.14集群> 1.准备三台(CDH默认配置为三台)安装Ubuntu 16.04.4 LTS系统的服务器,假设ip地址分布为 192.168 ...
最新文章
- 学习scala的网站汇总
- 【Flask】快速入门后台写接口【API】
- 使用Prometheus发现在Kubernetes上运行的应用程序
- 微信小程序APP(商超营销类)经验总结
- 【docker系列】docker之部署springboot项目
- 年近而立,Java何去何从?
- tomcat服务器开启gzip功能的方法
- GPUImage实现水印
- GDB中打印pthread_internal_t的方法
- (2019)基于传感器融合的机会主义占用计数估计:一个案例研究
- 【题解】CF1418C Mortal Kombat Tower
- 网线传输速度测试_「网络速度测试」网络速度测试 - seo实验室
- Jlink下使用swd
- Android关于libs,jniLibs库的基本使用说明及冲突解决
- 猿创征文 | Python 开发工具进化之旅
- 红帽linux7.2安装教程,RHEL 6.2安装(超级详细图解教程) | 系统运维
- 来吧,原生JavaScript实现JQury.js
- 2023华为软件精英挑战赛,探寻软件人才与科技创新的最优解
- 中国移动互联网公司10年战争史
- ArcGIS10.8下载及安装教程(附安装步骤)