用llvm 編譯嵌入式程式

最近幾天在研究嵌入式系統,玩一玩也有一些心得。
課程上所用的編譯工具是arm-none-linux-gnu toolchain,在Archlinux 下可以用如下的方式安裝:

yaourt -S gcc-linaro-arm-linux-gnueabihf
yaourt -S qemu-linaro
yaourt -S arm-none-eabi-gcc49-linaro
yaourt -S arm-none-eabi-gdb-linaro
ln -s /opt/gcc-linaro-arm-linux-gnueabihf/libc /usr/arm-linux-gnueabihf

不過最近心血來潮,想來試試如果用另一套編譯器 LLVM 來編譯看看,至於為什麼…好玩嘛(炸),總之這裡是設定筆記:

...

使用Vundle 維護的新vim 設定

離上一篇 我的vim設定 已經過了一段時間
其實這個設定已經過時,大約去年九月左右就已經整個換掉了。

現在的設定是由阿蹦大神推薦的,包括:

  • Vundle 自動安裝插件的插件
  • ultisnips 強大的原始碼片段展開
  • vim-snippets 各種snippets的集合
  • YouCompleteMe 補齊插件,包括C語言、Java(雖然我沒寫)跟python 的補齊
  • Cscope Cscope,利用Ctags 幫助原始碼查找的工具
  • vim-better-whitespace 自動幫你把trailing whitespace 給幹掉的插件
  • tagbar 顯示檔案內的 tag 和整體架構
...

 March 21, 2015 |    vim  |    vim , vundle  | 1047 字  |  YodaLee

Rust Pointer, Ownership and Lifetime

這篇主要參考

前言:

pointer是語言上一種常見的實作方法,也是C/Cpp常見的寫法,讓你可以利用指標對資料(某塊記憶體)進行操作,達到極高的操控性。
問題是什麼呢?Pointer 讓你直接操控一塊記憶體,相對的,它也會造成空的指標,雙重釋放、未釋放記憶體等不安全 (這裡的安全是指不正常的使用指標,造成memory leak)的操作; 兩個指標可以指向同一塊記憶體,在多執行緖裡造成race condition(競態條件)。

我們既需要pointer 所帶來的彈性,又不希望pointer 和不正常使用帶來的不安全。

同時當系統愈來愈大,加上更多平行化機制之後,要求設計師對每塊宣告的記憶體負責愈顯得不切實際, 作為下一代的語言實在不該讓程式莫名的存取到不該用的記憶體,讓作業系統丟出seg fault 把程式切掉(引用:AZ大神)。
類似的問題與回應在Cpp也看得到(我真懷疑Cpp到底有什麼概念沒實作的XDDDD),像是 C++11引入的smart pointer, shared pointer,都是針對這個問題而來。

...

書評 - 人月神話:軟體專案管理之道

書名 人月神話:軟體專案管理之道(20 週年紀念版)
原書名 The Mythical Man-Month: Essays on Software Engineering
作者 Frederick P. Brooks Jr.
譯者 錢一一
出版商 經濟新潮社
出版日 2004-03-31
ISBN 9789867889188
...

Rust struct, impl, trait

前言:最近被強者我同學呂行大神拉去寫Servo
用的語言是 Rust ,是個非常年輕的語言(2012年出現),另外有一個老一點的 Golang(2009),基本上目前中文找不到什麼資料,就算是英文的文件本身也不太完整Orz

想說文件這種東西,只要不是亂寫愈多愈好,就在這個blog 上寫一點Rust 相關的文件,等寫多了好整理起來; 基本的rust 像什麼函式怎麼宣告、if 格式之類我就不寫了,那個自己翻一翻就會了。
我出身是C/C++, Python,所以解釋角度也比較偏這樣的語言。

這篇介紹Rust裡的集合物件: Struct, impl 跟trait

...

用youtube開Hangout直播

最近看到watch people coding 這個網站,也真有不少人在上面開實況寫code,覺得滿有趣的,也應該自己來開個實況試試。

...

用python讀入agilent (keysight) binary file

故事是這樣子的,最近拿到一些透過Agilent示波器(好啦你喜歡叫他Keysight也可以)讀到的資料,要對裡面的數字做分析, 由於資料極大時他們會用自家的binary格式存檔案,要讀出資料分析就比較麻煩。
他們自家網站是有提供……程式來分析,可惜是用matlab寫的…
What The F.. Emmm, Ahhh, Ahhh, 沒事
總之我看到這個東西就不爽了,俗話說人活著好好的為什麼要用matlab。恁北想用python沒有怎麼辦,只好自幹啦。

...

使用python 與Google Translate進行程式翻譯

最近Qucs Project有個德國佬加入,這個……一加入就做了不少苦力的工作,像換掉一些Qt3才支援的function,換個Qt4相對應的名字, 他說他是用Xcode的取代功能寫的,老實說這個東西不是用sed就可以解決嗎(._.),不過算了,有人幫忙總是好事。
他後來又貢獻了一個PR,內容是把整個程式的德文翻譯加了一千多個翻譯,根本巨量苦力;同時他又開了一個issue,想要把德文的翻譯給補完, 我覺得這樣一個一個翻譯有點太累了,雖然Qt 有linguist幫忙,可是其實還是很累,遇到沒翻過的,還是要自行輸入。
當下靈機一動,想到之前看過有人用Google Translate來自動進行Gnu Po檔的繁簡轉換,那一樣我能不能用Google Translate進行Qt 的翻譯呢?

...

使用git rebase 進行Pull Request 檢測

故事是這樣子的,自從我被加到Qucs project的專案小組,原本的管理員又因為博班進到最忙的時間開始比較少管事,變成我在管專案的Pull Request(PR,拉取要求)。
其實管就管,反正這個project 沒人鳥,平常也沒什麼PR進來;不過有PR進來的時候,還是要做適當的檢查,以下提一下幾個檢查PR的流程:

...

 November 24, 2014 |    git  |    git  | 631 字  |  YodaLee

使用autotool 編譯qt project

在寫這篇,我發現我曾經寫過類似的內容:使用gnu make編譯Qt 專案
總之,這次又是在qucs專案上遇到的問題,之前專案裡的使用者介面,不知道是哪根筋不對,竟然全部都是用手爆的啊啊啊! 正好這個project現在進入巨量refactor階段,在改其中一個部分時,順手把其中一個使用者介面換用Qt的Designer來做。

結果,還要改編譯的autotool,讓它使用UIC解決才行,網路上找找沒什麼資料,只好印autotool的文件下來看,以下是我最後弄出來的Makefile.am設定:

...