日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

arm-linux一句話備忘錄

 敗敗0619 2012-10-10

1.uboot傳遞給linux內(nèi)核的nfs啟動(dòng)命令行:

setenv bootargs mem=64M console=ttyS0,57600 root=/dev/nfs rw nfsroot=192.168.1.6:/home/linucos/
newmsg/nfsroot nfsaddrs=192.168.1.8:192.168.1.6:192.168.1.1:255.255.255.0

備注:自己ip:服務(wù)ip:網(wǎng)關(guān):掩碼

2.uboot傳遞給linux內(nèi)核的nandflash上文件系統(tǒng)的命令行:

setenv bootargs console=ttyS0,57600 root=/dev/mtdblock0  init=/linuxrc rootfstype=jffs2

備注:(此處0對(duì)應(yīng)第一個(gè)分區(qū),類(lèi)推1對(duì)應(yīng)第二個(gè)分區(qū),分區(qū)見(jiàn)內(nèi)核arch相關(guān)目錄)

3. uboot傳遞給linux內(nèi)核內(nèi)存ramdisk文件系統(tǒng)的命令行:

setenv bootargs console=ttyS0,57600 root=/dev/ram0 rw initrd=0x21100000,15360000 init=/linuxrc

備注:initrd=指示文件系統(tǒng)在內(nèi)存中的位置,壓縮前大??;同時(shí),內(nèi)核要進(jìn)行相應(yīng)的配置

4. busybox下tftp命令使用:

tftp -r tmp -g 192.168.1.6

得到服務(wù)器192.168.1.6上的tmp文件,-g表示get,-r表示remote,192.168.1.6表示服務(wù)器ip

同理,

tftp –l tmp –p 192.168.1.6

保存本地tmp到192.168.1.6上,-p表示put,-l表示local,192.168.1.6依然是服務(wù)器ip

5. 查看linux分區(qū)

cat /proc/partitions

可以看見(jiàn)分區(qū)的設(shè)備名,主次設(shè)備號(hào)等很實(shí)用的

6.同步串口和LCD顯示

只要在原來(lái)的bootargs上加:console=tty0即可,如:

setenv bootargs console=ttyS0,57600 console=tty0 root=/dev/mtdblock0  init=/linuxrc rootfstype=jffs2

7.linux出現(xiàn)不能登錄的情況,即使用戶(hù)名root正確

(使用denx官方的文件系統(tǒng),比較全面,很好)

可能是因?yàn)閑tc目錄下配置文件被chmod以為改變權(quán)限,解決辦法是:直接copy新的etc目錄即可,同時(shí)注意保留修改過(guò)的profile等配置文件

8.普通linux C程序簡(jiǎn)單休眠

包含 #include   <unistd.h>

sleep(5);即可

9.修改root環(huán)境變量

root登錄后,(ubuntu命令是sudo su)

編輯~/.bashrc文件,新增變量直接寫(xiě)變量如:

JAVA_HOME=/home/.../java所在文件夾

編輯已有變量如:

JAVA_HOME=$JAVA_HOME:/home/.../java所在文件夾

10.終端下快速進(jìn)入埋藏很深的工作目錄的方法

有時(shí)候工作目錄會(huì)很深,簡(jiǎn)便的辦法是:~/.bashrc下增加環(huán)境變量即可,如:

工作目錄 /home/..../works

增加環(huán)境變量WK=/home/..../works

export WK

每次使用只有cd $WK即可

11.ubuntu圖形界面用root權(quán)限操作

很多時(shí)候ubuntu下,只能在終端下root登錄操作文件,現(xiàn)在不用了,用下面的方法:

sudo gnome-open 文件夾名稱(chēng),如:

sudo gonme-open / 用root權(quán)限打開(kāi)根目錄了

12.SecureCRT終端回滾行數(shù)

有時(shí)候,終端結(jié)果回滾的行數(shù)會(huì)很多,有些錯(cuò)誤被后邊的行覆蓋掉

設(shè)置 會(huì)話選項(xiàng)-回滾緩沖區(qū) 值就可以了,比如5000

13.linux 開(kāi)機(jī)logo制作方法

從最初的png圖片,制作到最后的ppm圖片

