73

帖子

0

TA的资源

一粒金砂(初级)

21
 
看看CONFIG。BIB文件里面的地址映射关系

回复

83

帖子

0

TA的资源

一粒金砂(初级)

22
 
你把你的内存映射表贴上来看看,你们的映射怎么那么奇怪的。
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

23
 
可能和表有关,附上mmu地址影射表:
AT91SAM9261EK_VA_BASE_REG EQU 0x9FF00000
AT91SAM9261EK_VA_BASE_LCD EQU 0x9FE00000    ;LCD
AT91SAM9261EK_VA_BASE_SRAM EQU 0x9E700000
AT91SAM9261EK_VA_BASE_NOR_NK EQU 0x84100000
AT91SAM9261EK_VA_BASE_NOR_bootloader EQU 0x84000000
AT91SAM9261EK_VA_BASE_SDRAM EQU 0x80000000

AT91SAM9261EK_BASE_SRAM EQU 0x00300000
AT91SAM9261EK_BASE_SDRAM         EQU 0x20000000
AT91SAM9261EK_BASE_LCD              EQU 0x30000000
AT91SAM9261EK_BASE_NOR_NK EQU 0x40000000
AT91SAM9261EK_BASE_NOR_bootloader EQU 0x10000000
AT91SAM9261EK_BASE_REG EQU 0xFFF00000


;------------------------------------------------------------------------------
;
; TABLE FORMAT
;      cached address, physical address, size
;------------------------------------------------------------------------------

ALIGN
g_oalAddressTable

        DCD    AT91SAM9261EK_VA_BASE_REG,      AT91SAM9261EK_BASE_REG,    1      ; Internal registers.
        DCD    AT91SAM9261EK_VA_BASE_SRAM,    AT91SAM9261EK_BASE_SRAM,    1      ; INTERNAL SRAM (160KB).
        DCD    AT91SAM9261EK_VA_BASE_SDRAM,    AT91SAM9261EK_BASE_SDRAM,  64      ; AT91SAM9261EK SDRAM (64MB).
        DCD    AT91SAM9261EK_VA_BASE_LCD,      AT91SAM9261EK_BASE_LCD,    1      ; LCD registers.
        DCD AT91SAM9261EK_VA_BASE_NOR_NK,  AT91SAM9261EK_BASE_NOR_NK,  64      ;  NOR
        DCD AT91SAM9261EK_VA_BASE_NOR_bootloader, AT91SAM9261EK_BASE_NOR_bootloader, 1      ; NOR

        DCD    0x00000000, 0x00000000,  0      ; end of table
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

24
 
上面的是cfg.inc里的内容
eboot.bib里如下:
MEMORY

;   Name     Start     Size      Type
;   -------  --------  --------  ----
    EBOOT    80000000  0003C000  RAMIMAGE
    EBOOT    8003C000  00004000  RESERVED ;Must match in Eboot\startup.s
    RAM      80040000  00010000  RAM
    PSHEAP   80050000  00008000  RESERVED
    DRVGLOB  80058000  00001000  RESERVED


CONFIG

        AUTOSIZE=OFF
        COMPRESSION=OFF
        PROFILE=OFF
        KERNELFIXUPS=ON
   
        ROMSTART=80000000
        ROMWIDTH=32
        ROMSIZE=00015400;85ko do not change !
                        ;size of the generated eboot.nb0,eboot.nb1,...
                        ;size of the EBOOT section, limited by the internal SRAM. The size must be 80ko to be upadatable by FirstBoot


MODULES

;   Name    Path                                                    Memory Type
;   ------  ----------------------------------------------          -----------
    nk.exe  $(_TARGETPLATROOT)\target\$(_TGTCPU)\$(WINCEDEBUG)\eboot.exe  EBOOT
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

25
 
我再cfg.inc中尝试着只映射SRAM,SDRAM,和REG,看看是否映射成功..
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

26
 
EBOOT    80000000  0003C000  RAMIMAGE

从这个来看,你的虚拟地址是从0x80000000  开始的,你上面那个是表吗?怎么我感觉我们的2440的差距这么大呢?你再找找。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

27
 
没用过这款芯片。没看到物理地址0接的什么。是不是这款CPU有片上FLASH,内置一个bootloader?
你在激活MMU应该马上执行mov pc, r2,因为这时候已经是虚拟地址了,还在哪儿点什么灯,不是自己找死吗。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

28
 
引用 26 楼 singlerace 的回复:
没用过这款芯片。没看到物理地址0接的什么。是不是这款CPU有片上FLASH,内置一个bootloader?
你在激活MMU应该马上执行mov pc, r2,因为这时候已经是虚拟地址了,还在哪儿点什么灯,不是自己找死吗。


哈哈,貌似楼主的芯片内部是有bootloader的,
我记得一个朋友说过。


楼主还是不能照着2440等做。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

29
 
引用 26 楼 singlerace 的回复:
没用过这款芯片。没看到物理地址0接的什么。是不是这款CPU有片上FLASH,内置一个bootloader?
你在激活MMU应该马上执行mov pc, r2,因为这时候已经是虚拟地址了,还在哪儿点什么灯,不是自己找死吗。


哈哈,貌似楼主的芯片内部是有bootloader的,
我记得一个朋友说过。


