[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!)