# pngtopnm img.png > img.pnm
# pnmquant 224 img.pnm > img1.pnm
# pnmtoplainpnm img1.pnm > logo_linux_clut224.ppm
14.ln 軟連接和硬鏈接之間的區(qū)別
ln -s file1 file2 表示建立file2,file2是file1的符號(hào)鏈接,也就是軟連接,此時(shí)file1不一定存在
ln file1 file2 表示建立file2,file2是file1的硬鏈接,也就是inode備份,此時(shí)file1必須存在
 在同一個(gè)分區(qū)或者說(shuō) 同一個(gè)文件系統(tǒng) 中, 多個(gè)文件的物理存貯位置一樣, 只是目錄項(xiàng) 分別在不同的目錄下, 或者文件名(也是一個(gè)目錄項(xiàng)) 各不相同. 這種存貯方式 是 硬連接. 如果要連接到另一個(gè)分區(qū)的目錄下, 只能用軟連接. ls -l 時(shí)可以看到, 軟連接只是存了一個(gè)字符串, 通過(guò)這個(gè)字符串, 系統(tǒng)就可以訪問(wèn)其代表的文件. 如果是硬連接, ls -l 時(shí)可以看到文件的連接數(shù). 刪除一個(gè)硬連接, 其他文件ls -l時(shí)看到的連接數(shù)就少一個(gè). 當(dāng)刪除最后一個(gè)連接時(shí), 系統(tǒng)將釋放該文件的存貯空間