楼主还是不能照着2440等做。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

30
 
这篇能加精了。
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

31
 

回singlerace :
1:这个cpu在设置一个BMS引脚的情况下可以将接在cs0(0x1000,0000)的NOR FLASH直接映射在0地址,上电后可立即执行flash.
2:cpu内部是有一个bootloader,但是放在了ROM中,无法改变
3:照您所说,执行完开启后需立即执行mov pc, r2,我试过,如下:
ACTIVATEMMU
    ; The 1st Level Section Descriptors are setup. Initialize the MMU and turn it on.
    ;
    mov     r1, #1
    mcr     p15, 0, r1, c3, c0, 0   ; Set up access to domain 0.
    mov            r0, #0                  ; ********I PLUS   
    mcr     p15, 0, r0, c8, c7, 0   ; Flush the instruction and data TLBs.
    mcr     p15, 0, r0, c7, c10, 4  ; Drain the write and fill buffers.********I

   
    mov     r1, #0x78               ; Bits [6:3] must be written as 1's.
    orr     r1, r1, #0x1            ; Enable MMU.
    orr     r1, r1, #0x1000         ; Enable IC.
    orr     r1, r1, #0x0800         ; Enable BTB.
        ;orr     r1, r1, #0x50000         ;16,18bit SBO
    orr     r1, r1, #0x4            ; Enable DC.
    ldr     r2, =VirtualStart       ; Get virtual address of 'VirtualStart' label.
    cmp     r2, #0                  ; Make sure no stall on "mov pc,r2" below.
    beq                STALL2



    ; Enable the MMU.
    ;

    nop
    nop
    nop

    mcr      p15, 0, r1, c1, c0, 0   ; MMU ON:  All memory accesses are now virtual.
    nop
    nop
    nop

    ; Jump to the virtual address of the 'VirtualStart' label.
    ;
    mov     pc, r2                  ;
    nop
    nop
    nop

    ; *************************************************************************
    ; *************************************************************************
    ; The MMU and caches are now enabled and we're running in a virtual
    ; address space.
    ;
   
    ALIGN
   
VirtualStart
    ; ALIGNRAM 2
       
    ;  Set up a supervisor mode stack.
    ;
    ; NOTE: These values must match the OEMAddressTable and .bib file entries for
    ; the bootloader.
    ;
        LDR      r3,=0x01000000     
        LDR      r4,=0x9FFFF430   (此处是点灯程序,如我在19楼所说的那样换成了虚拟地址
                                             0x9FFFF430,试过灯还没亮,不知这样是否正确??)
        STR      r3,[r4]

真的很感谢大家的帮忙啊!!
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

32
 
回gooogleman :
EBOOT    80000000  0003C000  RAMIMAGE 这句是在eboot.bib里的,印射表就如我在22楼贴出的那样,还没找出哪里有不对的地方...
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

33
 
立即执行的意思是中间的nop指令也不要,马上跳转
LDR      r4,=0x9FFFF430这句改成:
LDR      r4,=0xBFFFF430
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

34
 
顶~
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

35
 
搞了半天还没效果,请教各位大侠:如果想在 mcr      p15, 0, r1, c1, c0, 0  之后点灯,该如何设置寄存器的地址呢,就是一个pioA的输出寄存器(物理地址为0xFFFFF430)?
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

36
 
引用 34 楼 kkkcxf1981 的回复:
搞了半天还没效果,请教各位大侠:如果想在 mcr      p15, 0, r1, c1, c0, 0  之后点灯,该如何设置寄存器的地址呢,就是一个pioA的输出寄存器(物理地址为0xFFFFF430)?

为啥不再c文件点灯呢
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

37
 
引用 34 楼 kkkcxf1981 的回复:
搞了半天还没效果,请教各位大侠:如果想在 mcr      p15, 0, r1, c1, c0, 0  之后点灯,该如何设置寄存器的地址呢,就是一个pioA的输出寄存器(物理地址为0xFFFFF430)?
[/quote]

你原先那个虚拟地址估计是已经cached了,照着singlerace 做,使用uncached地址也不行吗?

[quote]引用 32 楼 singlerace 的回复:
立即执行的意思是中间的nop指令也不要,马上跳转
LDR      r4,=0x9FFFF430这句改成:
LDR      r4,=0xBFFFF430
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

38
 
引用 35 楼 mengll002 的回复:


为啥不再c文件点灯呢


汗,连汇编都过不了,在C电灯,更不可能
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

39
 
问题解决!!
十分感谢大家的帮忙!特别要感谢singlerace !!您的一句话真是立竿见影啊!!!

过程如下:   
我按照您所说的将
LDR      r4,=0x9FFFF430这句改成:
LDR      r4,=0xBFFFF430
又将开启前后的几个nop全部去掉.
程序成功执行到VirtualStart,并成功点灯,呵呵


问题是解决了,顺便想搞个明白,为什么要对uncached,unbuffered的地址空间(0xA000,0000-0xC000,0000)中的对应地址操作,而不是对cached,buffered,的地址空间(0x8000,0000-0xA000,0000)中的对应地址操作才能成功呢??
再次请singlerace赐教啊
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

40
 
good
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表