基于i.MX287学习Linux[1]---基本环境搭建及设备信息

1 篇文章 0 订阅
1 篇文章 0 订阅

如有错误,欢迎批评指正!!!

 

一、本教程基于周立功EasyARM-i.MX287开发套件

详询周立功网站,www.zlgmcu.com

 

二、系统恢复及相关设置

根据周立功产品使用说明恢复系统,设置系统IP地址为192.168.0.160,挂载到192.168.0.190主机/home/wps/nfs目录下。

 

#---------------------------------------
#/etc/rc.d/rcS 开机启动
ifconfig eth0 192.168.0.160 netmask 255.255.255.0
route add default gw 192.168.0.253
mount -t nfs 192.168.0.190:/home/wps/nfs /mnt -o nolock

 

 

三、环境搭建

本文使用周立功提供的交叉编译工具链,使用Qt进行开发。

在PC端安装交叉编译工具链并配置交叉编译工具链路径:

$gedit .bashrc

#EasyARM-287
PATH=$PATH:/home/wps/programs/toolchains/EasyARM-iMX287/arm-fsl-linux-gnueabi/bin

$source .bashrc

 

 

作者使用的开发板上内置周立功公司提供的Qt4.8.4库,由于作者多数工作在Qt5.4.2下开发,故打算移植QT5.4.2到开发板上。

 

 

一开始,开发板上带有tslib库,该库可以满足Qt4.8.4的图形界面下的触摸屏控制,作者想偷懒使用,没想到出现一些问题。

 

故重新编译tslib1.4,并编译QT5.4.2。

 

编译Tslib

可参见http://blog.csdn.net/romeolikejuliet/article/details/53234146,

编译tslib-1.4出现错误,参见http://qkxue.net/info/78682/tslib-open-missing-mode-1-4

编译tslib-1.4,进入源码目录,创建configTslib14.sh,代码如下,并执行,安装目录/usr/local/tslib-1.4_imx287

 

 make clean && make distclean    
 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache    
 CC=/home/wps/programs/toolchains/EasyARM-iMX287/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/usr/local/tslib-1.4_imx287 --cache-file=arm-linux.cache    
sudo make && sudo make install 

 

 

 

注意该编译器下会出现错误:

gcc 新版本编译器对语法检查严格,在源文件 ./tests/ts_calibrate.c 中

// 源文件
// if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
//     cal_fd = open (calfile, O_CREAT | O_RDWR);
// } else {
//   cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR);
// }
// 需要更改成如下形式
if ((calfile = getenv("TSLIB_CALIBFILE")) != NULL) {
    cal_fd = open (calfile, O_CREAT | O_RDWR, 0777);
} else {
    cal_fd = open ("/etc/pointercal", O_CREAT | O_RDWR, 0777);
}

在PC端添加环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/tslib-1.4_imx287/lib

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/tslib-1.4_imx287/include
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/tslib-1.4_imx287/include


编译Qt

 

 

 

参见:http://www.th7.cn/Program/cp/201607/902141.shtml

首先在qt-everywhere-opensource-src-5.4.2/qtbase/mkspecs/目录中,复制linux-arm-gnueabi-g++,重命名为linux-arm-fsl-gnueabi-g++,修改qmake.conf文件,使用周立功公司提供的arm-fsl-linux-gnueabi编译器

 

#
# qmake configuration for building with arm-fsl-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QMAKE_INCDIR += /usr/local/tslib-1.4_imx287/include
QMAKE_LIDBIR += /usr/local/tslib-1.4_imx287/lib

# modifications to g++.conf
QMAKE_CC                = arm-fsl-linux-gnueabi-gcc -lts
QMAKE_CXX               = arm-fsl-linux-gnueabi-g++ -lts
QMAKE_LINK              = arm-fsl-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB        = arm-fsl-linux-gnueabi-g++ -lts

# modifications to linux.conf
QMAKE_AR                = arm-fsl-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-fsl-linux-gnueabi-objcopy
QMAKE_NM                = arm-fsl-linux-gnueabi-nm -P
QMAKE_STRIP             = arm-fsl-linux-gnueabi-strip
load(qt_config)


在qt-everywhere-opensource-src-5.4.2目录下,创建imx287config文件,内容如下:

 

 

 

 

./configure  -v -opensource -confirm-license -release -shared -xplatform linux-arm-fsl-gnueabi-g++ -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -tslib -no-opengl -no-sse2 -no-openssl -no-nis -no-cups -no-glib -no-dbus -no-xcb -no-eglfs -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -no-iconv -make libs -make examples -nomake tools -nomake tests -I/usr/local/tslib-1.3_im287/include -L/usr/local/tslib-1.3_im287/lib -prefix /home/wps/programs/qt/Qt5.4.2/qt-5.4.2_imx287

 

配置结果为:

 

 

  Configure summary