例如:
三個(gè)文見(jiàn) file1 file2 file3
file2 是 file1 的soft link
file3 是 file1 的hard link
file1 的 inode 是100, 那么
file3 的 inode 一定是 100, file2的肯定不是100.
即使你刪除了 file2 和 file3, 但是file1 仍然存在.
假如你刪除了 file1, 那么 file2 一定抱錯(cuò), 因?yàn)樗?父母"沒(méi)了.
但file3仍然一切正常. 就好象 copy f1 f3 了一樣, 并且保持同樣的 inode
15.busybox做的根文件系統(tǒng)出現(xiàn)Kernel panic - not syncing: No init found.  Try passing init= option to kernel.,或者明明目錄先有文件卻說(shuō)can't execute './framebuffer': No such file or directory
常見(jiàn)原因以下兩個(gè):沒(méi)有相應(yīng)的so動(dòng)態(tài)庫(kù),為什么沒(méi)有報(bào)沒(méi)有庫(kù)卻說(shuō)No such file or directory,估計(jì)是因?yàn)閎usybox實(shí)現(xiàn)不標(biāo)準(zhǔn);也可能是由于內(nèi)核的編譯器舊,而編譯應(yīng)用的編譯器新,造成不能執(zhí)行busybox或者應(yīng)用
16.qtopia2.2.0使用usb鼠標(biāo)和usb鍵盤(pán)
設(shè)置一下環(huán)境變量即可
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ARM/qtopia/lib
QTDIR=/usr/local/ARM/qtopia
QPEDIR=/usr/local/ARM/qtopia
QWS_MOUSE_PROTO=USB:/dev/mouse0
export PATH PS1 LD_LIBRARY_PATH QPEDIR QTDIR QWS_MOUSE_PROTO
17.自動(dòng)登錄用busybox做的的根文件系統(tǒng)
busybox的init,似乎沒(méi)有處理非登錄用戶(hù)的profile,所以很多東西不好處理,但是getty登錄的話,每次要輸入用戶(hù)名,經(jīng)過(guò)分析發(fā)現(xiàn),
getty最終把用戶(hù)名傳遞給了login,同時(shí)root可以配置成無(wú)密碼登錄,所以inittab腳本中,用以下方法自動(dòng)登錄root用戶(hù):
ttyS0::respawn:/bin/login root 其中ttyS0為控制tty,respawn等用法參見(jiàn):
18.insmod lsmod rmmod有時(shí)候需要在根文件系統(tǒng)的lib/modules/<內(nèi)核版本如:2.6.32>/目錄下存放模塊
否則會(huì)出現(xiàn)類(lèi)似:
insmod: chdir(2.6.26.6): No such file or directory rmmod: module 'hello_world' not found等錯(cuò)誤
插入模塊 insmod hello.ko,查看模塊 lsmod,卸載模塊 rmmod hello
19.konqueror配置語(yǔ)句
root@linucos-desktop:/home/linucos/newmsg/9261/works/konqueror-embedded-snapshot-20030705# ./configure --host=arm-linux --target=arm-linux --enable-embedded --enable-qt-embedded  --with-gui=qpe --disable-debug --enable-ftp --enable-static --disable-shared --disable-mt --with-extra-libs=/home/linucos/newmsg/tools/eldk41gcc40/arm/lib:/home/linucos/newmsg/gui/qtopia/qtopia-free-2.2.0/qtopia/lib:/usr/local/ARM/qtopia/lib:/usr/local/ARM/libs --with-extra-includes=/home/linucos/newmsg/tools/eldk41gcc40/arm/usr/include:/home/linucos/newmsg/gui/qtopia/qtopia-free-2.2.0/qtopia/include:/usr/local/ARM/includes -without-ssl --with-qt-dir=$QTDIR:/usr/local/ARM/qtopia --with-qt-includes=/home/linucos/newmsg/gui/qtopia/qtopia-free-2.2.0/qt2/include:/usr/local/ARM/includes --with-qt-libraries=/home/linucos/newmsg/gui/qtopia/qtopia-free-2.2.0/qt2/lib:/usr/local/ARM/qtopia/lib --with-qtopia-dir=$QPEDIR:/usr/local/ARM/qtopia/
結(jié)論是,部分庫(kù)沒(méi)有找到時(shí)候可以這樣,:號(hào)分開(kāi)所有可能的lib和include即可
20.printk輸出級(jí)別和默認(rèn)級(jí)別
沒(méi)有指定日志級(jí)別的printk語(yǔ)句默認(rèn)采用的級(jí)別是 DEFAULT_ MESSAGE_LOGLEVEL(這個(gè)默認(rèn)級(jí)別一般為<4>,即與KERN_WARNING在一個(gè)級(jí)別上),其定義在linux26/kernel/printk.c中可以找到
  日志級(jí)別一共有8個(gè)級(jí)別,printk的日志級(jí)別定義如下(在include/linux/kernel.h中):
  #define KERN_EMERG    0/*緊急事件消息,系統(tǒng)崩潰之前提示,表示系統(tǒng)不可用*/
  #define KERN_ALERT     1/*報(bào)告消息,表示必須立即采取措施*/
  #define KERN_CRIT       2/*臨界條件,通常涉及嚴(yán)重的硬件或軟件操作失敗*/
  #define KERN_ERR        3/*錯(cuò)誤條件,驅(qū)動(dòng)程序常用KERN_ERR來(lái)報(bào)告硬件的錯(cuò)誤*/
  #define KERN_WARNING  4/*警告條件,對(duì)可能出現(xiàn)問(wèn)題的情況進(jìn)行警告*/
  #define KERN_NOTICE    5/*正常但又重要的條件,用于提醒*/
  #define KERN_INFO       6/*提示信息,如驅(qū)動(dòng)程序啟動(dòng)時(shí),打印硬件信息*/
  #define KERN_DEBUG     7/*調(diào)試級(jí)別的消息*/
所以,0處在在高級(jí)別上,輸出時(shí)候,使用printk(KERN_EMERG "msg");即可
21.qtopia會(huì)出現(xiàn)各種詭異問(wèn)題
qtopia出現(xiàn)問(wèn)題時(shí),很多情況下,不是大問(wèn)題,而是環(huán)境變量的問(wèn)題,如設(shè)置mouse,導(dǎo)致串口不能用,設(shè)置keyboard,導(dǎo)致鼠標(biāo)不好用等等
22.qtopia關(guān)鍵代碼位置
qtopia-2.2.0基本就在qtopia_root/qt2/src/kernel/Qgfxraster_qws.cpp附近
23.去掉linux開(kāi)機(jī)logo上的光標(biāo)
   在內(nèi)核的當(dāng)前目錄進(jìn)入到drivers/video/console/fbcon.c文件
 將static void fb_flashcursor(void *private)制成空函數(shù)如下

   同樣的方法將函數(shù)static void fbcon_cursor(struct vc_data *vc, int mode)用空函數(shù)替換

24.ubuntu停止和開(kāi)啟圖形界面服務(wù)

/etc/init.d/gdm stop就可以停止圖形服務(wù)

/etc/init.d/gdm start開(kāi)啟圖形服務(wù)

25.改變uboot和linux內(nèi)核內(nèi)容輸出串口

