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 更新)

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