Learning record
Friday, October 9, 2015
U-boot porting JZ2440 - support NAND FLAHS
3.6
修改
UBOOT
支持
NAND FLASH
3.6.1
修改:
include/configs/smdk2440.h: #define CONFIG_CMD_NAND
3.6.2
把
drivers/mtd/nand/s3c2410_nand.c
複製為
s3c2440_nand.c
Read more »
U-boot porting JZ2440 - support DM9000
3.7
修改
UBOOT
支持
DM9000
網卡
3.7.1 搜尋DM9000關鍵字, 發現/driver/net/Makefile中,
======================================================
Makefile
......
Read more »
Character Bitmap display - 3. use Freetype lib.
2.3 Use Freetype libraury
可變大小字體
之前在LCD上顯示的字體為固定大小,無法調整大小,這邊利用 Freetype libra. 來讓字體可以旋轉、改變大小。
原理簡述
Freetype 將一個文字,分解成關鍵點、貝塞爾曲線,利用文字關鍵點、透過貝塞爾曲線連接關鍵點,形成若干個閉合曲線所構成的文字,再填充文字內部,即可形成一個向量圖型文字,好處是只需要儲存少量資訊,且顯示字體的大小,不受解析度影響,既放大字體不會降低繪製的精度。
Read more »
Wednesday, October 7, 2015
Character Bitmap display - 2
2.2 LCD上顯示固定大小中英字體
需先安裝 LCD Driver,接著撰寫應用程式,導入HZK16漢字庫,將要顯示的字元,透過漢字庫,尋找到相應字元,輸出到 LCD 螢幕上。
HZK16重點摘要:
Read more »
Character Bitmap display - 1
2.1 字元編碼觀念
文字編碼方式
原始檔案用不同的編碼方式編寫,會導致執行結果不一樣
怎麼解決?編譯器時,要指定字元集
查詢: man gcc , /charset
-finput-charset=charset
表示原始檔案的編碼方式
,
預設以
UTF-8
來解析
-fexec-charset=charset
表示可執行程式裡的字時候以什麼編碼方式來表示,預設是
UTF-8
gcc -finput-charset=GBK -fexec-charset=UTF-8 -o utf-8_2 ansi.c
實驗:將兩種不同編碼方式的文件(ansi.c and utf-8.c),字元"abc中"輸出16進制數值
Read more »
Friday, September 25, 2015
Char Device Driver - 2_led on/off
實作 3: led 燈號控制驅動程式,針對開發版上個別led燈號做 on/off 控制
加入次設備號,次設備號給自己的驅動程式內部使用,並了解如何撰寫驅動程式的硬體控制,與裸機程式相同,但需先利用ioremap 將 i/o 物理記憶體位置,映射到kernel虛擬地址,此後才可以使用。
Read more »
Thursday, September 24, 2015
Char Device Driver - 1_Architecture
驅動程式框架:
User space 的 APP 透過 open, read, write, close, ioctl, llseek, fsync 等函數來對應 Kernel space 裡的 Device driver: open, read, write, close, ioctl,
llseek, fsync 。
以 LED 驅動程式為例,架構如下,
----------------------------------------APP: open, write
----------------------------------------system call
----------------------------------------VFS
----------------------------------------Device Driver:
led_open, led_write
----------------------------------------Hardware
Read more »
Monday, September 21, 2015
U-boot Porting JZ2440 - Reduce Code Size && Set User Value
3.8 U-boot 縮小code size,易用性修改
3.8.1 打造自己的環境參數,在燒寫uboot時,常需要手動設定一些環境參數,如set ipaddr、set ethaddr、....,在使用上不方便
首先規劃參數在 nand flash 存放區塊如下圖
Read more »
Tuesday, September 8, 2015
Bootloader
Bootloader概念
關於S3C2440的啟動方式有兩種
:
Nor Flash
啟動和
Nand Flash
啟動
。
Nor Flash
和
Nand Flash
都是非易失性記憶體,
Nor Flash
的特點是晶片內執行和不能直接寫操作,程式可以直接在其中運行,而不必將程式讀取到
RAM
中運行。
Nor Flash
雖然具有這個優點,但是它的性價比遠低於
Nand Flash
,因而很多系統採用
Nand Flash
啟動。
Nand Flash
的特點是採用非線性存儲模式,程式無法在其中運行,它只能作為程式或資料的存儲載體,存儲在其中的程式只能先拷貝到
RAM
中才能運行。
Read more »
Monday, August 31, 2015
UART
UART(Universal Asynchronous Receiver/Transmitter)通用異步收發器,
它就是個設備而已,要完成一個特定的功能的硬體,它本身並不是協定。那麼它要完成什麼功能呢?它的最基本功能,是串列資料和並行資料之間的轉換,將一個
Byte
轉換成
8
各
bit
按照時間先後順序發送。
UART採非同步的全雙工傳輸方式,傳輸串列資料,非同步
在傳送資料時需插入額外資訊,表示資料起始、結束,
非同步的好處是
設定時間短、硬體成本低、機器時脈不同也能傳資料,缺點是單次傳輸的資料量較少。
Read more »
Sunday, August 30, 2015
System Clock
System Clock硬體操作流程較簡單,重點在於知道如何設定PLLs(Phase Locked Loops),來符合周邊硬體(peripheral block) 時脈需求。
Read more »
Interrupt Controller
ARM中斷控制器使用方式,首先需了解
CPU的7種工作模式
,接著從外圍設備開始,需要設定PIN腳為中斷功能,使得PIN腳能接收中斷訊號,中斷訊號進來後,中斷控制器需設定相關暫存器來判斷中段訊號源,從哪一個外圍設備發出中斷訊號,多個中斷訊號來源,設定優先順序,得知中斷訊號源時,CPU會切換到相應的工作模式(異常模式中一種),並跳去相應的異常向量位置(ex. 0x00, 0x04,...),去執行中斷程序(ex. reset, HandleIRQ,...),執行完畢,退出中斷程序,再返回原本的工作模式。
Read more »
Sunday, August 23, 2015
學習筆記 - NAND FLASH
FLASH 特性:
NOR FLASH 支持XIP,既程式可以直接在NOR FLASH執行,無需複製到內存中,這是因為NOR FLASH的接口與RAM相同,可以隨機訪問任意地址數據。
FLASH 儲存單元由擦除單元組成,也稱為塊(block),要寫入數據時,需要確保這個block已被擦除。
擦/寫 一個NOR FLASH 塊需要4s,擦/寫 一個NAND FLASH僅需2ms。
NOR FLASH用於儲存程式,NAND FLASH用儲存數據。
FLASH 可靠性依據:(1)位反轉(2)壞軌(3)可擦除次數
Read more »
Wednesday, August 19, 2015
Memory Management Unit
學習筆記 - Memory Management Unit
MMU特性:
虛擬地址與物理地址轉換
MMU內存訪問機制
電腦在處理資料時,當應用程式很大,應用程式所要求的內存空間,超過內存的總容量。電腦所採取的作法是分批處理,當前運行程式部分先裝入內存處理,其餘部分程式在用到時,再從硬碟或FLASH等儲存裝置調入,當內存滿時,則將暫時不運行程式部分調入硬碟或FLASH等儲存裝置。如此使得大程式可以在小的內存空間中運行。
Read more »
Wednesday, August 12, 2015
Memory Controller
學習筆記 - Memory Controller
實驗:
從 NAND Flash 啟動 CPU 時,CPU 藉由硬體,自動複製 NAND Flash 前 4KB 數據到稱作 Steppingstone 的內部 RAM 中(起始地址為 0),然後跳到地址0開始執行,實驗先透過組語設置好 memory controller,使外接 SDRAM 可用,然後把程式從 Steppingstone 的內部 RAM 位置,複製到 SDRAM 處,最後在 SDRAM 中執行。
Read more »
Home
Subscribe to:
Posts (Atom)