uboot中簡(jiǎn)單的修改,include/configs/<board_name>.h配置文件即可,我的修改:

#define CONFIG_ATMEL_USART 1
#define CONFIG_USART0  1
#undef CONFIG_USART1
#undef CONFIG_USART2
#undef CONFIG_USART3  1 /* USART 3 is DBGU */ 原來(lái)是dbug口,undef后不使用了

linux中,一般在io_map下,兩個(gè)內(nèi)容需要做:

第一是添加相應(yīng)串口設(shè)備,第二是注冊(cè)相應(yīng)串口為串口控制臺(tái),我的修改如下:

 /* DBGU on ttyS0. (Rx & Tx only) */
 at91_register_uart(0, 0, 0); //原來(lái)的

 /* USART0 on ttyS1. (Rx & Tx only) */
 at91_register_uart(AT91RM9200_ID_US0, 1, 0);  //新加的

 /* set serial console to ttyS0 (ie, DBGU) */
 at91_set_serial_console(0); //原來(lái)的

 /* set serial console to ttyS0 (ie, uart0) */
 at91_set_serial_console(1); //新加的

內(nèi)核配置中,稍有修改,調(diào)整早期輸出到相應(yīng)串口選項(xiàng)即可,此選項(xiàng)一般在相應(yīng)的板子類(lèi)型下,我的修改成uart0

同時(shí),uboot給linux傳遞參數(shù)注意添加console=ttyS1等

26.tar 命令小結(jié)

  tar -xvf foo.tar
              verbosely extract foo.tar
  tar -xzf foo.tar.gz
              extract gzipped foo.tar.gz
  tar -cjf foo.tar.bz2 bar/
              create   bzipped   tar  archive  of  the  directory  bar  called
              foo.tar.bz2
  tar -xjf foo.tar.bz2 -C bar/
              extract bzipped foo.tar.bz2 after changing directory to bar
  tar -xzf foo.tar.gz blah.txt
              extract the file blah.txt from foo.tar.gz

27.cp 命令小結(jié)

cp source target

- a 該選項(xiàng)通常在拷貝目錄時(shí)使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用等于dpR選項(xiàng)的組合。
- d 拷貝時(shí)保留鏈接。
- f 刪除已經(jīng)存在的目標(biāo)文件而不提示。
- i 和f選項(xiàng)相反,在覆蓋目標(biāo)文件之前將給出提示要求用戶(hù)確認(rèn)?;卮饄時(shí)目標(biāo)文件將被覆蓋,是交互式拷貝。
- p 此時(shí)cp除復(fù)制源文件的內(nèi)容外,還將把其修改時(shí)間和訪問(wèn)權(quán)限也復(fù)制到新文件中。
- r 若給出的源文件是一目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下所有的子目錄和文件。此時(shí)目標(biāo)文件必須為一個(gè)目錄名。
- l 不作拷貝,只是鏈接文件。

28.jffs2文件系統(tǒng)制作

mkfs.jffs2 -r rootfs -o rootfs.jffs2 -e 0x4000 -n

更多選項(xiàng)直接 mkfs.jffs2 help

29.給開(kāi)發(fā)板增加域名解析

自己做了根文件系統(tǒng)之后,發(fā)現(xiàn)ping www.baidu.com不行,因?yàn)闆](méi)有設(shè)置域名解析服務(wù)器,解決辦法也很簡(jiǎn)單:

touch /etc/resolv.conf

那么怎么獲取dns 地址呢?也和簡(jiǎn)單的,因?yàn)殚_(kāi)發(fā)板一般和主機(jī)用一個(gè)路由,所以呢,看看本機(jī)/etc/resolv.conf下面的地址就好了,如樣添加即可,我的是:

nameserver 202.101.172.35
nameserver 202.101.172.47 

30.qtopia-2.2.0編譯x86版本

進(jìn)入源碼根目錄后,簡(jiǎn)單的:

./configure -qpe '-prefix=/usr/local/ARM/qtopia_x86'

make

make install

-qpe 是指 qtopia的配置參數(shù),同時(shí)-qte 是指qt-embbed;install 后prefix指定的目錄下,既有安裝后的x86版本的qtopia了

31.pc上模擬qtopia

我們使用工具qvfb來(lái)模擬qtopia,這里用2.2.0版本,根據(jù)30中步驟編譯成功后:

