I.MX6 Linux Qt 启动流程跟踪
生活随笔
收集整理的這篇文章主要介紹了
I.MX6 Linux Qt 启动流程跟踪
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*************************************************************************** I.MX6 Linux Qt 啟動流程跟蹤* 聲明:* 1. 源代碼來源MY-I.MX6;* 2. 本文僅僅是對啟動流程的解析,沒有解釋啟動流程為什么是這樣的問題。** 2015-6-13 深圳 晴 南山平山村 曾劍鋒*************************************************************************/\\\\\\\\\\\\\-*- 目錄 -*-
| 一、cat /etc/inittab| 二、cat /etc/rc.d/rcS| 三、cat /etc/rc.d/rc.local| 四、cat /etc/rc.d/rc_gpu.S | 五、cat /etc/profile\\\\\\\\\\\\\\\\\\\//
一、cat /etc/inittab# see busybox-1.00rc2/examples/inittab for more examples::sysinit:/etc/rc.d/rcS # 系統啟動時調用的程序1#::respawn:/etc/rc.d/rc_mxc.Sttymxc0::once:/bin/login root # 內核信息打印的串口::sysinit:/etc/rc.d/rc_gpu.S # 系統啟動時調用的程序2::ctrlaltdel:/sbin/reboot ::shutdown:/etc/rc.d/rcS stop # 關機時調用的程序::restart:/sbin/init # 系統重啟時調用的程序二、cat /etc/rc.d/rcS#!/bin/sh# minimal startup script, will work with msh (this is best available in# MMUless format).# load the configuration information 加載配置信息,并使其生效. /etc/rc.d/rc.conf# 如果沒有傳入第一個參數,那么就將start字符串賦給mode# 查看inittab文件里的一下內容,就能理解這一部分:# ::sysinit:/etc/rc.d/rcS # 系統啟動時調用的程序1# ::sysinit:/etc/rc.d/rc_gpu.S # 系統啟動時調用的程序2# ::shutdown:/etc/rc.d/rcS stop # 關機時調用的程# 如上可知,開機時不傳參表示start,關機傳入stop表示關機mode=${1:-start} if [ $mode = "start" ] thenservices=$cfg_services # 如果mode是start,services等于cfg_services的值elseservices=$cfg_services_r # 如果mode是start,services等于cfg_services_r的值ficfg_services=${2:-$services} # 如果沒有傳入第二個參數,cfg_services等于services# run the configured sequencefor i in $cfg_services # 迭代cfg_servicesdoif [ -x /etc/rc.d/init.d/$i ] # 檢查文件是否可執行then /etc/rc.d/init.d/$i $mode # 如果可執行,那么就執行,并傳入對應的mode參數,start或stopfi doneif [ $# -ge 2 ] # 如果參數個數大于2,到這里也就執行完畢了,不執行下面內容then exit 0fi# show all kernel log messages # 設置內核信息輸出等級#echo 8 > /proc/sys/kernel/printk# run rc.local if present and executableif [ -x /etc/rc.d/rc.local ] # 檢查rc.local是否可執行then /etc/rc.d/rc.local $mode # 運行該腳本,跟蹤該腳本fi三、cat /etc/rc.d/rc.local#!/bin/sh## This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here# 本人查看過/usr/bin/rpm文件,不存在,所以if判斷里的內容可以無視# 當然系統運行起來之后,也沒發現下面echo出來的調試信息if [ -x "/usr/bin/rpm" -a -e "/tmp/ltib" ]thenecho "rebuilding rpm database"rm -rf /tmp/ltibrpm --rebuilddbfi# fix up permissions# 修改/home/user的權限if [ -d /home/user ]thenchown -R user.user /home/userfi# 創建一些設備節點,這之后的代碼沒發現對程序運行有太大價值的內容# Add nodes when running under the hypervisor and static devicesif [ -r /sys/class/misc/fsl-hv/dev -a ! -r /dev/fsl-hv ]thenecho "creating hypervisor nodes"DEVID=`cat /sys/class/misc/fsl-hv/dev`if [ -n "$DEVID" ]thenMAJOR="${DEVID%:*}"MINOR="${DEVID##*:}"if [ \( "$MAJOR" -gt 0 \) -a \( "$MINOR" -gt 0 \) ]thenrm -f /dev/fsl-hvmknod /dev/fsl-hv c $MAJOR $MINORfififor i in 0 1 2 3 4 5 6 7domknod /dev/hvc$i c 229 $idonefi# add the fm device nodesif [ -n "$(cat /proc/devices | grep fm | sed 's/\([0-9]*\).*/\1/')" -a ! -r /dev/fm0 ]thenecho "creating fman device nodes"cd /usr/share/doc/fmd-uspace-01.01/test/sh fm_dev_createcd -fifor i in 0 1 2; doif [ -e /sys/class/graphics/fb$i ]; thenchmod 0666 /sys/class/graphics/fb$i/panfidone四、cat /etc/rc.d/rc_gpu.S #!/bin/bash# 獲取CPU的一些信息CPUREV=$(cat /proc/cpuinfo | grep Revision | awk '{print $3}' | awk '{print substr($0,1,2)}')# 設置一些變量,從變量的值來看,主要還解決不同CPU環境下的一些# 依賴庫的問題,后面內容都是為了處理這件事FILEVG=/usr/lib/libOpenVG.soFILEVG3D=/usr/lib/libOpenVG_3D.soFILEVG355=/usr/lib/libOpenVG_355.soecho 4 > /sys/module/galcore/parameters/gpu3DMinClockif [ -e $FILEVG3D ] && [ -e $FILEVG355 ]thenif [ $CPUREV == "61" ] || [ $CPUREV == "63" ] || [ $CPUREV == "60" ] && [ -e $FILEVG ]thenrm -f $FILEVGfiif [ $CPUREV == "61" ]thenln -s $FILEVG3D $FILEVGfiif [ $CPUREV == "63" ]thenln -s $FILEVG355 $FILEVGfiif [ $CPUREV == "60" ]thenln -s $FILEVG355 $FILEVGfifi五、cat /etc/profile# 設置PATH環境變量PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/binPS1='[\u@\h \W]\$ ' # shell中顯示的提示信息格式export PATH # 導出PATH位環境變量alias ll='ls -l' # 設置命令別名alias la='ll -a'export PS1='\u@\h \w$ ' # 導出一些環境變量export PS2='> 'export PS3='? 'export PS4='[$LINENO]+'# 設置TSLIB、QT的庫的相關信息export GST_PLUGIN_PATH=/usr/lib/fsl_mm_linux/lib/gstreamer-0.10export TSLIB_ROOT=/usr/local/tslib-installexport TSLIB_TSDEVICE=/dev/input/event1 export TSLIB_CALIBFILE=/etc/pointercal export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts export TSLIB_FBDEVICE=/dev/fb0 export PATH=/usr/local/tslib-install:$PATHexport LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/libexport QT_QWS_FONTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/fontsexport QWS_MOUSE_PROTO=tslib:/dev/input/event1# 查看/etc/pointercal文件是否存在并且是正規文件# 通過這個文件來確定是否需要來調用觸摸屏矯正程序if [ -f /etc/pointercal ];then echo "MXS touchscreen have calibrate!"else/usr/local/tslib-install/bin/ts_calibrate fi# 運行QT程序,傳入qws參數,并置于后臺運行/qt_app/myzr -qws &
?
轉載于:https://www.cnblogs.com/zengjfgit/p/4573255.html
總結
以上是生活随笔為你收集整理的I.MX6 Linux Qt 启动流程跟踪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用超级绘图王简化建筑识图课程的教学
- 下一篇: linux:将job放在后台执行的方法