NUC972 NUC980 的linux和QT环境搭建
搭建基本开发环境
1.下载ubuntu-16.04.5-desktop-i386.iso 最好选择这个版本,最好是i386的版本。因为我就是选的这个。。:)
2. 安装vmware
3.虚拟机安装ubuntu。。很简单都是自动安装的。。第一次安装完以后,重新启动下,VMware tools就可以使用了。然后配置共享文件就可以。
安装一些包:
sudo apt install vim sudo apt install u-boot-tool sudo apt install ssh sudo apt install git sudo apt libc6-dev sudo apt libncurses5-dev
4.把官方提供的BSP包拷贝到linux中。
uzip nuc970bsp-release-20170901.zip cd nuc970bsp-release-20170901\BSP tar -xvf nuc970bsp.tar.gz cd nuc970bsp sudo ./install.sh
提示安装路径的时候就写/home/myname
提示从git更新还是本地,就选择本地. 选git从来没有成功过。
安装完成后 就会在你的用户目录下发现nuc970bsp目录,里面有你所有的想要的东西
5. 添加环境变量:
sudo apt install vim sudo vim /etc/profile
最后一行加入环境变量:
export CROSS_COMPILE=arm-linux- export PATH=$PATH:/usr/local/arm_linux_4.8/bin 刷新下环境变量 source /etc/profile
尝试编译下内核:
cd linux-3.10.x make nuc977_defconfig make make uImage
编译完成不出问题的话,就没有问题了。
不过我编译uboot出错了,暂时不用uboot就先不管了。
编译QT -动态库
1. 编译安装tslib
#创建安装目录 sudo mkdir /opt/tslib sudo chmod 777 /opt/tslib #配置 cd /home/qian/nuc977BSP/nuc970bsp/applications/tslib-1.1 ./autogen.sh echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache ./configure --prefix=/opt/tslib --host=arm-linux --cache-file=arm-linux.cache #编译安装 make make install 2.编译QT #创建安装目录 sudo mkdir /opt/qt sudo chmod 777 /opt/qt #修改配置文件 cd /home/qian/nuc977BSP/nuc970bsp/applications/qt-everywhere-opensource-src-4.8.5 vim mkspecs/qws/linux-nuc970-g++/qmake.conf --------------------------------------------------------------------------- #修改如下--对比下修改标记的部分 # # qmake configuration for building with arm-linux-g++ # include(../../common/linux.conf) include(../../common/gcc-base-unix.conf) include(../../common/g++-unix.conf) include(../../common/qws.conf) # modifications to g++.conf QMAKE_CC = arm-linux-gcc -lts QMAKE_CXX = arm-linux-g++ -lts QMAKE_LINK = arm-linux-g++ -lts QMAKE_LINK_SHLIB = arm-linux-g++ -lts # modifications to linux.conf QMAKE_AR = arm-linux-ar cqs QMAKE_OBJCOPY = arm-linux-objcopy QMAKE_STRIP = arm-linux-strip # Support static build. 注意这里 #QMAKE_LFLAGS = -static # Reduce code size. QMAKE_CFLAGS_RELEASE = -Os QMAKE_CXXFLAGS_RELEASE = -Os # Include/library path for tslib 这里修改这里 QMAKE_INCDIR = /opt/tslib/include QMAKE_LIBDIR = /opt/tslib/lib load(qt_config)
编译配置
./configure -force-pkg-config \ -prefix /opt/qt \ -release \ -opensource \ -shared \ -qconfig dist \ -no-exceptions \ -no-accessibility \ -no-stl \ -no-qt3support \ -no-xmlpatterns \ -no-multimedia \ -no-audio-backend \ -no-phonon \ -no-phonon-backend \ -no-svg \ -no-webkit \ -no-javascript-jit \ -no-script \ -no-scripttools \ -no-declarative \ -no-declarative-debug \ -qt-zlib \ -qt-freetype \ -no-gif \ -qt-libpng \ -no-libmng \ -no-libtiff \ -qt-libjpeg \ -no-openssl \ -nomake tools \ -nomake demos \ -nomake examples \ -nomake docs \ -nomake translations \ -no-nis \ -no-cups \ -no-iconv \ -no-pch \ -no-dbus \ -embedded arm \ -platform qws/linux-x86-g++ \ -xplatform qws/linux-nuc970-g++ \ -no-gtkstyle \ -no-nas-sound \ -no-opengl \ -no-openvg \ -no-sm \ -no-xshape \ -no-xvideo \ -no-xsync \ -no-xinerama \-no-xcursor \ -no-xfixes \ -no-xrandr \ -no-xrender \ -no-mitshm \ -no-fontconfig \ -no-xinput \ -no-xkb \ -no-glib \ -qt-gfx-linuxfb \ -qt-mouse-tslib \ -qt-kbd-linuxinput
最后安装
make make install
编译一个helloWorld程序-支持中文
第一步:下载QT所支持的字库,这里可以下载:
http://sourceforge.net/projects/wqy/files/wqy-zenhei/0.8.38%20(Pangu)/wqy-zenhei-0.8.38-1.tar.gz/download?use_mirror=nchc&use_mirror=nchc&18950117=
将wqy-zenhei.ttc拷贝到/opt/qt/lib/fonts目录下-(不是开发板中的-是虚拟机中的路径,开发板的一会儿再说一步一步来)
编译个QT程序:
cd /home/qian mkdir qthello cd qthello vim main.c #include<QApplication> #include<QLabel> #include <QTextCodec> #include <QFontDatabase> #include <QDebug> #include <QFont> int main(int args,char** argv) { QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QApplication app(args,argv); qDebug()<<"hello"; QLabel *hello=new QLabel("你好啊!"); hello->setFont(QFont("wqy-zenhei",14,QFont::Normal)); hello->show(); return app.exec(); }
#编译QT程序
/opt/qt/bin/qmake -project /opt/qt/bin/qmake make
如果没啥问题的话,QT 程序就生成了。
3.在开发板上运行QT程序。
为了能让程序早点运行,不想在研究各种各样的环境变量了。
就懒省事:保证虚拟机中的QT和tslib安装路径和开机板上roofs中的安装路径一致。这样能避免一些我们人为带来的问题。
测试的时候发现- 先执行环境变量脚本 在执行QT程序时脚本没有生效。。所以就把程序放在脚本中了。
(其实即使不配置QT库的路径也是能运行的--估计是qmake时已经默认了opt/qt的路径)
#将QT库和tslib库文件都拷贝到roomfs中
cd /home/qian/nuc977BSP/nuc970bsp/rootfs mkdir opt cp /opt/tslib ./ -r cp /opt/qt ./ -r
#我发现运行的时候提示缺少库 提前拷过来
cp /usr/local/arm_linux_4.8/usr/lib/libstdc++.so.6 lib/
#为了快速测试我们的QT程序 就直接把qt程序拷贝到 usr目录下
cp ****/qthello/qthello usr/
#创建一个脚本文件--配置下环境变量
cd etc vim qt.sh
#内容如下:
#!/bin/sh echo "QT event" export QWS_DISPLAY=LinuxFB:mmWidth154:mmHeight85:0 export QWS_SIZE=800x480 export TSLIB_TSDEVICE=/dev/input/event0 export TSLIB_FBDEVICE=/dev/fb0 export TSLIB_PLUGINDIR=/opt/tslib/lib/ts export TSLIB_CONSOLEDEVICE=none export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf export TSLIB_CALIBFILE=/etc/pointercal export POINTERCAL_FILE=/etc/pointercal export QWS_MOUSE_PROTO="TSLIB:/dev/input/event0" export QT_QWS_FONTDIR=/opt/qt/lib/fonts cd /usr ./qthello -qws &
到这里准备工作就已经完成了。如果内存够大的话,就直接编译到内核中。在ram里运行。。
我用了UBI来加载roomfs
参数如下: 注意:烧写myubi.img的时候,最好擦除整个NAND,然后重新烧写uboot uimage..
因为我发现第一次烧写myubi.img可以运行 第二次重新再烧写就跑飞。。不找原因了 先做开发。
#生成 nand烧写文件
mkfs.ubifs -F -x lzo -m 2048 -e 126976 -c 952 -o rootfs_ubifs.img -d ./rootfs ubinize -o myubi.img -m 2048 -p 131072 -O 2048 -s 2048 ubinize.cfg
ubinize.cfg 的内容为:
[ubifs] mode=ubi image=rootfs_ubifs.img vol_id=0 vol_size=100MiB vol_type=dynamic vol_alignment=1 vol_name=system vol_flags=autoresize
假如我们已经正常的进入了内核了。
修改/opt/tslib/etc/ts.config,去掉module_raw_input前面的#。(记得要顶格啊)
然后执行opt/tslib/bin/ts_calibrate 校准下触摸屏
在执行opt/tslib/bin/ts_test 测试下触摸屏。 只有这个测试通过了,才能确认触摸是好的。
如果出现校准好了,但是ts_test出问题的话,就把opt/tslib/etc/中的文件都拷贝到/etc中。再试试。
测试OK的话,就去执行QT程序吧。。
如果QT程序能执行 触屏也OK的话,就剩下填坑了。把之前的问题解决了。。
有了正确的答案 再去找错误的问题就容易多了。
原文来自:https://blog.csdn.net/qianxilin/article/details/85232571
矽控电子®分别获“科技型中小企业”、“江苏省民营科技企业”、“创新型中小企业”认定,核心团队拥有十余年的硬件正向研发,生产制程,测试手法,品质控制经验。尤其擅长嵌入式ARM平台的人工智能与工控物联网产品,以及瑞芯微(Rockchip)、海思、NXP、新唐等平台的机器视觉类AIoT模组开发,为您的产品从创意到落地、批量市场化助力。
公司可提供从硬件设计(原理开发及PCB Layout),Linux驱动开发,PCB制板,SMT及接插件焊接,产品测试,产品老化全流程外包服务,收费合理,品质可靠。
定制开发找矽控,品质可靠省费用
垂询电话:0510-83488567-1 业务邮箱:wxdianzi#foxmail.com (#更换为@)