qvfb -height 240 -width 320 &

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ARM/qtopia_x86

QTDIR=/usr/local/ARM/qtopia_x86

QPEDIR=/usr/local/ARM/qtopia_x86

/usr/local/ARM/qtopia_x86/bin/qpe &

如果,

想要開(kāi)機(jī)啟動(dòng)自己做的東西,不要顯示qtopia桌面的話,直接:

/usr/local/ARM/qtopia_x86/bin/music -qws&

31.linux配置網(wǎng)絡(luò)

ifconfig lo 127.0.0.1

ifconfig eth0 192.168.1.58 netmask 255.255.255.0

route add default gw 192.168.1.1

以上使用busybox 1.15

32.uboot操作nor flash和nand flash

習(xí)慣上nor flash被稱(chēng)作flash,nand flash被稱(chēng)作nand flash,很多情況下,涉及到nor和nand的讀寫(xiě)

nor讀

cp 0x10000000 0x22000000 0x50000

           從哪                  到哪          長(zhǎng)度

nor寫(xiě)

cp 0x22000000 0x10000000 0x50000

          從哪                  到哪           長(zhǎng)度

nand讀

nand read 0x22000000 0xa0000 0x200000

                      到哪              從哪         長(zhǎng)度

nand write 0x22000000 0xa0000 0x200000

                      從哪              到哪         長(zhǎng)度

33.uboot自行執(zhí)行命令的方法

在需要執(zhí)行某命令的地方運(yùn)行函數(shù)run_command("","")即可,如:

run_command("nand read 0x22000000 0xa0000 0x200000;bootm", "");

即可自動(dòng)執(zhí)行了

34.linux的io重定向

a、 I/O重定向通常與 FD有關(guān),shell的FD通常為10個(gè),即 0~9;
b、 常用FD有3個(gè),為0(stdin,標(biāo)準(zhǔn)輸入)、1(stdout,標(biāo)準(zhǔn)輸出)、2(stderr,標(biāo)準(zhǔn)錯(cuò)誤輸出),默認(rèn)與keyboard、monitor、monitor有關(guān);
c、 用 < 來(lái)改變讀進(jìn)的數(shù)據(jù)信道(stdin),使之從指定的檔案讀進(jìn);
d、 用 > 來(lái)改變送出的數(shù)據(jù)信道(stdout, stderr),使之輸出到指定的檔案;
e、 0 是 < 的默認(rèn)值,因此 < 與 0<是一樣的;同理,> 與 1> 是一樣的;
f、 在IO重定向 中,stdout 與 stderr 的管道會(huì)先準(zhǔn)備好,才會(huì)從 stdin 讀進(jìn)資料;
g、 管道“|”(pipe line):上一個(gè)命令的 stdout 接到下一個(gè)命令的 stdin;

cmd > file 把 stdout 重定向到 file 文件中;
cmd >> file 把 stdout 重定向到 file 文件中(追加);
cmd 1> fiel 把 stdout 重定向到 file 文件中;
cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;  

cmd 2> file 把 stderr 重定向到 file 文件中;

cmd 2>> file 把 stderr 重定向到 file 文件中(追加);  

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);

cmd < file >file2 cmd 命令以 file 文件作為 stdin,以 file2 文件作為 stdout;
cat <>file 以讀寫(xiě)的方式打開(kāi) file;
cmd < file cmd 命令以 file 文件作為 stdin;
cmd << delimiter Here document,從 stdin 中讀入,直至遇到 delimiter 分界符

35.終端語(yǔ)法高亮

終端分為兩種:1.本地 2.遠(yuǎn)程

本地一般是xterm,遠(yuǎn)程則是secureCRT之類(lèi)

apt-get install vim 即可替代原有vi無(wú)語(yǔ)法高亮的不足

secureCRT中設(shè)置終端類(lèi)型為xterm linux等,重新登錄ssh,即可語(yǔ)法高亮

當(dāng)然,也可修改/etc/vim/vimrc中的相關(guān)選項(xiàng)

 36.ls或其他命令不能用

注意是不是無(wú)意間改變了so共享庫(kù)的查找路徑LD_LIBRARY_PATH,出現(xiàn)

ls: error while loading shared libraries: libc.so.6: ELF file OS ABI invalid

