同事做的影片, 後面看起來像電影的預告片 ...
2010年12月14日 星期二
2010年12月2日 星期四
還是用cygwin吧~
在windows下開發linux程式 使用cygwin 的移植性會好的多 擷取自官網 "A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing substantial Linux API functionality."
mingw 應是使用gcc來開發 "windows程式" 目的不太一樣
http://zhouxiaofan.wordpress.com/2008/03/24/cygwingcc%E4%B8%8Emingw/ (滿詳細的說明)
試著使用低階io 來複製檔案: open() 使用了 O_CREAT旗標, 分別以 dev c++ 跟 cygwin編譯
產生的檔案雖然內容一樣 但卻權限不同 -- 一個是唯讀檔 r--r--r-- 另一個在windows下是不能讀取的 ;
而加入S_IRUSR ! S_IWUSR 指定權限 用dev c++編譯的結果 則是開放所有權限 rwxrwxrwx
**程式中的( ) 與 ! 要改一下
#include (unistd.h)
#include (fcntl.h)
#include (sys/stat.h)
#include (sys/types.h)
#include (stdlib.h)
#include (stdio.h)
int main(){
int nread;
int fd1;
int fd2;
char *ptrbuf;
unsigned long buflen=500;
fd1=open("file_in",O_RDONLY);
fd2=open("file_out",O_RDWRO_CREAT); //O_EXCL,S_IRUSR!S_IWUSR);
ptrbuf=(char*)malloc(sizeof(char)*buflen);
if(ptrbuf==NULL){
printf("Memory error");
}
while((nread=read(fd1,ptrbuf,buflen))>0)
write(fd2,ptrbuf,nread);
close(fd1);
close(fd2);
free(ptrbuf);
return 0;
}
mingw 應是使用gcc來開發 "windows程式" 目的不太一樣
http://zhouxiaofan.wordpress.com/2008/03/24/cygwingcc%E4%B8%8Emingw/ (滿詳細的說明)
試著使用低階io 來複製檔案: open() 使用了 O_CREAT旗標, 分別以 dev c++ 跟 cygwin編譯
產生的檔案雖然內容一樣 但卻權限不同 -- 一個是唯讀檔 r--r--r-- 另一個在windows下是不能讀取的 ;
而加入S_IRUSR ! S_IWUSR 指定權限 用dev c++編譯的結果 則是開放所有權限 rwxrwxrwx
**程式中的( ) 與 ! 要改一下
#include (unistd.h)
#include (fcntl.h)
#include (sys/stat.h)
#include (sys/types.h)
#include (stdlib.h)
#include (stdio.h)
int main(){
int nread;
int fd1;
int fd2;
char *ptrbuf;
unsigned long buflen=500;
fd1=open("file_in",O_RDONLY);
fd2=open("file_out",O_RDWRO_CREAT); //O_EXCL,S_IRUSR!S_IWUSR);
ptrbuf=(char*)malloc(sizeof(char)*buflen);
if(ptrbuf==NULL){
printf("Memory error");
}
while((nread=read(fd1,ptrbuf,buflen))>0)
write(fd2,ptrbuf,nread);
close(fd1);
close(fd2);
free(ptrbuf);
return 0;
}
標籤:
programming
2010年11月18日 星期四
Qt 4.7.1 open source for windows(mingw)
記錄一下 這幾天安裝Qt遇到的問題
通常是在建立debug linrary 出現錯誤
在安裝Qt 4.7.1時 installer會需要指定一 mingw位置
原本使用 Dec-C++\bin --->編譯過程出現錯誤
使用 最新板的 mingw ---> 還是錯誤
以上也許是版本不合 所以沒多加追朔....
只好的參考http://doc.qt.nokia.com/4.7/compiler-notes.html
"If you don't already have MinGW 4.4 installed, you can download a .zip archive from our ftp site. This archive provides fixes to MinGW and support for missing API, See the _patches directory in the archive for details."
使用它提供的版本 -->但依然出現錯誤
google一下 還是不清楚問題在哪 但應該是跟 存在多個 compiler 有關
因此移除VS 再試----> 還是錯誤 ... (幾乎快放棄了 用IDE好了)
*對於一定要使用VS開發的人 上述網站也有說明
仔細看了一下 建立的過程 發現它的路徑是用 C:\MSDV (原來是"fortran" 也許是報復我太久沒用了....)
移除後再試 ----> 完成
加 入path : C:\ mingw\bin; C:\Qt \4.7.1\bin 到此算完成了
但對 Dev-Cpp 有不好的預感 --->build 果然出現錯誤 [Linker error] undefined reference to `__cpu_features_init' ld returned 1 exit status (應該是跟mingw 衝突) 重新安裝也沒用
還好這問題還算常見 : 將C:\ mingw\bin 新增至其函數庫 再將其至於首位 便可解決
通常是在建立debug linrary 出現錯誤
在安裝Qt 4.7.1時 installer會需要指定一 mingw位置
原本使用 Dec-C++\bin --->編譯過程出現錯誤
使用 最新板的 mingw ---> 還是錯誤
以上也許是版本不合 所以沒多加追朔....
只好的參考http://doc.qt.nokia.com/4.7/compiler-notes.html
"If you don't already have MinGW 4.4 installed, you can download a .zip archive from our ftp site. This archive provides fixes to MinGW and support for missing API, See the _patches directory in the archive for details."
使用它提供的版本 -->但依然出現錯誤
google一下 還是不清楚問題在哪 但應該是跟 存在多個 compiler 有關
因此移除VS 再試----> 還是錯誤 ... (幾乎快放棄了 用IDE好了)
*對於一定要使用VS開發的人 上述網站也有說明
仔細看了一下 建立的過程 發現它的路徑是用 C:\MSDV (原來是"fortran" 也許是報復我太久沒用了....)
移除後再試 ----> 完成
加 入path : C:\ mingw\bin; C:\Qt \4.7.1\bin 到此算完成了
但對 Dev-Cpp 有不好的預感 --->build 果然出現錯誤 [Linker error] undefined reference to `__cpu_features_init' ld returned 1 exit status (應該是跟mingw 衝突) 重新安裝也沒用
還好這問題還算常見 : 將C:\ mingw\bin 新增至其函數庫 再將其至於首位 便可解決
標籤:
programming
2010年11月10日 星期三
bf537 在uboot 下ethaddr 無法存取的問題
還是不知問題出在哪
在uboot下列出環境變數 ethaddr = 00:00:00:00:00:00
tftp 完全不能用 只好先透過serial 重新載入 uboot
>loadb
>protect off 0x20000000 0x2001ffff
>erase 0x20000000 0x2001ffff
>cp.b 0x1000000 0x20000000
>go 0x20000000
>print
這時 ethaddr 有值 但跟板子上的MAC ADDR完全不一樣?
但是 tftp 通了
透過tftp直接燒入 kernel image
但重開再次於 uboot下 print
ethaddr = 00:00:00:00:00:00 ??
系統是起來了
但每次driver 修改後 重新燒入kernel時 也太麻煩了
先擱著吧 driver 測試完再說.....
在uboot下列出環境變數 ethaddr = 00:00:00:00:00:00
tftp 完全不能用 只好先透過serial 重新載入 uboot
>loadb
>protect off 0x20000000 0x2001ffff
>erase 0x20000000 0x2001ffff
>cp.b 0x1000000 0x20000000
>go 0x20000000
這時 ethaddr 有值 但跟板子上的MAC ADDR完全不一樣?
但是 tftp 通了
透過tftp直接燒入 kernel image
但重開再次於 uboot下 print
ethaddr = 00:00:00:00:00:00 ??
系統是起來了
但每次driver 修改後 重新燒入kernel時 也太麻煩了
先擱著吧 driver 測試完再說.....
標籤:
programming
2010年7月25日 星期日
平行小宇宙
每次在海上 工作告一段落 最好的回報 是一望無際的藍色海洋與紫金夕陽
時間拉到前年現在 就在對岸當兵 希望時間趕快流逝
現在 忘著對岸 希望時間就此留住...
像是活在兩個不同的時空 平行進行著 如此的不同 又如此的相同....
相同的是 回到家時 同樣大家一起吃飯 聊天 嘻笑 的時光 簡單 平凡 重複 卻如此難得
時間拉到前年現在 就在對岸當兵 希望時間趕快流逝
現在 忘著對岸 希望時間就此留住...
像是活在兩個不同的時空 平行進行著 如此的不同 又如此的相同....
相同的是 回到家時 同樣大家一起吃飯 聊天 嘻笑 的時光 簡單 平凡 重複 卻如此難得
標籤:
life steps
2010年7月4日 星期日
進場
忙了好幾個月
就這樣 我們訂婚了
進場的時候 幾年來一起經歷的事 家人 朋友 一一浮現腦海
不知道怎麼說了...
感謝上天 感謝命運 感謝曾經 感謝所有人 共譜而成的小小情歌.......
另外
終於可以公開 偷偷製作的MV
依照背景音樂 應該命名為 "In My Heart of Life"
給爸媽 及 你們...
標籤:
life steps
2010年6月17日 星期四
API 與 system call 的關係(由understanding linux kernel 書中擷取)
10.1. POSIX APIs and System Calls
Let's start by stressing the difference between an application programmer interface (API) and a system call. The former is a function definition that specifies how to obtain a given service, while the latter is an explicit request to the kernel made via a software interrupt.
Unix systems include several libraries of functions that provide APIs to programmers. Some of the APIs defined by the libc standard C library refer to wrapper routines (routines whose only purpose is to issue a system call). Usually, each system call has a corresponding wrapper routine, which defines the API that application programs should employ.
The converse is not true, by the wayan API does not necessarily correspond to a specific system call. First of all, the API could offer its services directly in User Mode. (For something abstract such as math functions, there may be no reason to make system calls.) Second, a single API function could make several system calls. Moreover, several API functions could make the same system call, but wrap extra functionality around it. For instance, in Linux, the malloc( ) , calloc( ) , and free( ) APIs are implemented in the libc library. The code in this library keeps track of the allocation and deallocation requests and uses the brk( ) system call to enlarge or shrink the process heap (see the section "Managing the Heap" in Chapter 9).
The POSIX standard refers to APIs and not to system calls. A system can be certified as POSIX-compliant if it offers the proper set of APIs to the application programs, no matter how the corresponding functions are implemented. As a matter of fact, several non-Unix systems have been certified as POSIX-compliant, because they offer all traditional Unix services in User Mode libraries.
From the programmer's point of view, the distinction between an API and a system call is irrelevantthe only things that matter are the function name, the parameter types, and the meaning of the return code. From the kernel designer's point of view, however, the distinction does matter because system calls belong to the kernel, while User Mode libraries don't.
..................
Let's start by stressing the difference between an application programmer interface (API) and a system call. The former is a function definition that specifies how to obtain a given service, while the latter is an explicit request to the kernel made via a software interrupt.
Unix systems include several libraries of functions that provide APIs to programmers. Some of the APIs defined by the libc standard C library refer to wrapper routines (routines whose only purpose is to issue a system call). Usually, each system call has a corresponding wrapper routine, which defines the API that application programs should employ.
The converse is not true, by the wayan API does not necessarily correspond to a specific system call. First of all, the API could offer its services directly in User Mode. (For something abstract such as math functions, there may be no reason to make system calls.) Second, a single API function could make several system calls. Moreover, several API functions could make the same system call, but wrap extra functionality around it. For instance, in Linux, the malloc( ) , calloc( ) , and free( ) APIs are implemented in the libc library. The code in this library keeps track of the allocation and deallocation requests and uses the brk( ) system call to enlarge or shrink the process heap (see the section "Managing the Heap" in Chapter 9).
The POSIX standard refers to APIs and not to system calls. A system can be certified as POSIX-compliant if it offers the proper set of APIs to the application programs, no matter how the corresponding functions are implemented. As a matter of fact, several non-Unix systems have been certified as POSIX-compliant, because they offer all traditional Unix services in User Mode libraries.
From the programmer's point of view, the distinction between an API and a system call is irrelevantthe only things that matter are the function name, the parameter types, and the meaning of the return code. From the kernel designer's point of view, however, the distinction does matter because system calls belong to the kernel, while User Mode libraries don't.
..................
標籤:
programming
2010年6月2日 星期三
初略FIR 演算法
事情多就容易忘記,若不整理一下常常之前寫的code都看的糊塗...
先將FIR實現的步驟整理一下吧:
可以想像成兩個circular buffer,外圈為資料,內圈為FIR係數
想像資料以逆時針方向將buffer填滿
每一筆資料進來 FIR係數buffer 也同樣逆時轉一格
接著兩個buffer內對應的資料與係數做連乘加
先將FIR實現的步驟整理一下吧:
可以想像成兩個circular buffer,外圈為資料,內圈為FIR係數
想像資料以逆時針方向將buffer填滿
每一筆資料進來 FIR係數buffer 也同樣逆時轉一格
接著兩個buffer內對應的資料與係數做連乘加
標籤:
programming
2010年5月23日 星期日
一小段時光
去年8月到12月
天氣從炎熱 到變涼爽的速度 好像跟我騎車從家到台北的時間一樣
看似很久 現在想起來卻好快
星期天的早上 微涼的天氣
沒什麼車的路 疲勞的身體 隨便的早餐 上整天的課
下課的晚上 10點 台北到處都還是急著回家的車
我也急著回家 為了一個幸福的便當 燈光 沙發 寒喧
每天都很累 每天都好快 每天都很滿足 每段小事都特別清楚
"想到就很快樂 我真的知足了 夠了" --倒帶人生
天氣從炎熱 到變涼爽的速度 好像跟我騎車從家到台北的時間一樣
看似很久 現在想起來卻好快
星期天的早上 微涼的天氣
沒什麼車的路 疲勞的身體 隨便的早餐 上整天的課
下課的晚上 10點 台北到處都還是急著回家的車
我也急著回家 為了一個幸福的便當 燈光 沙發 寒喧
每天都很累 每天都好快 每天都很滿足 每段小事都特別清楚
"想到就很快樂 我真的知足了 夠了" --倒帶人生
標籤:
life steps
2010年4月27日 星期二
必經之路
如果我是女生
我有自己的工作 如果為了婚姻必須放棄 我想我做不到
我有自己想做的事 如果為了婚姻必須改變 我想我不願意
我有我的家人 如果為了婚姻必須去照顧別人的家人 我想我很難適應
我有我的價值觀 如果為了婚姻必須委曲求全 我想一定得經歷一場家庭革命
時代背景不同 婚姻裡的舊觀念卻很難改變 ...
這場革命不知多久前就開始了 多少故事不斷上演 也不知何時停止 怎麼停止
我有自己的工作 如果為了婚姻必須放棄 我想我做不到
我有自己想做的事 如果為了婚姻必須改變 我想我不願意
我有我的家人 如果為了婚姻必須去照顧別人的家人 我想我很難適應
我有我的價值觀 如果為了婚姻必須委曲求全 我想一定得經歷一場家庭革命
時代背景不同 婚姻裡的舊觀念卻很難改變 ...
這場革命不知多久前就開始了 多少故事不斷上演 也不知何時停止 怎麼停止
標籤:
life steps
2010年4月16日 星期五
BCLK FCLK GCLK
轉貼http://www.52rd.com/Blog/Detail_RD.Blog_syw501_21625.html
ARM920T处理器有两个功能时钟输入,分别是BCLK和FCLK,ARM920T内部由GCLK驱动,通过设置CP15寄存器1的nF位和iA位可以选择两种功能时钟输入和GCLK连接的方式。由于ARM920T是一种静态设计,可以随时停止所有时钟而不会破坏运行状态。
ARM920T处理器有三种时钟模式是:快总线模式;同步模式;异步模式
快总线模式:
GCLK选择BCLK时钟作为驱动,忽略FCLK时钟输入,即由BCLK时钟用来控制AMBAASB接口和内部arm920t处理器内核速度。
每次重启后,ARM920T都会在快总线模式下运行,这时由BCLK时钟驱动,一般快总线模式在启动代码时执行,然后由软件配置PLL产生高频的FCLK.并等PLL稳定后切换到同步或异步模式使用FCLK作为正常操作
同步模式
GCLK由BCLK时钟或者FCLK时钟驱动,但是BCLK和FCLK需要满足三个条件,一,FCLK比BCLK频率高,二,FCLK频率是BCLK的整数倍,三,无论BCLK怎么转变,FCLK频率都要高于BCLK。
BCLK用来控制AMBAASB接口,FCLK用来控制内部ARM920T处理器内核.当需要处理外部存储器时,内核或者持续用FCLK时钟驱动或者切换到BCLK时钟驱动。这和异步模式相同.
如,写缓存时GCLK连接到FCLK,非缓冲写时使用GCLK链接到BCLK上
另外,从FCLK切换到BCLK和从BCLK切换到FCLK的时间损耗是均衡的,损耗在0到内核重新同步的时钟间的一个相位之间,也就是说,从FCLK到BCLK切换时,会有从0到BCLK的的一个相位的损耗,从BCLK到FCLK有0到FCLK间的一个损耗。
异步模式
GCLK由BCLK或者FCLK驱动.FCLK和BCLK可以完全异步执行,只有一个约束:FCLK必须有比BCLK更高的频率
BCLK用来控制AMBAASB接口,FCLK用来控制内部ARM920T处理器内核.当需要处理外部存储器时,内核或者持续用FCLK驱动或者切换到BCLK驱动。
从FCLK切换到BCLK和从BCLK切换到FCLK的时间损耗是均衡的,损耗在0到重新同步时钟的一个周期之间
总结
处理器上电或重新启动时使用快总线驱动,由BCLK提供时钟
然后设置PLL使FCLK到达目标频率并稳定后通过设置CP15寄存器1来改变时钟驱动为同步驱动或者异步驱动或者同步驱动,
如果FCLK是BCLK的整数倍,采用同步模式
如果FCLK不时BCLK的整数倍,采用异步模式
无论时哪种驱动,处理器在和低速器件连接时都会降低速度,速度在FCLK和BCLK间切换运行。
ARM920T处理器有两个功能时钟输入,分别是BCLK和FCLK,ARM920T内部由GCLK驱动,通过设置CP15寄存器1的nF位和iA位可以选择两种功能时钟输入和GCLK连接的方式。由于ARM920T是一种静态设计,可以随时停止所有时钟而不会破坏运行状态。
ARM920T处理器有三种时钟模式是:快总线模式;同步模式;异步模式
快总线模式:
GCLK选择BCLK时钟作为驱动,忽略FCLK时钟输入,即由BCLK时钟用来控制AMBAASB接口和内部arm920t处理器内核速度。
每次重启后,ARM920T都会在快总线模式下运行,这时由BCLK时钟驱动,一般快总线模式在启动代码时执行,然后由软件配置PLL产生高频的FCLK.并等PLL稳定后切换到同步或异步模式使用FCLK作为正常操作
同步模式
GCLK由BCLK时钟或者FCLK时钟驱动,但是BCLK和FCLK需要满足三个条件,一,FCLK比BCLK频率高,二,FCLK频率是BCLK的整数倍,三,无论BCLK怎么转变,FCLK频率都要高于BCLK。
BCLK用来控制AMBAASB接口,FCLK用来控制内部ARM920T处理器内核.当需要处理外部存储器时,内核或者持续用FCLK时钟驱动或者切换到BCLK时钟驱动。这和异步模式相同.
如,写缓存时GCLK连接到FCLK,非缓冲写时使用GCLK链接到BCLK上
另外,从FCLK切换到BCLK和从BCLK切换到FCLK的时间损耗是均衡的,损耗在0到内核重新同步的时钟间的一个相位之间,也就是说,从FCLK到BCLK切换时,会有从0到BCLK的的一个相位的损耗,从BCLK到FCLK有0到FCLK间的一个损耗。
异步模式
GCLK由BCLK或者FCLK驱动.FCLK和BCLK可以完全异步执行,只有一个约束:FCLK必须有比BCLK更高的频率
BCLK用来控制AMBAASB接口,FCLK用来控制内部ARM920T处理器内核.当需要处理外部存储器时,内核或者持续用FCLK驱动或者切换到BCLK驱动。
从FCLK切换到BCLK和从BCLK切换到FCLK的时间损耗是均衡的,损耗在0到重新同步时钟的一个周期之间
总结
处理器上电或重新启动时使用快总线驱动,由BCLK提供时钟
然后设置PLL使FCLK到达目标频率并稳定后通过设置CP15寄存器1来改变时钟驱动为同步驱动或者异步驱动或者同步驱动,
如果FCLK是BCLK的整数倍,采用同步模式
如果FCLK不时BCLK的整数倍,采用异步模式
无论时哪种驱动,处理器在和低速器件连接时都会降低速度,速度在FCLK和BCLK间切换运行。
標籤:
programming
2010年4月15日 星期四
s3c2440 clock
參考由 http://blog.csdn.net/sunboyljp/archive/2009/12/25/5073307.aspx與http://blog.chinaunix.net/u/21948/showart_362619.html對s3c2440中 clock 的描述,滿詳盡的
標籤:
programming
訂閱:
文章 (Atom)