S3C2440 TFT LCD驅動程式編程要點

1、開啟LCD背光將LCD背光對應的GPIO設定為禁止上拉(GPxUP相應位寫入1),選擇output類型(GPxCON相應位寫入01),輸出為高電平(GPxDAT相應位寫入1)。2、開啟LCD電源可以將GPG4選擇為LCD_PWREN(GPGCON:9-8寫入11),這時候LCD電源的開啟/關閉可以通過LCDCON5:3來控制。也可以自訂其他GPIO用作LCD電源開關,只需將此GPIO設定為禁止上拉(GPxUP相應位寫入1),選擇output類型(GPxCON相應位寫入01),輸出為高電平(G

深度分析NandFlash—物理結構及地址傳送(以TQ2440開發板上的K9F2G08U0A為例)

        K9F2G08U0A是三星公司生產的總容量為256M的NandFlash,常用於手持功能等消費電子產品。還是那句話,搞底層就得會看datasheet,我們就從它的datasheet看起。              這就是 K9F2G08U0A的內部結構,具體的各個組件的介紹,就不詳細介紹了,想瞭解的話可以參考偉東山的《嵌入式linux應用開發完全手冊》。      現在就看一下重點的,NandFlash的儲存單元的組織圖,K9F2G08U0A的儲存單元的組織圖如下:結合上面的圖,

arm B和BL指令淺析

B或BL指令引起處理器轉移到“子程式名”處開始執行。兩者的不同之處在於BL指令在轉移到子程式執行之前,將其下一條指令的地址拷貝到R14(LR,連結寄存器)。由於BL指令儲存了下條指令的地址,因此使用指令“MOV PC ,LR”即可實現子程式的返回。而B指令則無法實現子程式的返回,只能實現單純的跳轉。使用者在編程的時候,可根據具體應用選用合適的子程式調用語句。   AREA Init,CODE,READONLY  ;該偽指令定義了一個程式碼片段,段名為Init,屬性唯讀ENTRY         

sscanf的進階用法

printf或者sprintf一定是任何一個C程式員最常見到的函數,與sprintf的作用相反,sscanf通常被用來解析並轉換字串,其格式定義靈活多變,可以實現很強大的字串解析功能。   sscanf的原型很簡單,定義如下: #include <stdio.h>int sscanf(const char *str, const char *format, ...); str:待解析的字串 format:字串格式描述,其後是一序列數目不定的指標參數,儲存解析後的資料  

詳解可執行程式:BSS段、資料區段、程式碼片段(也稱文本段)

可執行程式包括BSS段、資料區段、程式碼片段(也稱文本段)。   BSS(Block Started by Symbol)通常是指用來存放程式中未初始化的全域變數和靜態變數的一塊記憶體地區。   注意和資料區段的區別,BSS存放的是未初始化的全域變數和靜態變數,資料區段存放的是初始化後的全域變數和靜態變數。   UNIX下可使用size命令查看可執行檔的段大小資訊。如size a.out

深度分析NandFlash—控制器參數TACLS、TWRPH0和TWRPH1的確定(以TQ2440開發板上的K9F2G08U0A為例)

      這三個參數對於NandFlash的讀寫操作來說是比較重要的,沒搞清楚這三個參數,後面的事就不用提了,那這三個參數到底是幹什麼的呢,我們怎麼樣去配置他們呢,今天我花了點時間研究了一下這三個參數。在datasheet中對他們的時序有下面兩種圖示,一種是寫命令或者地址的情況,一種是讀寫資料的情況:  由可知,這三個參數控制的是Nand Flash 訊號線CLE/ALE與寫控制訊號nWE的時序關係。TACLS:表示CLT/ALE的建立時間(setup

如何將YAFFS檔案系統鏡像燒入Nand Flash

和普通檔案系統不同,YAFFS檔案系統專門為Nand Flash設計,可以使用mkyaffsimage組建檔案系統的鏡像,但如果要將此鏡像燒入Flash,那麼有些地方需要注意。 硬體上,Nand Flash的設計已考慮到包含壞塊的情況,對於每扇區512位元組的Nand Flash,每扇區都有一個16位元組額外的擴充區,通常用以儲存此扇區的校正資料以及壞塊標記等資訊(WinCE則使用了其中4位元組儲存邏輯扇區編號),所以我們看Nand Flash的Data

調試VIVI: 一系列莫名錯誤及其解決過程

問題出現近期一個項目需要將VIVI移植到我們的三星2440板上,在head.S中設定好晶振頻率時鐘頻率之後,VIVI能跑起來了,但進入main後,初始化mtd裝置時,程式掛了。 接上JTAG,使用ADS的AXD Debugger進行彙編調試,發現程式正運行著死迴圈,根據vivi.map中提供的地址資訊,得知當前指令屬於UndefEntryPoint異常中斷處理常式,也就是說,程式發生了Undefined instruction

Linux2.6進程調度分析(1)-調度策略

 對於分時作業系統而言,表面上看起來是多個進程同時在執行,而在系統內部則進行著從一個進程到另一個進程的切換動作。這樣的進程並發執行涉及到進程切換(process switch)和進程調度(process

S3C2440 U-Boot移植總結

U-Boot版本:2008.10        目標板:mini2440最基本的U-Boot修改如下:1,/Makefile 編譯規則2,/cpu/arm920t/start.S                 啟動並執行第一個啟動代碼3,/cpu/arm920t/s3c24x0/interrupts.c    中斷初始化4,/cpu/arm920t/s3c24x0/speed.c 時鐘初始化和設定5,/cpu/arm920t/s3c24x0/serial.c        uart初始化6,/

S3C2440啟動方式研究

S3C2440啟動方式研究不管S3C2440的啟動裝置是什麼,它都是從0x0000 0000地址開始執行程式的,所不同的是地址的映射不一樣。基於S3C2440的嵌入式系統上電之後,需要首選選擇啟動裝置,2440的啟動方式選擇是通過模式引腳OM1和OM0來配置的,1 所示為2440的啟動方式選擇說明: 圖1 S3C2440啟動方式說明由可知,S3C2440支援兩種啟動模式:NAND和非NAND(這裡是Nor

S3C2440 2.6.29 核心移植詳解

       核心版本為linux-2.6.29.4,目標開發板為mini2440開發板源碼下載:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.4.tar.bz2 移植步驟:1, 修改頂層Makefile           ARCH ?= $(SUBARCH)            CROSS_COMPILE ?=   改為:           ARCH ?= arm              CROSS_COMPILE ?

Linux2.6進程調度分析(2)-調度演算法

2.調度演算法Linux2.4版本的核心調度演算法理解起來簡單:在每次進程切換時,核心依次掃描就緒隊列上的每一個進程,計算每個進程的優先順序,再選擇出優先順序最高的進程來運行;儘管這個演算法理解簡單,但是它花費在選擇優先順序最高進程上的時間卻不容忽視。系統中就緒進程越多,花費的時間就越大,時間複雜度為O(n)。而2.6核心所採用的O(1)演算法則很好的解決了這個問題,從它的名稱就可以看出,不管系統中可啟動並執行進程有多少,該演算法總能在有限的時間內選擇出優先順序最高的進程。2.1可運行隊列發送器

u-boot-1.1.6 源碼分析(1)–總體結構

參考資料:1 tekkaman部落格2 韋東山《嵌入式linux應用開發完全手冊》第15章3   http://www.arm79.com/1。到ftp://ftp.denx.de/pub/u-boot/下載u-boot-2010.06.tar.bz2,解壓進入根目錄,列出根目錄檔案。源碼整體架構如下:藍色:目錄黑色:檔案綠色:可執行檔[root@localhost u-boot-2010.06]# tree -L 1.├── api├── arch├── board├── CHANGELOG├

YAFFS檔案系統燒入NAND分析

本文轉自:http://blog.csdn.net/noodies/article/details/5620191和普通檔案系統不同,YAFFS檔案系統專門為Nand Flash設計,可以使用mkyaffsimage組建檔案系統的鏡像,但如果要將此鏡像燒入Flash,那麼有些地方需要注意。 硬體上,Nand Flash的設計已考慮到包含壞塊的情況,對於每扇區512位元組的Nand

Linux2.6進程調度分析(3)-與調度有關的函數分析

前面兩篇文章從原理角度分析了進程的調度,本文將從具體的源碼出發,分析與進程進程調度密切相關的幾個函數。1.時間片的分配:task_timeslice()正如我們所知的那樣,進程的時間片與進程的靜態優先順序有直接的關係。從代碼中可以看到,根據進程靜態優先順序static_prio與NICE_TO_PRIO(0)的大小關係,進程時間片的分配可以分為兩條路線。以下代碼如無特別說明均位於linux/kernel/sched.c下。1static unsigned int

Nand Flash 的ECC演算法

為了能檢測到單個位錯誤,把每256位元組的資料劃分為一張8x256共2048位的表,使用22位校正碼進行校正,16位為行校正碼,進行橫向校正,6位為列校正碼,按進行縱向校正。描述了這22位校正碼產生的原理:  列校正:CP0:對所有位元組的Bit 6,4,2,0進行異或操作的結果CP1:對所有位元組的Bit 7,5,3,1進行異或操作的結果..CP5:對所有位元組的Bit 7,6,5,4進行異或操作的結果 行校正:LP0:對0,2,4,6...254位元組的所有位進行異或操作的結果LP1:對1,

636 一個水題

世界末日時間限制:1000 ms  |  記憶體限制:65535 KB難度:1描述世界末日馬上就要來臨了,當然,每個人都想買到船票,但是由於船票有限,因此需要回答對一個問題才能買票。問題是這樣的:給你一個數n (1 <= n <= 10000),之後給n個正整數 (<= 10000),問在這n個數中是否存在一些數的和是n的倍數。輸入多組測試資料(最多100組)。首先輸入一個數n,然後輸入n個數。輸出如果能找到一些數的和是n的倍數,輸出"YES",否則輸出"NO"。範例輸入55

error C3859: virtual memory range for PCH exceeded。 原因及解決

今天編譯一個項目時,出現如下編譯錯誤:1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\vector(203) : error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm110' or greater1>d:\program files

Makefile:420: *** mixed implicit and normal rules. Stop.

今天在編譯busybox1.16的時候,執行make命令,報錯,錯誤資訊:437 “mixed implicit and normal rules”,翻譯為中文:混合的和隱含普通規則。起初以為是busybox包的問題,從官網上下載了低版本1.13,報同樣的錯誤,google後發現,是由於我的系統的make工具太新(系統:fedora14),make的舊版規則已經無法相容新版。按照以下方式,問題得到解決:在Makefile中將420行代碼: config %config:

總頁數: 61357 1 .... 20131 20132 20133 20134 20135 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.