只需要修改回來(lái)即可

37.qtopia顯示中文與中文化

顯示中文兩個(gè)條件:1.支持中文編碼,如utf8。 2. 有中文字體,qtopia默認(rèn)沒(méi)有開(kāi)啟unicode支持,開(kāi)啟即可,qtopia的unifont支持中文,詳細(xì)顯示中文和中文化參照地址:http://blog.csdn.net/linucos/archive/2010/03/24/5413257.aspx

38.konqueror支持中文,qtopia能顯示中文后,konqueror即可顯示中文了,否則嘗試選擇相應(yīng)字體或者重新編譯

39.qtopia中文輸入法

MurphyPinyin輸入法,移植相當(dāng)簡(jiǎn)單,不再贅述

40.arm linux LCD不能正常顯示

一般的3.5的tft lcd默認(rèn)是RGB的24bit模式,且RGB順序是高位R低位B,屏幕一般不要初始化即可使用,不能正常顯示的原因從以下幾個(gè)入手:

<1>行長(zhǎng) 幀長(zhǎng) 行前 行后 幀前 幀后,決定了屏幕顯示是否在正確位置,可能硬件沒(méi)連接好,可能控制器信號(hào)沒(méi)送出

<2>屏幕正常顯示,但是閃動(dòng)或抖動(dòng),可以查找clk速率的問(wèn)題

<3>同時(shí) 行長(zhǎng) 幀長(zhǎng) 行前 行后 幀前 幀后 數(shù)據(jù)使能 時(shí)鐘,幾個(gè)信號(hào)的相位可能導(dǎo)致顯示不出來(lái)或者顯示不正常

<4>正常顯示,但是顏色不正常,注意R和B的順序,同時(shí)16bit模式下的555和565問(wèn)題,可以配置linux內(nèi)核到24位模式嘗試

41.c程序加printf調(diào)試方法

#if defined(DBG)
#define dbg_printf(fmt,arg...) /
printf(fmt, ##arg)
#else
#define dbg_printf(...) /
do {}while(0);
#endif

#if defined(HYBRIDOS_SAMPLE_DEBUG)
#define dbg_printf(fmt,arg...) do{printf(fmt, ##arg);}while(0)
#else
#define dbg_printf(fmt,arg...) do {}while(0)
#endif

42.linux nand flash mtd分區(qū)技巧

可以把最后一個(gè)分區(qū)的.size設(shè)置成MTDPART_SIZ_FULL, /* Occupy rest of flash */ ,表示剩余大小

43.jffs2文件系統(tǒng)制作注意

mkfs.jffs2 -r xxx -o xxx.jffs2 -e 擦除大小 -n 沒(méi)有clean marker -p 不指定大小填充到最后一個(gè)eraseblock

一般擦除大小根據(jù)nand 手冊(cè)確定,64M為0x4000 即16K,128M為0x20000 即128K

44.注意mac地址哦

ifconfig eth0 down
ifconfig eth0 hw ether 00:00:AA:BB:CC:DD
ifconfig eth0 up

45.讓linux內(nèi)核支持yaffs2

需要給內(nèi)核打個(gè)補(bǔ)?。?.6.30),之后內(nèi)核配置的時(shí)候選擇下,制作工具分為大page和小page區(qū)別,制作即可

46.linux內(nèi)核解壓后停止

出現(xiàn):

Uncompressing Linux................................................................................................................................ done, booting the kernel.

停止

解決辦法,可以嘗試bootargs添加mem參數(shù)

47.linux驅(qū)動(dòng)架構(gòu)簡(jiǎn)單跟蹤

