原创 嵌入式學習筆記003-裸奔篇之按鍵

有了前面關於led的講解後,後續的相關裸奔就方便多了,當然,code就不會像led那樣簡單了~ 現在開始講解關於按鍵key的相關code 首先先看原理圖找到key相關的引腳,在我的tq2440板子中,有如下分佈: key1 –

原创 嵌入式學習筆記007-裸奔篇之定時器

s3c2440的定時器比較簡單,這裏主要借鑑韋東山老是的code加以改造一下,一個是對head.S的flow改善,另一個是設置FCLK=400MHZ,比例爲1:4:8,試過將SDRAM的HCLK=200MHZ,發現不work,查

原创 Ubuntu下安裝QT

在學習QT這塊知識時,你必須具備的條件是:   1)如果你之前自己移植了U-BOOT,內核,根文件系統,你的內核必須具備的最基本功能是串口驅動,LCD驅動,觸摸屏驅動,網卡驅動,最好把NFS文件系統也弄上;你現在的根文件系統可能也是最簡單

原创 定義與聲明的區別

所謂的定義是指編譯器創建了一個對象併爲這個對象開闢一塊內存,是從無到有的過程,而聲明只是告訴編譯器有這個東西存在了,這個變量名或者函數名已經被預定了, 舉個例子 :    1.void test(int a)   {       ....

原创 與零值比較

當通過用if(值  0)進行比較的時候 ,要看這個值是什麼類型的   具體如下: 1. 當值爲 int, char型的時候   應用 if(int_val == 0)或者 if(int_val != 0)   2. 當值爲指針變量的時候

原创 數組指針和指針數組的區別

數組指針和指針數組的區別 數組指針(也稱行指針) 定義 int (*p)[n]; ()優先級高,首先說明p是一個指針,指向一個整型的一維數組,這個一維數組的長度是n,也可以說是p的步長。也就是說執行p+1時,p要跨過n個整型數據的

原创 uboot啓動內核

假設bootcmd = nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0 <1> nand read.jffs2 0x30007FC0 kernel nand read.jffs2 0

原创 C語言中的volatile

推薦一個定義爲volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器裏的備份。volatile應該解

原创 編譯與鏈接

當我們編寫好源文件後(.c)經過編譯器生成目標文件(.obj) 最後通過鏈接器將編好的目標代碼同啓動代碼,庫代碼一起再生成一可執行文件(.exe)  所謂的啓動代碼是程序與操作系統之間的接口,庫代碼就是你的源程序裏所include的那些庫

原创 學習筆記_C語言

1.    for( ; 1 ; ) 等價於 while(1) 2.    程序的局部變量存在於(堆棧)中,全局變量存在於(靜態區 )中,動態申請數據存在於( 堆)中。 3.   局部變量能否和全局變量重名?     能,局部會屏蔽全局。

原创 C語言中的typedef

Typedef 在C語言中頻繁用以聲明一個已經存在的數據類型的同義字。也可以用預處理器做類似的事。 #define dPS struct s * typedef struct s * tPS; 以上兩種情況的意圖都是要定義dPS 和 tP

原创 C中的const

1、什麼是const?    常類型是指使用類型修飾符const說明的類型,常類型的變量或對象的值是不能被更新的。(當然,我們可以偷樑換柱進行更新:) 2、爲什麼引入const?    const 推出的初始目的,正是爲了取代預編譯指令,

原创 預處理器標識#error的目的是什麼?

由於是第一次用博客,先試一試..................... 回到原問題 預處理器標識#error的目的是什麼? 編譯程序時,只要遇到 #

原创 在tq2440板看到U盤漢字亂碼問題

按照天嵌提供的文檔  《天嵌科技出品-Linux移植之Step By Step_V4.5_20100605》及《移植u-boot-1.1.6到TQ2440文檔》將編好的uboot 內核 文件系統燒入板子 在一切正常啓動後,插入U盤,出現如