1. 程式人生 > >[NUST-Wangpeis]基於i.MX287學習Linux[1]---基本環境搭建及裝置資訊

[NUST-Wangpeis]基於i.MX287學習Linux[1]---基本環境搭建及裝置資訊

如有錯誤,歡迎批評指正!!!

一、本教程基於周立功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

相關推薦

[NUST-Wangpeis]基於i.MX287學習Linux[1]---基本環境搭建裝置資訊

如有錯誤,歡迎批評指正!!! 一、本教程基於周立功EasyARM-i.MX287開發套件 詳詢周立功網站,www.zlgmcu.com 二、系統恢復及相關設定 根據周立功產品使用說明恢復系統,設定系統IP地址為192.168.0.160,掛載到192.168.0.190

Python學習1天 - 環境搭建

OS 是否 png 環境搭建 clas .org class 設置 完成 1. 若是WINDOWS系統,首先在CMD中查看是否有安裝python, 若是有,則會顯示相應的版本信息 2. 如果沒有,則先下載python, 對應的網址是:https://www.python.

DSP學習1環境搭建

老師推薦的學習軟體為CCS3.3,由於windows10下不能安裝此軟體,於是需要安裝虛擬機器在XP系統下安裝執行 1.安裝VMware,裝XP 下載VMware,下載XP映象系統檔案ios,進行安裝(破解版有需要的同學可以留言郵箱我私發給你) 具體安裝過程百

android開發學習1)---環境搭建

一、簡介    最近想學習android開發,發現自己真是太菜了,搭建個環境都折騰了好幾天。現在把搭建環境過程大致描述一下,遇到的一些問題記下來,做個筆記。如果文章有什麼不正確或者不妥當的地方,還請各位指出,共同進步,多謝啦。    首先推薦下官網Android Develo

深度學習框架Caffe學習筆記(1)-Caffe環境搭建

Caffe是由伯克利視覺和學習中心開發的基於C++/CUDA/Python實現的卷積神經網路,提供了面向命令列、Matlab、Python的繫結介面。 Caffe環境搭建 系統:Ubuntu16.04 首先安裝Caffe依賴包: $ sudo

Ext4.2.1學習歷程之一:環境搭建Hello ExtJS4.2

原文出處    http://blog.itpub.net/28562677/viewspace-1066765/ 1、從官網下載ExtJS4.2資源包,解壓開有原始碼、API文件、演示程式; 2、官網地址:http://www.sencha.com/products/e

MyBatis-Plus學習筆記(1):環境搭建以及基本的CRUD操作

MyBatis-Plus是一個 MyBatis的增強工具,在 MyBatis 的基礎上只做增強不做改變,使用MyBatis-Plus時,不會影響原來Mybatis方式的使用。 SpringBoot+MyBatis-Plus環境搭建 SQL指令碼: CREATE TABLE `tb_user` ( `id`

Android開發之旅1環境搭建HelloWorld

lan 及其 其它 ply 新項目 bsp 驗證 for 對話框 ——工欲善其事必先利其器 引言 本系列適合0基礎的人員,因為我就是從0開始的,此系列記錄我步入Android開發的一些經驗分享,望與君共勉!作為Android隊伍中的一個新人的

linux下gsoap環境搭建C++ demo

第一次在Linux下裸寫程式碼,沒有大神可以抱大腿,makefile寫到吐血。 做一個從webservice服務端獲取資料的小東西。以下記錄環境搭建和基礎demo,資料整理彙總,備忘。 基礎概念 WebService:一種跨程式語言和跨作業系統平臺的遠端呼叫技術。

1.基本環境搭建

安裝Node.js和npm 首先,從Node.js官網下載對應平臺的安裝程式,在Windows上安裝時務必選擇全部元件,包括勾選Add to Path,npm已經在Node.js安裝的時候順帶裝好了. C:\Users\Hugo>node -v v10.14.1 C:\User

kafka使用筆記-基於SASL認證的kafka偽叢集環境搭建測試

繼 搭建免認證kafka單機 之後由於業務需要,搭建了基於SASL認證的kafka偽叢集環境。本次同樣使用的是 kafka_2.10-0.10.1.0.tgz 版本的kafka,整合zookeeper,只需要對此進行配置即可,無需單獨安裝。 一、準備工作 1、環境:ubuntu1

SSM到Spring Boot從零開發校園商鋪平臺---1環境搭建測試

根據慕課網專案深入學習SSM和SpringBoot,練手中,將學習筆記做記錄,後期會繼續更新。 慕課網地址:SSM到Spring Boot-從零開發校園商鋪平臺-慕課網實戰,文末會附上免費視訊地址! 先上效果圖(此文講述中最後要完成的結果):

arm-linux交叉編譯環境搭建交叉工具鏈 (JZ2440v2)

1. 交叉編譯環境搭建: (1)[email protected]:/home/caihuanming#          #不是root使用者 tar xvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 -C ./      

rails學習之windows下環境搭建專案建立(圖文並茂,簡單易懂)

第一步: 直接下載railsinstaller進行安裝,這樣省去很多後續問題和麻煩。 筆者用的是railsinstaller-2.1.0,這是一個exe程式,下載好之後直接點選安裝即可。 注:需 要railsinstaller-2.1.0的安裝程式的留下郵箱,我單個發。 第

Msm8937+android7.1.1編譯環境搭建編譯

Msm8937+android7.1.1編譯環境搭建及編譯1. 硬體配置建議如下:記憶體>=16GBCPU>=i7 四核2. 軟體配置如下:系統:Ubuntu16.04JDK:open jdk 1.83.環境安裝:更換預設shell,使用下面命令:sudo rm

EasyARM i.mx287學習筆記——通過modbus tcp控制GPIO

0 前言    本文使用freemodbus協議棧,在EasyARM i.mx287上實現了modbus tcp從機。在該從機中定義了線圈暫存器,其中線圈暫存器地址較低的4位和EasyARM的P2.4至P2.5關聯,通過modbus指令可控制GPIO的輸出。本文修改自free

EasyARM i.mx287學習筆記——開箱試用總結

0 前言    本月初(2014年8月)購買了周立功的EasyARM開發板,主控為EasyARM i.mx287。出於以下幾個理由購買了該開發板。    【1】主要原因,有人約我一起學習一起使用該開發板。    【2】該開發板價效比較高,到手300元以內(2015年初降低到2

TCP/IP詳解學習筆記(1)-基本概念【轉】

網絡號 最大的 net 容易 學習 ip地址 其他 title 編寫 轉自:http://blog.csdn.net/goodboy1881/article/details/665041 為什麽會有TCP/IP協議 在世界上各地,各種各樣的電腦運行著各自不同的操作系統為大家

Linux鞏固記錄(1) J2EE開發環境搭建網絡配置

version 環境 com sco 由於 lin spa node 開發環境 由於要近期使用hadoop等進行相關任務執行,操作linux時候就多了 以前只在linux上配置J2EE項目執行環境,無非配置下jdk,部署tomcat,再通過docker或者jenkins自動

GTK學習筆記之Linux下Gtk環境搭建

linux 配置 evel app C/C++語言 好的 學習 搜索 基本 下面介紹下Ubuntu 環境下具體的安裝過程: 1、配置安裝gcc/g++/gdb/make 等基本編程工具(必須裝好) 剛裝好的Ubuntu系統中已經有GCC了,但是這個GCC幾乎什麽文件都不能編