linux驅(qū)動(dòng)架構(gòu),主要是分層,便于管理咯:比如聲音的驅(qū)動(dòng),先要添加設(shè)備,之后再初始化驅(qū)動(dòng),添加platform設(shè)備便于管理,真正的工作在驅(qū)動(dòng)中做
module_init(at91uda1341_init);
上邊的init函數(shù)中調(diào)用了2個(gè)關(guān)鍵函數(shù):
at91_add_device_at91uda1341 和 platform_driver_register
這個(gè)其實(shí)是注冊(cè)了設(shè)備的,注冊(cè)的設(shè)備過(guò)程中,最主要的也是初始化了需要用管腳,當(dāng)然放到驅(qū)動(dòng)初始化中也行,為什么要放在這里呢?才像是告訴后來(lái)的設(shè)備,這個(gè)管腳已經(jīng)使用了,如果檢測(cè)到被用了,干脆設(shè)備都不要注冊(cè)了~因?yàn)闆_突了~module_exit指定的函數(shù)會(huì)自動(dòng)調(diào)用的,放在特殊的段里~
還有個(gè)關(guān)鍵函數(shù)是 snd_at91uda1341_probe();
這個(gè)是初始化了函數(shù)了,除了管腳外,所有的初始化都放在probe里了~probe什么時(shí)候調(diào)用呢~?
蹤影是:
platform_driver_register(&at91uda1341_driver); --》
driver_register(&drv->driver); --》
bus_add_driver(drv); --》
driver_attach(drv); --》
bus_for_each_dev(drv->bus, NULL, drv, __driver_attach); --》
注意參數(shù)__driver_attach,他其實(shí)是個(gè)函數(shù)指針
跟著bus_for_each_dev發(fā)現(xiàn)
fn(dev, data); fn其實(shí)是__driver_attach,
跟著__driver_attach
driver_probe_device(drv, dev); --》
really_probe(dev, drv); --》
drv->probe(dev); 此處是真正的probe函數(shù)被調(diào)用了的~
綜上,也就是module_exit的時(shí)候,設(shè)備也添加了,驅(qū)動(dòng)也初始化了~

總之呢,一個(gè)注冊(cè)設(shè)備分配管腳,一個(gè)初始化驅(qū)動(dòng)~

48.uboot的環(huán)境變量保存

--1--保存在nand

#define CONFIG_SYS_USE_NANDFLASH

#define CONFIG_ENV_IS_IN_NAND

--2--保存在nor

 

 

 

#define CONFIG_SYS_USE_FLASH

#define CONFIG_ENV_IS_IN_FLASH

其他編譯時(shí)候缺什么宏,補(bǔ)上就可以了~

49.uboot環(huán)境變量保存地址

 #define CONFIG_ENV_OFFSET    0x60000

即是相對(duì)存儲(chǔ)設(shè)備的偏移

50.make menuconfig中本來(lái)有的選項(xiàng)沒(méi)有出現(xiàn),不能選擇

檢查下,是不是依賴(lài)哪個(gè)依賴(lài)的條件沒(méi)有被選中,選中即可

51.如何去掉make menuconfig中的依賴(lài)關(guān)系

所用模塊的文件夾下找kconfig腳本,找到你想找的項(xiàng)目,下面會(huì)發(fā)現(xiàn):

config TOUCHSCREEN_AD7877
 tristate "AD7877 based touchscreens"
 depends on SPI_MASTER

depends on字樣就是依賴(lài)關(guān)系,去掉即可顯示了,但是會(huì)依賴(lài)其他問(wèn)題,那是后話

52.linux下gpio中斷問(wèn)題

error = request_irq(gpio_to_irq(AT91_PIN_PA21),
   uh7843_ts_interrupt,
   0,
   "Touchscreen driver", pdev);

一般這樣申請(qǐng),注意如果改成

error = request_irq(gpio_to_irq(AT91_PIN_PA21),
   uh7843_ts_interrupt,
   IRQF_SHARED,
   "Touchscreen driver", pdev);

申請(qǐng)失敗,原因還沒(méi)有探究

53.linux輸入子系統(tǒng)理解

linux輸入子系統(tǒng)分為3層來(lái)理解:

--1--driver

驅(qū)動(dòng)硬件,需要想core層注冊(cè)輸入設(shè)備,所有的信息通過(guò)標(biāo)準(zhǔn)消息通知core

--2--core

處理核心,與驅(qū)動(dòng)關(guān)系不大

--3--event handle

事件處理,針對(duì)不同的設(shè)備有不同的時(shí)間,具體見(jiàn)driver/input/evdev.c,設(shè)備文件也是在此建立的,現(xiàn)在大多event handler都用此文件

