|
第一部分:
飛凌6410開發(fā)板 裸機調(diào)試程序開發(fā)教程手冊(PDF版):
點擊此處下載
OK6410裸機開發(fā)教程.rar
(2.76 MB)
2011-11-23 14:36 上傳
點擊文件名下載附件
下載積分: 積分 -1
第二部分:
OK6410 裸機LED開發(fā)模板:點擊此處下載
forlinx6410-led1.rar
(41.67 KB)
2011-11-23 14:35 上傳
點擊文件名下載附件
下載積分: 積分 -1
第三部分:
因為LCD部分是飛凌開源的,而且內(nèi)容也沒有需要特別說明的,需要這部分源碼的朋友可以在飛凌網(wǎng)站直接下載。這里先對LCD測試程序中,調(diào)整uboot初始化部分做一些注釋(僅代表個人觀點)
1.將board/samsung/smdk6410/smdk6410.c lowlevel_init.s
// 128MB for SDRAM 0xC0000000 -> 0x50000000
.set __base, 0x500
.rept 0x580 - 0x500
FL_SECTION_ENTRY __base,3,0,1,1
.set __base,__base+1
.endr
將這一段去掉,也可以不去掉但是將不再應(yīng)用這段地址
地址的虛擬地址和物理地址一一對應(yīng).這樣我們在裸機程序中才可以重新對mmu做地址映射,將0地址映射到我們需要
的地方以中斷到來的時候能夠跳轉(zhuǎn)到相應(yīng)代碼執(zhí)行中斷跳轉(zhuǎn)函數(shù).
2: 將board/samsung/smdk6410/config.mk TEXT_BASE=0x50100000 . 0x50100000將作為我們以后編寫裸機程序的
起始地址
3: 將board/samsung/smdk6410/smdk6410.c
ulong virt_to_phy_smdk6410(ulong addr)
{
if ((0xc0000000 <= addr) && (addr < 0xc8000000))
return (addr - 0xc0000000 + 0x50000000);
else
printf("do not support this address : %08lx\n", addr);
return addr;
}
更改為
ulong virt_to_phy_smdk6410(ulong addr)
{
if ((0x50000000 <= addr) && (addr < 0x58000000))
return (addr - 0x50000000 + 0x50000000);
else
printf("do not support this address : %08lx\n", addr);
return addr;
}
4:將include/configs/smdk6410.h中
#define USBD_DOWN_ADDR 0xc0000000 改為 #define USBD_DOWN_ADDR 0x50000000
#define CFG_UBOOT_BASE 0xc7e00000 改為 #define CFG_UBOOT_BASE 0x57e00000
#define CONFIG_BOOTCOMMAND "nand read 0xc0008000 0x100000 0x300000;bootm 0xc0008000"改為
#define CONFIG_BOOTCOMMAND "nand read 0x50100000 0x100000 0x300000;bootm 0x50100000"將2M大小的
flash內(nèi)容加載到內(nèi)存中的0x50100000的起始地址處并跳轉(zhuǎn)到0x50100000 地址處執(zhí)行
編譯uboot 下載開uboot.bin 到 flash 0 - 0x100000 地址處
接下來說一下裸機開發(fā)流程
1:裸機連接地址為0x50100000
2:因為uboot已經(jīng)為我們做了系統(tǒng)初始化工作.裸機初始化程序只要重新設(shè)定,中斷入口,各個模式堆棧地址即可.
3:重新進行虛擬地址映射 將0地址映射到 0x50100000;
__ENTRY: b reset /*跳轉(zhuǎn)到reset*/
ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq
reset:
@Initialize stacks
bl InitStacks
bl Main
b .
_fiq:
.word fiq
irq:
mov sp,#0x57000000
irq_save_user_regs
bl do_irq
irq_restore_user_regs
發(fā)生中斷后跳轉(zhuǎn)到 irq執(zhí)行 ,首先設(shè)置irq模式的 堆棧地址 保存現(xiàn)場跳轉(zhuǎn)到do_irq執(zhí)行中斷處理函數(shù),最后恢復(fù)現(xiàn)場
uboot.bin 和裸機測試lcd 程序 下載地址飛凌論壇S3C6410開發(fā)板專區(qū):www.witech.com.cn |
|