顯示具有 micro2440 標籤的文章。 顯示所有文章
顯示具有 micro2440 標籤的文章。 顯示所有文章

2012年6月30日 星期六

Hello World Module

不能免俗的一個hello world等級的module,基本上就是學習編譯技巧跟觀察,一點作用都沒有
檔案為hello.c位於某個版本的kernel source下的drivers/hello目錄內,比如說/home/account/friendarm/kernel/linux-2.6.32.2/hello,底下有兩個檔案hello.c跟Makefile
Makefile只有兩行,一行指定compiler,另外一行就是module的相依行囉
編譯指令為
make -C /home/account/friendarm/kernel/linux-2.6.32.2 M='drivers/hello' modules
-C後面的參數為kernel source tree位置,後面則是要編譯的module的位置

我跟著是放到micro2440上面執行(如果在桌上型,Makefile內的CC可以省略,直接用系統內建就可以了),因為micro2440上面預設把所有訊息打開了,所以可以在console底下看到訊息輸出,不然一般應該在/var/log/messages檔案內

2012年3月17日 星期六

編譯open ssl與wpa_supplicant(補)

本以為高高興興的編譯過之後,接下來就是完成無線網卡的module就可以快快樂樂得上菜網了,結果才知道自己天真了orz

首先是怎樣都無法wpa_supplicant成功,仔細看了許久的設定檔案,應該沒有錯誤(改過幾種),或者版本有問題(另外試驗0.61),再來懷疑是openssl沒有編譯好,找了幾個編譯版本,還修改了些參數(目前還是沒有編譯出.so,但是有編譯出.a),跟著甚至把ssl的lib用static link到wpa_supplicant裡面;又或者懷疑busybox是不是有問題,哪些tool沒裝?

最後才發現,原來要改kernel阿~~~囧~必須要打開CONFIG_PACKET選項阿~~~

好啦,打開之後,發現wpa_supplicant可以過了,想不到事情還沒結束,先看看需要dhcp,那表示我要編譯dhcpclient囉?嗯嗯~busybox有簡易的版本udhcpc,那就使用吧,用了之後竟然完全好似沒有作用!?去開AP的設定來看,有連上來阿~也分配了位置,又是上網爬文,發現原來udhcpc並不會自動更改設定,要透過script,在busybox解開的目錄內$(busybox)/examples/udhcp/simple.script,拷貝到機器上變成/usr/share/udhcpc/default.script,這樣一來只要使用updhcpc -i wlan0,ifconfig就可以看到系統自動幫我們設定好ip、netmask、nameserver...,應該可以上網了吧,ping又失敗了..............真的無力到了極點,我又開始"疑神疑鬼"了,最後答案是.....

原來的route路徑跟wlan衝突阿.....eth0跟wlan0兩者都是192.168.1.x的網域,所以系統大概先註冊先贏,率先去使用eth0的路徑吧orz,最後先把eth0關閉,終於可以上網了,真的是遠兜轉了

這只能說,desktop distribution還真的方便許多,嵌入式系統還真多東西自己要take care

2012年3月14日 星期三

micro2440編譯核心

只要使用廠商提供的核心設定檔案下去更改就簡單得多了,主要應該是卡在一個機器型號的設定上面,使得在super vivi還是uboot上面送出的參數會產生一些不匹配的問題,指令類似這樣
copy config_xxxx .config

不過只細看,設定檔案刪除了很多東西,比方一些檔案型態的支援,如果要支援fat跟ntfs記得要把他們編譯進去,另外就是編碼的選擇,記得在native language上選取要支援的編碼,免得有亂碼或者utf-8不支援的問題

可是我好像忘記把模組安裝上去XD另外順便在這裡筆記一下好了,下次要準備編譯一些wireless tools跟wpa_supplicant套件,那表示順便會編一到open ssl,這樣可能就順便編譯一下ssh好了,實在不大喜歡使用serial port,把網路弄起來用ssh連線會比較好一點

2012年3月13日 星期二

micro2440移植busybox 1.19.x


  • 基本上就跟前面busybox編譯差不多,比較困難的是設定的部份,還有一個選項,必須在Shell>內選擇choose which shell is ...都選擇ash,不然會有問題,這部份應該是被設定為default shell
  • 跟著我把所有toolchain內的libc/lib下的library跟link的檔案全部拷貝到<rootfs>/lib底下

另外兩個重要的設定檔案內容如下inittab
 第二行得加上去,如果部加上去的話你會看不到login shell,其他詳細的設定方式可以參考"建構嵌入式linux系統"一書

接著是/etc/rcS,這部份是借用了原來板子上的檔案,可是hotplug一直有問題,我直接把那行/bin/hotplug註解掉了,可是還是有點小問題
最後在用光碟內的工具用mkyaffs2image-128M _install yaffs_root.img,然後就可以下載到板子上
rootfs已經成功刷上去沒有問題,但是目前新編譯的kernel有問題~苦惱中,難道一個嵌入式系統就是編譯debug嗎:P

最後建議要刷板子的人先把nand flash的內容備份下來吧,雖然我覺得他好像有問題(不知道是賣我的人給我二手貨,還是出廠軟體就有問題)

2012年3月9日 星期五

新玩具~對岸的友善之臂micro2440

剛剛到貨,一收到,哇~一大箱,心裡就涼了一半,不會是很大台吧@@a,拆開~果然是很大台,來跟beagleboard xm (BB)打個招呼吧
體積:
很明顯,BB不到micro2440的一辦大小,高度也是BB比較低
I/O port:
介面也不會比micro2440遜色(micro2440 com port倒是多了兩個)
CPU & memory:
可是BB可是雙核心阿A8(1G)+DSP,micro2440只有400MHz的A8還是A9,記憶體也比BB來的少
價格:
當然價格也差了許多,BB可以買兩台micro2440了,但是如果可以,我還是寧願使用BB

如果要學習,或許micro2440比較無所謂,玩壞了也不心疼,但是如果要當玩具,我想BB比較耐用。簡單的說,BB我會想要把它裝殼子(但是殼子好貴,國外的金屬外殼,快要可以再買一台BB),但是micro2440就讓它裸奔吧