54.arm匯編點(diǎn)燈

 #if 0
 mov r0, #0x1
 mov r2, #0x0
 str r0, [r2,#0xfffff800]
 mov r0, #0x1
 mov r2, #0x0
 str r0, [r2,#0xfffff810]
 mov r0, #0x1
 mov r2, #0x0
 str r0, [r2,#0xfffff830]
 #endif

55.arm的C語(yǔ)言點(diǎn)燈

void shine_led(void)

 volatile unsigned int cnt = 0;
 volatile unsigned int dly = 0;
 *((unsigned int*)(0xfffff800 + 0x0)) = (0x1<<0);
 *((unsigned int*)(0xfffff800 + 0x10)) = (0x1<<0);
 for (cnt = 0; cnt < 6; ++cnt)
 {
  if(cnt%2)
  *((unsigned int*)(0xfffff800 + 0x30)) = (0x1<<0); 
  else
  *((unsigned int*)(0xfffff800 + 0x34)) = (0x1<<0);
  for(dly = 0; dly < 50000; ++dly);

  for(dly = 0; dly < 50000; ++dly);

  for(dly = 0; dly < 50000; ++dly);


 }
}

56.內(nèi)建環(huán)境變量

#define CONFIG_IPADDR 192.168.1.158
#define CONFIG_ETHADDR 12:34:56:78:90:12
#define CONFIG_SERVERIP 192.168.1.60

 

57.shell判斷文件存在與否

ptcf="/etc/pointercal"

if [ ! -f "$ptcf" ]; then
 /etc/tslib/bin/ts_calibrate
fi

57.uboot保存環(huán)境變量技巧

有時(shí)候我們需要nfs和mtd切換啟動(dòng),復(fù)制粘貼不放心,敲來(lái)敲去麻煩,可以使用下面的方法,看例子即知道怎么做

ba0=console=ttyS0,57600 root=/dev/mtdblock0 rw init=/linuxrc rootfstype=jffs2
ba1=console=ttyS0,57600 root=/dev/nfs rw nfsroot=192.168.1.60:/home/linucos/newmsg/nfsroot_busybox nfsaddrs=192.168.1.192:192.168.1.60:192.168.1.1:255.255.255.0 mem=64M
bootargs=console=ttyS0,57600 root=/dev/mtdblock0 rw init=/linuxrc rootfstype=jffs2

實(shí)際上其中的bootargs設(shè)置是這樣的

setenv bootargs $(ba0)

也就是uboot可以定義環(huán)境變量的,這樣,切換啟動(dòng)方式方便至極

58.arm-linux登錄多個(gè)串口終端自動(dòng)登錄

inittab中

::respawn:/sbin/getty -n -l /bin/autologin 57600 ttyS2
ttyS0::respawn:/bin/login root

這樣寫(xiě),實(shí)際上login能夠?qū)崿F(xiàn)自動(dòng)登錄的,但是不能設(shè)置波特率,但是getty可以的,但是換做getty的話,自動(dòng)登錄要經(jīng)過(guò)一個(gè)腳本,

/bin/autologin內(nèi)容如下

#! /bin/sh
/bin/login -f root

以上設(shè)置可以實(shí)現(xiàn)多串口登錄,且自動(dòng)登錄

59.ubuntu9.10更新源

gedit /etc/apt/sources.list

網(wǎng)上找找好源

類(lèi)似

deb http://tw.archive./ubuntu/ karmic main universe restricted multiverse
deb http://tw.archive./ubuntu/ karmic-updates universe main multiverse restricted
deb http://tw.archive./ubuntu/ karmic-proposed universe main multiverse restricted
deb http://tw.archive./ubuntu/ karmic-security universe main multiverse restricted
deb http://tw.archive./ubuntu/ karmic-backports main multiverse restricted universe
deb-src http://tw.archive./ubuntu/ karmic main universe restricted multiverse
deb-src http://tw.archive./ubuntu/ karmic-security universe main multiverse restricted
deb-src http://tw.archive./ubuntu/ karmic-updates universe main multiverse restricted
deb-src http://tw.archive./ubuntu/ karmic-proposed universe main multiverse restricted
deb-src http://tw.archive./ubuntu/ karmic-backports universe main multiverse restricted
保存后,

aptitude update #更新列表
ok~看看有沒(méi)有可用的軟件吧~

60. 查看linux內(nèi)核支持的架構(gòu)

根目錄下 ls arch/arm/configs/

61. ubuntu備份好工具

remastersys

62.ubuntu設(shè)置終端語(yǔ)言

export LANGUAGE=en_US.UTF-8

export LANG=en_US.UTF-8

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多