EBOOT VirtualStart跳转后的语句不能执行?GOOGLE都找不到!

逸萌 2012-01-10 11:02:22
实在找不到答案,Google出的也只是几个问别人的,没有给出答案,希望有高人指点,若知道链接,麻烦您找一下发一下,感激不尽!!!

ldr r0, =VirtualStart
ldr r3, = GPFDAT
mov r4, #0xf0
str r4, [r3]

;b main

cmp r0, #0 ; make sure no stall on "mov pc,r0" below
mcr p15, 0, r1, c1, c0, 0
;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮

mov pc, r0 ; & jump to new virtual address
nop

; MMU & caches now enabled.
; (r10) = physcial address of 1st level page table
;

VirtualStart

ldr r0, = 0xb1600054
mov r1, #0x30
str r1, [r0]];[/color]不可以点亮



mov sp, #0x80000000
add sp, sp, #0x65000 ; arbitrary initial super-page stack pointer
ldr r0, = 0xb1600054
mov r1, #0x20
str r1, [r0]
b main


DCD 0x80000000, 0x30000000, 64 ; 32 MB DRAM BANK 6
DCD 0x84000000, 0x10000000, 32 ; nGCS2: PCMCIA/PCCARD
DCD 0x86000000, 0x18000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 3
DCD 0x88000000, 0x20000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 4
DCD 0x8A000000, 0x28000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 5
DCD 0x8C000000, 0x08000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 1
DCD 0x90800000, 0x48000000, 1 ; Memory control register
DCD 0x90900000, 0x49000000, 1 ; USB Host register
DCD 0x90A00000, 0x4A000000, 1 ; Interrupt Control register
DCD 0x90B00000, 0x4B000000, 1 ; DMA control register
DCD 0x90C00000, 0x4C000000, 1 ; Clock & Power register
DCD 0x90D00000, 0x4D000000, 1 ; LCD control register
DCD 0x90E00000, 0x4E000000, 1 ; NAND flash control register
DCD 0x90F00000, 0x4F000000, 1 ; Camera control register
DCD 0x91000000, 0x50000000, 1 ; UART control register
DCD 0x91100000, 0x51000000, 1 ; PWM timer register
DCD 0x91200000, 0x52000000, 1 ; USB device register
DCD 0x91300000, 0x53000000, 1 ; Watchdog Timer register
DCD 0x91400000, 0x54000000, 1 ; IIC control register
DCD 0x91500000, 0x55000000, 1 ; IIS control register
DCD 0x91600000, 0x56000000, 1 ; I/O Port register
DCD 0x91700000, 0x57000000, 1 ; RTC control register
DCD 0x91800000, 0x58000000, 1 ; A/D convert register
DCD 0x91900000, 0x59000000, 1 ; SPI register
DCD 0x91A00000, 0x5A000000, 1 ; SD Interface register
DCD 0x92000000, 0x00000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 0
DCD 0x00000000, 0x00000000, 0 ; end of table
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸萌 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mydeardingxiaoli 的回复:]

引用 7 楼 woshi_ziyu 的回复:

用的哪个芯片 内存分配地址一样么
S3c2440,TQ2440的板子
[/Quote]不过问题的代码直接用的别人的问题,和我的板子不同,但问题本质是一样的,不知道他们之前咋解决的
逸萌 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 woshi_ziyu 的回复:]

用的哪个芯片 内存分配地址一样么
[/Quote]S3c2440,TQ2440的板子
woshi_ziyu 2012-01-14
  • 打赏
  • 举报
回复
用的哪个芯片 内存分配地址一样么
逸萌 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jazka346704803 的回复:]
引用 2 楼 mydeardingxiaoli 的回复:

mcr p15, 0, r1, c1, c0, 0 開啟 MMU

;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮


第一个点亮的用的就是Virtual Address Access,已经在開啟 MMU 的後.


问题是 ldr r0, =V……
[/Quote]
如果进入VirtualStart,则应该把灯点亮,可是没有阿!
逸萌 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 paul_chao 的回复:]
引用楼主 mydeardingxiaoli 的回复:
mcr p15, 0, r1, c1, c0, 0
;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮



1. 對不起, 看錯了, 0xb1600054 確實都應是 Virtual Address.
2. 上面這三行應該是不能執行, 不然 pc 到底是用……
[/Quote]


1. mcr p15, 0, r1, c1, c0, 0打开了MMU,则后面的地址应该都是Virtual Address.

2.后面三行執行了,led都亮了!

mcr p15, 0, r1, c1, c0, 0
ldr r10, = 0xb1600054
mov r11, #0x40
str r11, [r10]可以点亮

paul_chao 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 mydeardingxiaoli 的回复:]
mcr p15, 0, r1, c1, c0, 0
;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮


[/Quote]

1. 對不起, 看錯了, 0xb1600054 確實都應是 Virtual Address.
2. 上面這三行應該是不能執行, 不然 pc 到底是用 VA, 還是PA??
3. LZ 在執行 mcr 指令時, r1 的值是多少??
4. LZ 的 EBOOT 是載到哪裡執行, 與 EBoot.bib 所述是否相同??

Paul, Chao @ Techware
逸萌 2012-01-11
  • 打赏
  • 举报
回复
mcr p15, 0, r1, c1, c0, 0 開啟 MMU

;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮


第一个点亮的用的就是Virtual Address Access,已经在開啟 MMU 的後.


问题是 ldr r0, =VirtualStart
mov pc, r0 ,

没有让它到VirtualStart处执行?why?

paul_chao 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 mydeardingxiaoli 的回复:]
VirtualStart

ldr r0, = 0xb1600054
mov r1, #0x30
str r1, [r0]];不可以点亮
[/Quote]

VirtualStart 之後, 已開啟 MMU, 必須使用 Virtual Address Access

為什麼你開啟 MMU 的前後都是對 0xb1600054 access, 應該之前是 Physical Address, 之後是 Non-cachable Virtual Address.

Paul, Chao @ Techware
jazka346704803 2012-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mydeardingxiaoli 的回复:]

mcr p15, 0, r1, c1, c0, 0 開啟 MMU

;ldr r10, = 0xb1600054
;mov r11, #0x40
;str r11, [r10]可以点亮


第一个点亮的用的就是Virtual Address Access,已经在開啟 MMU 的後.


问题是 ldr r0, =VirtualStart
mov pc, r0 ,
……
[/Quote]
LZ如何判断没有进入VirtualStart处到呢?

19,503

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