Building on:   linux-g++ (x86_64, CPU features: mmx sse sse2)
Building for:  linux-arm-fsl-gnueabi-g++ (arm, CPU features: none detected)
Platform notes:

            - Also available for Linux: linux-kcc linux-icc linux-cxx
        
Build options:
  Configuration .......... accessibility audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile evdev eventfd freetype full-config getaddrinfo getifaddrs harfbuzz inotify ipv6ifname large-config largefile linuxfb medium-config minimal-config mremap no-pkg-config pcre png posix_fallocate precompile_header qpa qpa reduce_exports release rpath shared small-config tslib zlib 
  Build parts ............  libs examples
  Mode ................... release
  Using C++11 ............ yes
  Using gold linker....... no
  Using PCH .............. yes
  Target compiler supports:
    Neon ................. no

Qt modules and options:
  Qt D-Bus ............... no
  Qt Concurrent .......... yes
  Qt GUI ................. yes
  Qt Widgets ............. yes
  Large File ............. yes
  QML debugging .......... yes
  Use system proxies ..... no

Support enabled for:
  Accessibility .......... yes
  ALSA ................... no
  CUPS ................... no
  Evdev .................. yes
  FontConfig ............. no
  FreeType ............... qt
  Glib ................... no
  GTK theme .............. no
  HarfBuzz ............... yes (bundled copy)
  Iconv .................. no
  ICU .................... no
  Image formats: 
    GIF .................. yes (plugin, using bundled copy)
    JPEG ................. yes (plugin, using bundled copy)
    PNG .................. yes (in QtGui, using bundled copy)
  journald ............... no
  mtdev .................. no
  Networking: 
    getaddrinfo .......... yes
    getifaddrs ........... yes
    IPv6 ifname .......... yes
    OpenSSL .............. no
  NIS .................... no
  OpenGL / OpenVG: 
    EGL .................. no
    OpenGL ............... no
    OpenVG ............... no
  PCRE ................... yes (bundled copy)
  pkg-config ............. no 
  PulseAudio ............. no
  QPA backends: 
    DirectFB ............. no
    EGLFS ................ no
    KMS .................. no
    LinuxFB .............. yes
    XCB .................. no
  Session management ..... yes
  SQL drivers: 
    DB2 .................. no
    InterBase ............ no
    MySQL ................ no
    OCI .................. no
    ODBC ................. no
    PostgreSQL ........... no
    SQLite 2 ............. no
    SQLite ............... qt-qt
    TDS .................. no
  udev ................... no
  xkbcommon .............. no
  zlib ................... yes (bundled copy)


NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
Configure with '-qreal float' to create a build that is binary compatible with 5.1.

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into /home/wps/programs/qt/Qt5.4.2/qt-5.4.2_imx287

Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

 

因为开发板容量限制,用户可以选择性复制相关文件,本文复制数据进/usr/local/qt-5.4.2_imx287中,首先修改/etc/rc.d/init.d/start_userapp,关闭启动界面,

 

 

#!/bin/sh
ifconfig eth0 hw ether 02:00:92:B3:C4:A8
#ifconfig eth0 down

#you can add your app start_command three

# start ssh
/bin/dropbear
#start qt command,you can delete it
export TSLIB_PLUGINDIR=/usr/lib/ts/
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_TSDEVICE=/dev/input/ts0
export TSLIB_CALIBFILE=/etc/pointercal
export QT_QWS_FONTDIR=/usr/lib/fonts
export QWS_MOUSE_PROTO=Tslib:/dev/input/ts0
/usr/test/up_test_function
#/usr/share/zylauncher/start_zylauncher &


修改/etc/profile文件

 

 

 

 

#qt4.8.4
#export TSLIB_PLUGINDIR=/usr/lib/ts/
#export TSLIB_CONFFILE=/etc/ts.conf
#export TSLIB_TSDEVICE=/dev/input/ts0
#export TSLIB_FBDEVICE=/dev/fb0
#export TSLIB_CALIBFILE=/etc/pointercal
#export QT_QWS_FONTDIR=/usr/lib/fonts
#export QWS_MOUSE_PROTO=tslib:/dev/input/ts0

#qt5.4.2
export TSLIBDIR=/usr/local/tslib-1.4_imx287
export TSLIB_TSDEVICE=/dev/input/ts0
export TSLIB_CONFFILE=$TSLIBDIR/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIBDIR/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:$TSLIBDIR/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:usr/sbin:$TSLIBDIR/bin


export QTDIR=/usr/local/qt-5.4.2_imx287
export LD_LIBRARY_PATH=/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
#export QT_QPA_FB_TSLIB=1
export QT_QPA_GENERIC_PLUGINS=Tslib:/dev/input/event0


修改之后重启即可

 

 

 

 

三、查看系统及软硬件设备详情

u-boot启动信息:

uboot-info1

查看系统内核版本号及系统名称:

sys-info

CPU信息:

cpu-info

内存信息,-m没用,内存为124716KB:

mem-info

Flash信息,内核可用20MB,用户可用108MB:

mtd-info

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值