2014年1月19日 星期日

MBR相關

MBR (Master Boot Record), 為Storge device的第零軌,固定內含512byte,為辨識硬碟中最為重要的區域。

想檢視內容可以使用 dd if=/dev/sda of=~/mbr.bin bs=512 count=1 將其導出檢視內容。

檢視二進制碼使用 hexdump -Cv ~/mbr.bin

若是電腦中有安裝多個儲存裝置,BIOS在選單中會有指定由某個硬碟啟動系統的選項,而這個啟動系統的的第零軌(MBR)就會決定將系統如何開機。

MBR 大約長成這樣子,最關心的就是如何切割磁區了,而這個區域就是從0x01be開始。











2013年11月1日 星期五

Android note (1) - How to start.

常常在重新學習,目錄更動或忘記指令build不起來是家常便飯了。

1. 建立一個新的android專案。

android create project -t 1 -n hello -p /home/teng/work/hello -a hello -k com.hello.myapp
  -n --name          : Project name. 可以用 android list targets 查看
  -t --target        : Target ID of the new project. [required]
  -k --package       : Android package name for the library. [required]
  -g --gradle        : Use gradle template.
  -v --gradle-version: Gradle Android plugin version.
  -p --path          : The new project's directory. [required]


2. 先使用adb,找到自已的手機裝置ID

adb devices
   List of devices attached 
   HT214VZxxxxx    device <=== 自已的設備 (前置作業也有一些,想到再補)


3.  工欲善其事必先利其器,建立一個簡單的Makefile加速debug.

#############################                                                                                            
all:
   ctags -R
#  cscope -Rb
   ant debug
   adb -s HT214VZxxxxx install -r bin/hello-debug.apk.

debug:
   konsole -e adb logcat

clean:
   ant clean
##############################

4. 輸入make自動將程式編譯並載入手機執行,
    輸入make debug則會在另個console顯示除錯訊息(蠻方便的)


打開快樂的vim邊吐血....




















2013年9月28日 星期六

再學android

java一直在我心目中是排行老二的語言,在吹毛求疵的心態下,認為只有速度代表一切,由其在工作在嵌入式的領域,認為需要中間轉介層的語言效能永遠比不上直接跑的編譯式語言。

曾經在學習APP時一直猶豫,該把QT學好還是android,二年前得知QT有此lib可以用來寫android, 也曾嚐試過,一時也覺得有趣好玩,可以同時學二種UI APP,不過lib後來沒什麼在更新,我想...硬是把別人的lib轉到QT上,應該還是蠻麻煩的吧,熱情稍退...又停滯不前。

學習一個語言並不容易,流程即使知道,但是要記住許多元件,對年過三十的人由其是記性不好的我,不簡單阿...

eclipse是個很強大的軟體,可以用來開發android的程式支援度非常之高,不過C的程式寫久了,對於有華麗UI的edit, 有種排斥感,即使再怎麼不方便,還是搜尋了很多以vim來寫android的方式,在一翻折騰之後,開始上手了。

好比鋼鐵人第二集,史塔克在自已的豪宅裡開發鋼鐵衣,而我是在貧民窟拿報廢零件組土炮鋼鐵衣的那個,不過很可惜的我不是那二個天才型的人,在嚐試寫了個小程式之後開始有進展,但是仍然是以C的角度在寫java, 既定的觀念讓我平台轉換很不順,物件使用起來一堆疑問。

在Linux kernel 中所有的變數命名及函式命名原則都是以小寫加底線,linus甚至覺得微軟的匈牙利命名法是腦殘的coding style, 所以linus的潛移默化之下,對於名稱又臭又長,大小寫切來切去,的作法又產生了反感及排斥,但是這些都出現在java及android的lib, coding起來總是覺得心浮氣燥。

儘管再麻煩再不順,我的堅持仍然是在Linux下寫code, 只有執著可以讓自已產生熱情,寫了一個簡單的小程式,但是去年在搬家之後,工作也比較忙碌,又怠惰了下來。 

今非惜比,嵌入式平台CPU愈來愈快,java針對效能也有改善,甚至某些部份聲稱比C++更快,同為物件導向語言,效接近C++,讓我學習的意願高了許多,再來學習吧。

只是不知道什麼時候又會卡住了XD。