2014年9月25日 星期四

git merge "--no-ff" option


我最近發現了一個問題,就是我們如果直接用 merge 指令把分出去的 branch merge 回來。
它似乎會把 log  合併。所以就會造成 git log 裡面列出來的項目包含了 branch 的項目,這樣對於要找以前的紀錄真的是相當的困擾。

正巧在網路上看到一篇文章,裡面有提到相關的內容。
Git 版本控制 branch model 分支模組基本介紹
裡面主要的內容是在討論如何規畫一個專案的 branch。這個可能因為大家的需求不同,可以參考。而作者也提到他的內容主要是參考自:A successful Git branching model,而圖片也是從這篇文章而來。

相關的細節就請有需要的人到原作都的網頁去看了,我來說明一下我的重點 "--no-ff" option。

2014年9月3日 星期三

Let U-Boot support web server

出來混遲早要還的,夜路走多了總會碰到…。firmware 玩多了總有搞掛的時候,所以廠商要求我們要在 bootcode 裡面提供 firmware upgrade 的功能,而且還是要 web UI。

我們實際上的作法是因為前人有作過,所以就依樣畫葫蘆的搬過來用。不過這我就不寫的太仔細了。

那 open source 的世界裡有沒有什麼人提出解決方案呢?我有找到一個:
https://github.com/pepe2k/u-boot_mod
它有 support web server
https://github.com/pepe2k/u-boot_mod#web-server

2014年8月29日 星期五

How to add auto increased build number

有些軟體的版本號後面會有個 build number。這個是自動產生的,讓大家可以明確的知道自己產生的程式是哪版的。因為有時為了版本控制,不會每一次都在正式的版號上加一,但是又需要區分程式的差異,所以想出了這個方法。

這個方法,雖然早就知道,但從來沒自己實做過。現在真的要自己做了,一開始還真沒有頭緒。經過自己想想,加上參考手上的程式碼裡本來的版本資訊的內容(本來是用 build date)。想得到的大概就是產生一個檔來存放 build number ,然後在 make 時,去把檔案內容讀出來 + 1,然後也把這個 + 1 的值存回去。

2014年8月28日 星期四

2014年8月26日 星期二

警告訊息: function declaration isn't a prototype 與 C 語言小歷史

今天發現了程式中有一個警告訊息"function declaration isn't a prototype",想解決它,但是又不太懂它的意思,所以就上網查了一下。結果順便還學了一下歷史。
 原文:func(void):C 與 C++ 函式宣告的小差異

2014年8月20日 星期三

shell script 的追蹤與 debug

最近因為有新同事來,請他練習 shell script,所以我也上網找了一些資料。
結果找到了母校的老師寫的教學網頁

其中有一個課程項目是: shell script 的追蹤與 debug

老實說,因為我們大部份用到的 shell script 都沒有太複雜,還真沒想過有什麼 debug 的方法,都完全使用人腦 compiler 在 debug。

2014年8月8日 星期五

抓取 Git branch 資訊

之前有一篇「Linux 提示字元」裡有提到,可以寫 function 來取得一些 git 的資訊,然後加進提示字元裡面。
我是由這個網站得到的:http://ihower.tw/blog/archives/5436

2014年7月15日 星期二

Git 指令筆記 - 命令列下的樹狀圖

雖然現在有很多具有 GUI 的 git 工具可以用,多人可以畫出清楚漂亮的樹狀圖, 可是很不巧的,因為我的系統還是 windows XP,綜合費用、系統支援,及實際安裝使用之後, 我的電腦上幾乎都有或大或小的問題,所以大部份的狀況我還是透過 command line 來使用 git。
不過在 GUI 上可以畫出來的樹狀圖,在終端機上卻一直不知道該怎麼讓它呈現出來?

2014年3月18日 星期二

VIM 刪除包含某字串的整行

有時用 grep 搜到的內容太多,可是有些內容很明顯就不是我們要的。以前我都傻傻的人工刪掉,又麻煩又怕會弄錯。

今天我實在受不了了,所以上網找了一下,發現它的確是強大的。

:[range]g/pattern/[cmd]
 
[range]表示範圍,或用直接用 g 表示 globe。 
[cmd] 使用 "d" 就可以刪除整行。

2014年1月28日 星期二

變數的長度及 printf 參數。

今天要把 MAC address 由字串轉成 16 進制數字時,才發現很麻煩。因為它是 6 個 bytes,太長了。尋找解決的過程經歷了一些故事,所以來記錄一下。

其實之前有碰到 memory address 的部份,由使用者輸進來的是字串,但運算時常常需要把它轉成 16 進制數字。在我手上的程式一般是使用 simple_strtoul 這個函式,但是它的傳回值是 unsigned long ,只有 4 個 bytes,所以長度不夠。

2014年1月23日 星期四

用軟體產生 flash image。

一般來說,要得到 flash 的 image 檔,應該是把你要的資料先用軟體的方式寫進去。全部寫完之後,再把 flash 拿到燒錄機去,用燒錄機讀出來。

但是這過程中,如果板子上沒有 socket 那就要解焊,解焊當然也是有風險。而且像我自己不會弄就要求助於人。然後我們公司燒錄機都在硬體部門,就要去借用,還可能要排隊。

因此,如果能用軟體就產生這樣的 image 會比較方便。

如何產生都是 0xFF 的檔案。

在 Linux 底下,一般都會用 /dev/zero 或 /dev/null 來產生空的檔案(內容為 0x00)。

例如: dd if=/dev/zer0 of=temp_file bs=1k count=1024

但是有時我們會希望產生內容全部是 0xFF 的檔案,因為 flash 裡面空的狀態就是 0xFF,
所以為了填補 flash image 空的部份,就需要這樣的檔案。

2014年1月9日 星期四

"!!" in C - C 語言中的兩個驚嘆號

有時候,會看到這樣的用法:
!!value

大家應該都知道 "!" 表示 "NOT",所以加了 "!" 0 會變 1 ,1會變 0。
以前學校是這麼教的,不過,其中倒是有一些小地方,不是這麼單純的。

首先,因為 C 語言的型態是很自由的(以前老師喜歡說是「很亂來的」)
如果變數的值單純的是 0 或 1,當然狀況就是像上面說的 0 變 1,1 變 0。

2014年1月8日 星期三

Linux Device Driver

Linux Device Driver 這個科目,是我一直想好好學,但又一直沒有時間的項目。
有一本很有名的書,也就叫 Linux Device Driver

除此之外,小弟剛剛發現一個網頁似乎也不錯。
Jollen 的 Linux Device Driver 專欄、教學文件與教育訓練
(網站是2006年建的了,幾乎所有的圖都失效了@@,2014.01.08 18:39 更新)

備份一下,提醒自己有空要去看看。