星期六, 5月 14, 2005

[note] ARM based 嵌入式系統設計

[8051 vs ARM]

8051(8 bit microprocessor)具備 CPU core、Timer、I/O、
Flash(4/8/16K)、RAM(128K),可以I/O模擬(非同步)Flash、RAM,
接上Clock、power即可運作

ARM具有SDRAM(Memory interface),透過Memory controller外接(data/addr)。
重點在掌握Memory controller!

8 bit(D0-D7) vs ARM(D0-D31)

standard:Big/Little Endian。

Thumb state 很慢,用16 bit在run,用Thumb要降速。

clock接法有兩種,crystal/oscillater

--
[reset process]

1. CPU 先 check clock(crys or osci),OM[3:2]

2. check endian:(big or little)

3. check memory(bus width): 8/16/32,OM[1:0]

4. check read boot(read/chip select vs nRE/nGCSO)

[Exception]
不可預知的狀況/Bug,導致當機。
WatchDog,定時reset以處理 exception。

MMU:Memory re-mapping,OS之保護模式,避免user改到OS之memory。
svc不讓user access CPU使用之memory。

[]
ARM core:TDMI/920T

state:ARM/Thumb mode

ARM所有的I/O都靠memory controller 控制。根據I/O需求選擇chip。

手機chip:
sensor- (用DSP inprement)
LCD -
CODEC -
RF
Memory
CPU(400-600M),高速需求以處理運算:Image。
power contorl

chip公司有的功能app公司不要作,除非要開chip或時程考量。

[Exception]

誰產生誰負責
負責
類似BL的動作:Link register=PC+4/8
SPSR=CPSR
CPSR=Exception mode
PC=Relevant exception vector
(Exception vector:see table)

PC=Link register-4/8
CPSR=SPSR
clear...

[]

ADC:作 touch panel用

[Memory map]
OE=read
ECS=chip enable
MCLKO=clock
EWAIT=device速度跟不上CPU,需要延遲CPU。memory一般不需要。

Linux需要在SDRAM上跑。所以4510

SDRAM的data line丟兩次,以row col定址。為提升速度,採sync,

所有sync的interface都需要硬體解決。

[]
memory control要注意是採用8/16/32 ROM,硬體接法不同。
8 bit A0-A0
16bit A1-A0
32bit A2-A0

PLL:決定震盪頻率,以提供不同頻率的clock,調整頻率以省電。

[SDRAM]
memory initial很重要。(查data sheet)

[Boot code]
booting
system config(flash),先不要碰memory:

1. indicate,亮LED,代表CPU開始run
2. indicate memory,亮LED
3. memory test -faild,亮LED
-ok,亮LED

以check硬體,memory mapping。

EX-KSRC-init.s
Int_Mask
reset_handler
memory.a: memory的定義
miscore.a:
snds.a: bus width,ROM bank

[]
WINCE
Linux: file system, RT, communication
embeded:

embeded: 資源有限,要使用Dynamic memory allocation。
--

INCE
Linux: file system, RT, communication
embeded:

embeded: 資源有限,要使用Dynamic memory allocation。

[4510 Interupt]

Interupt controller 透過 mode register 決定使用 IRQ or FIQ,
CPU透過Pending register依序check interupt 由何者產生
Mask register用來disable interupt
Offset register 可 check pioraty 最高的 interupt

不同的 ARM CPU interupt controller不同,但exception都一樣。


[IRQ]

B跳至IRQ Handler,BL 取得IRQ Service Rutine 的content,inport IRQ entry,
BL IRQ entry。於C中建立 interupt table,Offset 判斷,
set interupt vector,
(an s3c4510 p.133)

[]
減少main的內容,多用background 跑。

[2410 interupt]
不需要inport,直接建interupt table
interupt分group,以防register(32bit)不夠用

[SWI]
軟體保護,與硬體有關的service rutine可放到Flash,以節省code容量。

[cache]

速度與CPU同步,CPU與cache間access只要一個machine cycle,
和memory間要5個machine cycle。

CPU透過cache access extend memory,可增加效率。

若外接device而非memory,需設定為 non cache,不透過cache access device,
否則會 error。不同CPU設定方法不同。

[memory bus]
CE
OE
WE
Addr
Data

善用編/解碼(CPLD),控制device。

使用memory interface要注意bus 衝突。(看data sheet!)

[UART]
軟體控制只能async。

interface建立的前提(communication parameter):
baud rate,Data bit,Stop bit,parity(odd or even)

[]
physical layer:Phy,電氣訊號規範
logic layer:協定

Interupt vs DMA:DMA,等待接收一定量後再interupt。

[]
對embeded系統,善用pointer,C的效率與組語差不多,移植性較佳。
所以系統的結構很重要。

[xmodem]
Rx掌控
一次丟128,所以size估計為128 倍數。

[改flash]
disable IRQ
disable cache

check MID/DID

check word/bite mode

check protect

[Interface]
Interface 要符合標準,否則會付出相容性的代價。

H.I:Host Interface:ARM可以用memory control 去 drive TFT、LCD

I/O:USB、UART

[2410]

NAN Flash
LCD/TFT
ADC
MMC/SD
IIC: serial interface/EEPROM
IIS: Audio
SPI: Audio

[]
clock: XAL/OSC
booting: NAND Flash
NO Flash
little/big: 預設是little

[UART Multidrop]
Host/Client
Client 未 enable 前都是高阻抗,Host決定 client 通訊之程序
缺點是速度受client數的影響,實際baurd rate為baurd rate/2^client數

USB要解決的(multi-drop)問題
Dynamic ID
Protocal
Speed

[]
USB cable是單向的

高速傳送前的hand shake時間很短,很難作

每個device有16個end point,將data分成16個種類

SYNC 要由硬體解決,軟體速度跟不上

USB control 解決的工作
SYNC Token
CRC
collect Data

[]
1.Set config
2.Set interupt and DMA mode
3.Host Get Description
Device Description→ Standard
Interface
Device
4.Device wait Host Download 1st record(size/length)
5.Set DMA start address and start DMa
6.Receive Binary Data
7.Jump to start

Memory→SDRAM
→SRAM
→ROM

→Flash →NOR 關電後資料還在,可用作 booting。
大容量製成困難,良率不高。
size 越大,pin越多
→NAND 縮減pin:利用多次fetch cycle,
以較少 pin 數達到相同數量的定址
controller:interface
file system
SD、MMC、CF

SPI bus:serial bus,provide by motolora。

SD/MMC card:initialize,塞data,check busy,剩下的交給controller。

[]
4410 CPU,low power control,LCD,加8051可擴充I/O
SD和MMC control command大致類似,部分細節有點不同。
(check data sheet!)