博客中提到的一些工具文件都可以在该链接中下载: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开发环境相关推荐

  1. 在Ubuntu18.04上搭建私有网盘 —— ownCloud

    欢迎访问我的个人博客: luomuxiaoxiao.com 您可能还会对这篇文章感兴趣:如何下载网站的在线视频 一 安装ownCloud 二 设置默认目录 三 为ownCloud建立数据库 四 配置o ...

  2. 在Ubuntu18.04上搭建netopeer2环境

    主要参考https://blog.csdn.net/qq_27923047/article/details/108001624 下面的操作都是在Ubuntu18.04的docker中进行 因为GitH ...

  3. Ubuntu18.04 安装搭建 hadoop-3.3.0 集群

    Ubuntu18.04 安装搭建 hadoop-3.3.0 集群 参考博文:https://blog.csdn.net/sunxiaoju/article/details/85222290?ops_r ...

  4. linux 显卡扩展坞,Ubuntu18.04上外接显卡扩展坞安装Nvidia驱动和CUDA10.0及cuDNN

    前言 一通折腾,算是把显卡扩展坞给接上用起来了.能找到的Ubuntu外接显卡扩展坞配置深度学习环境的资料比较少,乱折腾一番总算是能用了.现努力回忆过程,尽可能完整地记录下来配置环境的过程. ----- ...

  5. Ubuntu18.04配置搭建基于Gazebo的虚拟仿真平台(Px4):无人机(UAV)、无人车等模拟实验平台

    这篇我觉得是写得比较详细完整的 摘自:https://dgzc.ganahe.top/ganahe/2021/uavgazebomoni.html Ubuntu18.04配置搭建基于Gazebo的虚拟 ...

  6. Ubuntu18.04中搭建事件相机模拟器rpg-esim环境

    Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...

  7. Ubuntu18.04 Hadoop 搭建

    Ubuntu18.04 Hadoop 搭建 一.操作环境 1.1 操作系统:Windows 10 64位 1.2 虚拟机:VMware Workstation Pro 14.1.2 二.安装包 2.1 ...

  8. 在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等

    在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包.录制包等 1 添加密钥和ros2下载 2 更新源和安装ros-eloquent-desktop及其依赖 3 配置环境 3.1 ...

  9. Ubuntu 16.04上搭建CDH5.16.1集群

    本文参考自:<Ubuntu16.04上搭建CDH5.14集群> 1.准备三台(CDH默认配置为三台)安装Ubuntu 16.04.4 LTS系统的服务器,假设ip地址分布为 192.168 ...

最新文章

  1. 学习scala的网站汇总
  2. 【Flask】快速入门后台写接口【API】
  3. 使用Prometheus发现在Kubernetes上运行的应用程序
  4. 微信小程序APP(商超营销类)经验总结
  5. 【docker系列】docker之部署springboot项目
  6. 年近而立,Java何去何从?
  7. tomcat服务器开启gzip功能的方法
  8. GPUImage实现水印
  9. GDB中打印pthread_internal_t的方法
  10. (2019)基于传感器融合的机会主义占用计数估计:一个案例研究
  11. 【题解】CF1418C Mortal Kombat Tower
  12. 网线传输速度测试_「网络速度测试」网络速度测试 - seo实验室
  13. Jlink下使用swd
  14. Android关于libs,jniLibs库的基本使用说明及冲突解决
  15. 猿创征文 | Python 开发工具进化之旅
  16. 红帽linux7.2安装教程,RHEL 6.2安装(超级详细图解教程) | 系统运维
  17. 来吧,原生JavaScript实现JQury.js
  18. 2023华为软件精英挑战赛,探寻软件人才与科技创新的最优解
  19. 中国移动互联网公司10年战争史
  20. ArcGIS10.8下载及安装教程(附安装步骤)

热门文章

  1. [WinError 10061]
  2. 想快速抓住区块链红利?教你25招,0基础入门成区块链行家!
  3. FF新鲜事禁止弹窗方法
  4. Redis 缓存击穿
  5. 标签设计软件如何批量制作CEPNet码
  6. 德州监管机构针对海外ICO活动下发禁令
  7. Android Intent Flag实现singleTask模式
  8. Linux总线之SPI
  9. MySQL数据表的备份
  10. 【算法竞赛学习笔记】超好懂的斯坦纳树详解!!!